Анализ основных компонентов (пример исходного кода по математике)
Мой вопрос довольно элементарный, но мне нужна помощь в понимании основных понятий. В следующем примере со страницы документации Mathworks princomp
функция
load hald;
[pc,score,latent,tsquare] = princomp(ingredients);
pc,latent
мы получаем следующие значения для:
pc =
-0.0678 -0.6460 0.5673 0.5062
-0.6785 -0.0200 -0.5440 0.4933
0.0290 0.7553 0.4036 0.5156
0.7309 -0.1085 -0.4684 0.4844
latent =
517.7969
67.4964
12.4054
0.2372
score =
36.8218 -6.8709 -4.5909 0.3967
29.6073 4.6109 -2.2476 -0.3958
-12.9818 -4.2049 0.9022 -1.1261
23.7147 -6.6341 1.8547 -0.3786
-0.5532 -4.4617 -6.0874 0.1424
-10.8125 -3.6466 0.9130 -0.1350
-32.5882 8.9798 -1.6063 0.0818
22.6064 10.7259 3.2365 0.3243
-9.2626 8.9854 -0.0169 -0.5437
-3.2840 -14.1573 7.0465 0.3405
9.2200 12.3861 3.4283 0.4352
-25.5849 -2.7817 -0.3867 0.4468
-26.9032 -2.9310 -2.4455 0.4116
Условные обозначения:
латентный - это вектор, содержащий собственные значения ковариационной матрицы X.
pc представляет собой матрицу p-by-p, каждый столбец содержит коэффициенты для одного главного компонента. Столбцы расположены в порядке убывания дисперсии компонента.**
оценка является основным компонентом оценки; то есть представление X в главном компонентном пространстве. Строки SCORE соответствуют наблюдениям, столбцы компонентам.
Может кто-нибудь объяснить, генерируются ли значения счета каким-либо образом, используя значения pc, и если это правда, какой тип вычисления выполняется?
1 ответ
Да, это score = norm_ingredients * pc
, где norm_ingredients
является нормализованной версией вашей входной матрицы, так что ее столбцы имеют нулевое среднее значение, то есть
norm_ingredients = ingredients - repmat(mean(ingredients), size(ingredients, 1), 1)