Представьте себе большой семейный ужин, где все начинают спрашивать вас о PCA. Сначала вы объясните это своей прабабушке; тогда тебе бабушка; затем к твоей матери; затем вашему супругу; наконец, вашей дочери (которая математик). Каждый раз следующий человек становится не таким мирянином. Вот как может идти разговор.
Прабабушка: Я слышал, вы изучаете "Пи-Си-Ай". Интересно, что это ...
Вы: Ах, это просто метод обобщения некоторых данных. Смотри, у нас на столе стоят бутылки с вином. Мы можем описать каждое вино по его цвету, по его силе, по возрасту и т. Д. (См. Эту прекрасную визуализацию свойств вина, взятую отсюда ). Мы можем составить целый список различных характеристик каждого вина в нашем погребе. Но многие из них будут измерять связанные свойства и поэтому будут излишними. Если это так, мы должны суммировать каждое вино с меньшим количеством характеристик! Это то, что делает PCA.
Бабушка: это интересно! Итак, эта вещь PCA проверяет, какие характеристики являются избыточными и отбрасывает их?
Вы: Отличный вопрос, бабушка! Нет, PCA не выбирает некоторые характеристики и не отбрасывает другие. Вместо этого он создает некоторые новые характеристики, которые хорошо суммируют наш список вин. Конечно, эти новые характеристики строятся с использованием старых; например, новая характеристика может быть вычислена как возраст вина минус уровень кислотности вина или некоторая другая комбинация, подобная этой (мы называем их линейными комбинациями ).
Фактически, PCA находит наилучшие возможные характеристики, которые обобщают список вин, а также только возможные (среди всех возможных линейных комбинаций). Вот почему это так полезно.
Мать: Хммм, это конечно звучит хорошо, но я не уверена, что понимаю. Что вы на самом деле имеете в виду, когда говорите, что эти новые характеристики PCA «суммируют» список вин?
Вы: Я думаю, что могу дать два разных ответа на этот вопрос. Первый ответ заключается в том, что вы ищете некоторые свойства (характеристики) вина, которые сильно различаются между винами. Действительно, представьте, что вы придумали свойство, которое одинаково для большинства вин. Это было бы не очень полезно, не так ли? Вина очень разные, но ваша новая собственность заставляет их всех выглядеть одинаково! Это, безусловно, будет плохое резюме. Вместо этого PCA ищет свойства, которые показывают как можно больше различий между винами.
Второй ответ заключается в том, что вы ищете свойства, которые позволили бы вам прогнозировать или «реконструировать» первоначальные характеристики вина. Опять же, представьте, что вы придумали свойство, которое не имеет отношения к исходным характеристикам; Если вы используете только это новое свойство, вы не сможете восстановить исходные! Это, опять же, было бы плохое резюме. Поэтому PCA ищет свойства, которые позволяют максимально точно восстановить исходные характеристики.
Удивительно, но оказывается, что эти две цели эквивалентны, и поэтому PCA может убить двух зайцев одним выстрелом.
Супруга: Но, дорогая, эти две «цели» PCA звучат так по-разному! Почему они были бы эквивалентны?
Вы: Хммм. Возможно, мне следует сделать небольшой рисунок (берет салфетку и начинает писать) . Давайте выберем две характеристики вина, возможно, темнота вина и содержание алкоголя - я не знаю, взаимосвязаны ли они, но давайте представим, что они есть. Вот как может выглядеть разбросный график различных вин:

Каждая точка в этом "облаке вина" показывает одно конкретное вино. Вы видите, что два свойства ( x и y на этом рисунке) взаимосвязаны. Новое свойство можно построить, нарисовав линию через центр этого винного облака и спроецировав все точки на эту линию. Это новое свойство будет задано линейной комбинацией w1x+w2y , где каждая строка соответствует некоторым конкретным значениям w1 и w2 .
Теперь посмотрите очень внимательно - вот как эти проекции выглядят для разных линий (красные точки - это проекции синих точек):

Как я уже говорил, PCA найдет «лучшую» линию в соответствии с двумя различными критериями того, что является «лучшим». Во-первых, изменение значений вдоль этой линии должно быть максимальным. Обратите внимание на то, как изменяется «разброс» (мы называем это «дисперсией») красных точек при вращении линии; Вы можете увидеть, когда он достигает максимума? Во-вторых, если мы реконструируем исходные две характеристики (положение синей точки) из новой (положение красной точки), ошибка восстановления будет определяться длиной соединительной красной линии. Наблюдайте, как длина этих красных линий изменяется, когда линия вращается; Вы можете увидеть, когда общая длина достигает минимума?
Если вы посмотрите на эту анимацию в течение некоторого времени, вы заметите, что «максимальная дисперсия» и «минимальная ошибка» достигаются одновременно, а именно, когда линия указывает на пурпурные тики, отмеченные мной по обе стороны облака вина. , Эта линия соответствует новому винному свойству, которое будет построено PCA.
Кстати, PCA означает «анализ главных компонентов», и это новое свойство называется «первый главный компонент». И вместо того, чтобы говорить «свойство» или «характеристика», мы обычно говорим «особенность» или «переменная».
Дочь: Очень мило, папа! Думаю, я понимаю, почему две цели дают один и тот же результат: это по существу из-за теоремы Пифагора, не так ли? Во всяком случае, я слышал, что PCA как-то связано с собственными векторами и собственными значениями; где они на этой картинке?
Вы: Гениальное наблюдение. Математически распространение красных точек измеряется как среднее квадратное расстояние от центра облака вина до каждой красной точки; как вы знаете, это называется дисперсией . С другой стороны, общая ошибка восстановления измеряется как средняя длина квадрата соответствующих красных линий. Но так как угол между красной линией и черной линией всегда составляет 90∘сумма этих двух величин равна среднему квадратному расстоянию между центром облака вина и каждой синей точкой; это как раз теорема Пифагора. Конечно, это среднее расстояние не зависит от ориентации черной линии, поэтому чем выше дисперсия, тем меньше погрешность (поскольку их сумма постоянна). Этот аргумент может быть точным ( см. Здесь ).
Кстати, вы можете себе представить, что черная линия - это сплошной стержень, а каждая красная линия - это пружина. Энергия пружины пропорциональна ее длине в квадрате (это известно в физике как закон Гука), поэтому стержень будет ориентироваться так, чтобы минимизировать сумму этих квадратов расстояний. Я сделал симуляцию того, как это будет выглядеть, при наличии некоторого вязкого трения:

Относительно собственных векторов и собственных значений. Вы знаете, что такое ковариационная матрица ; в моем примере это матрица 2×2 которая задается как
(1.070.630.630.64).
Это означает, что дисперсия переменной
x равна
1.07 , дисперсия переменной
y равна
0.64 , а ковариация между ними равна
0.63 . Поскольку это квадратная симметричная матрица, ее можно диагонализировать, выбрав новую ортогональную систему координат, заданную ее собственными векторами (кстати, это называется
спектральной теоремой); соответствующие собственные значения будут расположены на диагонали. В этой новой системе координат ковариационная матрица диагональна и выглядит следующим образом:
(1.52000.19),
что означает, что корреляция между точками теперь равна нулю. Становится ясным, что дисперсия любой проекции будет определяться средневзвешенным значением собственных значений (здесь я только делаю набросок интуиции). Следовательно, максимально возможная дисперсия (
1.52 ) будет достигнута, если мы просто возьмем проекцию на первую координатную ось. Отсюда следует, что направление первого главного компонента задается первым собственным вектором ковариационной матрицы. (
Подробнее здесь. )
Это можно увидеть и на вращающейся фигуре: там есть серая линия, перпендикулярная черной; вместе они образуют вращающуюся систему координат. Попробуйте заметить, когда синие точки становятся некоррелированными в этой вращающейся рамке. Ответ, опять же, заключается в том, что это происходит именно тогда, когда черная линия указывает на пурпурные тики. Теперь я могу рассказать вам, как я их нашел: они отмечают направление первого собственного вектора ковариационной матрицы, которое в этом случае равно (0.81,0.58) .
По популярному запросу я поделился кодом Matlab для создания вышеуказанных анимаций .