Какие алгоритмы снижения размерности существуют
Что проверяют
Различаете ли вы методы для визуализации и методы для предобработки признаков. Следом обычно спрашивают, можно ли подавать выход t-SNE в модель и как выбрать число компонент в PCA.
Как отвечать
Начните с того, зачем сжимать: проклятие размерности, шум, скорость обучения, возможность посмотреть на данные. Потом методы с назначением:
- PCA: линейная проекция на направления максимальной дисперсии, считается через SVD. Признаки перед ним стандартизуют, число компонент выбирают по накопленной
explained_variance_ratio_, в sklearn можно передатьn_components=0.95. Для данных, не влезающих в память, естьIncrementalPCA, для разреженных матриц вроде TF-IDFTruncatedSVD; - LDA (линейный дискриминантный анализ): метод с учителем, ищет проекцию, лучше всего разделяющую классы. Компонент не больше, чем число классов минус один;
- Kernel PCA: нелинейный вариант через ядро, дорог по памяти на больших выборках;
- t-SNE: сохраняет локальные соседства, годится для картинок в 2D и 3D. У
TSNEв sklearn нетtransformдля новых точек, результат зависит отperplexityи случайного сида; - UMAP: библиотека
umap-learn, быстрее t-SNE на больших данных, обычно лучше держит глобальную структуру и умеет преобразовывать новые точки, поэтому годится и для предобработки. Главные параметрыn_neighborsиmin_dist; - автоэнкодеры: нелинейное сжатие нейросетью, узкий слой служит эмбеддингом;
- отбор признаков: не преобразование, а удаление лишнего (
SelectKBest, L1-регуляризация). Сохраняет интерпретируемость, которую PCA теряет.
Где спотыкаются
Запускают PCA на нестандартизованных данных. Признак в рублях с огромной дисперсией забирает первую компоненту целиком, и сжатие отражает масштаб, а не структуру.
Читают картинку t-SNE как карту: делают выводы о расстоянии между кластерами и их размере. Эти величины метод не сохраняет, а при другом сиде и perplexity картинка заметно меняется.
Обучают PCA на всём датасете до разбиения на train и test. Это утечка: fit делается только на train, надёжнее всего внутри Pipeline вместе с моделью.