Как работает метод главных компонент

Hisstar

Как работает Principal components analysis ?
Мне надо выделить наиболее важные показатели из группы (скажем, 25 из 150). По всем показателям есть ряды данных. Есть совокупность целевых функций.
Как тут работает PCA?

MammonoK

это по-русски "метод главных компонент"?

Hisstar

угу, если верить Мультитрану

MammonoK

посмотри "прикладная статистика в задачах и упражнениях" - айвазян, мхитарян (издательство юнити, 2001)
стр. 143
там есть описание метода и примеры задач

Hisstar

а в электронном виде есть?

MammonoK

на lib.mexmat.ru нет, значит скорее всего нет. :(

Hisstar

а на пальцах можешь объяснить механизм действия?

a7137928

По-русски это метод главных значений.
Вот ссылка на русскую статью в википедии:
web-страница
Там говорится про три способа понимать главные значения. Я всегда понимал их по третьему варианту: т.е. у нас есть гауссовский вектор, в котором компоненты (центрированные, конечно, т.е. с нулевым средним) как-то скоррелированы, а мы делаем такую линейную замену координат, что некоторые новые координаты будут некоррелированные.
Для этого мы говорим: вот есть матрица ковариации всех наших переменных, эта матрица неотрицательно определена. Поэтому давайте приведём её к главным осям. Собственно, диагональный базис, специальным образом упорядоченный - это и есть главные компоненты.
В общих чертах как-то так.

Hisstar

о! так понятней! спасибо! :)

gr_nik

Насколько я понимаю, если на пальцах, мы по очереди находим направления (новые координаты по которым наблюдается наибольший разброс значений. Вначале находим первое такое направление - это первая главная компонента, потом в ортогональном дополнении к этому вектору находим второе такое направление - вторая, в ортогональном дополнении к первым двум - находим третью и т.д. Тогда первые несколько координат объясняют почти всё рассеяние. Это называется "эллипсоидом рассеяния", вроде, ибо похоже на нахождение главных осей эллипсоида.

gala05

если надо выбрать, а не выделить 25 компонент из 150, то не линейный, не нелинейный PCA тут не помогут.
з.ы. пиши в личку о поставке задачи, авось помогу, тк анализ такого рода (кто важнее) - это тема моей научной рботы

a7137928

если надо выбрать, а не выделить 25 компонент из 150, то не линейный, не нелинейный PCA тут не помогут.
Чем "выбрать" отличается от "выделить"?
Вообще, ты прав в том смысле, что и 150, и 25 - многовато. 150 - значит, работать будет очень долго, если там будет достаточное количество рядов, т.е. порядка тысячи хотя бы. Честно говоря, я даже не уверен, что SPSS, которым я обычно пользуюсь, схавает столько. Наверное схавает, но работать будет доооооолго. SAS точно должен схавать, но он зараза сильно дорогой.
Другой момент - вряд ли там ровно 25 существенно отличных от нуля собственных значений ковариационной матрицы. Обычно бывает так, что первые несколько СЗ объясняют достаточно большой процент общей дисперсии, а все последующие СЗ уже маленькие и дают небольшой вклад. В результате неясно, чем 25 будет сильно лучше, чем 20 или даже 10.
Апдейт: я кажется понял, что значит "выбрать 25 из 150". Мне как-то показали один трюк, он не обосновывается математически (в том смысле, что вносимая этим трюком ошибка никак не подсчитывается но вполне работает.
Итак, у нас есть дохрена переменных, они все как-то коррелированы друг с другом, где-то больше, где-то меньше. А мы хотим из них выделить несколько условно "самых важных".
Для этого мы запускаем метод главных компонент, отбираем первые несколько СЗ, объясняющих большой процент общей дисперсии. А дальше смотрим на матрицу преобразования координат, которая показывает, как главные оси выражаются через исходные переменные:
[math]$PrincComp_1=a_{11}x_1 + a_{12} x_2 + \ldots + a_{1n} x_n$[/math]
[math]$PrincComp_2=a_{21}x_1 + a_{22} x_2 + \ldots + a_{2n} x_n$[/math]
Здесь нужно, чтобы матрица (a_ij) была ортогональной (т.е. чтобы над всеми участвующими переменными была выполнена соответствующая нормировка).
Так вот, смотрим на коэффициенты, и если к примеру видим, что сумма квадратов a_11.. a_15 близка к единице, то это значит, что первая главная компонента "нанизана", в основном, на первые пять исходных переменных, x1..x5.
Дальше смотрим на вторую главную компоненту, через какие исходные переменные она выражается, т.е. с кем имеет высокую корреляцию. Это будет уже другой набор переменных, не такой как у первой главной компоненты (потому что разные главные оси отвечают за ортогональные инвариантные подпространства ковариационной матрицы).
И так далее, пока не примем решение, что мы набрали достаточное количество "разных" исходных переменных, либо пока не переберём какое-то количество главных значений. Описанная процедура делается "на глазок". Кстати, вспоминаю, в SPSS очень удобная матрица выводится, по ней хорошо это делать.
Когда из старых переменных выбраны 25 (или сколько там надо) "ключевых", хорошо бы проверить, что именно эти выбранные переменные отвечают за большой процент совокупной дисперсии всех исходных переменных (иначе странный анализ получится). Например, запустить ANOVA, засунув выбранные переменные в одну группу, а все остальные - в другую.

demiurg

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

gala05

выбрать - это выбрать из x1..x150 какие-то y1..y25
выделить - это получить yi=fi(x1...x150 которые смогут адекватно описать поведение системы
вообще уже давно есть нелинейный (например, нейросетевой) анализ главных компонент, применить его на современном компе займет немного времени. линейный анализ - это для "пристрелки", скорее, и для линейных задач

disepa

нейросетевой
А потом думать, почему ответ такой, а не другой ...
Оставить комментарий
Имя или ник:
Комментарий: