Статистика
Метод главных компонент (PCA)
«У нас 50 000 генов, нужно найти структуру популяции» или «1000 метрик пользователя - что важно?» - мозг человека видит максимум 3 измерения. PCA позволяет сжать тысячи признаков в 2-3 компоненты, сохраняя максимум информации и делая невидимое - видимым.
- Геномика: структура человеческих популяций по миллионам SNP-маркеров визуализируется за секунды
- Распознавание лиц: eigenfaces - первые PCA-компоненты изображений лиц
- Финансы: главные компоненты доходностей акций = скрытые факторы риска рынка
- Netflix: снижение размерности матрицы пользователь-фильм для рекомендательных систем
- МРТ: сжатие объёма данных при сохранении диагностической информации
Предварительные знания
Проклятие размерности
**Проклятие размерности** - явление, при котором с увеличением числа признаков данные становятся разреженными в пространстве, расстояния теряют смысл, и модели переобучаются. При 100 признаках для покрытия 1% объёма пространства нужна выборка размером 10^198 - невозможная задача. Нужно снижение размерности: выбросить мусор, оставить сигнал.
**Многоколлинеарность и PCA:** если признаки сильно коррелированы (например, рост и вес), информация дублируется. PCA находит некоррелированные направления максимальной дисперсии - этим устраняется и избыточность, и шум.
У вас датасет: 500 наблюдений, 300 признаков. Из них только 20 реально информативны. Что произойдёт с моделью машинного обучения без предобработки?
Алгоритм PCA: собственные векторы ковариационной матрицы
**PCA (Principal Component Analysis)** находит ортогональные оси (главные компоненты), вдоль которых дисперсия данных максимальна. Шаги: 1. центрировать данные (вычесть среднее) 2. вычислить ковариационную матрицу Σ 3. найти собственные векторы и значения Σ 4. отсортировать по убыванию собственных значений 5. проецировать данные на топ-k векторов.
**Масштабирование обязательно!** PCA максимизирует дисперсию, поэтому признаки с большими числовыми значениями доминируют. Всегда применяйте `StandardScaler` перед PCA: `Pipeline([('scaler', StandardScaler()), ('pca', PCA(n_components=20))])`.
Данные: рост (см) от 150 до 200 и вес (кг) от 50 до 120. Применяете PCA без масштабирования. Что произойдёт?
Выбор числа компонент: объяснённая дисперсия
Ключевой вопрос PCA: сколько компонент оставить? **График «каменистой осыпи» (scree plot)** показывает собственные значения по убыванию - ищем «локоть» (колено), где убывание замедляется. **Правило 90-95%:** оставлять столько компонент, чтобы объяснить 90-95% исходной дисперсии. **Контекст задачи:** для визуализации - 2-3, для предобработки ML - 90-95%.
**Применения PCA:** сжатие изображений (eigenfaces в распознавании лиц), геномика (структура популяции по SNP-маркерам), визуализация многомерных данных, предобработка для ML (уменьшение шума, ускорение обучения), финансовое моделирование (факторы риска портфеля).
Scree plot показывает: PC1 - 45%, PC2 - 30%, PC3 - 10%, PC4 - 8%, далее <2% каждая. Сколько компонент оставить для задачи визуализации и для предобработки перед классификатором?
Ключевые идеи
- PCA находит ортогональные оси максимальной дисперсии (главные компоненты)
- Алгоритм: центрирование → ковариационная матрица → собственные векторы
- Обязательно масштабировать данные (StandardScaler) перед PCA
- Scree plot и кумулятивная объяснённая дисперсия - инструменты выбора k
- Правило: 90-95% дисперсии для ML, 2-3 компоненты для визуализации
- PCA - сжатие без модели латентной структуры (в отличие от факторного анализа)
PCA и смежные методы
PCA - базовый метод снижения размерности. Факторный анализ (FA) ищет латентные переменные, порождающие данные. t-SNE и UMAP - нелинейные альтернативы для визуализации. Автоэнкодеры - нейросетевой PCA.
- Факторный анализ — Расширение PCA: моделирование латентных переменных с ротацией
- Корреляционный анализ — PCA на корреляционной матрице = PCA с масштабированием
Вопросы для размышления
- Почему главные компоненты ортогональны? Что это означает с точки зрения корреляции между ними?
- Возьмите датасет с числовыми признаками (например, Boston Housing или Iris). Сколько компонент нужно для 90% дисперсии? Что 'несут' первые 2 компоненты - можно ли их интерпретировать?
- PCA уменьшает размерность и может улучшить модель ML. Но когда PCA ухудшит результат классификации?