教師なし学習

AI | IT用語集

この用語をシェア

概要

教師なし学習(Unsupervised Learning)は、正解ラベルが付いていないデータから、隠れた構造やパターン、関係性を発見する機械学習の手法です。人間が気づかなかった洞察を得ることができ、データ探索、顧客セグメンテーション、特徴抽出、異常検知など様々な場面で活用されています。

詳細説明

主要なタスク

  • クラスタリング:データを類似性に基づいてグループ化
  • 次元削減:高次元データを低次元に圧縮
  • 密度推定:データの分布を推定
  • 異常検知:通常と異なるパターンの検出
  • 関連ルール学習:アイテム間の関係性発見
  • 特徴学習:データの有用な表現を自動獲得

教師あり学習との違い

特徴 教師なし学習 教師あり学習
ラベル 不要 必要
目的 構造発見 予測・分類
評価 内的基準 外的基準(精度)
応用 探索的分析 予測タスク

クラスタリング手法

分割型クラスタリング

  • k-means:最も基本的なクラスタリング手法
    • k個のクラスタ中心を反復的に更新
    • 計算効率が良い
    • 球状のクラスタを仮定
  • k-medoids:外れ値に頑健な手法
  • Fuzzy C-means:ソフトクラスタリング

階層型クラスタリング

  • 凝集型:ボトムアップアプローチ
    • 単連結法
    • 完全連結法
    • Ward法
  • 分割型:トップダウンアプローチ

密度ベースクラスタリング

  • DBSCAN:任意形状のクラスタを発見
  • OPTICS:密度の階層構造を考慮
  • Mean Shift:密度の峰を探索

次元削減手法

線形手法

  • 主成分分析(PCA):分散最大化による次元削減
    • データの主要な変動方向を抽出
    • 情報損失を最小化
    • ノイズ除去効果
  • 独立成分分析(ICA):統計的独立性の最大化
  • 因子分析:潜在因子の推定
  • 線形判別分析(LDA):クラス分離の最大化

非線形手法

  • t-SNE:高次元データの可視化に最適
  • UMAP:t-SNEより高速で大規模データ対応
  • 自己組織化マップ(SOM):トポロジーを保持
  • オートエンコーダー:深層学習による次元削減

実装例

k-meansクラスタリング


from sklearn.cluster import KMeans
from sklearn.preprocessing import StandardScaler
import matplotlib.pyplot as plt
import numpy as np

# サンプルデータの生成
np.random.seed(42)
X1 = np.random.normal(0, 1, (100, 2))
X2 = np.random.normal(3, 1, (100, 2))
X3 = np.random.normal(-3, 1, (100, 2))
X = np.vstack([X1, X2, X3])

# データの標準化
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)

# k-meansクラスタリング
kmeans = KMeans(n_clusters=3, random_state=42)
labels = kmeans.fit_predict(X_scaled)

# 結果の可視化
plt.figure(figsize=(10, 6))
colors = ['red', 'green', 'blue']
for i in range(3):
    cluster_points = X_scaled[labels == i]
    plt.scatter(cluster_points[:, 0], cluster_points[:, 1], 
                c=colors[i], label=f'クラスタ {i+1}', alpha=0.6)

# クラスタ中心の表示
centers = kmeans.cluster_centers_
plt.scatter(centers[:, 0], centers[:, 1], c='black', 
            marker='x', s=200, linewidths=3, label='中心')

plt.xlabel('特徴量1')
plt.ylabel('特徴量2')
plt.title('k-meansクラスタリング結果')
plt.legend()
plt.grid(True, alpha=0.3)
plt.show()

# エルボー法による最適クラスタ数の決定
inertias = []
K_range = range(1, 10)
for k in K_range:
    kmeans = KMeans(n_clusters=k, random_state=42)
    kmeans.fit(X_scaled)
    inertias.append(kmeans.inertia_)

plt.figure(figsize=(8, 5))
plt.plot(K_range, inertias, 'bo-')
plt.xlabel('クラスタ数 (k)')
plt.ylabel('慣性(Inertia)')
plt.title('エルボー法')
plt.grid(True, alpha=0.3)
plt.show()

PCAによる次元削減


from sklearn.decomposition import PCA
from sklearn.datasets import load_iris
import pandas as pd

# データの読み込み
iris = load_iris()
X = iris.data
y = iris.target

# PCAの実行
pca = PCA(n_components=2)
X_pca = pca.fit_transform(X)

# 結果の可視化
plt.figure(figsize=(10, 6))
colors = ['red', 'green', 'blue']
for i in range(3):
    plt.scatter(X_pca[y == i, 0], X_pca[y == i, 1], 
                c=colors[i], label=iris.target_names[i], alpha=0.7)

plt.xlabel(f'第1主成分 ({pca.explained_variance_ratio_[0]:.2%})')
plt.ylabel(f'第2主成分 ({pca.explained_variance_ratio_[1]:.2%})')
plt.title('PCAによるIrisデータセットの可視化')
plt.legend()
plt.grid(True, alpha=0.3)
plt.show()

# 各主成分の寄与率
plt.figure(figsize=(8, 5))
explained_variance = pca.explained_variance_ratio_
cumulative_variance = np.cumsum(explained_variance)

plt.bar(range(1, 3), explained_variance, alpha=0.7, label='個別寄与率')
plt.plot(range(1, 3), cumulative_variance, 'ro-', label='累積寄与率')
plt.xlabel('主成分番号')
plt.ylabel('説明分散比')
plt.title('主成分の寄与率')
plt.legend()
plt.grid(True, alpha=0.3)
plt.show()

深層学習による教師なし学習

オートエンコーダー

  • 基本オートエンコーダー:エンコーダーとデコーダー
  • 変分オートエンコーダー(VAE):確率的な潜在表現
  • デノイジングオートエンコーダー:ノイズ除去
  • スパースオートエンコーダー:スパース表現学習

生成モデル

  • GAN(敵対的生成ネットワーク):リアルなデータ生成
  • 拡散モデル:ノイズからのデータ生成
  • 正規化フロー:可逆変換による生成

応用分野

ビジネス応用

  • 顧客セグメンテーション:マーケティング戦略の最適化
  • 異常検知:不正取引、設備故障の検出
  • 推薦システム:協調フィルタリング
  • 市場バスケット分析:商品の関連性分析

科学・医療

  • 遺伝子発現解析:細胞タイプの分類
  • 創薬:化合物の類似性分析
  • 画像解析:病変の自動検出
  • 脳活動解析:パターンの発見

評価方法

内的評価指標

  • シルエット係数:クラスタの分離度
  • Davies-Bouldin指数:クラスタ間の分離
  • Calinski-Harabasz指数:クラスタの凝集度
  • 慣性(Inertia):クラスタ内の分散

外的評価指標(ラベルがある場合)

  • 調整ランド指数(ARI):偶然の一致を考慮
  • 正規化相互情報量(NMI):情報理論的指標
  • 均質性・完全性・V尺度:クラスタの純度

課題と対策

主な課題

  • クラスタ数の決定:最適なkの選択
    • エルボー法
    • シルエット分析
    • ギャップ統計量
  • 初期値依存性:結果の不安定性
    • 複数回実行
    • k-means++初期化
  • スケールの影響:特徴量の単位差
    • 標準化
    • 正規化

最新動向

  • 自己教師あり学習:ラベルなしデータから特徴表現を学習
  • コントラスティブ学習:類似性と非類似性の学習
  • グラフクラスタリング:ネットワーク構造の分析
  • 深層クラスタリング:深層学習とクラスタリングの統合
  • 説明可能なクラスタリング:結果の解釈性向上

この用語についてもっと詳しく

教師なし学習に関するご質問や、システム導入のご相談など、お気軽にお問い合わせください。

カテゴリ

AI IT用語集