У меня большой набор данных, и я хочу уменьшить размерность.
Сейчас везде читаю, что могу использовать для этого PCA. Тем не менее, я все еще не понимаю, что делать после вычисления / выполнения PCA. В R это легко сделать с помощью команды princomp
.
Но что делать после расчета СПС? Если я решил, что хочу использовать первые основных компонентов, как мне точно сократить мой набор данных?
Ответы:
Я полагаю, что то, что вы получаете в своем вопросе, касается усечения данных с использованием меньшего числа основных компонентов (ПК). Для таких операций, я думаю, эта функция
prcomp
более наглядна, так как проще визуализировать умножение матриц, использованное при реконструкции.Во-первых, дайте синтетический набор данных,
Xt
вы выполняете PCA (обычно вы центрируете выборки, чтобы описать ПК, относящиеся к ковариационной матрице:В результатах или
prcomp
вы можете видеть ПК (res$x
), собственные значения (res$sdev
), дающие информацию о величине каждого ПК и нагрузках (res$rotation
).Возводя в квадрат собственные значения, вы получаете дисперсию, объясняемую каждым компьютером:
Наконец, вы можете создать усеченную версию ваших данных, используя только ведущие (важные) ПК:
Вы можете видеть, что в результате получается немного более гладкая матрица данных с отфильтрованными мелкими объектами:
И вот очень простой подход, который вы можете использовать вне функции prcomp:
Теперь решение о том, какие ПК оставить, - это отдельный вопрос, который меня интересовал некоторое время назад . Надеюсь, это поможет.
источник
prcomp
делает для тебя. Посмотрите наres$center
иres$scale
. ИМХО, они менее подвержены ошибкам (нет случайных различий относительно центрирования или нет / масштабирования или нет между явным вызовомscale
иprcomp
вызовом).what to do after calculating the PCA
илиhow do I reduce my dataset exactly
? Учитывая, что ОП провел PCA на своем образце, его вопрос состоит в том, что с ним делать, и что на самом деле происходит с этими подвыборками; не как делать спс. Мы могли бы также предложить сделатьE <- eigen(cov(Sample)); A<- scale(scale=F, Sample) %*% E$vectors
еще один способ получить оценки (что на самом деле и делает princompstats:::princomp.default
).Эти другие ответы очень хорошие и подробные, но мне интересно, действительно ли вы задаете гораздо более простой вопрос: что вы делаете, когда у вас есть ПК?
Каждый ПК просто становится новой переменной. Скажем, ПК1 составляет 60% от общего отклонения, а ПК2 - 30%. Поскольку это составляет 90% от общей вариации, вы можете просто принять эти две новые переменные (ПК) в качестве упрощенной версии ваших исходных переменных. Это означает подгонку их к моделям, если это то, что вас интересует. Когда приходит время интерпретировать ваши результаты, вы делаете это в контексте исходных переменных, которые коррелируют с каждым ПК.
Извините, если я недооценил суть вопроса!
источник
Практически с PCA вы используете прогнозы ПК («баллы») в качестве суррогатных данных для вашего исходного образца. Вы делаете весь свой анализ на счетах, и после этого вы восстанавливаете свой оригинальный образец, используя ПК, чтобы выяснить, что произошло на вашем первоначальном пространстве (это в основном регрессия основных компонентов ). Ясно, что если вы в состоянии осмысленно интерпретировать свои собственные векторы («нагрузки»), то вы находитесь в еще лучшем положении: вы можете описать, что происходит с вашей выборкой в режиме изменения, представленном этой загрузкой, сделав непосредственный вывод об этой загрузке и не заботиться о реконструкции вообще. :)
В общем, что вы «после расчета PCA» зависит от цели вашего анализа. PCA просто дает вам линейно независимую подвыборку ваших данных, которая является оптимальной по критерию реконструкции RSS. Вы можете использовать его для классификации, или регрессии, или для того и другого, или, как я уже упоминал, вы можете распознавать значимые ортогональные варианты вариаций в вашей выборке.
Комментарий : я думаю, что лучший наивный способ определить количество компонентов, которые следует сохранить, - это основывать свою оценку на некотором пороге изменения выборки, который вы хотели бы сохранить в своей выборке с уменьшенной размерностью, а не на каком-то произвольном числе, например. 3, 100, 200. Как объяснил пользователь 4959, вы можете проверить это кумулятивное отклонение, проверив соответствующее поле списка под
$loadings
полем в объекте списка, созданногоprincomp
.источник
pls
princomp {stats}
После выполнения PCA вы можете выбрать первые два компонента и построить график. Вы можете увидеть изменение компонентов, используя график осыпания в R. Кроме того, используя функцию итога с loadings = T, вы можете связать изменение компонентов с компонентами.
Вы также можете посмотреть эти http://www.statmethods.net/advstats/factor.html и http://statmath.wu.ac.at/~hornik/QFS1/principal_component-vignette.pdf
Попробуй думать, что ты хочешь. Вы можете интерпретировать многое из анализа PCA.
Лучший Абхик
источник