Анализ главных компонент – это метод понижения размерности Датасета (Dataset), который преобразует больший набор переменных в меньший с минимальными потерями информативности.
Уменьшение количества переменных в наборе данных происходит в ущерб точности, но хитрость здесь заключается в том, чтобы потерять немного в точности, но обрести простоту. Поскольку меньшие наборы данных легче исследовать и визуализировать, анализ данных становится намного проще и быстрее для Алгоритмов (Algorithm) Машинного обучения (ML).
Идея PCA проста: уменьшить количество переменных в наборе данных, сохранив при этом как можно больше информации.
- Шаг первый. Стандартизация
- Шаг второй. Матрица ковариации
- Шаг третий. Вычисление собственных векторов
- Шаг четвертый. Вектор признака
- Шаг 5. Трансформирование данных по осям главных компонент
- PCA и Scikit-learn
- Как работает метод главных компонент (PCA) на простом примере
- Шаг 1. Подготовка данных
- Шаг 2. Ковариационная матрица
- Шаг 3. Собственные вектора и значения (айгенпары)
- Шаг 4. Снижение размерности (проекция)
- Шаг 5. Восстановление данных
- Вместо заключения – проверка алгоритма
- Интересные свойства ковариационной матрицы
- Субковариантные матрицы
- Положительное Полуопределенное Свойство
- Геометрические последствия
- Преобразование ковариационной матрицы
- Построение контуров гауссовой смеси
- Обнаружение выбросов
- Финальные заметки
- 🎥 Видео
Шаг первый. Стандартизация
Мы осуществляем Стандартизацию (Standartization) исходных переменных, чтобы каждая из них вносила равный вклад в анализ. Почему так важно выполнить стандартизацию до PCA? Метод очень чувствителен к Дисперсиям (Variance) исходных Признаков (Feature). Если есть больши́е различия между диапазонами исходных переменных, те переменные с бо́льшими диапазонами будут преобладать над остальными (например, переменная, которая находится в диапазоне от 0 до 100, будет преобладать над переменной, которая находится в диапазоне от 0 до 1), что приведет к необъективным результатам. Преобразование данных в сопоставимые масштабы может предотвратить эту ситуацию.
Математически это можно сделать путем вычитания Среднего значения (Mean) из каждого значения и деления полученной разности на Стандартное отклонение (Standard Deviation). После стандартизации все переменные будут преобразованы в исходные значения.
Шаг второй. Матрица ковариации
Цель этого шага – понять, как переменные отличаются от среднего по отношению друг к другу, или, другими словами, увидеть, есть ли между ними какая-либо связь. Порой переменные сильно коррелированы и содержат избыточную информацию, и чтобы идентифицировать эти взаимосвязи, мы вычисляем Ковариационную матрицу (Covariance Matrix).
Ковариационная матрица представляет собой симметричную матрицу размера p × p (где p – количество измерений), где в качестве ячеек пребывают коэффициенты ковариации, связанные со всеми возможными парами исходных переменных. Например, для трехмерного набора данных с 3 переменными x, y и z ковариационная матрица представляет собой следующее:
Окрашенные голубым треугольники симметрично равны друг другу
Поскольку ковариация переменной с самой собой – это ее дисперсия, на главной диагонали (от верхней левой ячейки к нижней правой), у нас фактически есть дисперсии каждой исходной переменной. А поскольку ковариация коммутативна (в ячейке XY значение равно YX), элементы матрицы симметричны относительно главной диагонали.
Что коэффициенты ковариации говорят нам о корреляциях между переменными? На самом деле, имеет значение знак ковариации. Если коэффициент – это:
- положительное число, то две переменные прямо пропорциональны, то есть второй увеличивается или уменьшается вместе с первым.
- отрицательное число, то переменные обратно пропорциональны, то есть второй увеличивается, когда первый уменьшается, и наоборот.
Теперь, когда мы знаем, что ковариационная матрица – это не более чем таблица, которая отображает корреляции между всеми возможными парами переменных, давайте перейдем к следующему шагу.
Шаг третий. Вычисление собственных векторов
Собственные векторы (Eigenvector) и Собственные значения (Eigenvalues) – это понятия из области Линейной алгебры (Linear Algebra), которые нам нужно экстраполировать из ковариационной матрицы, чтобы определить так называемые главные компоненты данных. Давайте сначала поймем, что мы подразумеваем под этим термином.
Главная компонента – это новая переменная, смесь исходных. Эти комбинации выполняются таким образом, что новые переменные (то есть главные компоненты) не коррелированы, и большая часть информации в исходных переменных помещается в первых компонентах. Итак, идея состоит в том, что 10-мерный датасет дает нам 10 главных компонент, но PCA пытается поместить максимум возможной информации в первый, затем максимум оставшейся информации во второй и так далее, пока не появится что-то вроде того, что показано на графике ниже:
Объясненная вариация
Такая организация информации в главных компонентах позволит нам уменьшить размерность без потери большого количества информации за счет отбрасывания компонент с низкой информативностью.
Здесь важно понимать, что главные компоненты менее интерпретируемы и не имеют никакого реального значения, поскольку они построены как линейные комбинации исходных переменных.
С геометрической точки зрения, главные компоненты представляют собой Векторы (Vector) данных, которые объясняют максимальное количество отклонений. Главные компоненты – новые оси, которые обеспечивают лучший угол для оценки данных, чтобы различия между наблюдениями были лучше видны.
Поскольку существует столько главных компонент, сколько переменных в наборе, главные компоненты строятся таким образом, что первый из них учитывает наибольшую возможную дисперсию в наборе данных. Например, предположим, что диаграмма рассеяния нашего набора данных выглядит так:
Подбор собственного вектора
Можем ли мы проецировать первый главный компонент? Да, это линия, которая соответствует фиолетовым отметкам, потому что она проходит через начало координат, и проекции точек на компонент наиболее короткие. Говоря математически, это линия, которая максимизирует дисперсию (среднее квадратов расстояний от проецируемых красных точек до начала координат).
Второй главный компонент рассчитывается таким же образом, при условии, что он не коррелирован (т.е. перпендикулярен) первому главному компоненту и учитывает следующую по величине дисперсию. Это продолжается до тех пор, пока не будет вычислено p главных компонент, равное исходному количеству переменных.
Теперь, когда мы поняли, что подразумевается под главными компонентами, давайте вернемся к собственным векторам и собственным значениям. Прежде всего, нам нужно знать, что они всегда «ходят парами», то есть каждый собственный вектор имеет собственное значение. И их количество равно количеству измерений данных. Например, для 3-мерного набора данных есть 3 переменных, следовательно, есть 3 собственных вектора с 3 соответствующими собственными значениями.
За всей магией, описанной выше, стоят собственные векторы и собственные значения, потому что собственные векторы матрицы ковариации на самом деле являются направлениями осей, где наблюдается наибольшая дисперсия (большая часть информации) и которые мы называем главными компонентами. А собственные значения – это просто коэффициенты, прикрепленные к собственным векторам, которые дают величину дисперсии, переносимую в каждом основном компоненте.
Ранжируя собственные векторы в порядке от наибольшего к наименьшему, мы получаем главные компоненты в порядке значимости.
Шаг четвертый. Вектор признака
Как мы видели на предыдущем шаге, вычисляя собственные векторы и упорядочивая их по собственным значениям в в порядке убывания, мы можем ранжировать основные компоненты в порядке значимости. На этом этапе мы выбираем, оставить ли все эти компоненты или отбросить те, которые имеют меньшее значение, и сформировать с оставшимися матрицу векторов, которую мы называем Вектором признака (Feature Vector).
Итак, вектор признаков – это просто матрица, в столбцах которой есть собственные векторы компонент, которые мы решили оставить. Это первый шаг к уменьшению размерности, потому что, если мы решим оставить только p собственных векторов (компонент) из n, окончательный набор данных будет иметь только p измерений.
Шаг 5. Трансформирование данных по осям главных компонент
На предыдущих шагах, помимо стандартизации, мы не вносили никаких изменений в данные, а просто выбирали основные компоненты и формировали вектор признаков, но исходной набор данных всегда остается.
На этом последнем этапе цель состоит в переориентации данных с исходных осей на оси, представленные главными компонентами (отсюда и название «Анализ главных компонент»). Это можно сделать, перемножив транспонированный исходный набор данных на транспонированный вектор признаков.
PCA и Scikit-learn
PCA можно реализовать с помощью SkLearn. Для начала импортируем необходимые библиотеки:
Мы будем использовать датасет банка, автоматизирующего выдачу кредитных продуктов своим клиентам:
Создадим список признаков, подлежащих уменьшению. Это макроэкономические показатели с невысоким уровнем важности, которые почти не попали в список выше. Выберем сокращаемые и Целевую переменные (Target Variable):
Выберем cамые важные признаки с помощью функции SelectKBest, которая использует критерий Хи-квадрат (Chi Square):
Создадим объект dfscores , куда отправим, соответственно, очки важности всех признаков датасета:
Создадим для коэффициентов отдельный объект, соединив названия столбцов и очки, и отобразим пять признаков, набравших наибольшее количество очков:
Неожиданно, но самыми важными признаками оказались количество сотрудников в компании и порядковый номер рекламной кампании, в которой участвует клиент:
Создадим список признаков, подлежащих понижению. Это макроэкономические показатели с невысоким уровнем важности, которые почти не попали в список выше:
Выполним стандартизацию объекта X. StandardScaler() на месте заменяет данные на их стандартизированную версию, и мы получаем признаки, где все значения как бы центрированы относительно нуля. Такое преобразование необходимо, чтобы правильно объединить признаки между собой.
Результат выглядит следующим образом:
Мы хотим получить один главный компонент. Передадим функции обучающие данные:
Мы получили вот такой главный компонент:
Ноутбук, не требующий дополнительной настройки на момент написания статьи, можно скачать здесь.
Видео:Собственные векторы и собственные значения матрицыСкачать
Как работает метод главных компонент (PCA) на простом примере
В этой статье я бы хотел рассказать о том, как именно работает метод анализа главных компонент (PCA – principal component analysis) с точки зрения интуиции, стоящей за ее математическим аппаратом. Максимально просто, но подробно.
Математика вообще очень красивая и изящная наука, но порой ее красота скрывается за кучей слоев абстракции. Показать эту красоту лучше всего на простых примерах, которые, так сказать, можно покрутить, поиграть и пощупать, потому что в конце концов все оказывается гораздо проще, чем кажется на первый взгляд – самое главное понять и представить.
В анализе данных, как и в любом другом анализе, порой бывает нелишним создать упрощенную модель, максимально точно описывающую реальное положение дел. Часто бывает так, что признаки довольно сильно зависят друг от друга и их одновременное наличие избыточно.
К примеру, расход топлива у нас меряется в литрах на 100 км, а в США в милях на галлон. На первый взгляд, величины разные, но на самом деле они строго зависят друг от друга. В миле 1600м, а в галлоне 3.8л. Один признак строго зависит от другого, зная один, знаем и другой.
Но гораздо чаще бывает так, что признаки зависят друг от друга не так строго и (что важно!) не так явно. Объем двигателя в целом положительно влияет на разгон до 100 км/ч, но это верно не всегда. А еще может оказаться, что с учетом не видимых на первый взгляд факторов (типа улучшения качества топлива, использования более легких материалов и прочих современных достижений), год автомобиля не сильно, но тоже влияет на его разгон.
Зная зависимости и их силу, мы можем выразить несколько признаков через один, слить воедино, так сказать, и работать уже с более простой моделью. Конечно, избежать потерь информации, скорее всего не удастся, но минимизировать ее нам поможет как раз метод PCA.
Выражаясь более строго, данный метод аппроксимирует n-размерное облако наблюдений до эллипсоида (тоже n-мерного), полуоси которого и будут являться будущими главными компонентами. И при проекции на такие оси (снижении размерности) сохраняется наибольшее количество информации.
Шаг 1. Подготовка данных
Здесь для простоты примера я не буду брать реальные обучающие датасеты на десятки признаков и сотни наблюдений, а сделаю свой, максимально простой игрушечный пример. 2 признака и 10 наблюдений будет вполне достаточно для описания того, что, а главное – зачем, происходит в недрах алгоритма.
В данной выборке у нас имеются два признака, сильно коррелирующие друг с другом. С помощью алгоритма PCA мы сможем легко найти признак-комбинацию и, ценой части информации, выразить оба этих признака одним новым. Итак, давайте разбираться!
Для начала немного статистики. Вспомним, что для описания случайной величины используются моменты. Нужные нам – мат. ожидание и дисперсия. Можно сказать, что мат. ожидание – это «центр тяжести» величины, а дисперсия – это ее «размеры». Грубо говоря, мат. ожидание задает положение случайной величины, а дисперсия – ее размер (точнее, разброс).
Сам процесс проецирования на вектор никак не влияет на значения средних, так как для минимизации потерь информации наш вектор должен проходить через центр нашей выборки. Поэтому нет ничего страшного, если мы отцентрируем нашу выборку – линейно сдвинем ее так, чтобы средние значения признаков были равны 0. Это очень сильно упростит наши дальнейшие вычисления (хотя, стоит отметить, что можно обойтись и без центрирования).
Оператор, обратный сдвигу будет равен вектору изначальных средних значений – он понадобится для восстановления выборки в исходной размерности.
Дисперсия же сильно зависит от порядков значений случайной величины, т.е. чувствительна к масштабированию. Поэтому если единицы измерения признаков сильно различаются своими порядками, крайне рекомендуется стандартизировать их. В нашем случае значения не сильно разнятся в порядках, так что для простоты примера мы не будем выполнять эту операцию.
Шаг 2. Ковариационная матрица
В случае с многомерной случайной величиной (случайным вектором) положение центра все так же будет являться мат. ожиданиями ее проекций на оси. А вот для описания ее формы уже недостаточно толькое ее дисперсий по осям. Посмотрите на эти графики, у всех трех случайных величин одинаковые мат.ожидания и дисперсии, а их проекции на оси в целом окажутся одинаковы!
Для описания формы случайного вектора необходима ковариационная матрица.
Это матрица, у которой (i,j)-элемент является корреляцией признаков (Xi, Xj). Вспомним формулу ковариации:
В нашем случае она упрощается, так как
и это справедливо для любых случайных величин.
Таким образом, в нашей матрице по диагонали будут дисперсии признаков (т.к. i = j), а в остальных ячейках – ковариации соответствующих пар признаков. А в силу симметричности ковариации матрица тоже будет симметрична.
Замечание: Ковариационная матрица является обобщением дисперсии на случай многомерных случайных величин – она так же описывает форму (разброс) случайной величины, как и дисперсия.
И действительно, дисперсия одномерной случайной величины – это ковариационная матрица размера 1×1, в которой ее единственный член задан формулой Cov(X,X) = Var(X).
Итак, сформируем ковариационную матрицу Σ для нашей выборки. Для этого посчитаем дисперсии Xi и Xj, а также их ковариацию. Можно воспользоваться вышенаписанной формулой, но раз уж мы вооружились Python’ом, то грех не воспользоваться функцией numpy.cov(X). Она принимает на вход список всех признаков случайной величины и возвращает ее ковариационную матрицу и где X – n-мерный случайный вектор (n-количество строк). Функция отлично подходит и для расчета несмещенной дисперсии, и для ковариации двух величин, и для составления ковариационной матрицы.
(Напомню, что в Python матрица представляется массивом-столбцом массивов-строк.)
Шаг 3. Собственные вектора и значения (айгенпары)
О’кей, мы получили матрицу, описывающую форму нашей случайной величины, из которой мы можем получить ее размеры по x и y (т.е. X1 и X2), а также примерную форму на плоскости. Теперь надо найти такой вектор (в нашем случае только один), при котором максимизировался бы размер (дисперсия) проекции нашей выборки на него.
Замечание: Обобщение дисперсии на высшие размерности — ковариационная матрица, и эти два понятия эквивалентны. При проекции на вектор максимизируется дисперсия проекции, при проекции на пространства больших порядков – вся ее ковариационная матрица.
Итак, возьмем единичный вектор на который будем проецировать наш случайный вектор X. Тогда проекция на него будет равна v T X. Дисперсия проекции на вектор будет соответственно равна Var(v T X). В общем виде в векторной форме (для центрированных величин) дисперсия выражается так:
Соответственно, дисперсия проекции:
Легко заметить, что дисперсия максимизируется при максимальном значении v T Σv. Здесь нам поможет отношение Рэлея. Не вдаваясь слишком глубоко в математику, просто скажу, что у отношения Рэлея есть специальный случай для ковариационных матриц:
Последняя формула должна быть знакома по теме разложения матрицы на собственные вектора и значения. x является собственным вектором, а λ – собственным значением. Количество собственных векторов и значений равны размеру матрицы (и значения могут повторяться).
Кстати, в английском языке собственные значения и векторы именуются eigenvalues и eigenvectors соответственно.
Мне кажется, это звучит намного более красиво (и кратко), чем наши термины.
Таким образом, направление максимальной дисперсии у проекции всегда совпадает с айгенвектором, имеющим максимальное собственное значение, равное величине этой дисперсии.
И это справедливо также для проекций на большее количество измерений – дисперсия (ковариационная матрица) проекции на m-мерное пространство будет максимальна в направлении m айгенвекторов, имеющих максимальные собственные значения.
Размерность нашей выборки равна двум и количество айгенвекторов у нее, соответственно, 2. Найдем их.
В библиотеке numpy реализована функция numpy.linalg.eig(X), где X – квадратная матрица. Она возвращает 2 массива – массив айгензначений и массив айгенвекторов (векторы-столбцы). И векторы нормированы — их длина равна 1. Как раз то, что надо. Эти 2 вектора задают новый базис для выборки, такой что его оси совпадают с полуосями аппроксимирующего эллипса нашей выборки.
На этом графике мы апроксимировали нашу выборку эллипсом с радиусами в 2 сигмы (т.е. он должен содержать в себе 95% всех наблюдений – что в принципе мы здесь и наблюдаем). Я инвертировал больший вектор (функция eig(X) направляла его в обратную сторону) – нам важно направление, а не ориентация вектора.
Шаг 4. Снижение размерности (проекция)
Наибольший вектор имеет направление, схожее с линией регрессии и, спроецировав на него нашу выборку, мы потеряем информацию, сравнимую с суммой остаточных членов регрессии (только расстояние теперь евклидово, а не дельта по Y). В нашем случае зависимость между признаками очень сильная, так что потеря информации будет минимальна. «Цена» проекции — дисперсия по меньшему айгенвектору — как видно из предыдущего графика, очень невелика.
Замечание: диагональные элементы ковариационной матрицы показывают дисперсии по изначальному базису, а ее собственные значения – по новому (по главным компонентам).
Часто требуется оценить объем потерянной (и сохраненной) информации. Удобнее всего представить в процентах. Мы берем дисперсии по каждой из осей и делим на общую сумму дисперсий по осям (т.е. сумму всех собственных чисел ковариационной матрицы).
Таким образом, наш больший вектор описывает 45.994 / 46.431 * 100% = 99.06%, а меньший, соответственно, примерно 0.94%. Отбросив меньший вектор и спроецировав данные на больший, мы потеряем меньше 1% информации! Отличный результат!
Замечание: На практике, в большинстве случаев, если суммарная потеря информации составляет не более 10-20%, то можно спокойно снижать размерность.
Для проведения проекции, как уже упоминалось ранее на шаге 3, надо провести операцию v T X (вектор должен быть длины 1). Или, если у нас не один вектор, а гиперплоскость, то вместо вектора v T берем матрицу базисных векторов V T . Полученный вектор (или матрица) будет являться массивом проекций наших наблюдений.
dot(X,Y) — почленное произведение (так мы перемножаем векторы и матрицы в Python)
Нетрудно заметить, что значения проекций соответствуют картине на предыдущем графике.
Шаг 5. Восстановление данных
С проекцией удобно работать, строить на ее основе гипотезы и разрабатывать модели. Но не всегда полученные главные компоненты будут иметь явный, понятный постороннему человеку, смысл. Иногда полезно раскодировать, к примеру, обнаруженные выбросы, чтобы посмотреть, что за наблюдения за ними стоят.
Это очень просто. У нас есть вся необходимая информация, а именно координаты базисных векторов в исходном базисе (векторы, на которые мы проецировали) и вектор средних (для отмены центровки). Возьмем, к примеру, наибольшее значение: 10.596… и раскодируем его. Для этого умножим его справа на транспонированный вектор и прибавим вектор средних, или в общем виде для всей выборки: X T v T +m
Разница небольшая, но она есть. Ведь потерянная информация не восстанавливается. Тем не менее, если простота важнее точности, восстановленное значение отлично аппроксимирует исходное.
Вместо заключения – проверка алгоритма
Итак, мы разобрали алгоритм, показали как он работает на игрушечном примере, теперь осталось только сравнить его с PCA, реализованным в sklearn – ведь пользоваться будем именно им.
Параметр n_components указывает на количество измерений, на которые будет производиться проекция, то есть до скольки измерений мы хотим снизить наш датасет. Другими словами – это n айгенвекторов с самыми большими собственными числами. Проверим результат снижения размерности:
Мы возвращали результат как матрицу вектор-столбцов наблюдений (это более канонический вид с точки зрения линейной алгебры), PCA в sklearn же возвращает вертикальный массив.
В принципе, это не критично, просто стоит отметить, что в линейной алгебре канонично записывать матрицы через вектор-столбцы, а в анализе данных (и прочих связанных с БД областях) наблюдения (транзакции, записи) обычно записываются строками.
Проверим и прочие параметры модели – функция имеет ряд атрибутов, позволяющих получить доступ к промежуточным переменным:
— Вектор средних: mean_
— Вектор(матрица) проекции: components_
— Дисперсии осей проекции (выборочная): explained_variance_
— Доля информации (доля от общей дисперсии): explained_variance_ratio_
Замечание: explained_variance_ показывает выборочную дисперсию, тогда как функция cov() для построения ковариационной матрицы рассчитывает несмещенные дисперсии!
Сравним полученные нами значения со значениями библиотечной функции.
Единственное различие – в дисперсиях, но как уже упоминалось, мы использовали функцию cov(), которая использует несмещенную дисперсию, тогда как атрибут explained_variance_ возвращает выборочную. Они отличаются только тем, что первая для получения мат.ожидания делит на (n-1), а вторая – на n. Легко проверить, что 45.99 ∙ (10 — 1) / 10 = 41.39.
Все остальные значения совпадают, что означает, что наши алгоритмы эквивалентны. И напоследок замечу, что атрибуты библиотечного алгоритма имеют меньшую точность, поскольку он наверняка оптимизирован под быстродействие, либо просто для удобства округляет значения (либо у меня какие-то глюки).
Замечание: библиотечный метод автоматически проецирует на оси, максимизирующие дисперсию. Это не всегда рационально. К примеру, на данном рисунке неаккуратное снижение размерности приведет к тому, что классификация станет невозможна. Тем не менее, проекция на меньший вектор успешно снизит размерность и сохранит классификатор.
Итак, мы рассмотрели принципы работы алгоритма PCA и его реализации в sklearn. Я надеюсь, эта статья была достаточно понятна тем, кто только начинает знакомство с анализом данных, а также хоть немного информативна для тех, кто хорошо знает данный алгоритм. Интуитивное представление крайне полезно для понимания того, как работает метод, а понимание очень важно для правильной настройки выбранной модели. Спасибо за внимание!
Видео:Собственные значения и собственные векторы матрицы (4)Скачать
Интересные свойства ковариационной матрицы
Дата публикации May 12, 2019
Ковариационная матрица обладает многими интересными свойствами, и ее можно найти в моделях смесей, анализе компонентов, фильтрах Калмана и многом другом. Развитие интуиции о том, как работает ковариационная матрица, полезно для понимания ее практических последствий. Эта статья будет сосредоточена на нескольких важных свойствах, соответствующих доказательствах, а затем на некоторых интересных практических приложениях, то есть на моделях негауссовой смеси.
Я часто обнаруживал, что исследовательские работы не определяют формы матриц при написании формул. Я включил эту и другую важную информацию, чтобы помочь ученым-разработчикам кодировать свои собственные алгоритмы.
Видео:Собственные векторы и собственные числа линейного оператораСкачать
Субковариантные матрицы
Ковариационная матрица может быть разложена на множество уникальных (2×2) ковариационных матриц. Количество уникальных субковариационных матриц равно количеству элементов в нижней половине матрицы, исключая основную диагональ. Ковариационные матрицы (DxD) будут иметь уникальные субковариационные матрицы D * (D + 1) / 2-D. Например, трехмерная ковариационная матрица показана в уравнении (0).
Можно видеть, что каждый элемент в ковариационной матрице представлен ковариацией между каждой (i, j) размерной парой. Уравнение (1) показывает разложение (DxD) на несколько (2×2) ковариационных матриц. Для размерного случая (3×3) будут 3 * 4 / 2–3 или 3 уникальные субковариантные матрицы.
Обратите внимание, что генерация случайных субковариационных матриц может не привести к действительной ковариационной матрице. Ковариационная матрица должна быть положительной полуопределенной, и дисперсия для каждого диагонального элемента субковариантной матрицы должна совпадать с дисперсией по диагонали ковариационной матрицы.
Видео:part7 собственные вектора матрицы ковариацииСкачать
Положительное Полуопределенное Свойство
Одним из свойств ковариационной матрицы является то, что она должна быть положительной полуопределенной матрицей. Что означает положительно определенное и почему ковариационная матрица всегда положительно полуопределена, заслуживает отдельной статьи. Короче говоря, матрица M является положительно-полуопределенной, если операция, показанная в уравнении (2), приводит к значениям, которые больше или равны нулю.
M — вещественная матрица DxD, а z — вектор Dx1. Примечание: результат этих операций приводит к скаляру 1×1.
Ковариационная матрица M может быть построена из данных с помощью следующей операции, где M = E [(x-mu) .T * (x-mu)]. Вставка M в уравнение (2) приводит к уравнению (3). Можно видеть, что любая матрица, которая может быть записана в виде M.T * M, является положительно-полуопределенной.Источник.
Обратите внимание, что ковариационная матрицаневсегда описывайте ковариацию между размерами набора данных. Например, ковариационная матрица может использоваться для описания формымногомерный нормальный кластер, используемые в гауссовых моделях смеси.
Видео:А.7.35 Собственные вектора и собственные значения матрицыСкачать
Геометрические последствия
Еще один способдумать оковариационная матрица геометрически. По сути, ковариационная матрица представляет направление и масштаб распространения данных. Чтобы понять эту перспективу, необходимо будет понять собственные значения и собственные векторы.
Уравнение (4) показывает определение собственного вектора и связанного с ним собственного значения. Следующее утверждение важно для понимания собственных векторов и собственных значений. Z является собственным вектором M, если умножение матрицы M * z приводит к одному и тому же вектору z, масштабированному по некоторому значению lambda. Другими словами, мы можем думать о матрице M как о матрице преобразования, которая делаетнеизменить направление z или z является базисным вектором матрицы M.
Лямбда — скаляр собственного значения (1×1), z — матрица собственного вектора (Dx1), а M — ковариационная матрица (DxD). Положительная полуопределенная (DxD) ковариационная матрица будет иметь D собственных значений и (DxD) собственных векторов. Первый собственный вектор всегда находится в направлении наибольшего разброса данных, все собственные векторы ортогональны друг другу, и все собственные векторы нормированы, т.е. они имеют значения между 0 и 1. Уравнение (5) показывает векторизованное соотношение между ковариационной матрицей, Собственные векторы и собственные значения.
S — матрица диагонального масштабирования (DxD), где диагональные значения соответствуют собственному значению и представляют дисперсию каждого собственного вектора. R — матрица вращения (DxD), которая представляет направление каждого собственного значения.
Матрицы собственных векторов и собственных значений представлены в уравнениях выше для уникальной (i, j) субковариантной матрицы. Собственные векторы субковариационной матрицы, показанные в уравнении (6), для каждого столбца имеют один параметр, тета, который управляет величиной поворота между каждой (i, j) размерной парой. Собственные значения ковариационной матрицы находятся по диагональным элементам уравнения (7) и представляют дисперсию каждого измерения. Он имеет D параметров, которые контролируют масштаб каждого собственного вектора
Видео:Диагональный вид матрицы. Приведение матрицы к диагональному виду. Собственные векторыСкачать
Преобразование ковариационной матрицы
Ковариационная матрица (2×2) может преобразовывать вектор (2×1), применяя связанную шкалу и матрицу вращения. Матрица шкалы должна быть применена перед матрицей вращения, как показано в уравнении (8).
Преобразование векторизованной ковариационной матрицы для матрицы (Nx2) X показано в уравнении (9). Матрица X должна центрироваться в (0,0), чтобы вектор вращался вокруг начала координат должным образом. Если эта матрица X не центрирована, точки данных не будут вращаться вокруг начала координат.
Пример ковариационного преобразования на матрице (Nx2) показан на рисунке 1. Более подробную информацию о том, как сгенерировать этот график, можно найтиВот.
Видео:Собственные векторы и собственные числа линейного оператораСкачать
Построение контуров гауссовой смеси
Контуры гауссовой смеси можно визуализировать в нескольких измерениях путем преобразования (2×2) единичного круга с помощью субковариантной матрицы. Контур с конкретным стандартным отклонением может быть нанесен путем умножения матрицы масштабирования на квадрат значения желаемого стандартного отклонения. Затем кластеры сдвигаются к соответствующим значениям центроидов. Код для генерации сюжета ниже можно найтиВот,
На рисунке 2. показано решение с 3-кластерной моделью гауссовой смеси, обученное на наборе данных радужной оболочки Контуры представляют плотность вероятности смеси при определенном стандартном отклонении от центроида. На рисунке 2. контуры построены для 1 стандартного отклонения и 2 стандартных отклонений от центроида каждого кластера.
Видео:Собственные значения и собственные векторыСкачать
Обнаружение выбросов
Гауссовы смеси имеют тенденцию раздвигать кластеры, поскольку наличие перекрывающихся распределений приведет к снижению показателя оптимизации, оценки максимального правдоподобия или MLE. Точка данных может по-прежнему иметь высокую вероятность принадлежности к многомерному нормальному кластеру, в то же время являясь выбросом в одном или нескольких измерениях. Относительно низкое значение вероятности представляет неопределенность точки данных, принадлежащей конкретному кластеру.
Модель однородной смеси может использоваться для обнаружения выбросов путем нахождения точек данных, которые находятся за пределами многомерного гиперкуба. Эти смеси устойчивы к «интенсивному» сдвигу, что приводит к низкой дисперсии по определенному собственному вектору. Кроме того, в вычислительном отношении легче определить, находится ли точка данных внутри или снаружи многоугольника, чем гладкий контур.
Кластеры равномерного распределения могут быть созданы так же, как и контуры, созданные в предыдущем разделе. Единичный квадрат с центром в (0,0) был преобразован субковариантной матрицей, а затем был сдвинут до определенного среднего значения.
Повернутые прямоугольники, показанные на рисунке 3., имеют длину, равную 1,58 квадратного корня от каждого собственного значения. Выбросы были определены как точки данных, которые сделалинележат полностью внутри гиперкуба кластера. Выбросы окрашены, чтобы помочь визуализировать точки данных, представляющие выбросы хотя бы в одном измерении. Есть много разных методов, которые можно использовать, чтобы определить, находятся ли точки данных в пределах выпуклого многоугольника. Определение того, находится ли точка данных внутри многоугольника, будет оставлено читателю в качестве упражнения.
Другим потенциальным вариантом использования модели однородного распределения может быть использование алгоритма в качестве классификатора плотности ядра. Среднее значение цели может быть найдено для точек данных внутри гиперкуба и может использоваться как вероятность того, что у кластера будет цель. Этот алгоритм позволил бы проанализировать анализ затрат и выгод независимо для каждого кластера.
Видео:Линал 1.8 Собственные векторы и собственные числаСкачать
Финальные заметки
Есть еще много интересных вариантов использования и свойств, не описанных в этой статье: 1) связь между ковариацией и корреляцией 2) нахождениеближайшая корреляционная матрица3) применения ковариационной матрицы в фильтрах Калмана, расстоянии Махаланобиса и анализе главных компонент 4) как рассчитать собственные векторы ковариационной матрицы и собственные значения 5) как оптимизируются модели гауссовой смеси.
🎥 Видео
Ковариационная матрицаСкачать
Собственные значения и собственные векторы. ТемаСкачать
Собственные векторы и собственные значенияСкачать
7 4 Собственные векторы и собственные значенияСкачать
Айгенвектора и айгензначения | Сущность Линейной Алгебры, глава 10Скачать
Собственные значения и собственные векторы. ПримерСкачать
Овчинников А. В. - Линейная алгебра - Собственные значения и собственные векторы линейного оператораСкачать
Собственные значения матрицыСкачать
Собственные числа, собственные, присоединенные векторы. Матрица оператора в базисе...Скачать
А.7.40 Метод Якоби поиска собственных векторов и значений симметричных матрицСкачать
Собственные векторы, собственные числа. Многочлены и делимость. Аффинные преобразования. Группы.Скачать