Метод главных компонент (PCA)
Введение
Часто n-мерное пространство признаков оказывается избыточным. Объекты (точки) концентрируются в нём на вложенных m-мерных поверхностях, где m существенно меньше n. Выявление таких поверхностей приводит к снижению размерности задачи и упрощению дальнейшего анализа данных (в задачах классификации и т.п.). Метод главных компонент (principal component analysis) является простейшим методом, в котором, в качестве m-мерной поверхности выступает m-плоскость.
Напомним, что $m$ векторов $\mathbf{e}_k=\{\mathbf{e}_1,...,\mathbf{e}_m\}$ задают уравнение $m$-плоскости в $n$-мерном пространстве: \begin{equation}\label{plane_eq} \mathbf{x}= \mathbf{x}_0 + \sum^m_{k=1} t_k\mathbf{e}_k. \end{equation} Параметры $\{t_1,...,t_m\}$ выступают декартовыми координатами в базисе $\{\mathbf{e}_1,...,\mathbf{e}_m\}$ (если он ортогонален). Вектор $\mathbf{x}_0$ задаёт положение начала координат (точка в которой все координаты на плоскости $t_k$ равны нулю). Если $m=1$, то (\ref{plane_eq}) будет уравнением прямой (одномерный объект). При $m=2$ мы имеем двумерную плоскость и т.д.
Квадрат кратчайшего евклидового расстояния $d^2=(\mathbf{X}-\mathbf{x})^2$ от произвольной точки $\mathbf{X}$ до $m$-плоскости (\ref{plane_eq}) равен: \begin{equation}\label{d2_to_plane} d^2 = \bigr(\mathbf{X}-\mathbf{x}_0\bigr)^2 - \sum^m_{k=1} \bigr[(\mathbf{X}-\mathbf{x}_0)\,\mathbf{e}_k \bigr]^2, \end{equation} а проекция точки $\mathbf{X}$ на $m$-плоскости имеет следующие координаты (в $n$- и $m$- пространствах): \begin{equation}\label{projec_coord} \mathbf{X} ~\mapsto~\mathbf{x}=\mathbf{x}_0 + \sum^m_{k=1} \bigr[(\mathbf{X}-\mathbf{x}_0)\,\mathbf{e}_k\bigr]\mathbf{e}_k, ~~~~~~~~~~~~~ t_k = (\mathbf{X}-\mathbf{x}_0)\,\mathbf{e}_k. \end{equation}
Центр тяжести
В методе главных компонент ищут $m$-плоскость, сумма квадратов расстояний от которой до
множества точек (обучающий набор объектов) $\mathbf{X}_1,...,\mathbf{X}_N$ минимальна (нижний индекс - номер объекта).
Будем в дальнейшем обозначать угловыми скобками усреднение по всем точкам.
Например, среднее значение (центр тяжести $N$ объектов)
равен:
$$
\langle \mathbf{X} \rangle = \frac{1}{N}\sum^N_{i=1} \mathbf{X}_i.
$$
Таким образом, мы требуем, чтобы
$$
\langle d^2 \rangle =
\langle\bigr(\mathbf{X}-\mathbf{x}_0\bigr)^2\bigr\rangle - \sum^m_{k=1} \bigr\langle\bigr[(\mathbf{X}-\mathbf{x}_0)\,\mathbf{e}_k \bigr]^2\bigr\rangle = \min.
$$
Определим сначала $\mathbf{x}_0$. Беря производную по $\mathbf{x}_0$ и приравнивая её нулю, имеем:
$$
\langle\mathbf{X}-\mathbf{x}_0\rangle -
\sum^m_{k=1} \bigr[(\langle\mathbf{X}\rangle-\mathbf{x}_0)\,\mathbf{e}_k \bigr]\,\mathbf{e}_k = 0.
$$
Это соотношение тождественно выполняется, если $\mathbf{x}_0=\langle\mathbf{X}\rangle$, т.е. плоскость
проходит через центр тяжести.
Поэтому вычтем его из каждой точки: $\mathbf{X}_i \mapsto \mathbf{X}_i - \langle \mathbf{X} \rangle$
и далее будем считать, что $\langle \mathbf{X} \rangle=0$ и $\mathbf{x}_0=0$.
Первый компонент
Для определения направляющих векторов $\mathbf{e}_1,...,\mathbf{e}_m$ (базис в плоскости) необходимо найти максимум (знак минус в (\ref{d2_to_plane})!) выражения: \begin{equation}\label{maxD} D = \sum^m_{k=1} \bigr\langle\bigr(\mathbf{X}\,\mathbf{e}_k \bigr)^2\bigr\rangle = \bigr\langle\bigr(\mathbf{X}\,\mathbf{e}_1 \bigr)^2\bigr\rangle+...+\bigr\langle\bigr(\mathbf{X}\,\mathbf{e}_m \bigr)^2\bigr\rangle = \max,~~~~~~~~~~~\mathbf{e}_k\mathbf{e}_p = \delta_{kp}, \end{equation} при сохранении ортонормированности векторов. Максимальным должно быть каждое слагаемое в сумме. Чем больше значение слагаемого, тем более значимым является $k$-й вектор. Пусть эти слагаемые отсортированы по убыванию значимости. Определим сначала $\mathbf{e}_1$, который называют первым компонентом. В плоскости он может иметь произвольное направление (произвол ориентации базиса в плоскости). Поэтому стоит задача поиска максимума $\bigr\langle\bigr(\mathbf{X}\,\mathbf{e}_1 \bigr)^2\bigr\rangle$ при условии, что $\mathbf{e}^2_1=1.$ Эту задачу можно решать методом множителей Лагранжа: \begin{equation}\label{max_eqX} \bigr\langle\bigr(\mathbf{X}\,\mathbf{e}_1 \bigr)^2\bigr\rangle + \lambda\,(1-\mathbf{e}^2_1) = \max. \end{equation} Беря производные по $\mathbf{e}_1$, $\lambda$ и приравнивая их нулю, имеем: \begin{equation}\label{e1} \bigr\langle\bigr(\mathbf{X}\,\mathbf{e}_1 \bigr)\mathbf{X}\bigr\rangle = \lambda\,\mathbf{e}_1,~~~~~~~~~~~~~\mathbf{e}^2_1 = 1. \end{equation} Обозначим в круглых скобках номер компоненты вектора в $n$-мерном пространстве: $\mathbf{e}_1=\{e^{(1)}_1,...,e^{(n)}_1\}$. Первое уравнение переписывается в форме уравнения на собственные значения: \begin{equation}\label{eq_Ce} \sum^n_{j=1}C_{ij}\,e^{(j)}_1 = \lambda\,e^{(i)}_1 \end{equation} ковариационной матрицы: \begin{equation}\label{eq_cov} C_{ij} = \langle X^{(i)}X^{(j)}\bigr\rangle = \frac{1}{N-1}\sum^N_{k=1} X^{(i)}_kX^{(j)}_k. \end{equation}
Из (\ref{e1}) следует (умножаем первое соотношение на $\mathbf{e}_1$), что $\lambda=\bigr\langle\bigr(\mathbf{X}\,\mathbf{e}_1 \bigr)^2\bigr\rangle$, поэтому из всех собственных значений необходимо выбрать максимальное. Впрочем, это не обязательно. Если будут найдены все собственные значения матрицы $C_{ij}$ (см. ниже), то их можно отсортировать в порядке убывания, оставив только $m$ самых больших. Соответствующие им собственные векторы ковариационной матрицы и являются искомыми направляющими векторами $m$-плоскости.
Второй компонент
Пусть первый компонент $\mathbf{e}_1$ и первое собственное значение $\lambda_1=\lambda$ матрицы $C_{ij}$ уже найдены. Изменим координаты точек следующущим образом: \begin{equation}\label{tranform} \mathbf{X}' = \mathbf{X} - (\mathbf{X}\mathbf{e}_1)\,\mathbf{e}_1,~~~~~~~~~\mathbf{X}'\mathbf{e}_1=0. \end{equation} Среднее значение останется нулевым $\langle\mathbf{X}'\rangle=0$. Остаток максимизируемой суммы (\ref{maxD}) также не поменяется: $$ D' =\bigr\langle\bigr(\mathbf{X}\,\mathbf{e}_2 \bigr)^2\bigr\rangle+...+\bigr\langle\bigr(\mathbf{X}\,\mathbf{e}_m \bigr)^2\bigr\rangle =\bigr\langle\bigr(\mathbf{X}'\,\mathbf{e}_2 \bigr)^2\bigr\rangle+...+\bigr\langle\bigr(\mathbf{X}'\,\mathbf{e}_m \bigr)^2\bigr\rangle =\max. $$ Его необходимо продолжать максимизировать. Заметим, что пересчитывать ковариационную матрицу (\ref{eq_cov}) по всем точкам $\mathbf{X}'$ не обязательно, так после преобразования (\ref{tranform}) она меняется следующим образом: $$ C'_{ij} = C_{ij} - \sum^{n}_{k=1} C_{ki}\, e^{(k)}_1e^{(j)}_1 - \sum^{n}_{k=1} C_{kj}\, e^{(k)}_1e^{(i)}_1 + \sum^{n}_{k=1} C_{kp}\, e^{(k)}_1e^{(p)}_1 \,e^{(i)}_1e^{(j)}_1. $$ Учитывая уравнение на собственные значения (\ref{eq_Ce}) это соотношение можно упростить: \begin{equation} C'_{ij} = C_{ij} - \lambda_1 \, e^{(i)}_1e^{(j)}_1. \end{equation} Теперь процесс поиска максимума можно повторять до тех пор, пока все векторы базиса плоскости не будут найдены. При этом, в силу построения по формуле (\ref{tranform}), все эти векторы окажутся ортогональными.
Несложно видеть, собственные значения матрицы $C'_{ij}$ одновременно являются
собственными значениями исходной матрицы $C_{ij}$.
Поэтому $m$-плоскость строиться по $m$ собственным векторами ковариационной матрицы, соответствующим максимальным
собственным значениям.
Ещё одна интерпретация собственных векторов ковариационной матрицы - это оси эллипсоида характерного "разброса" точек в пространстве. Если эллипсоид вытянут вдоль одной из осей - это главная (наиболее значимая) компонента. Следующая по "вытянутости" ось - вторая компонента и т.д.
Пример 1: ирисы Фишера
Рассмотрим в качестве примера набор из 150 измерений длины и ширины лепестков цветков ириса (ирисы Фишера).
В данном случае пространство признаков 4-мерно и в задаче классификации присутствуют 3 класса.
Статистики по всем признакам имеют вид:
xi aver sigma min max x1 5.843 0.828 4.30 7.90 x2 3.054 0.434 2.00 4.40 x3 3.759 1.764 1.00 6.90 x4 1.199 0.763 0.10 2.50После нормировки $x_i \mapsto (x_i-\langle x_i\rangle)/\sigma_i$ ковариационная матрица $C_{ij}$ равна:
1.000 -0.109 0.872 0.818 -0.109 1.000 -0.421 -0.357 0.872 -0.421 1.000 0.963 0.818 -0.357 0.963 1.000Её собственные значения и собственные векторы:
λ1=2.911; e1=(-0.522, 0.263, -0.581, -0.566) λ2=0.921; e2=(-0.372, -0.926, -0.021, -0.065) λ3=0.147; e3=( 0.721, -0.242, -0.141, -0.634) λ4=0.021; e4=(-0.262, 0.124, 0.801, -0.524)
Главная компонента (наибольшее собственное значение λ1=2.911) cущественно отличается
от остальных. Это свидетельствует о том, что точки в 4-мерном пространстве в основном вытянуты вдоль прямой.
Следующее по значимости собственное значение λ2=0.921 и соответствующий
ему собственный вектор e2, вместе с вектором e1
образует двумерную плоскость.
Справа на рисунке приведена проекция данных на эту плоскость в диапазоне [-4,..,4] по каждой координате.
Вектор $\mathbf{e}_1$ направлен вправо, а $\mathbf{e}_2$ - вниз.
Статистики координат на этой плоскости имеют вид:
ti aver sigma min max t1 0.000 1.706 -3.298 2.765 t2 0.000 0.960 -2.713 2.649Синие круги - первый класс, красные - второй и зелёные - третий.
Пример 2: рукописные цифры MNIST
База рукописных цифр MNIST содержит содержит 60000 обучающих 10000 тестовых изображений 28x28 пикселей в градациях серого. Все картинки отцентрованы по центру тяжести и более или менее приведены к единому масштабу.

Уменьшим цифры в 2 раза (картинки 14×14) и посчитаем ковариационную матрицу (в её графическом представлении красный цвет +1, синий -1). Собственные значения ковариационной матрицы приведены справа от неё. Видно, что размерность пространства признаков существенно меньше чем 14·14=196

PCA 2-мерная ($m=2$) плоскость для MNIST имеет вид (цветом помечены различные классы=цифры, расшифровка которых приведена в верхней части рисунка):

Проблемы PCA в задачах классификации
Метод главных компонент позволяет выяснить характерную размерность данных,
т.е. размерность поверхности, вложенной в пространство признаков.
Однако, проектирование данных на эту $m$-мерную плоскость может существенно
ухудшить классификацию классов.
Справа на рисунке приведены два класса (круги и крестики).
Они являются хорошо (линейно) разделимыми. Однако при проектировании на линию
(одна главная компонента), объекты различных класов перемешаются и перестанут быть разделимыми.
Например, в задаче ирисов Фишера метод главных компонент свидетельствует о "двумерности" исходных данных. Однако, первая главная компонента направлена не в направлении наиболее значимого (четвёртого) признака. Ниже, слева от вертикальной линии приведены исходные данные ирисов Фишера во всех парах координат. Справа те-же данные после устранения корреляции (т.е. PCA c $m=4$):

Ещё одна очевидная проблема связана с грубостью линейного приближения.
Если объекты расположены не вдоль линии или плоскости, а вдоль некой изогнутой поверхности,
метод главных компонент может вводить в заблуждение.