Выбор количества основных компонентов для сохранения


10

Один из методов, который мне предложили, - это посмотреть на график осыпей и проверить наличие «локтя», чтобы определить правильное количество ПК для использования. Но если график не ясен, есть ли у R расчет для определения числа?

fit <- princomp(mydata, cor=TRUE)

3
Не то чтобы я знал. Во-первых, если вы ссылаетесь на «собственное значение выше 1 эмпирического правила» или так называемое правило Кайзера, вы, вероятно, найдете количество ПК, которые удовлетворяют этому (имейте в виду, что это обычно переоценивает количество измерений), посмотрев точнее на твоем осыпном сюжете. Во-вторых, параллельный анализ - лучший способ определить количество компонентов; см. пакет psyили psychв R, а также программы SPSS, SAS и MATLAB для определения количества компонентов и факторов. Использование параллельного анализа и MAP-теста Великера в целом.
ЧЛ

Ответы:


10

В следующей статье: Сохранение компонентов в анализе основных компонентов с применением данных микрочипов кДНК Cangelosi и Goriely дает довольно хороший обзор стандартного правила больших пальцев для определения количества компонентов в исследовании. (График Scree, объясненная доля общей дисперсии, правило среднего собственного значения, диаграмма логического собственного значения и т. Д.) Большинство из них довольно просто реализовать в R.

В общем, если ваш сюжет осыпается очень неубедительно, то вам просто нужно «выбрать свой яд». Не существует абсолютно правильных или неправильных данных, поскольку в действительности количество используемых компьютеров зависит от вашего понимания проблемы. Единственный набор данных, который вы можете «реально» знать размерность, - это тот, который вы создали сами. :-) Основные компоненты в конце дня обеспечивают оптимальную декомпозицию данных по метрике RSS (где в качестве побочного продукта вы получаете каждый компонент для представления основного способа изменения), включая или исключая определенное количество компонентов диктует ваше восприятие размерности вашей проблемы.

Что касается личных предпочтений, мне нравится подход Минки к этому автоматическому выбору размерности для PCA, который основан на вероятностной интерпретации PCA, но опять же, вы попадаете в игру, пытаясь смоделировать вероятность ваших данных для данной размерности. (Ссылка содержит код Matlab, если вы хотите следовать этому обоснованию.)

Постарайтесь понять ваши данные больше. например. Вы действительно верите, что 99,99% вариаций вашего набора данных обусловлены ковариатами вашей модели? Если нет, то, вероятно, вам не нужно включать измерения, которые показывают такую ​​небольшую долю общей дисперсии. Считаете ли вы, что в действительности компонент отражает отклонения ниже порога просто заметных различий? Это опять же, вероятно, означает, что включение этого компонента в анализ не имеет большого значения.

В любом случае, удачи и внимательно проверьте ваши данные. (Построение их также делает чудеса.)


Можете ли вы указать на код Matlab, я не могу его найти.
mrgloom

Я думаю, что нашел это research.microsoft.com/en-us/um/people/minka/papers/pca
mrgloom

Yeap! Это была ссылка, на которую я ссылался.
usεr11852

Интересно, применяется ли подход Минки в R к настоящему времени? Скажем, самые важные ПК были определены в исследовании разными методами, мы знаем, что они должны быть сигнальной частью данных. Знаете ли вы случайно, есть ли какое-либо ограничение в% отклонения, которое объясняют эти ПК, ниже которого считается запретным для дальнейшего анализа? любая ссылка будет высоко ценится.
докторская степень

6

В течение последних нескольких лет была очень хорошая последующая работа по этой проблеме, так как этот вопрос был первоначально задан и получен ответ. Я настоятельно рекомендую следующую статью Гэвиша и Донохо: Оптимальный жесткий порог для особых значений равен 4 / sqrt (3)

Их результат основан на асимптотическом анализе (т. Е. Существует четко определенное оптимальное решение, поскольку ваша матрица данных становится бесконечно большой), но они показывают впечатляющие численные результаты, которые показывают, что асимптотически оптимальная процедура работает для небольших и реалистичных наборов данных, даже при различном шуме моделей.

По сути, оптимальная процедура сводится к оценке шума , добавляемого к каждому элементу матрицы. На основании этого вы вычисляете порог и удаляете главные компоненты, сингулярное значение которых падает ниже порога. Для квадратной матрицы константа пропорциональности 4 / sqrt (3) отображается так, как это предлагается в заголовке:n × nσn×n

λ=4σn3

Они также объясняют не квадратный случай в статье. У них есть хорошее дополнение кода (в MATLAB) здесь, но алгоритмы было бы легко реализовать в R или где-либо еще: https://purl.stanford.edu/vg705qn9070

Предостережения:

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

+1, вау эта статья выглядит крайне интересно. Большое спасибо за упоминание этого.
амеба

4

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.