Снижение размерности с использованием PCA и t-SNE
Мы рассмотрим два популярных алгоритма снижения размерности: Главные Компоненты (Principal Component Analysis, PCA) и t-распределение Сtochastic Neighbor Embedding (t-SNE).
В этой статье я хочу рассказать о таком методе анализа данных, как снижение размерности. Этот метод позволяет упростить данные, сохранив при этом важную информацию.
Снижение размерности является важным шагом в анализе данных, особенно при работе с большими объёмами данных или данными высокой размерности. Снижение размерности позволяет упростить данные, сделать их более наглядными и удобными для визуализации, а также уменьшить вычислительную сложность дальнейшей обработки.
Главные Компоненты (PCA)
PCA является одним из самых популярных методов снижения размерности. Основная идея PCA заключается в преобразовании исходных данных в новое пространство с меньшим количеством измерений, сохраняя при этом максимальное количество информации.
Алгоритм PCA работает следующим образом:
- Стандартизируем данные, чтобы все признаки имели одинаковый масштаб.
- Вычисляем ковариационную матрицу данных.
- Вычисляем собственные векторы и собственные значения ковариационной матрицы. Собственные векторы определяют направление главных компонент, а собственные значения показывают важность каждой компоненты.
- Отсортируем собственные значения по убыванию и выбираем k крупнейших собственных значений и соответствующих им собственных векторов, где k - желаемое количество измерений в новом пространстве.
- Используя выбранные собственные векторы, преобразуем исходные данные в новое пространство меньшей размерности.
Рассмотрим пример использования 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 работает следующим образом:
- Вычисляем вероятности парных расстояний между всеми объектами в исходном пространстве высокой размерности.
- Используя эти вероятности, вычисляем распределение объектов в пространстве низкой размерности (обычно двух или трёхмерном).
- Минимизируем расстояние между распределением в исходном пространстве и распределением в пространстве низкой размерности с помощью градиентного спуска.
Рассмотрим пример использования 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 является нелинейным методом и лучше сохраняет локальную структуру данных, что делает его полезным для визуализации. Выбор метода зависит от конкретной задачи и особенностей данных.