DevbunovaViliana / Метод главных компонент (PСA)
Автор: Девбунова Вилиана Олеговна, студент ММП ВМК МГУ (417)
Содержание
- 1 Свойства и структура алгоритма
- 1.1 Общее описание алгоритма
- 1.2 Математическое описание алгоритма
- 1.3 Вычислительное ядро алгоритма
- 1.4 Макроструктура алгоритма
- 1.5 Схема реализации последовательного алгоритма
- 1.6 Последовательная сложность алгоритма
- 1.7 Информационный граф
- 1.8 Ресурс параллелизма алгоритма
- 1.9 Входные и выходные данные алгоритма
- 1.10 Свойства алгоритма
- 2 Программная реализация алгоритма
- 2.1 Особенности реализации последовательного алгоритма
- 2.2 Локальность данных и вычислений
- 2.3 Возможные способы и особенности параллельной реализации алгоритма
- 2.4 Масштабируемость алгоритма и его реализации
- 2.5 Динамические характеристики и эффективность реализации алгоритма
- 2.6 Выводы для классов архитектур
- 2.7 Существующие реализации алгоритма
- 3 Литература
1 Свойства и структура алгоритма
1.1 Общее описание алгоритма
Метод Главных Компонент (англ. Principal Components Analysis, PCA) — один из основных способов уменьшить размерность данных, потеряв наименьшее количество информации. Изобретен К. Пирсоном (англ.Karl Pearson) в 1901 г. Применяется во многих областях, таких как распознавание образов, компьютерное зрение, сжатие данных и т. п. Вычисление главных компонент сводится к вычислению собственных векторов и собственных значений ковариационной матрицы исходных данных или к сингулярному разложению матрицы данных.
Иногда метод главных компонент называют преобразованием Кархунена-Лоэва (англ. Karhunen-Loeve)или преобразованием Хотеллинга (англ. Hotelling transform). Другие способы уменьшения размерности данных — это метод независимых компонент, многомерное шкалирование, а также многочисленные нелинейные обобщения: метод главных кривых и многообразий, поиск наилучшей проекции (англ. Projection Pursuit), нейросетевые методы «узкого горла», самоорганизующиеся карты Кохонена и др.
1.2 Математическое описание алгоритма
Задача анализа главных компонент имеет много версий, вот базовые из них:
- аппроксимировать данные линейными многообразиями меньшей размерности;
- найти подпространства меньшей размерности, в ортогональной проекции на которые разброс данных максимален;
- найти подпространства меньшей размерности, в ортогональной проекции на которые среднеквадратичное расстояние между точками максимально;
- для данной многомерной случайной величины построить такое ортогональное преобразование координат, в результате которого корреляции между отдельными координатами обратятся в нуль.
Мы будем рассматривать только один вариант.
1.3 Вычислительное ядро алгоритма
Мы будем реализовывать PCA с помощью сингулярной декомпозиции значений, или сокращенно SVD. Для вычисления собственных значений и соответствующих им собственных векторов будем использовать алгоритм собственных значений Якоби
1.3.1 Алгоритм вычисления собственных значений методом Якоби
Алгоритм собственных значений Якоби - это итерационный метод вычисления собственных значений и собственных векторов вещественной симметричной матрицы. Алгоритм вычисляет вектор [math]e[/math], содержащий собственные значения , и матрицу [math]E[/math], содержащую соответствующие собственные векторы, т. е. [math]e_i[/math]-собственное значение, а столбец [math]E_i[/math]-ортонормированный собственный вектор для [math]e_i[/math], для [math]i = 1,...,n[/math].
1.3.2 Сингулярная декомпозиция (SVD)
Сингулярная декомпозиция, или сокращенно SVD, - это метод матричного разложения для сведения матрицы к ее составным частям с целью упрощения некоторых последующих матричных вычислений. SVD матрицы [math]M[/math] - это факторизация [math]M[/math] в произведение трех матриц [math]M = U \Sigma V^T[/math], где столбцы [math]U[/math] и [math]V[/math] ортонормированы, а матрица [math]\Sigma[/math] диагональна с положительными вещественными числами. Учитывая, что [math]M[/math] - действительная матрица [math]m × n[/math], которую мы хотим разложить, [math]U[/math] - матрица [math]m × m[/math], [math]\Sigma[/math] - диагональная матрица [math]m × n[/math], а [math]V^T[/math] - транспонирование матрицы [math]n × n[/math].
SVD является наиболее известным и широко используемым методом декомпозиции матриц. Все матрицы имеют сингулярное разложение, которое делает их более стабильными. Он часто используется в широком спектре приложений, включая сжатие, шумоподавление и сокращение данных.
Алгоритм разложения матрицы с помощью SVD:
- 1. Вычислить эрмитов матрицу (найти сопряженную транспонированную), [math]M^T[/math] из матрицы [math]M[/math].
- 2. Вычислить умножение [math]M^TM[/math]
- 3. Вычислить собственные значения и собственные векторы [math]M^TM[/math], используя алгоритм Якоби.
- 4. Отсортировать собственные значения и соответствующие столбцы собственных векторов в порядке убывания собственных значений.
- 5. Взять квадратный корень из собственных значений, чтобы получить сингулярные значения матрицы [math]M[/math].
- 6. Построить диагональную матрицу [math]\Sigma[/math], расположив сингулярные значения в порядке убывания вдоль ее диагонали. Заметим, что размер [math]\Sigma[/math] есть [math]m × n[/math], таким образом, помещает верхние [math]r[/math] сингулярных значений на диагональ и отбрасывает остальные [math](r = min(m, n))[/math] и блок с [math]m - r[/math] строками и [math]n - r[/math] столбцами содержит нули. Также вычислить [math]\Sigma^{-1}[/math]
- 7. Отсортированные столбцы собственных векторов представляют матрицу [math]V[/math]. Вычислить ее транспонирование [math]V^T[/math]
- 8. Вычислить матрицу [math]U[/math], как [math]U = M V \Sigma ^{-1}[/math]
1.3.3 Анализ основных компонентов (PCA)
Анализ главных компонент, или сокращенно PCA, - это математическая процедура, которая преобразует набор (возможно коррелированных) переменных в меньшее число некоррелированных переменных, которые называют главными компонентами. Цель анализа главных компонент состоит в том, чтобы уменьшить размерность (количество признаков) набора данных, но сохранить как можно больше исходной изменчивости в данных. На первый основной компонент приходится большая часть изменчивости данных, на второй основной компонент приходится большая часть оставшейся изменчивости и т. д. PCA можно рассматривать как метод проекции, при котором данные с [math]n[/math]-признаками проецируются на подпространство с [math]n[/math] (или меньшим количеством) признаков, сохраняя при этом большую часть информации.
Алгоритм вычисления главных компонент:
- 1. Входной набор данных [math]D[/math] c [math]s[/math] объектами и [math]f[/math] признаками, т. е. размерность [math]D[/math] равна [math]s × f[/math].
- 2. Получить собственные значения с помощью алгоритма Якоби и [math]U[/math] путем сингулярного векторного разложения матрицы [math]D[/math] (или альтернативной матрицы [math]D^T[/math] ).
- 3. Выбрать [math]k[/math] столбцов матрицы [math]U[/math], соответствующие [math]k[/math] наибольшим собственным значениям. Здесь [math]k[/math] - число измерений нового подпространства объектов [math](k ≤ f)[/math]
- 4. Построить проекции матрицы [math]W^T[/math] главных компонент на выбранные [math]k[/math] собственных векторов.
- 5. Преобразовать исходный набор данных [math]D[/math] через [math]W[/math] и получить [math]k[/math]-мерное подпространство признаков [math]\hat{D}[/math].
Обратите внимание, что значения во входном наборе данных D должны быть стандартизированы.
1.4 Макроструктура алгоритма
1.5 Схема реализации последовательного алгоритма
1.6 Последовательная сложность алгоритма
1.7 Информационный граф
1.8 Ресурс параллелизма алгоритма
1.9 Входные и выходные данные алгоритма
1.10 Свойства алгоритма
2 Программная реализация алгоритма
2.1 Особенности реализации последовательного алгоритма
2.2 Локальность данных и вычислений
2.3 Возможные способы и особенности параллельной реализации алгоритма
2.4 Масштабируемость алгоритма и его реализации
2.5 Динамические характеристики и эффективность реализации алгоритма
2.6 Выводы для классов архитектур
2.7 Существующие реализации алгоритма
3 Литература
[1] Wikipedia contributors. Principal component analysis. In Wikipedia, The Free Encyclopedia from https://en.wikipedia.org/wiki/Principal_component_analysis