Scikit-Learn を用いた多様体学習

Machine LearningMachine LearningBeginner
今すぐ練習

This tutorial is from open-source community. Access the source code

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

この実験では、非線形次元削減の手法である多様体学習を探索します。次元削減は、3次元以上のデータを解釈するのが困難なため、高次元データセットを可視化するために頻繁に使用されます。多様体学習アルゴリズムは、データの基礎となる構造を保つ低次元表現を見つけることを目的としています。

この実験では、scikit-learnライブラリを使用して、さまざまなデータセットに対して多様体学習を行います。異なるアルゴリズムを探索し、それらの性能と出力を比較します。

VMのヒント

VMの起動が完了したら、左上隅をクリックしてノートブックタブに切り替え、Jupyter Notebookを使って練習しましょう。

Jupyter Notebookの読み込みには数秒待つ必要がある場合があります。Jupyter Notebookの制限により、操作の検証は自動化できません。

学習中に問題が発生した場合は、Labbyにお問い合わせください。セッション後にフィードバックを提供してください。すぐに問題を解決いたします。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL ml(("Machine Learning")) -.-> ml/FrameworkandSoftwareGroup(["Framework and Software"]) sklearn(("Sklearn")) -.-> sklearn/AdvancedDataAnalysisandDimensionalityReductionGroup(["Advanced Data Analysis and Dimensionality Reduction"]) sklearn/AdvancedDataAnalysisandDimensionalityReductionGroup -.-> sklearn/manifold("Manifold Learning") ml/FrameworkandSoftwareGroup -.-> ml/sklearn("scikit-learn") subgraph Lab Skills sklearn/manifold -.-> lab-71115{{"Scikit-Learn を用いた多様体学習"}} ml/sklearn -.-> lab-71115{{"Scikit-Learn を用いた多様体学習"}} end

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つの異なる多様体学習アルゴリズムを検討しました。これらのアルゴリズムをさまざまなデータセットに適用し、その結果を比較しました。多様体学習を使用することで、複雑なデータセットの構造を理解し、高次元データをより効果的に分析および可視化することができます。