Раскрытие секретов уменьшения размерности: изучение различных методов с помощью sklearn t-SNE

“sklearn t-SNE: раскрываем секреты уменьшения размерности”

В области машинного обучения и анализа данных методы уменьшения размерности играют решающую роль в визуализации и понимании сложных наборов данных. Одним из таких методов является t-SNE (t-Distributed Stochastic Neighbor Embedding), который приобрел популярность благодаря своей способности сохранять локальную и глобальную структуру данных. В этой статье блога мы рассмотрим различные методы использования t-SNE с примерами кода для выявления скрытых закономерностей в многомерных данных.

Метод 1: базовая реализация
Для начала давайте рассмотрим базовую реализацию t-SNE с использованием библиотеки sklearnscikit-learn.

from sklearn.manifold import TSNE
import matplotlib.pyplot as plt
# Assuming you have a high-dimensional dataset `X`
tsne = TSNE(n_components=2, random_state=42)
X_embedded = tsne.fit_transform(X)
# Plotting the embedded data
plt.scatter(X_embedded[:, 0], X_embedded[:, 1])
plt.title("t-SNE Visualization")
plt.xlabel("Dimension 1")
plt.ylabel("Dimension 2")
plt.show()

Метод 2: управление недоумением
t-SNE имеет гиперпараметр, называемый недоумением, который влияет на баланс между сохранением глобальной и локальной структуры. По умолчанию установлено значение 30, но его можно изменить в зависимости от характеристик набора данных.

tsne = TSNE(n_components=2, perplexity=50, random_state=42)
X_embedded = tsne.fit_transform(X)

Метод 3: обработка больших наборов данных с помощью аппроксимаций
Для больших наборов данных t-SNE может быть дорогостоящим в вычислительном отношении. В таких случаях реализация scikit-learnпредоставляет метод аппроксимации под названием barnes_hut.

tsne = TSNE(n_components=2, method='barnes_hut', random_state=42)
X_embedded = tsne.fit_transform(X)

Метод 4: визуализация кластеров
t-SNE особенно полезен для визуализации кластеров в данных. Мы можем покрасить точки данных в зависимости от их основных меток или результатов кластеризации.

colors = ['red', 'blue', 'green']  # Assuming we have three clusters
labels = [0, 1, 2]  # Assuming labels for each data point
plt.scatter(X_embedded[:, 0], X_embedded[:, 1], c=[colors[label] for label in labels])
plt.title("t-SNE Clustering")
plt.xlabel("Dimension 1")
plt.ylabel("Dimension 2")
plt.legend(labels)
plt.show()

Метод 5: Интерактивная визуализация с помощью Plotly
Вместо статических графиков мы можем создавать интерактивные визуализации с помощью библиотеки plotly, что позволяет пользователям исследовать встраивания t-SNE более динамично.

import plotly.express as px
fig = px.scatter(x=X_embedded[:, 0], y=X_embedded[:, 1], color=labels)
fig.update_layout(title="Interactive t-SNE Visualization", xaxis_title="Dimension 1", yaxis_title="Dimension 2")
fig.show()

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