Встречается на 28% собеседований по Data Engineer

Какие подходы понижения размерности известны

Понижение размерности — это процесс преобразования данных из пространства с высокой размерностью в пространство с меньшей размерностью с сохранением максимально возможного объёма важной информации. Это применяется для уменьшения объёма данных, упрощения моделей, снижения вычислительных затрат и визуализации. Основные методы делятся на линейные (PCA, MDS, LDA) и нелинейные (t-SNE, автоэнкодеры).

Как это работает

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

Нелинейные методы справляются со сложными структурами данных. t-SNE преобразует данные в двух- или трёхмерное пространство, сохраняя локальные окрестности точек, но искажая глобальные расстояния. Автоэнкодеры — нейросети, которые сжимают входные данные через узкое горлышко (bottleneck) и восстанавливают их на выходе; обучение минимизирует ошибку реконструкции, вынуждая сеть извлекать существенные признаки.

Пример

Пример использования PCA на датасете Iris:

python
from sklearn.decomposition import PCA
from sklearn.datasets import load_iris
import matplotlib.pyplot as plt

data = load_iris()
X = data.data
y = data.target

# Уменьшаем размерность до 2 компонент
pca = PCA(n_components=2)
X_r = pca.fit_transform(X)

# Визуализация
plt.figure()
colors = ['navy', 'turquoise', 'darkorange']
for color, i, target_name in zip(colors, [0, 1, 2], data.target_names):
    plt.scatter(X_r[y == i, 0], X_r[y == i, 1], color=color, alpha=.8, lw=2, label=target_name)
plt.legend(loc='best', shadow=False, scatterpoints=1)
plt.title('PCA of IRIS dataset')
plt.show()

Подводные камни

  • PCA чувствителен к масштабу признаков: перед применением необходимо стандартизировать данные.
  • t-SNE стохастичен: разные запуски дают разные результаты, и интерпретировать расстояния между кластерами нельзя.
  • LDA предполагает нормальность распределений и одинаковые ковариационные матрицы классов; при нарушении этих условий работает хуже.
  • Автоэнкодеры требуют много данных и вычислительных ресурсов, а также настройки архитектуры.

Когда использовать

  • PCA — для линейных данных, когда нужно быстро снизить размерность перед моделированием или для визуализации.
  • MDS — когда важны попарные расстояния, например, в психометрии или анализе сходства.
  • t-SNE — для визуализации сложных нелинейных структур, особенно в биологии или обработке изображений.
  • LDA — для задач классификации, когда нужно одновременно снизить размерность и сохранить разделимость классов.
  • Автоэнкодеры — для нелинейных данных с большим объёмом, когда требуется извлечение глубоких признаков.

Коротко

  • Понижение размерности уменьшает число признаков, сохраняя информацию.
  • Линейные методы: PCA, MDS, LDA; нелинейные: t-SNE, автоэнкодеры.
  • PCA — стандартный выбор для начала; t-SNE — для визуализации.
  • Всегда проверяйте, насколько хорошо метод сохраняет структуру данных, например, через долю объяснённой дисперсии.
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы