Анализ основных компонентов (PCA) и отбеливание

машинное обучение

Анализ основных компонентов (PCA):

1. Соответствующий фон Во многих областях исследований и приложений обычно необходимо наблюдать за данными, содержащими несколько переменных, и собирать большое количество данных для анализа и поиска правил. Многомерные большие наборы данных, несомненно, предоставят богатую информацию для исследований и приложений, но также в определенной степени увеличат рабочую нагрузку по сбору данных. Что еще более важно, во многих случаях могут существовать корреляции между многими переменными, что увеличивает сложность анализа проблемы. Если каждый индикатор анализируется отдельно, анализ часто бывает изолированным и не может полностью использовать информацию, содержащуюся в данных, поэтому слепое сокращение показателей приведет к потере большого количества полезной информации и приведет к неверным выводам.

Следовательно, необходимо найти разумный способ минимизировать потерю информации, содержащейся в исходных показателях, при одновременном сокращении анализируемых показателей, чтобы достичь цели всестороннего анализа собранных данных. Поскольку между переменными существует определенная корреляция, можно рассмотреть возможность замены тесно связанных переменных на как можно меньше новых переменных, чтобы эти новые переменные были некоррелированными попарно, тогда для их представления можно использовать менее полные индикаторы. Различные типы информации, которые существуют в каждой переменной. К этому типу алгоритмов уменьшения размерности относятся анализ главных компонент и факторный анализ.

Основная идея состоит в том, чтобы уменьшить размерность данных, отбросив измерения, несущие меньше информации, тем самым ускорив процесс машинного обучения.

  1. Снижение размерности данных

Уменьшение размерности — это метод предварительной обработки многомерных данных объектов. Уменьшение размерности заключается в сохранении некоторых из наиболее важных функций многомерных данных, удалении шума и второстепенных функций для достижения цели повышения скорости обработки данных. В реальном производстве и применении уменьшение размерности может сэкономить нам много времени и средств в пределах определенного диапазона потери информации. Уменьшение размерности также стало очень широко используемым методом предварительной обработки данных.

Снижение размерности имеет следующие преимущества:

  1. Упрощает использование наборов данных.
  2. Уменьшить вычислительную стоимость алгоритма.
  3. Убрать шум.
  4. сделать результаты понятными. Существует множество алгоритмов уменьшения размерности, таких как разложение по сингулярным значениям (SVD), анализ главных компонентов (PCA), факторный анализ (FA) и анализ независимых компонентов (ICA).
  1. Подробное объяснение принципа PCA

3.1 Концепция PCA PCA (анализ основных компонентов), метод анализа основных компонентов, является одним из наиболее широко используемых алгоритмов уменьшения размерности данных. Основная идея PCA состоит в том, чтобы отобразить n-мерные признаки в k-измерения, Это k-измерение представляет собой новый ортогональный признак, также известный как главный компонент, который представляет собой признак k-измерения, реконструированный на основе исходного n -размерный признак. Задача PCA состоит в том, чтобы последовательно найти набор взаимно ортогональных осей координат из исходного пространства, а выбор новых осей координат тесно связан с самими данными. Среди них первая новая ось координат выбирается как направление с наибольшей дисперсией исходных данных, вторая новая ось координат выбирается так, чтобы максимизировать дисперсию в плоскости, ортогональной первой оси координат, а третья ось связана к первой координатной оси. дисперсия является наибольшей в плоскости, две оси которой ортогональны. По аналогии можно получить n таких координатных осей. С новыми осями координат, полученными таким образом, мы находим, что большая часть дисперсии содержится в первых k осях координат, а дисперсия, содержащаяся в последних осях координат, почти равна 0. Следовательно, мы можем игнорировать остальные оси и оставить только первые k осей, которые содержат большую часть дисперсии. Фактически, это эквивалентно сохранению только признаков измерения, содержащих большую часть дисперсии, и игнорированию измерений признаков, содержащих почти нулевую дисперсию, чтобы реализовать обработку уменьшения размерности признаков данных.

Подумайте: как мы можем получить эти основные направления компонентов, которые содержат наибольшую дисперсию?

Ответ: На самом деле, вычислив ковариационную матрицу матрицы данных, а затем получив собственные векторы собственных значений ковариационной матрицы, выберите матрицу, состоящую из собственных векторов, соответствующих k признакам с наибольшим собственным значением (то есть с наибольшей дисперсией) . Таким образом, матрица данных может быть преобразована в новое пространство для уменьшения размерности признаков данных.

Поскольку есть два способа получить собственные векторы ковариационной матрицы: ковариационная матрица разложения собственных значений и ковариационная матрица разложения сингулярных значений, алгоритм PCA имеет два метода реализации: реализация алгоритма PCA на основе ковариационной матрицы разложения собственных значений и реализация Алгоритм PCA основан на ковариационной матрице разложения собственных значений SVD разлагает ковариационную матрицу для реализации алгоритма PCA.
3.2 Матрицы ковариации и дивергенции
Выборочное среднее:


Выборочная дисперсия:


Ковариация образца X и образца Y:


Из вышеприведенной формулы мы можем сделать следующие выводы:

(1) Расчетная формула дисперсии вычисляется для одномерных признаков, то есть для значений разных выборок одного и того же признака, при этом ковариация должна соответствовать как минимум двумерным признакам, дисперсия является частным случаем ковариации .

(2) Делитель дисперсии и ковариации равен n-1, что позволяет получить несмещенные оценки дисперсии и ковариации.

Когда ковариация положительная, это означает, что X и Y положительно коррелированы, когда ковариация отрицательна, это означает, что X и Y имеют отрицательную корреляцию, когда ковариация равна 0, это означает, что X и Y независимы друг от друга. Cov(X,X) — это дисперсия X. Когда образцы представляют собой n-мерные данные, их ковариация фактически представляет собой ковариационную матрицу (симметричную квадратную матрицу). Например, для трехмерных данных (x, y, z) расчет ковариации:


Матрица дивергенции определяется как:


Матрица расхождений для данных X:X^TX. На самом деле ковариационная матрица тесно связана с матрицей дивергенции, а матрица дивергенции — это ковариационная матрица, умноженная на (общий объем данных -1). Значит, их собственные значения и собственные векторы совпадают. Здесь стоит отметить, что матрица дивергенции является шагом в сингулярном разложении SVD, поэтому PCA и SVD тесно связаны.
3.3 Принцип матрицы разложения собственных значений
(1) Собственные значения и собственные векторы

Если вектор v является собственным вектором матрицы A, он должен быть выражен в следующей форме:


Среди них λ — собственное значение, соответствующее собственному вектору v, а набор собственных векторов матрицы — набор ортогональных векторов.

(2) Матрица разложения собственных значений

Для матрицы A существует набор собственных векторов v, и набор ортогональных единичных векторов можно получить, ортогонализируя и объединяя этот набор векторов. Разложение по собственным значениям заключается в разложении матрицы A по следующей формуле:


где Q — матрица, составленная из собственных векторов матрицы A,\SigmaЭто диагональная матрица, и элементы на диагонали являются собственными значениями.
3.4 Принцип матрицы декомпозиции SVD

Разложение по сингулярным значениям — это метод разложения, который можно применить к любой матрице.Для любой матрицы A всегда существует разложение по сингулярным значениям:


Предположим, что A является mматрица n, то полученное U является mКвадратная матрица m, ортогональный вектор в U, называется левым сингулярным вектором. Σ является мДля матрицы n все элементы Σ, кроме диагонали, равны 0, а элементы на диагонали называются сингулярными значениями. является транспонированной матрицей v и является nМатрица n, ортогональные векторы в ней называются правыми сингулярными векторами. И вообще говоря, будем упорядочивать значения на Σ от большего к меньшему. Шаги SVD-разложения матрицы A:

(1) спроситьAA^TСобственные значения и собственные векторы , а также унифицированные собственные векторы используются для формирования U.

(2) спроситьA^TAСобственные значения и собственные векторы , а также нормализованные собственные векторы используются для формирования V.

(3) будетAA^TилиA^TAВозьмите квадратный корень из собственных значений , а затем сформировать Σ.

3.5 Два метода реализации алгоритма PCA
(1) Реализовать алгоритм PCA на основе ковариационной матрицы разложения собственных значений
Вход: набор данныхX={(x_1,x_2...,x_n)}, которую необходимо привести к размерности k.

  1. De-average (т. е. децентрализация), то есть каждая функция минус соответствующее среднее значение. ,

  2. Вычислить ковариационную матрицу\frac{1}{n}XX^T, Примечание: деление или не деление количества выборок n или n-1 здесь фактически не влияет на полученные собственные векторы.

  3. Нахождение ковариационной матрицы с помощью разложения по собственным значениям\frac{1}{n}XX^Tсобственные значения и собственные векторы .

  4. Отсортируйте собственные значения от больших к малым и выберите среди них наибольшее k. Затем соответствующие k собственных векторов используются как векторы-строки для формирования матрицы собственных векторов P.

  5. Преобразуйте данные в новое пространство, построенное из k собственных векторов, т.е. Y=PX.
    Суммировать:

1) Зачем использовать эту часть\frac{1}{n}XX^T, который содержит очень сложный теоретический вывод линейной алгебры, если вы хотите узнать конкретные детали, вы можете прочитать следующую статью.CodingLabs - Математические принципы PCA

2) Что касается того, почему матрица разлагается с собственными значениями, это потому, что\frac{1}{n}XX^Tпредставляет собой квадратную матрицу, у которой легко найти собственные значения и собственные векторы. Конечно, также можно использовать разложение по сингулярным числам, что является еще одним способом нахождения собственных значений и собственных векторов.
Например:


Взяв X в качестве примера, мы используем метод PCA, чтобы сократить эти две строки данных до одной строки.

1) Так как каждая строка матрицы X уже имеет нулевое среднее, то нет необходимости переходить к среднему.

2) Найдите ковариационную матрицу:


3) Найдите собственные значения и собственные векторы ковариационной матрицы.

Собственные значения после решения:

Соответствующие собственные векторы:
Соответствующие собственные векторы являются общим решением, соответственно, и могут принимать любые действительные числа. Тогда нормализованный вектор признаков:

4) Матрица P:
5) Наконец, мы умножаем первую строку P на матрицу данных X, чтобы получить представление с уменьшенной размерностью:
Результат показан на рисунке 1:
Примечание. Если мы разложим ковариационную матрицу по собственным значениям, то получим уменьшение размерности PCA только в одном направлении. Это направление предназначено для сжатия и уменьшения размерности матрицы данных X от направления строки (или столбца).
4. Пример ППШ
(1) Реализация PCA на Python:

##Python实现PCA
import numpy as np
def pca(X,k):#k is the components you want
  #mean of each feature
  n_samples, n_features = X.shape
  mean=np.array([np.mean(X[:,i]) for i in range(n_features)])
  #normalization
  norm_X=X-mean
  #scatter matrix
  scatter_matrix=np.dot(np.transpose(norm_X),norm_X)
  #Calculate the eigenvectors and eigenvalues
  eig_val, eig_vec = np.linalg.eig(scatter_matrix)
  eig_pairs = [(np.abs(eig_val[i]), eig_vec[:,i]) for i in range(n_features)]
  # sort eig_vec based on eig_val from highest to lowest
  eig_pairs.sort(reverse=True)
  # select the top k eig_vec
  feature=np.array([ele[1] for ele in eig_pairs[:k]])
  #get new data
  data=np.dot(norm_X,np.transpose(feature))
  return data
 
X = np.array([[-1, 1], [-2, -1], [-3, -2], [1, 1], [2, 1], [3, 2]])
 
print(pca(X,1))

Приведенный выше код реализует сокращение функций для данных X. Результат выглядит следующим образом:

(2) Используйте PCA sklearn для сравнения с нашим PCA:

##用sklearn的PCA
from sklearn.decomposition import PCA
import numpy as np
X = np.array([[-1, 1], [-2, -1], [-3, -2], [1, 1], [2, 1], [3, 2]])
pca=PCA(n_components=1)pca.fit(X)
print(pca.transform(X))


5. Теоретический вывод PCA Есть две простые для понимания интерпретации PCA:
(1) Теория максимальной дисперсии (2) Минимизация потерь, вызванных уменьшением размерности. Оба подхода приводят к одному и тому же результату.

Здесь я описываю только теорию максимальной дисперсии:


При обработке сигналов считается, что сигнал имеет большую дисперсию, а шум — малую.Отношение сигнал/шум — это отношение дисперсии между сигналом и шумом.Чем больше, тем лучше. Дисперсия проекции выборки на u1 велика, а дисперсия проекции на u2 мала, то проекцию на u2 можно считать вызванной шумом.

Поэтому мы считаем, что наилучшей k-мерной характеристикой является то, что после преобразования n-мерных точек выборки в k-размерность выборочная дисперсия в каждом измерении велика.

Например, мы проецируем 5 точек на рисунке ниже на определенное измерение, которое представлено прямой линией, проходящей через начало координат (данные были централизованы).


Предположим, мы выбираем две разные линии для проецирования, какая из левой и правой лучше? Согласно нашей предыдущей теории максимизации дисперсии, та, что слева, хороша, потому что дисперсия между спроецированными точками выборки самая большая (также можно сказать, что сумма абсолютных значений проекции самая большая).

Метод расчета проекции показан на следующем рисунке:

На рисунке красная точка представляет образец, синяя точка представляет собой проекцию на u, u представляет собой наклон линии и вектор направления линии, и это единичный вектор. Синяя точка — это точка, спроецированная на u, расстояние от начала координат равно
6. Выберите размер K после уменьшения размера (количество главных компонентов)
Как выбрать число K главных компонент? Сначала определим два понятия:

Выберите разные значения K, а затем используйте следующую формулу для непрерывного расчета и выберите наименьшее значение K, удовлетворяющее следующим условиям формулы.
Значение t можно определить самостоятельно, например, если значение t равно 0,01, это означает, что алгоритм PCA сохраняет 99% основной информации. Когда вы чувствуете, что ошибка должна быть меньше, вы можете уменьшить значение t. Приведенная выше формула также может быть представлена ​​матрицей S, сгенерированной во время разложения SVD, следующим образом:

Reference:

(1) Подробное объяснение принципа анализа главных компонентов (PCA)

http://blog.csdn.net/zhongkelee/article/details/44064401

(2) PCA анализ основных компонентов машинного обучения

https://www.cnblogs.com/steed/p/7454329.html

(3) Простой в освоении алгоритм машинного обучения — анализ основных компонентов (PCA).

https://blog.csdn.net/google19890102/article/details/27969459

(4) PCA в практике машинного обучения

https://www.cnblogs.com/zy230530/p/7074215.html

(5) Математика в машинном обучении (5) — Мощная матричная декомпозиция по сингулярным значениям (SVD) и ее приложения — LeftNotEasy — Blog Park

http://www.cnblogs.com/LeftNotEasy/archive/2011/01/19/svd-and-applications.html

(6) Резюме взаимосвязи между PCA и SVD

https://blog.csdn.net/Dark_Scope/article/details/53150883

(7) CodingLabs — Математические принципы PCA

http://blog.codinglabs.org/articles/pca-tutorial.html

(8) PCA (анализ основных компонентов) реализация Python

https://www.jianshu.com/p/4528aaa6dc48

(9) Применение PCA (анализ основных компонентов) в sklearn и некоторый анализ исходного кода

https://www.cnblogs.com/lochan/p/7001907.html

Добавить Автора Источник: ЦСДН Оригинальный текст: https://blog.csdn.net/program_developer/article/details/80632779 Заявление об авторских правах: Эта статья является оригинальной статьей блоггера, пожалуйста, прикрепите ссылку на сообщение в блоге для перепечатки!