DevbunovaViliana / Метод главных компонент (PСA): различия между версиями
| [непроверенная версия] | [непроверенная версия] |
| Строка 55: | Строка 55: | ||
*3. В цикле до сходимости вычислять: | *3. В цикле до сходимости вычислять: | ||
<math> E_{k+1} = \frac{M^TME_k}{\|M^TME_k\|} </math> -- сойдется к собственному вектору, отвечающему максимальному значению, тогда последовательность | <math> E_{k+1} = \frac{M^TME_k}{\|M^TME_k\|} </math> -- сойдется к собственному вектору, отвечающему максимальному значению, тогда последовательность | ||
<math>\lambda_{k} = \frac{(E_k,M^TME_k)}{(E_k,E_k)}</math> сойдется к максимальному собственному значению. | <math>\lambda_{k+1} = \frac{(E_k,M^TME_k)}{(E_k,E_k)}</math> сойдется к максимальному собственному значению. | ||
*4. Теперь вместо выражения <math>M^TM</math> в пункте 3 используем | *4. Теперь вместо выражения <math>M^TM</math> в пункте 3 используем | ||
<math> M^TM - \lambda_k E_k E_k^T</math> | <math> M^TM - \lambda_k E_k E_k^T</math> | ||
Версия от 15:00, 1 декабря 2020
Автор: Девбунова Вилиана Олеговна, студент ММП ВМК МГУ (417)
Свойства и структура алгоритма
Общее описание алгоритма
Метод Главных Компонент (англ. Principal Components Analysis, PCA) — один из основных способов уменьшить размерность данных, потеряв наименьшее количество информации. Изобретен К. Пирсоном (англ.Karl Pearson) в 1901 г. Применяется во многих областях, таких как распознавание образов, компьютерное зрение, сжатие данных и т. п. Вычисление главных компонент сводится к вычислению собственных векторов и собственных значений ковариационной матрицы исходных данных или к сингулярному разложению матрицы данных.
Иногда метод главных компонент называют преобразованием Кархунена-Лоэва (англ. Karhunen-Loeve)или преобразованием Хотеллинга (англ. Hotelling transform). Другие способы уменьшения размерности данных — это метод независимых компонент, многомерное шкалирование, а также многочисленные нелинейные обобщения: метод главных кривых и многообразий, поиск наилучшей проекции (англ. Projection Pursuit), нейросетевые методы «узкого горла», самоорганизующиеся карты Кохонена и др.
Математическое описание алгоритма
Задача анализа главных компонент имеет много версий, вот базовые из них:
- аппроксимировать данные линейными многообразиями меньшей размерности;
- найти подпространства меньшей размерности, в ортогональной проекции на которые разброс данных максимален;
- найти подпространства меньшей размерности, в ортогональной проекции на которые среднеквадратичное расстояние между точками максимально;
- для данной многомерной случайной величины построить такое ортогональное преобразование координат, в результате которого корреляции между отдельными координатами обратятся в нуль.
Мы будем рассматривать только один вариант.
Вычислительное ядро алгоритма
Мы будем реализовывать PCA с помощью нахождения подпространства меньшей размерности, в ортогональной проекции на которые среднеквадратичное расстояние между точками максимально. Для вычисления собственных значений и соответствующих им собственных векторов будем использовать метод степенных итераций
Алгоритм вычисления собственных значений метод степенных итераций
Метод степенных итераций - это итерационный метод вычисления собственных значений и собственных векторов вещественной матрицы. Алгоритм вычисляет вектор [math]\displaystyle{ e }[/math], содержащий собственные значения , и матрицу [math]\displaystyle{ E }[/math], содержащую соответствующие собственные векторы, т. е. [math]\displaystyle{ e_i }[/math]-собственное значение, а столбец [math]\displaystyle{ E_i }[/math]-ортонормированный собственный вектор для [math]\displaystyle{ e_i }[/math], для [math]\displaystyle{ i = 1,...,n }[/math].
Задача нахождения подпространства меньшей размерности
Будем искать подпространство меньшей размерности, в ортогональной проекции на которые среднеквадратичное расстояние между точками максимально. Будем использовать жадную стратегию: Будем подбирать единичные вектора [math]\displaystyle{ E_i }[/math], такие что норма проекций на этот вектор будет максимальна.
- 1.[math]\displaystyle{ ||M E_1||^2 → max_{E_1} }[/math]
- 2. [math]\displaystyle{ |M E_2||^2 → max_{E_2} }[/math] и [math]\displaystyle{ E_1 }[/math] ортогонален [math]\displaystyle{ E_2 }[/math]
- 3. и т.д.
Запишем задачу Лагранжа: [math]\displaystyle{ \frac{d}{dE_1}(E_1^TM^TME_1 - \lambda(E_1^TE_1 -1) = 0 }[/math]
[math]\displaystyle{ M^TME_1 - \lambda E_1 = 0 }[/math] Значит, задача сводится к последовательному нахождению собственных векторов, отвечающих максимальным собственным значениям матрицы [math]\displaystyle{ M^TM }[/math]
Алгоритм:
- 1. Вычислить эрмитов матрицу (найти сопряженную транспонированную), [math]\displaystyle{ M^T }[/math] из матрицы [math]\displaystyle{ M }[/math].
- 2. Вычислить умножение [math]\displaystyle{ M^TM }[/math]
- 3. Вычислить собственные значения и собственные векторы [math]\displaystyle{ M^TM }[/math], используя аметод степенных итераций.
- 4. Отсортировать собственные значения и соответствующие столбцы собственных векторов в порядке убывания собственных значений. И взять первые [math]\displaystyle{ k }[/math] собственных векторов, отвечающих максимальным собственным значениям.
Анализ основных компонентов (PCA)
Анализ главных компонент, или сокращенно PCA, - это математическая процедура, которая преобразует набор (возможно коррелированных) переменных в меньшее число некоррелированных переменных, которые называют главными компонентами. Цель анализа главных компонент состоит в том, чтобы уменьшить размерность (количество признаков) набора данных, но сохранить как можно больше исходной изменчивости в данных. На первый основной компонент приходится большая часть изменчивости данных, на второй основной компонент приходится большая часть оставшейся изменчивости и т. д. PCA можно рассматривать как метод проекции, при котором данные с [math]\displaystyle{ n }[/math]-признаками проецируются на подпространство с [math]\displaystyle{ n }[/math] (или меньшим количеством) признаков, сохраняя при этом большую часть информации. Мы будем внешне задавать размерность признанного пространства, которое хотим получить [math]\displaystyle{ k }[/math].
Макроструктура алгоритма
Макроструктура алгоритма:
- 1. Вычислить [math]\displaystyle{ M^T }[/math] из матрицы [math]\displaystyle{ M }[/math].
- 2. Вычислить умножение [math]\displaystyle{ M^TM }[/math]
- 3. В цикле до сходимости вычислять:
[math]\displaystyle{ E_{k+1} = \frac{M^TME_k}{\|M^TME_k\|} }[/math] -- сойдется к собственному вектору, отвечающему максимальному значению, тогда последовательность [math]\displaystyle{ \lambda_{k+1} = \frac{(E_k,M^TME_k)}{(E_k,E_k)} }[/math] сойдется к максимальному собственному значению.
- 4. Теперь вместо выражения [math]\displaystyle{ M^TM }[/math] в пункте 3 используем
[math]\displaystyle{ M^TM - \lambda_k E_k E_k^T }[/math]
- 5. Повторяем пункт 3 и 4 столько раз, какой размерности хотим получить новое пространство.
Схема реализации последовательного алгоритма
Последовательная сложность алгоритма
Информационный граф
Ресурс параллелизма алгоритма
Входные и выходные данные алгоритма
Свойства алгоритма
Программная реализация алгоритма
Особенности реализации последовательного алгоритма
Локальность данных и вычислений
Возможные способы и особенности параллельной реализации алгоритма
Масштабируемость алгоритма и его реализации
Динамические характеристики и эффективность реализации алгоритма
Выводы для классов архитектур
Существующие реализации алгоритма
Литература
[1] Wikipedia contributors. Principal component analysis. In Wikipedia, The Free Encyclopedia from https://en.wikipedia.org/wiki/Principal_component_analysis