はじめに
この実験では、非線形次元削減の手法である多様体学習を探索します。次元削減は、3 次元以上のデータを解釈するのが困難なため、高次元データセットを可視化するために頻繁に使用されます。多様体学習アルゴリズムは、データの基礎となる構造を保つ低次元表現を見つけることを目的としています。
この実験では、scikit-learn ライブラリを使用して、さまざまなデータセットに対して多様体学習を行います。異なるアルゴリズムを探索し、それらの性能と出力を比較します。
VM のヒント
VM の起動が完了したら、左上隅をクリックしてノートブックタブに切り替え、Jupyter Notebook を使って練習しましょう。
Jupyter Notebook の読み込みには数秒待つ必要がある場合があります。Jupyter Notebook の制限により、操作の検証は自動化できません。
学習中に問題が発生した場合は、Labby にお問い合わせください。セッション後にフィードバックを提供してください。すぐに問題を解決いたします。
Isomap
Isomap アルゴリズムは、多様体学習の初期のアプローチの 1 つです。すべての点間の測地距離を維持する低次元埋め込みを求めます。
from sklearn.manifold import Isomap
## Isomap アルゴリズムのインスタンスを作成
isomap = Isomap(n_components=2)
## アルゴリズムをデータに適合させ、データを低次元空間に変換
X_transformed = isomap.fit_transform(X)
局所的線形埋め込み (Locally Linear Embedding: LLE)
局所的線形埋め込み (LLE) は、もう一つの多様体学習アルゴリズムです。このアルゴリズムは、局所的な近傍内の距離を保つデータの低次元射影を求めます。
from sklearn.manifold import LocallyLinearEmbedding
## LLE アルゴリズムのインスタンスを作成
lle = LocallyLinearEmbedding(n_components=2)
## アルゴリズムをデータに適合させ、データを低次元空間に変換
X_transformed = lle.fit_transform(X)
t-分布型確率的近傍埋め込み (t-distributed Stochastic Neighbor Embedding: t-SNE)
t-SNE は、データポイントの親和性を確率に変換する人気のある多様体学習方法です。高次元データの可視化に特に有効です。
from sklearn.manifold import TSNE
## t-SNE アルゴリズムのインスタンスを作成
tsne = TSNE(n_components=2)
## アルゴリズムをデータに適合させ、データを低次元空間に変換
X_transformed = tsne.fit_transform(X)
結果を比較する
異なる多様体学習アルゴリズムの結果を比較しましょう。変換後のデータを可視化して、アルゴリズムがデータの基礎となる構造をどのように保持しているかを確認します。
import matplotlib.pyplot as plt
## 変換後のデータの散布図を作成
plt.scatter(X_transformed[:, 0], X_transformed[:, 1], c=y)
plt.title('多様体学習')
plt.xlabel('成分 1')
plt.ylabel('成分 2')
plt.show()
まとめ
多様体学習は、高次元データセットの可視化に強力なツールです。これにより、データの次元を削減しながら、基礎となる構造を維持することができます。この実験では、Isomap、局所的線形埋め込み (Locally Linear Embedding: LLE)、t-SNE の 3 つの異なる多様体学習アルゴリズムを検討しました。これらのアルゴリズムをさまざまなデータセットに適用し、その結果を比較しました。多様体学習を使用することで、複雑なデータセットの構造を理解し、高次元データをより効果的に分析および可視化することができます。