У меня есть data.frame с 800 obs. 40 переменных, и хотел бы использовать Принцип компонентного анализ, чтобы улучшить результаты моего предсказания (который до сих пор является лучшим с работой опорных векторов на некоторых 15 подобранных переменных).
Я понимаю, что prcomp может помочь мне улучшить мои прогнозы, но я не знаю, как использовать результаты функции prcomp.
Я получаю результат:
> PCAAnalysis <- prcomp(TrainTrainingData, scale.=TRUE)
> summary(PCAAnalysis)
Importance of components:
PC1 PC2 PC3 PC4 PC5 PC6 PC7 PC8 PC9 PC10 PC11 PC12 PC13 PC14
Standard deviation 1.7231 1.5802 1.3358 1.2542 1.1899 1.166 1.1249 1.1082 1.0888 1.0863 1.0805 1.0679 1.0568 1.0520
Proportion of Variance 0.0742 0.0624 0.0446 0.0393 0.0354 0.034 0.0316 0.0307 0.0296 0.0295 0.0292 0.0285 0.0279 0.0277
Cumulative Proportion 0.0742 0.1367 0.1813 0.2206 0.2560 0.290 0.3216 0.3523 0.3820 0.4115 0.4407 0.4692 0.4971 0.5248
PC15 PC16 PC17 PC18 PC19 PC20 PC21 PC22 PC23 PC24 PC25 PC26 PC27 PC28
Standard deviation 1.0419 1.0283 1.0170 1.0071 1.001 0.9923 0.9819 0.9691 0.9635 0.9451 0.9427 0.9238 0.9111 0.9073
Proportion of Variance 0.0271 0.0264 0.0259 0.0254 0.025 0.0246 0.0241 0.0235 0.0232 0.0223 0.0222 0.0213 0.0208 0.0206
Cumulative Proportion 0.5519 0.5783 0.6042 0.6296 0.655 0.6792 0.7033 0.7268 0.7500 0.7723 0.7945 0.8159 0.8366 0.8572
PC29 PC30 PC31 PC32 PC33 PC34 PC35 PC36 PC37 PC38
Standard deviation 0.8961 0.8825 0.8759 0.8617 0.8325 0.7643 0.7238 0.6704 0.60846 0.000000000000000765
Proportion of Variance 0.0201 0.0195 0.0192 0.0186 0.0173 0.0146 0.0131 0.0112 0.00926 0.000000000000000000
Cumulative Proportion 0.8773 0.8967 0.9159 0.9345 0.9518 0.9664 0.9795 0.9907 1.00000 1.000000000000000000
PC39 PC40
Standard deviation 0.000000000000000223 0.000000000000000223
Proportion of Variance 0.000000000000000000 0.000000000000000000
Cumulative Proportion 1.000000000000000000 1.000000000000000000
Я думал, что получу параметры, которые наиболее важны для использования, но я просто не нахожу эту информацию. Все, что я вижу, это стандартное отклонение и т. Д. На ПК. Но как я могу использовать это для прогноза?
pls
(Partial Least Squares), в которой есть инструменты для ПЦР ( регрессия главных компонентов ).Ответы:
Хотя я не уверен относительно характера вашей проблемы, я могу вам сказать, что я использовал PCA как средство выделения доминирующих шаблонов в группе переменных-предикторов в последующем построении модели. В вашем примере они будут найдены в основных компонентах (ПК)
PCAAnalysis$x
, и они будут основаны на взвешивании переменных, найденных вPCAAnalysis$rotation
. Одним из преимуществ этого процесса является то, что компьютеры являются ортогональными, и поэтому вы устраняете проблемы мультиколлинеарности между предикторами моделей. Во-вторых, вы можете определить меньшую группу ПК, которые фиксируют большую часть дисперсии в ваших предикторах. Эту информацию можно найти вsummary(PCAAnalysis)
или вPCAAnalysis$sdev
. Наконец, если вы заинтересованы в использовании подмножества ПК для прогнозирования, то вы можете установитьtol
параметр вprcomp
на более высокий уровень, чтобы удалить конечные компьютеры.Теперь вы можете «проецировать» новые данные на базу координат PCA, используя
predict.prcomp()
функцию. Поскольку вы называете свой набор данных «обучающим» набором данных, возможно, имеет смысл спроецировать набор проверочных данных на базу PCA для расчета их соответствующих координат ПК. Ниже приведен пример подбора PCA для 4 биометрических измерений различных видов радужки (которые в некоторой степени коррелируют). После этого я проецирую биометрические значения нового набора данных цветов, которые имеют схожие комбинации этих измерений для каждого из трех видов радужной оболочки. На последнем графике вы увидите, что их проектируемые ПК лежат в той же области графика, что и исходный набор данных.Пример использования
iris
набора данных:источник
predict.prcomp
помощь.Информация из команды summary (), которую вы прикрепили к вопросу, позволяет вам увидеть, например, долю дисперсии, которую захватывает каждый основной компонент (Соотношение дисперсии). Кроме того, совокупная пропорция рассчитывается для выпуска. Например, вам нужно иметь 23 ПК, чтобы зафиксировать 75% отклонений в вашем наборе данных.
Это, конечно, не та информация, которую вы обычно используете в качестве входных данных для дальнейшего анализа. Скорее, вам обычно нужны повернутые данные, которые сохраняются как «х» в объекте, созданном prcomp.
Использование кода R в качестве краткого примера.
Затем вы можете использовать данные в newdat для дальнейшего анализа, например, в качестве входных данных для SVM или некоторой регрессионной модели. Также см., Например, /programming/1805149/how-to-fit-a-linear-regression-model-with-two-principal-components-in-r для получения дополнительной информации.
источник
predict()
метод для тестовых данных. Используя приведенный выше пример,predict(pr, USArrests)
вернет ту же матрицу, что иpr$x
. Для тестовых данных замените USarrests на имя тестовых данных. Вы можете сделать то же самое вручную, но это проще, поскольку методы прогнозирования автоматически заботятся о правильном масштабировании набора тестовых данных.predict()
использует по умолчанию все компоненты. Тем не менее, вы можете ограничить количество возвращаемых компонентов, например, «предикат (pr, USArrests) [, 1: 2]. Будет ли это работать для вас?predict()
это автоматически, учитывая начальные параметры сprcomp()
?