Вопрос

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

Ответ предоставлен ясным и полезным. Однако что, если у нас будет большое количество наблюдений А ТАКЖЕ переменные? Например, 500 000 образцов с 600 000 наблюдений. В этом случае матрица ковариации будет огромной (например, 2000 ГБ, предполагая 8byte Float, и если мой расчет верен) и будет невозможно для нас вписать в память.

В таком сценарии есть ли что -нибудь, что мы можем сделать, чтобы вычислять PCA, предполагая, что мы хотим только лучшие ПК (например, 15 ПК)?

Это было полезно?

Решение

Есть несколько вещей, которые вы можете сделать.

  1. Образуйте представитель, но небольшой набор ваших данных, который позволит вам вычислять PCA в памяти. Но, поскольку у вас есть 600,00 наблюдений, это, скорее всего, не приведет к каким -либо значимым результатам.
  2. Используйте Incremental PCA, вот ссылка: http://scikit-learn.org/stable/modules/generated/sklearn.decomposition.incrementalpca.html#sklearn.decomposition.incrementalpca

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

Вот пара ссылок, которые вы найдете полезными:

Лицензировано под: CC-BY-SA с атрибуция
Не связан с datascience.stackexchange
scroll top