Как работает метод главных компонент (PCA) на простом примере. Применение метода главных компонент для обработки многомерных статистических данных Матрицей нагрузок и pca примеры

Главная / Фридрих Шиллер

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

Например, представим, что мы провели исследование, в котором измерили у студентов интеллект по тесту Векслера, тесту Айзенка, тесту Равена, а также успеваемость по социальной, когнитивной и общей психологии. Вполне возможно, что показатели различных тестов на интеллект будут коррелировать между собой, так как они, в конце концов, измеряют одну характеристику испытуемого – его интеллектуальные способности, хотя и по-разному. Если переменных в исследовании слишком много (x 1 , x 2 , …, x p ) , а некоторые из них взаимосвязаны, то у исследователя иногда возникает желание уменьшить сложность данных, сократив количество переменных. Для этого и служит метод главных компонент, который создает несколько новых переменных y 1 , y 2 , …, y p , каждая из которых является линейной комбинацией первоначальных переменных x 1 , x 2 , …, x p :

y 1 =a 11 x 1 +a 12 x 2 +…+a 1p x p

y 2 =a 21 x 1 +a 22 x 2 +…+a 2p x p

(1)

y p =a p1 x 1 +a p2 x 2 +…+a pp x p

Переменные y 1 , y 2 , …, y p называются главными компонентами или факторами. Таким образом, фактор – это искусственный статистический показатель, возникающий в результате специальных преобразований корреляционной матрицы . Процедура извлечения факторов называется факторизацией матрицы. В результате факторизации из корреляционной матрицы может быть извлечено разное количество факторов вплоть до числа, равного количеству исходных переменных. Однако факторы, определяемые в результате факторизации, как правило, не равноценны по своему значению.

Коэффициенты a ij , определяющие новую переменную, выбираются таким образом, чтобы новые переменные (главные компоненты, факторы) описывали максимальное количество вариативности данных и не коррелировали между собой. Часто полезно представить коэффициенты a ij таким образом, чтобы они представляли собой коэффициент корреляции между исходной переменной и новой переменной (фактором). Это достигается умножением a ij на стандартное отклонение фактора. В большинстве статистических пакетов так и делается (в программе STATISTICA тоже). Коэффициенты a ij Обычно они представляются в виде таблицы, где факторы располагаются в виде столбцов, а переменные в виде строк:

Такая таблица называется таблицей (матрицей) факторных нагрузок. Числа, приведенные в ней, являются коэффициентами a ij .Число 0,86 означает, что корреляция между первым фактором и значением по тесту Векслера равна 0,86. Чем выше факторная нагрузка по абсолютной величине, тем сильнее связь переменной с фактором.

Метод главных компонент (PCA - Principal component analysis) - один из основных способов уменьшить размерность данных при наименьшей потере сведений. Изобретенный в 1901 г. Карлом Пирсоном он широко применяется во многих областях. Например, для сжатия данных, «компьютерного зрения», распознавания видимых образов и т.д. Вычисление главных компонент сводится к вычислению собственных векторов и собственных значений ковариационной матрицы исходных данных. Метод главных компонент часто называют преобразованием Кархунена-Лёве (Karhunen-Loeve transform) или преобразованием Хотеллинга (Hotelling transform). Также над этим вопросом работали математики Косамби (1943 г.), Пугачёв (1953 г.) и Обухова (1954 г.).

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

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

Рис.3

На приведённом выше рисунке даны точки P i на плоскости, p i - расстояние от P i до прямой AB. Ищется прямая AB, минимизирующая сумму

Метод главных компонент начинался с задачи наилучшей аппроксимации (приближения) конечного множества точек прямыми и плоскостями. Например, дано конечное множество векторов. Для каждого k = 0,1,...,n ? 1 среди всех k-мерных линейных многообразий в найти такое, что сумма квадратов уклонений x i от L k минимальна:

где? евклидово расстояние от точки до линейного многообразия.

Всякое k-мерное линейное многообразие в может быть задано как множество линейных комбинаций, где параметры в i пробегают вещественную прямую, а? ортонормированный набор векторов

где евклидова норма, ? евклидово скалярное произведение, или в координатной форме:

Решение задачи аппроксимации для k = 0,1,...,n ? 1 даётся набором вложенных линейных многообразий

Эти линейные многообразия определяются ортонормированным набором векторов (векторами главных компонент) и вектором a 0 . Вектор a 0 ищется, как решение задачи минимизации для L 0:

В итоге получается выборочное среднее:

Французский математик Морис Фреше Фреше Морис Рене (Frйchet Maurice Renй) (02.09.1878 г. - 04.06.1973 г.) - выдающийся французский математик. Трудился в области топологии и функционального анализа, теории вероятностей. Автор современных понятий о метрическом пространстве, компактности и полноте. Авт. в 1948 году обратил внимание, что вариационное определение среднего, как точки, минимизирующей сумму квадратов расстояний до точек данных, очень удобно для построения статистики в произвольном метрическом пространстве, и построил обобщение классической статистики для общих пространств, получившее название обобщённого метода наименьших квадратов.

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

1) централизуем данные (вычитаем среднее):

2) находим первую главную компоненту как решение задачи;

3) Вычитаем из данных проекцию на первую главную компоненту:

4) находим вторую главную компоненту как решение задачи

Если решение не единственно, то выбираем одно из них.

2k-1) Вычитаем проекцию на (k ? 1)-ю главную компоненту (напомним, что проекции на предшествующие (k ? 2) главные компоненты уже вычтены):

2k) находим k-ю главную компоненту как решение задачи:

Если решение не единственно, то выбираем одно из них.

Рис. 4

Первая главная компонента максимизирует выборочную дисперсию проекции данных.

Например, пусть нам дан центрированный набор векторов данных, где среднее арифметическое значение x i равно нулю. Задача? найти такое отртогональное преобразование в новую систему координат, для которого были бы верны следующие условия:

1. Выборочная дисперсия данных вдоль первой координаты (главной компоненты) максимальна;

2. Выборочная дисперсия данных вдоль второй координаты (вторая главная компоненты) максимальна при условии ортогональности первой координате;

3. Выборочная дисперсия данных вдоль значений k-ой координаты максимальна при условии ортогональности первым k ? 1 координатам;

Выборочная дисперсия данных вдоль направления, заданного нормированным вектором a k , это

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

Решение задачи о наилучшей аппроксимации даёт то же множество главных компонент, что и поиск ортогональных проекций с наибольшим рассеянием, по очень простой причине:

и первое слагаемое не зависит от a k .

Матрица преобразования данных к главным компонентам строится из векторов «A» главных компонент:

Здесь a i -- ортонормированные векторы-столбцы главных компонент, расположенные в порядке убывания собственных значений, верхний индекс T означает транспонирование. Матрица A является ортогональной: AA T = 1.

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

Самым старым методом отбора главных компонент является правило Кайзера , Кайзер Иоганн Генрих Густав (Kaiser Johann Henrich Gustav, 16.03.1853 г., г.Брезно, Пруссия - 14.10.1940 г., Германия) - выдающийся немецкий математик, физик, исследователь в области спектрального анализа. Авт. по которому значимы те главные компоненты, для которых

то есть л i превосходит среднее значение л (среднюю выборочную дисперсию координат вектора данных). Правило Кайзера хорошо работает в простых случаях, когда есть несколько главных компонент с л i , намного превосходящими среднее значение, а остальные собственные числа меньше него. В более сложных случаях оно может давать слишком много значимых главных компонент. Если данные нормированы на единичную выборочную дисперсию по осям, то правило Кайзера приобретает особо простой вид: значимы только те главные компоненты, для которых л i > 1.

Одним из наиболее популярных эвристических подходов к оценке числа необходимых главных компонент является правило сломанной трости , когда набор нормированных на единичную сумму собственных чисел (, i = 1,...n) сравнивается с распределением длин обломков трости единичной длины, сломанной в n ? 1-й случайно выбранной точке (точки разлома выбираются независимо и равнораспределены по длине трости). Если L i (i = 1,...n) - длины полученных кусков трости, занумерованные в порядке убывания длины: , тогда математическое ожидание L i:

Разберём пример, заключающийся в оценке числа главных компонент по правилу сломанной трости в размерности 5.

Рис. 5.

По правилу сломанной трости k-й собственный вектор (в порядке убывания собственных чисел л i) сохраняется в списке главных компонент, если

На рисунке выше приведён пример для 5-мерного случая:

l 1 =(1+1/2+1/3+1/4+1/5)/5; l 2 =(1/2+1/3+1/4+1/5)/5; l 3 =(1/3+1/4+1/5)/5;

l 4 =(1/4+1/5)/5; l 5 =(1/5)/5.

Для примера выбрано

0.5; =0.3; =0.1; =0.06; =0.04.

По правилу сломанной трости в этом примере следует оставлять 2 главных компоненты:

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

После проецирования на первые k главных компонент с удобно произвести нормировку на единичную (выборочную) дисперсию по осям. Дисперсия вдоль iй главной компоненты равна), поэтому для нормировки надо разделить соответствующую координату на. Это преобразование не является ортогональным и не сохраняет скалярного произведения. Ковариационная матрица проекции данных после нормировки становится единичной, проекции на любые два ортогональных направления становятся независимыми величинами, а любой ортонормированный базис становится базисом главных компонент (напомним, что нормировка меняет отношение ортогональности векторов). Отображение из пространства исходных данных на первые k главных компонент вместе с нормировкой задается матрицей

Именно это преобразование чаще всего называется преобразованием Кархунена-Лоэва, то есть собственно методом главных компонент. Здесь a i -- векторы-столбцы, а верхний индекс T означает транспонирование.

В статистике при использовании метода главных компонент используют несколько специальных терминов.

Матрица данных , где каждая строка - вектор предобработанных данных (центрированных и правильно нормированных), число строк - m (количество векторов данных), число столбцов - n (размерность пространства данных);

Матрица нагрузок (Loadings) , где каждый столбец - вектор главных компонент, число строк -- n (размерность пространства данных), число столбцов - k (количество векторов главных компонент, выбранных для проецирования);

Матрица счетов (Scores)

где каждая строка - проекция вектора данных на k главных компонент; число строк - m (количество векторов данных), число столбцов - k (количество векторов главных компонент, выбранных для проецирования);

Матрица Z-счетов (Z-scores)

где каждая строка-- проекция вектора данных на k главных компонент, нормированная на единичную выборочную дисперсию; число строк - m (количество векторов данных), число столбцов - k (количество векторов главных компонент, выбранных для проецирования);

Матрица ошибок (остатков ) (Errors or residuals)

Основная формула:

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

В этой статье я бы хотел рассказать о том, как именно работает метод анализа главных компонент (PCA – principal component analysis) с точки зрения интуиции, стоящей за ее математическим аппаратом. Максимально просто, но подробно.

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

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

К примеру, расход топлива у нас меряется в литрах на 100 км, а в США в милях на галлон. На первый взгляд, величиные разные, но на самом деле они строго зависят друг от друга. В миле 1600км, а в галлоне 3.8л. Один признак строго зависит от другого, зная один, знаем и другой.

Но гораздо чаще бывает так, что признаки зависят друг от друга не так строго и (что важно!) не так явно. Объем двигателя в целом положительно влияет на разгон до 100 км/ч, но это верно не всегда. А еще может оказаться, что с учетом не видимых на первый взгляд факторов (типа улучшения качества топлива, использования более легких материалов и прочих современных достижений), год автомобиля не сильно, но тоже влияет на его разгон.

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

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

Шаг 1. Подготовка данных

Здесь для простоты примера я не буду брать реальные обучающие датасеты на десятки признаков и сотни наблюдений, а сделаю свой, максимально простой игрушечный пример. 2 признака и 10 наблюдений будет вполне достаточно для описания того, что, а главное – зачем, происходит в недрах алгоритма.

Сгенерируем выборку:

X = np.arange(1,11) y = 2 * x + np.random.randn(10)*2 X = np.vstack((x,y)) print X OUT: [[ 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ] [ 2.73446908 4.35122722 7.21132988 11.24872601 9.58103444 12.09865079 13.78706794 13.85301221 15.29003911 18.0998018 ]]

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

Для начала немного статистики. Вспомним, что для описания случайной величины используются моменты. Нужные нам – мат. ожидание и дисперсия. Можно сказать, что мат. ожидание – это «центр тяжести» величины, а дисперсия – это ее «размеры». Грубо говоря, мат. ожидание задает положение случайной величины, а дисперсия – ее размер.

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

Xcentered = (X - x.mean(), X - y.mean()) m = (x.mean(), y.mean()) print Xcentered print "Mean vector: ", m OUT: (array([-4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 4.5]), array([-8.44644233, -8.32845585, -4.93314426, -2.56723136, 1.01013247, 0.58413394, 1.86599939, 7.00558491, 4.21440647, 9.59501658])) Mean vector: (5.5, 10.314393916)

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

Шаг 2. Ковариационная матрица

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


Для описания формы случайного вектора необходима ковариационная матрица.

Это матрица, у которой (i,j) -элемент является корреляцией признаков (X i , X j). Вспомним формулу ковариации:

В нашем случае она упрощается, так как E(X i) = E(X j) = 0:

Заметим, что когда X i = X j:

и это справедливо для любых случайных величин.

Таким образом, в нашей матрице по диагонали будут дисперсии признаков (т.к. i = j), а в остальных ячейках – ковариации соответствующих пар признаков. А в силу симметричности ковариации матрица тоже будет симметрична.

Замечание: Ковариационная матрица является обобщением дисперсии на случай многомерных случайных величин – она так же описывает форму (разброс) случайной величины, как и дисперсия.

И действительно, дисперсия одномерной случайной величины – это ковариационная матрица размера 1x1, в которой ее единственный член задан формулой Cov(X,X) = Var(X).

Итак, сформируем ковариационную матрицу Σ для нашей выборки. Для этого посчитаем дисперсии X i и X j , а также их ковариацию. Можно воспользоваться вышенаписанной формулой, но раз уж мы вооружились Python’ом, то грех не воспользоваться функцией numpy.cov(X) . Она принимает на вход список всех признаков случайной величины и возвращает ее ковариационную матрицу и где X – n-мерный случайный вектор (n-количество строк). Функция отлично подходит и для расчета несмещенной дисперсии, и для ковариации двух величин, и для составления ковариационной матрицы.
(Напомню, что в Python матрица представляется массивом-столбцом массивов-строк.)

Covmat = np.cov(Xcentered) print covmat, "n" print "Variance of X: ", np.cov(Xcentered) print "Variance of Y: ", np.cov(Xcentered) print "Covariance X and Y: ", np.cov(Xcentered) OUT: [[ 9.16666667 17.93002811] [ 17.93002811 37.26438587]] Variance of X: 9.16666666667 Variance of Y: 37.2643858743 Covariance X and Y: 17.9300281124

Шаг 3. Собственные вектора и значения (айгенпары)

О"кей, мы получили матрицу, описывающую форму нашей случайной величины, из которой мы можем получить ее размеры по x и y (т.е. X 1 и X 2), а также примерную форму на плоскости. Теперь надо надо найти такой вектор (в нашем случае только один), при котором максимизировался бы размер (дисперсия) проекции нашей выборки на него.

Замечание: Обобщение дисперсии на высшие размерности - ковариационная матрица, и эти два понятия эквивалентны. При проекции на вектор максимизируется дисперсия проекции, при проекции на пространства больших порядков – вся ее ковариационная матрица.

Итак, возьмем единичный вектор на который будем проецировать наш случайный вектор 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 . Полученный вектор (или матрица) будет являться массивом проекций наших наблюдений.

V = (-vecs, -vecs) Xnew = dot(v,Xcentered) print Xnew OUT: [ -9.56404107 -9.02021624 -5.52974822 -2.96481262 0.68933859 0.74406645 2.33433492 7.39307974 5.3212742 10.59672425]

dot(X,Y) - почленное произведение (так мы перемножаем векторы и матрицы в Python)

Нетрудно заметить, что значения проекций соответствуют картине на предыдущем графике.

Шаг 5. Восстановление данных

С проекцией удобно работать, строить на ее основе гипотезы и разрабатывать модели. Но не всегда полученные главные компоненты будут иметь явный, понятный постороннему человеку, смысл. Иногда полезно раскодировать, к примеру, обнаруженные выбросы, чтобы посмотреть, что за наблюдения за ними стоят.

Это очень просто. У нас есть вся необходимая информация, а именно координаты базисных векторов в исходном базисе (векторы, на которые мы проецировали) и вектор средних (для отмены центровки). Возьмем, к примеру, наибольшее значение: 10.596… и раскодируем его. Для этого умножим его справа на транспонированный вектор и прибавим вектор средних, или в общем виде для всей выбоки: X T v T +m

Xrestored = dot(Xnew,v) + m print "Restored: ", Xrestored print "Original: ", X[:,9] OUT: Restored: [ 10.13864361 19.84190935] Original: [ 10. 19.9094105]

Разница небольшая, но она есть. Ведь потерянная информация не восстанавливается. Тем не менее, если простота важнее точности, восстановленное значение отлично аппроксимирует исходное.

Вместо заключения – проверка алгоритма

Итак, мы разобрали алгоритм, показали как он работает на игрушечном примере, теперь осталось только сравнить его с PCA, реализованным в sklearn – ведь пользоваться будем именно им.

From sklearn.decomposition import PCA pca = PCA(n_components = 1) XPCAreduced = pca.fit_transform(transpose(X))

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

Print "Our reduced X: n", Xnew print "Sklearn reduced X: n", XPCAreduced OUT: Our reduced X: [ -9.56404106 -9.02021625 -5.52974822 -2.96481262 0.68933859 0.74406645 2.33433492 7.39307974 5.3212742 10.59672425] Sklearn reduced X: [[ -9.56404106] [ -9.02021625] [ -5.52974822] [ -2.96481262] [ 0.68933859] [ 0.74406645] [ 2.33433492] [ 7.39307974] [ 5.3212742 ] [ 10.59672425]]

Мы возвращали результат как матрицу вектор-столбцов наблюдений (это более канонический вид с точки зрения линейной алгебры), PCA в sklearn же возвращает вертикальный массив.

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

Проверим и прочие параметры модели – функция имеет ряд атрибутов, позволяющих получить доступ к промежуточным переменным:

Вектор средних: mean_
- Вектор(матрица) проекции: components_
- Дисперсии осей проекции (выборочная): explained_variance_
- Доля информации (доля от общей дисперсии): explained_variance_ratio_

Замечание: explained_variance_ показывает выборочную дисперсию, тогда как функция cov() для построения ковариационной матрицы рассчитывает несмещенные дисперсии!

Сравним полученные нами значения со значениями библиотечной функции.

Print "Mean vector: ", pca.mean_, m print "Projection: ", pca.components_, v print "Explained variance ratio: ", pca.explained_variance_ratio_, l/sum(l) OUT: Mean vector: [ 5.5 10.31439392] (5.5, 10.314393916) Projection: [[ 0.43774316 0.89910006]] (0.43774316434772387, 0.89910006232167594) Explained variance: [ 41.39455058] 45.9939450918 Explained variance ratio: [ 0.99058588] 0.990585881238

Единственное различие – в дисперсиях, но как уже упоминалось, мы использовали функцию cov(), которая использует несмещенную дисперсию, тогда как атрибут explained_variance_ возвращает выборочную. Они отличаются только тем, что первая для получения мат.ожидания делит на (n-1), а вторая – на n. Легко проверить, что 45.99 ∙ (10 - 1) / 10 = 41.39.

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

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

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

P.S.: Просьба не ругать автора за возможные неточности. Автор сам в процессе знакомства с дата-анализом и хочет помочь таким же как он в процессе освоения этой удивительной области знаний! Но конструктивная критика и разнообразный опыт всячески приветствуются!

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

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



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

Сущность вычисления главных компонент заключается в определении корреляционной (ковариационной) матрицы для исходных факторов X j и нахождении характеристических чисел (собственных значений) матрицы и соответствующих векторов. Характеристические числа являются дисперсиями новых преобразованных переменных и для каждого характеристического числа соответствующий вектор дает вес, с которым старые переменные входят в новые. Главные компоненты – это линейные комбинации исходных статистических величин. Переход от исходных (наблюдаемых) факторов к векторам главных компонент осуществляется посредством поворота координатных осей.

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

Алгоритм вычисления главных компонент

Допустим, имеется m векторов (исходных факторов) размерностью n (количество измерений), которые составляют матрицу Х:

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

где σ j – среднее квадратическое отклонение X j ; σ j 2 - дисперсия; - среднее значение исходных факторов в данной j-ой серии наблюдений

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

Определим матрицу парных коэффициентов корреляции

где у ij – нормированное и центрированное значение x j –й случайной величины для i-го измерения; y ik – значение для k-й случайной величины.

Значение r jk характеризует степень разброса точек по отношению к линии регрессии.

Искомая матрица главных компонент F определяется из следующего соотношения (здесь используется транспонированная,- “повернутая на 90 0 ” – матрица величин y ij):

или используя векторную форму:

,

где F – матрица главных компонент, включающая совокупность n полученных значений для m главных компонент; элементы матрицы А являются весовыми коэффициентами, определяющими долю каждой главной компоненты в исходных факторах.

Элементы матрицы А находятся из следующего выражения

где u j – собственный вектор матрицы коэффициентов корреляции R; λ j – соответствующее собственное значение.

Число λ называется собственным значением (или характеристическим числом) квадратной матрицы R порядка m, если можно подобрать такой m-мерный ненулевой собственный вектор u, что Ru = λu.

Множество всех собственных значений матрицы R совпадает с множеством всех решений уравнения |R - λE| = 0. Если раскрыть определитель det |R - λE|, то получится характеристический многочлен матрицы R. Уравнение |R - λE| = 0 называется характеристическим уравнением матрицы R.

Пример определения собственных значений и собственных векторов. Дана матрица .

Ее характеристическое уравнение

Это уравнение имеет корни λ 1 =18, λ 2 =6, λ 3 =3. найдем собственный вектор (направление), соответствующее λ 3 . Подставляя λ 3 в систему, получим:

8u 1 – 6u 2 +2u 3 = 0

6u 1 + 7u 2 - 4u 3 = 0

2u 1 - 4u 2 + 3u 3 = 0

Т. к. определитель этой системы равен нулю, то согласно правилам линейной алгебры, можно отбросить последнее уравнение и решать полученную систему по отношению к произвольной переменной, например u 1 = с= 1

6 u 2 + 2u 3 = - 8c

7 u 2 – 4 u 3 = 6 c

Отсюда получим собственное направление (вектор) для λ 3 =3

1 таким же образом можно найти собственные вектора

Общий принцип, лежащий в основе процедуры нахождения главных компонент показан на рис. 29.



Рис. 29. Схема связи главных компонент с переменными

Весовые коэффициенты характеризуют степень влияния (и направленность) данного “скрытого” обобщающего свойства (глобального понятия) на значения измеряемых показателей Х j .

Пример интерпретации результатов компонентного анализа:

Название главной компоненты F 1 определяется наличием в ее структуре значимых признаков Х 1 , Х 2 , Х 4 , Х 6 , все они представляют характеристики эффективности производственной деятельности, т.е. F 1 - эффективность производства .

Название главной компоненты F 2 определяется наличием в ее структуре значимых признаков Х 3 , Х 5 , Х 7, т.е. F 2 - это размер производственных ресурсов .

ЗАКЛЮЧЕНИЕ

В пособии даны методические материалы, предназначенные для освоения экономико-математического моделирования в целях обоснования принимаемых управленческих решений. Большое внимание уделено математическому программированию, включая целочисленное программирование, нелинейное программирование, динамическое программирование, задачам транспортного типа, теории массового обслуживания, методу главных компонент. Подробно рассмотрено моделирование в практике организации и управления производственными системами, в предпринимательской деятельности и финансовом менеджменте. Изучение представленного материала предполагает широкое использование техники моделирования и расчетов с использованием комплекса программ PRIMA и в среде электронной таблицы Excel.

ПРИМЕНЕНИЕ МЕТОДА ГЛАВНЫХ КОМПОНЕНТ

ДЛЯ ОБРАБОТКИ МНОГОМЕРНЫХ СТАТИСТИЧЕСКИХ ДАННЫХ

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

Ключевые слова: многомерный анализ данных, снижение размерности, метод главных компонент, рейтинг.

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

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


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

1. Определение и вычисление главных компонент ..png" height="22 src="> признаков. В результате получаем многомерные наблюдения, каждое из которых можно представить в виде векторного наблюдения

где https://pandia.ru/text/79/206/images/image005.png" height="22 src=">.png" height="22 src=">– символ операции транспонирования.

Полученные многомерные наблюдения необходимо подвергнуть статистической обработке..png" height="22 src=">.png" height="22 src=">.png" width="132" height="25 src=">.png" width="33" height="22 src="> допустимых преобразований исследуемых признаков 0 " style="border-collapse:collapse">

– условие нормировки;

– условие ортогональности

Полученные подобным преобразованием https://pandia.ru/text/79/206/images/image018.png" width="79" height="23 src="> и представляют собой главные компоненты. Из нихпри дальнейшем анализеисключают переменные с минимальной дисперсией , т. е..png" width="131" height="22 src="> в преобразовании (2)..png" width="13" height="22 src="> этой матрицы равны дисперсиям главных компонент .

Таким образом, первой главной компонентой https://pandia.ru/text/79/206/images/image013.png" width="80" height="23 src=">называется такая нормированно-центрированная линейная комбинация этих показателей, которая среди всех прочих подобных комбинаций обладает наибольшей дисперсией..png" width="12" height="22 src=">собственный вектор матрицы https://pandia.ru/text/79/206/images/image025.png" width="15" height="22 src=">.png" width="80" height="23 src="> называется такая нормированно-центрированная линейная комбинация этих показателей, которая не коррелирована с https://pandia.ru/text/79/206/images/image013.png" width="80" height="23 src=">.png" width="80" height="23 src="> измеряются в различных единицах, то результаты исследования с помощью главных компонент будут существенно зависеть от выбора масштаба и природы единиц измерения , а полученные линейные комбинации исходных переменных будет трудно интерпретировать. В связи с этим при различных единицах измерения исходных признаков DIV_ADBLOCK310">


https://pandia.ru/text/79/206/images/image030.png" width="17" height="22 src=">.png" width="56" height="23 src=">. После подобного преобразования проводят анализ главных компонент относительно величин https://pandia.ru/text/79/206/images/image033.png" width="17" height="22 src=">, которая является одновременно корреляционной матрицей https://pandia.ru/text/79/206/images/image035.png" width="162" height="22 src=">.png" width="13" height="22 src="> на i - й исходный признак ..png" width="14" height="22 src=">.png" width="10" height="22 src="> равна дисперсии v - й главной компонентыhttps://pandia.ru/text/79/206/images/image038.png" width="10" height="22 src="> используются при содержательной интерпретации главных компонент..png" width="20" height="22 src=">.png" width="251" height="25 src=">

Для проведения расчетов векторные наблюдения агрегируем в выборочную матрицу, в которой строки соответствуют контролируемым признакам, а столбцы – объектам исследования (размерность матрицы – https://pandia.ru/text/79/206/images/image043.png" width="348" height="67 src=">

После центрирования исходных данных находим выборочную корреляционную матрицу по формуле

https://pandia.ru/text/79/206/images/image045.png" width="204" height="69 src=">

Диагональные элементы матрицы https://pandia.ru/text/79/206/images/image047.png" width="206" height="68 src=">

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

Составляем характеристическое уравнение для матрицы 0 " style="margin-left:5.4pt;border-collapse:collapse">

Находим все его корни:

Теперь для нахождения компонент главных векторов подставляем последовательно численные значения https://pandia.ru/text/79/206/images/image065.png" width="16" height="22 src=">.png" width="102" height="24 src=">

Например, при https://pandia.ru/text/79/206/images/image069.png" width="262" height="70 src=">

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

1. Для корней системы может быть записано соотношение

https://pandia.ru/text/79/206/images/image071.png" width="20" height="23 src="> – алгебраическое дополнение j -го элемента любой i -й строки матрицы системы.

2. Наличие условия нормировки (2) обеспечивает единственность решения рассматриваемой системы уравнений..png" width="13" height="22 src=">, определяются однозначно, за исключением того, что все они могут одновременно изменить знак. Однако знаки компонентов собственных векторов не играют существенной роли, так как их смена не влияет на результат анализа. Они могут служить только для индикации противоположных тенденций на соответствующей главной компоненте .

Таким образом, получаем собственный вектор https://pandia.ru/text/79/206/images/image025.png" width="15" height="22 src=">:

https://pandia.ru/text/79/206/images/image024.png" width="12" height="22 src="> проверяем по равенству

https://pandia.ru/text/79/206/images/image076.png" width="503" height="22">

… … … … … … … … …

https://pandia.ru/text/79/206/images/image078.png" width="595" height="22 src=">

https://pandia.ru/text/79/206/images/image080.png" width="589" height="22 src=">

где https://pandia.ru/text/79/206/images/image082.png" width="16" height="22 src=">.png" width="23" height="22 src="> – стандартизированные значения соответствующих исходных признаков.

Составляем ортогональную матрицу линейного преобразования https://pandia.ru/text/79/206/images/image086.png" width="94" height="22 src=">

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

Таким образом, в соответствии с критерием информативности, используемым для главных компонент, найденных по корреляционной матрице, семьпервых главных компонент объясняют 88,97% общей изменчивости пятнадцати исходных признаков.

Используя матрицу линейного преобразования https://pandia.ru/text/79/206/images/image038.png" width="10" height="22 src="> (для семи первых главных компонент):

https://pandia.ru/text/79/206/images/image090.png" width="16" height="22 src="> – число дипломов, полученных в конкурсе научных и дипломных работ ; https://pandia.ru/text/79/206/images/image092.png" width="16" height="22 src=">.png" width="22" height="22 src=">.png" width="22" height="22 src=">.png" width="22" height="22 src="> – награды и призовые места, занятые на региональных, областных и городских спортивных соревнованиях.

3..png" width="16" height="22 src=">(число грамот по результатам участия в конкурсах научных и дипломных работ).

4..png" width="22" height="22 src=">(награды и призовые места, занятые на вузовских соревнованиях).

6. Шестая главная компонента положительно коррелирована с показателем DIV_ADBLOCK311">

4. Третья главная компонента – активность студентов в учебном процессе.

5. Четвертая и шестая компоненты – прилежность студентов в течение весеннего и осеннего семестров соответственно.

6. Пятая главная компонента – степень участия в спортивных соревнованиях университета.

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

Описанный в данной статье процесс выделения главных компонент на примере рейтинговой оценки студентов предлагается использовать для аттестации бакалавров и магистров.

СПИСОК ЛИТЕРАТУРЫ

1. Прикладная статистика: Классификация и снижение размерности: справ. изд. / , ; под ред. . – М.: Финансы и статистика, 1989. – 607 с.

2. Справочник по прикладной статистике:в 2 т.: [пер. с англ.] / под ред. Э. Ллойда, У. Ледермана, . – М.:Финансы и статистика, 1990. – Т. 2. – 526 c.

3. Прикладная статистика. Основы эконометрики . В 2 т. Т.1. Теория вероятностей и прикладная статистика: учеб. для вузов / , B. C. Мхитарян. – 2-е изд., испр.– М: ЮНИТИ-ДАНА, 2001. – 656 с.

4. Афифи, А. Статистический анализ: подход с использованием ЭВМ: [пер. с англ.] / А. Афифи, С. Эйзен.– М.: Мир, 1982. – 488 с.

5. Дронов, статистический анализ: учеб. пособие / . – Барна3. – 213 с.

6. Андерсон, Т. Введение в многомерный статистический анализ / Т. Андерсон; пер. с англ. [и др.]; под ред. . – М.: Гос. изд-во физ.-мат. лит., 1963. – 500 с.

7. Лоули, Д. Факторный анализ как статистический метод / Д. Лоули, А. Максвелл; пер. с англ. . – М.: Мир, 1967. – 144 с.

8. Дубров, статистические методы: учебник / , . – М.: Финансы и статистика, 2003. – 352 с.

9. Кендалл, М. Многомерный статистический анализ и временные ряды / М. Кендалл, А. Стьюарт;пер. с англ. , ; под ред. , . – М.: Наука,1976. – 736 с.

10. Белоглазов, анализ в задачах квалиметрии образования / // Изв. РАН. Теория и системы управления. – 2006. – №6. – С. 39 – 52.

Материал поступил в редколлегию 8.11.11.

Работа выполнена в рамках реализации федеральной целевой программы «Научные и научно-педагогические кадры инновационной России» на 2009 – 2013 гг. (государственный контракт № П770).



© 2024 gimn70.ru -- Учимся легко - Портал полезных знаний