Объяснение процентного значения в методе PCA scikit-learn - PullRequest
0 голосов
/ 08 июня 2018

В scikit-learn есть метод, называемый PCA .Этот метод принимает процентный параметр. Этот сайт объясняет этот параметр следующим образом:

Обратите внимание, что в приведенном ниже коде для параметра количества компонентов указано 0,95.Это означает, что scikit-learn выбирает минимальное количество главных компонентов, чтобы сохранить 95% дисперсии.

> from sklearn.decomposition import PCA
> # Make an instance of the Model 
> pca = PCA(.95)

Я немного не в курсе интерпретации этого объяснения.Допустим, выходной сигнал PCA будет следующим:

  • PC1 объясняет 70% полной дисперсии
  • PC2 объясняет 15% полной дисперсии
  • PC3объясняет 10% полной дисперсии
  • PC4 объясняет 4% полной дисперсии
  • PC5 объясняет 1% полной дисперсии

Будет ли утверждение PCA (0,71) вернуть PC1 и PC5 (так как они оба объясняют точно 71% дисперсии) или это вернет PC1 и PC2?Что произойдет, если я захочу получить 0,5% дисперсии, то есть какой ПК вернет оператор PCA (0,005)?

Ответы [ 2 ]

0 голосов
/ 13 июня 2018

В документации говорится ниже о случае, когда 0 < n_components < 1:

, если 0 < n_components < 1 и svd_solver == 'full',

selectколичество компонентов, такое, что количество отклонений, которое необходимо объяснить, больше, чем процент, заданный n_components.

Для вас было бы более понятно, если бы оно было упомянуто как:

, если 0 < n_components < 1 и svd_solver == 'full',

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

, так что двусмысленности не будет.

После этого:

PCA(0.71) вернет ПК1, а ПК2

PCA(0.005) - (маловероятный случай) вернет ПК1

0 голосов
/ 08 июня 2018

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

Обычно, когда мы выбираем нет.из основных компонентов (например, для уменьшения размерности, визуализации и т. д.) мы выбираем число k, и неявно оно подразумевается «начать с ПК1 и продолжить последовательно , вплоть до (и включая) PCk».Таков принцип, скажем, за функцией preProcess пакета caret в R (и, возможно, за всеми функциями, выполняющими аналогичные задачи, в любом программном пакете).

InДругими словами, и, насколько мне известно, по крайней мере, в таких случаях, как тот, который вы описываете, мы никогда не выбираем ПК с помощью cherrypicking (т. е., например, PC2, PC4 и PC5).Вместо этого мы всегда выбираем k < n (здесь n=5), а затем приступаем к всем первым k ПК, т.е. начиная с ПК1 и далее.

...