2013-05-27 5 views
0

Набор данных состоит из N элементов и переменных K. Используя PCA, я могу уменьшить количество переменных, но как проверить, какие из K переменных предоставляют наибольшую информацию?Выбор функции с использованием PCA

Например, у меня есть набор данных, как это:

1 1 1 2 
2 2 1 4 
3 3 2 11 
1 1 2 7 
2 2 3 14 
3 3 3 16 
1 1 4 17 
2 2 4 19 
3 3 3 16 

Я знаю, что первый столбец такой же, как 2-й и 4-й колонке определяется соотношением: 2 * первый + 5 * 3-й 5. Поэтому 1-й и 3-й столбцы предоставляют большую информацию и отдых не предоставляют никакой дополнительной информации. Но как рассчитать это с помощью СПС?

ответ

2

Для примера:

  PC1   PC2   PC3   PC4 
[1,] 0.3516359 -0.79142416 2.497231e-17 -1.299998e-16 
[2,] 0.3516359 -0.79142416 1.713028e-16 1.168541e-16 
[3,] 1.0831644 0.32331520 4.906878e-16 -3.286408e-17 
[4,] 6.1190936 0.03372767 -9.813756e-17 6.572817e-18 

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

В вашем примере вы можете увидеть, что достаточно двух факторов, чтобы объяснить все переменные с точностью округления (т. Е. «Ранг» ковариационной матрицы равен 2), поскольку PC3 и PC4 почти равны нулю.

Это эффективно поворачивается в векторное пространство, которое выравнивает оси со скрытыми переменными. Чтобы рассказать о столбцах в исходной проблеме, вам нужно отобразить их обратно. Например. вы можете посмотреть на самый большой предмет; здесь мы говорим, что PC1 в основном связан с «Col 4», но это произвольно, и PC2 имеет равный вес на «Col 1» и «Col 2» - любой выбор выглядит так же хорошо. Помните, что корреляция не предполагает причинности.

+0

Можете ли вы написать код Matlab для получения этой матрицы? – veeveeoor

+1

У меня нет MatLab самостоятельно, но pca()/princomp() вычисляет компоненты из необработанного набора данных, в то время как pcacov() принимает (симметричную положительную полуопределенную) ковариационную матрицу в качестве входа. – jayprich

+0

Глядя на эквиваленты SciLab, я думаю, что они будут вычислять матрицу выборки-ковариации и сообщать о векторах и факторах отдельно. Моя матрица является факторизацией x '* x, матрицей 4x4, эквивалентной ковариации населения. Для таких дегенеративных случаев, возможно, стоит изучить разложение или аппроксимацию сингулярных значений, которые также доступны и могут возвращать ранг. – jayprich

Смежные вопросы