Ошибка памяти PCA в Sklearn: альтернативное снижение яркости?

Я пытаюсь уменьшить размерность очень большой матрицы, используя PCA в Sklearn, но это приводит к ошибке памяти (требуемая оперативная память превышает 128 ГБ). Я уже установил copy=False и использую менее дорогостоящий рандомизированный PCA.

есть ли обходной путь? Если нет, то какие другие методы тусклого уменьшения я мог бы использовать, которые требуют меньше памяти. Спасибо.


обновление: матрица, я пытаюсь ППШ набором векторов. Оно приходит от пройдя множество обучающих образов через pretrained СNN. Матрица [300000, 51200]. Компоненты PCA попробовали: от 100 до 500.

Я хочу уменьшить его размерность, чтобы я мог использовать эти функции для обучения ML algo, например XGBoost. Спасибо.

1 ответов


в конце концов, я использовал TruncatedSVD вместо PCA, который способен обрабатывать большие матрицы без проблем с памятью:

from sklearn import decomposition

n_comp = 250
svd = decomposition.TruncatedSVD(n_components=n_comp, algorithm='arpack')
svd.fit(train_features)
print(svd.explained_variance_ratio_.sum())

train_features = svd.transform(train_features)
test_features = svd.transform(test_features)