ОСНОВНАЯ МАТЕМАТИКА ДЛЯ НАУКИ ДАННЫХ

Основы математики для науки о данных: собственные векторы и их применение в PCA

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

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

В этой статье вы узнаете о собственном разложении матрицы. Один из способов понять это - рассматривать это как особую смену базы (подробнее об изменении базы в моем последнем посте). Сначала вы узнаете о собственных векторах и собственных значениях, а затем увидите, как их можно применить к анализу главных компонентов (PCA). Основная идея состоит в том, чтобы рассматривать собственное разложение матрицы A как изменение базиса, в котором новые базисные векторы являются собственными векторами.

Собственные векторы и собственные значения

Как вы можете видеть в главе 7 Основы математики для науки о данных, вы можете рассматривать матрицы как линейные преобразования. Это означает, что если вы возьмете любой вектор u и примените к нему матрицу A, вы получите преобразованный вектор v.

Возьмем пример:

а также

Если вы примените A к вектору u (с произведением матрица-вектор), вы получите новый вектор :

Нарисуем исходный и преобразованный векторы:

Обратите внимание, что, как и следовало ожидать, преобразованный вектор v не движется в том же направлении, что и исходный вектор u . Это изменение направления характеризует большинство векторов, которые можно преобразовать с помощью A.

Однако возьмем следующий вектор:

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

Вектор x является собственным вектором для A. Он масштабируется только значением, которое называется собственным значением матрицы A. Собственный вектор матрицы A - это вектор, который сжимается или удлиняется при преобразовании матрицей. Собственное значение - это коэффициент масштабирования, на который вектор сжимается или удлиняется.

Математически вектор x является собственным вектором A, если:

где λ (произносится как «лямбда») - собственное значение, соответствующее собственному вектору x.

Собственные векторы

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

Количество собственных векторов

Матрица n на n имеет не более n линейно независимых собственных векторов. Однако каждый собственный вектор, умноженный на ненулевой скаляр, также является собственным вектором. Если у вас есть:

Потом:

с c любым ненулевым значением.

Это исключает нулевой вектор как собственный вектор, так как у вас будет

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

Практический проект: анализ основных компонентов

Анализ главных компонентов или PCA - это алгоритм, который можно использовать для уменьшения размерности набора данных. Это полезно, например, для сокращения времени вычислений, сжатия данных или предотвращения того, что называется проклятием размерности. Это также полезно для целей визуализации: данные большого размера трудно визуализировать, и может быть полезно уменьшить количество измерений для построения ваших данных.

В этом практическом проекте вы будете использовать различные концепции, которые вы можете изучить в книге Essential Math for Data Science, как изменение основы (разделы 7.5 и 9.2, некоторые примеры здесь), собственное разложение (глава 9). , или ковариационные матрицы (раздел 2.1.3), чтобы понять, как работает PCA.

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

Под капотом

Теоретический контекст

Цель PCA - спроецировать данные в пространство более низкой размерности, сохраняя при этом как можно больше информации, содержащейся в данных. Эту проблему можно рассматривать как проблему перпендикулярных наименьших квадратов, также называемую ортогональной регрессией.

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

Дисперсия и прогнозы

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

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

По этой причине цель PCA - изменить основу матрицы данных таким образом, чтобы направление с максимальной дисперсией (u на рисунке 3) стало первым главный компонент. Второй компонент - это направление с максимальной дисперсией, ортогональное первому, и так далее.

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

В качестве иллюстрации на рисунке 4 показаны данные после изменения основы: максимальная дисперсия теперь связана с осью x. Например, вы можете оставить только это первое измерение.

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

Минимизация ошибки

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

Вы можете видеть на рисунке 5, что более низкие ошибки показаны на рисунке слева. Поскольку проекции ортогональны, отклонение, связанное с направлением линии, на которую вы проецируете, не влияет на ошибку.

Поиск лучших направлений

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

Вы можете увидеть в главе 9 Основы математики для науки о данных, что вы можете использовать собственное разложение для диагонализации матрицы (сделать матрицу диагональной). Таким образом, вы можете вычислить собственные векторы ковариационной матрицы набора данных. Они дадут вам направления нового базиса, в котором ковариационная матрица диагональна.

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

Расчет PCA

Набор данных

Давайте проиллюстрируем, как PCA работает с набором данных о пиве, показывающим потребление пива и температуру в Сан-Паулу, Бразилия, за 2015 год.

Загрузим данные и построим график зависимости потребления от температуры:

Теперь давайте создадим матрицу данных X с двумя переменными: температурой и потреблением.

(365, 2)

Матрица X имеет 365 строк и два столбца (две переменные).

Собственное разложение ковариационной матрицы.

Как вы видели, первым шагом является вычисление ковариационной матрицы набора данных:

array([[18.63964745, 12.20609082], [12.20609082, 19.35245652]])

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

Теперь вы вычислите собственные векторы и собственные значения этой ковариационной матрицы:

(array([ 6.78475896, 31.20734501]), array([[-0.71735154, -0.69671139], [ 0.69671139, -0.71735154]]))

Вы можете сохранить собственные векторы как два вектора u и v.

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

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

Вы можете видеть на рисунке 7, что собственные векторы ковариационной матрицы дают вам важные направления данных. Вектор v красного цвета связан с наибольшим собственным значением и, таким образом, соответствует направлению с наибольшей дисперсией. Серый вектор u ортогонален v и является вторым главным компонентом.

Затем вам просто нужно изменить основу данных, используя собственные векторы в качестве новых базисных векторов. Но сначала вы можете отсортировать собственные векторы по собственным значениям в порядке убывания:

array([[-0.69671139, -0.71735154], [-0.71735154, 0.69671139]])

Теперь, когда ваши собственные векторы отсортированы, давайте изменим основу данных:

Вы можете построить преобразованные данные, чтобы убедиться, что основные компоненты теперь не коррелированы:

На рисунке 8 показаны образцы данных в новом базисе. Вы можете видеть, что первое измерение (ось x) соответствует направлению с наибольшим отклонением.

Вы можете сохранить только первый компонент данных в этой новой основе, не теряя слишком много информации.

Ковариационная матрица или разложение по сингулярным числам?

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

Этот пост представляет собой образец моей книги Essential Math for Data Science!

Скачать книгу можно здесь: https://bit.ly/2WVf4CR!