Анализ основных компонентов (пример исходного кода по математике)

Мой вопрос довольно элементарный, но мне нужна помощь в понимании основных понятий. В следующем примере со страницы документации 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)
Другие вопросы по тегам