Снижение размерности с использованием PCA и t-SNE

Мы рассмотрим два популярных алгоритма снижения размерности: Главные Компоненты (Principal Component Analysis, PCA) и t-распределение Сtochastic Neighbor Embedding (t-SNE).

Снижение размерности с использованием PCA и t-SNE
Краткое содержание

В этой статье я хочу рассказать о таком методе анализа данных, как снижение размерности. Этот метод позволяет упростить данные, сохранив при этом важную информацию.

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

Главные Компоненты (PCA)

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

Алгоритм PCA работает следующим образом:

  1. Стандартизируем данные, чтобы все признаки имели одинаковый масштаб.
  2. Вычисляем ковариационную матрицу данных.
  3. Вычисляем собственные векторы и собственные значения ковариационной матрицы. Собственные векторы определяют направление главных компонент, а собственные значения показывают важность каждой компоненты.
  4. Отсортируем собственные значения по убыванию и выбираем k крупнейших собственных значений и соответствующих им собственных векторов, где k - желаемое количество измерений в новом пространстве.
  5. Используя выбранные собственные векторы, преобразуем исходные данные в новое пространство меньшей размерности.

Рассмотрим пример использования PCA на практике. Для этого мы воспользуемся библиотекой sklearn в Python.

from sklearn.decomposition import PCA
from sklearn.datasets import load_iris

# Загружаем набор данных "Ирис"
iris = load_iris()
X = iris.data
y = iris.target

# Создаём объект PCA с заданным количеством компонентов
pca = PCA(n_components=2)

# Применяем преобразование PCA к данным
X_pca = pca.fit_transform(X)

# Выводим объяснённую дисперсию
print(pca.explained_variance_ratio_)

В этом примере мы загружаем известный набор данных "Ирис", который включает в себя измерения четырёх признаков для 150 ирисов трех видов. Мы применяем PCA с двумя компонентами, что позволяет уменьшить размерность данных с 4 до 2. Объяснённая дисперсия показывает, что на две главные компоненты приходится около 92% дисперсии исходных данных. Это означает, что мы сохранили большую часть информации, упростив данные.

t-SNE

t-SNE является ещё одним популярным методом снижения размерности, который хорошо подходит для визуализации данных высокой размерности. В отличие от PCA, t-SNE не является линейным методом и может лучше сохранять локальную структуру данных.

Алгоритм t-SNE работает следующим образом:

  1. Вычисляем вероятности парных расстояний между всеми объектами в исходном пространстве высокой размерности.
  2. Используя эти вероятности, вычисляем распределение объектов в пространстве низкой размерности (обычно двух или трёхмерном).
  3. Минимизируем расстояние между распределением в исходном пространстве и распределением в пространстве низкой размерности с помощью градиентного спуска.

Рассмотрим пример использования t-SNE на практике. Для этого мы воспользуемся библиотекой sklearn в Python.

from sklearn.manifold import TSNE

# Применяем t-SNE к данным
tsne = TSNE(n_components=2, random_state=42)
X_tsne = tsne.fit_transform(X)

# Визуализируем результаты с помощью scatter plot
import matplotlib.pyplot as plt

plt.scatter(X_tsne[:, 0], X_tsne[:, 1], c=y)
plt.show()

В этом примере мы применяем t-SNE к набору данных "Ирис" и визуализируем результаты на scatter plot. Каждый цвет на графике соответствует одному из трёх видов ирисов. Мы видим, что t-SNE успешно разделил данные на три кластера, что соответствует трём видам ирисов.

Заключение

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

Nerd IT 🌀 ML, DS, ANN, GPT
Привет! Меня зовут Семён, я работаю в сфере ML и аналитики данных и пишу в блог nerdit.ru статьи о своем опыте и том, что может пригодиться начинающим в начале их пути изучения больших данных.

Подписаться на новости Nerd IT

Не пропустите последние выпуски. Зарегистрируйтесь сейчас, чтобы получить полный доступ к статьям.
jamie@example.com
Подписаться