教師なし学習:データの表現を求めて

Machine LearningMachine LearningBeginner
今すぐ練習

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

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

はじめに

この実験では、教師なし学習の概念、特にクラスタリングと分解について学びます。教師なし学習は、学習に使用するラベル付きデータがない機械学習の一種です。代わりに、事前知識なしでデータ内のパターンや構造を見つけようとします。クラスタリングは、類似する観測値をグループ化するために使用される一般的な教師なし学習手法です。一方、分解は、最も重要な特徴やコンポーネントを抽出することで、データの低次元表現を見つけるために使用されます。

VMのヒント

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

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

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


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL ml(("Machine Learning")) -.-> ml/FrameworkandSoftwareGroup(["Framework and Software"]) ml/FrameworkandSoftwareGroup -.-> ml/sklearn("scikit-learn") subgraph Lab Skills ml/sklearn -.-> lab-71101{{"教師なし学習:データの表現を求めて"}} end

K-means を使ったクラスタリング

最初に学ぶ手法は、K-means アルゴリズムを使ったクラスタリングです。K-means は、クラスタと呼ばれる十分に分離されたグループに観測値を分割することを目的とする人気のあるクラスタリングアルゴリズムです。K-means によるクラスタリングを示すために、Iris データセットを例に使いましょう。

from sklearn import cluster, datasets

## Load the Iris dataset
X_iris, y_iris = datasets.load_iris(return_X_y=True)

## Perform K-means clustering
k_means = cluster.KMeans(n_clusters=3)
k_means.fit(X_iris)

## Print the cluster labels
print(k_means.labels_)

クラスタリングの評価

クラスタリングを行った後、結果を評価することが重要です。ただし、教師なし学習では、正解ラベルにアクセスできません。したがって、クラスタリング結果を解釈する際には注意が必要です。クラスタリング結果をシルエットスコアやクラスタ内平方和などの指標に基づいて評価するのが一般的です。これらの指標は、クラスタリングの品質に関する洞察を提供することができます。

ベクトル量子化

クラスタリングの応用例の1つがベクトル量子化です。ここでは、クラスタリングを使って少量のサンプルを選択して情報を圧縮します。たとえば、クラスタリングを使って画像をポスター化することができます。

import numpy as np
from sklearn import cluster, datasets
from sklearn.datasets import load_sample_image
import matplotlib.pyplot as plt

## Load a sample image
image = load_sample_image("china.jpg")
## Convert to grayscale
gray_image = image.mean(axis=2)

X = gray_image.reshape((-1, 1))

## Perform K-means clustering
k_means = cluster.KMeans(n_clusters=5, n_init=1)
k_means.fit(X)

## Compress the image using cluster centers
values = k_means.cluster_centers_.squeeze()
labels = k_means.labels_
face_compressed = np.choose(labels, values)
face_compressed.shape = gray_image.shape

## Display original and compressed images
plt.figure(figsize=(12, 6))
plt.subplot(1, 2, 1)
plt.imshow(gray_image, cmap='gray')
plt.title('Original Image')

plt.subplot(1, 2, 2)
plt.imshow(face_compressed, cmap='gray')
plt.title('Compressed Image')

plt.show()

まとめ

この実験では、教師なし学習の概念、特にクラスタリングと分解について学びました。K-means クラスタリング、階層的凝集クラスタリング、特徴凝集、主成分分析 (PCA)、独立成分分析 (ICA) について学びました。これらの手法は、ラベルの付いていないデータにおけるパターンや構造を見つけ出し、最も重要な情報を捉えた低次元表現を見つけるために役立ちます。