教師なし学習 — ラベルなしでデータの「形」を読む

正解がなくても、データには構造が潜んでいる。 K-meansクラスタリング、主成分分析(PCA)、多様体学習、独立成分分析(ICA)—— ラベルなしのデータから隠れたパターンを発見する4つの視点を、一緒に見ていきましょう。

「正解なし」の探索へ

医師が数百人の患者データを眺めています。血液検査の数値、年齢、体重、生活習慣——。 診断名はついていません。しかし、どこかに「似た患者のグループ」が潜んでいるはずです。 これを見つけられれば、新薬の開発や治療法の改善につながります。

これが教師なし学習の動機です。

教師あり学習と教師なし学習の対比
左: 色分けされたラベル付きデータから境界を学ぶ(教師あり学習) / 右: ラベルなしデータからグループ構造を発見する(教師なし学習)

正解ラベルがなくても、データには構造がある。

これまで学んできた手法(回帰・分類・SVM・k-NN)はすべて教師あり学習でした。 入力 X と正解 Y のペアから関係を学びます。しかし、現実には正解がつけられていないデータがほとんどです。

教師なし学習では、観測値 x₁, x₂, ..., x_N だけから、データの分布 Pr(X) の隠れた構造を発見します。

データの中に潜む構造には、大きく2種類あります。

このページでは、最も直感的で重要なこの2つの構造を深く掘り下げていきます。

データの中の「グループ」を見つける — K-meansクラスタリング

直感から始めましょう。初めて動物園に行ったとします。動物の名前を知らなくても、 「似た見た目の動物が群れている」ことに気づきます。形・大きさ・色——似た特徴の個体が自然に集まる。 これがクラスタリングの本質です。

K-meansクラスタリングの収束過程
グレーの点群 → ランダム初期重心(×印)→ 色による割り当て → 重心移動 → 再割り当て → 収束

K-meansアルゴリズムは、最もシンプルなクラスタリング手法です。 K(クラスター数)を事前に決め、次の2ステップを交互に繰り返します。

ステップ1: 割り当て

各データ点を、最も近いクラスター重心に割り当てます。

$$C(i) = \underset{1 \leq k \leq K}{\arg\min} \|x_i - \mu_k\|^2$$

「最も近い」の判定には、ユークリッド距離(直線距離の2乗)を使います。 μ_k は k 番目のクラスターの「重心(中心)」です。

ステップ2: 更新

各クラスターの重心を、割り当てられた全データ点の平均に更新します。

$$\mu_k = \frac{1}{|C_k|} \sum_{i \in C_k} x_i$$

この2ステップを、重心が動かなくなるまで繰り返します。 これで必ず収束します——なぜなら、全体の「クラスター内誤差」が単調に減少するからです。

$$W(C) = \sum_{k=1}^{K} \sum_{i \in C_k} \|x_i - \mu_k\|^2$$

W(C) は「クラスター内変動(Within-cluster variation)」と呼ばれます。 K-meansはこれを小さくすることを目指します。 この式が意味するのは、「各クラスター内でデータ点が重心から離れすぎていない状態」を求めるということです。

一つ注意点: 初期重心の選び方によって結果が変わります。 そのため実際には、複数の初期値でアルゴリズムを走らせ、 最も W(C) が小さい結果を採用します。

データの「主な向き」を見つける — 主成分分析(PCA)

100個の変数を持つデータを想像してください。それを可視化することも、理解することも困難です。 でも、もしそのデータの「本質的なバラツキ」が実は2方向で説明できるとしたら?

主成分分析(PCA: Principal Component Analysis)は、 データの「最も重要な方向」を見つける手法です。

主成分分析の幾何学的意味
楕円形の点群から共分散楕円を囲み、第1主成分(青・長い矢印)と第2主成分(黄・短い矢印)が出現。矢印の長さが分散の大きさを示す

まず一歩引いて考えましょう。細長い楕円形に広がった点群があります。 この点群を「最もうまく表現する」1本の軸はどれでしょうか?

それは、点群が最も広がっている方向、 つまり分散を最大化する方向です。これが「第1主成分」です。

第2主成分は、第1主成分と直交(垂直)する方向の中で、分散が最も大きいものです。 2次元なら第2主成分まで、3次元なら第3主成分まで——これで元の空間全体をカバーできます。

共分散行列と固有値分解

「分散の向き」を数学的に捉えるには、共分散行列を使います。 共分散行列 S は、変数どうしの「広がり方と共変動」を記録した行列です。 2変数 (x₁, x₂) の場合:

$$\mathbf{S} = \begin{pmatrix} \text{Var}(x_1) & \text{Cov}(x_1, x_2) \\ \text{Cov}(x_2, x_1) & \text{Var}(x_2) \end{pmatrix}$$

対角成分は各変数の分散(広がり)、非対角成分は変数間の共変動(一緒に動く度合い)です。

PCAでは、この共分散行列の固有値分解を行います:

$$\mathbf{S} = \mathbf{V} \mathbf{D} \mathbf{V}^T$$

「固有ベクトル」V の各列が主成分の方向、 「固有値」D の対角成分がその方向の分散の大きさです。 固有値が大きい = その方向への広がりが大きい = 重要な方向、ということです。

次元削減と寄与率

最初の q 個の主成分を使った低次元表現:

$$z_i = \mathbf{V}_q^T x_i \in \mathbb{R}^q \quad (q \ll p)$$

これで p 次元データを q 次元に圧縮しながら、情報の損失を最小化できます。

どれだけ情報が保存されているかを見る「寄与率」:

$$\text{寄与率} = \frac{\sum_{j=1}^{q} d_j}{\sum_{j=1}^{p} d_j}$$

例えば最初の2主成分で90%の分散を説明できるなら、2次元グラフに描いても情報の歪みは小さいということです。 この数値が高いほど、圧縮による情報の損失が少ないといえます。

データが低次元の「形」に乗っている場合 — 非線形次元削減

PCAは強力ですが、「線形な」次元削減です。 データが直線や平面に近い構造をしているときは効果的ですが、 データが曲がった構造(多様体)の上に乗っているときは対応できません。

「多様体」とは、高次元空間に埋め込まれた低次元の曲がった形のことです。 S字カーブ、筒状の形、ドーナツ形——これらは3次元空間に埋め込まれていても、 本質的には1次元や2次元の構造です。

S字カーブの多様体が直線に展開される
S字カーブ状に並んだグラデーション点群が、徐々に直線状に「展開」される。隣接関係が保たれていることに注目

わかりやすい例としてS字カーブを考えましょう。 S字の形に沿って点が並んでいる場合、PCAで2次元に投影すると構造が潰れてしまいます。 しかしS字に沿った「曲線上の距離(測地線距離)」を保ちながら展開すれば、 1次元の直線として綺麗に整理されます。

代表的な非線形次元削減手法

MDS(多次元尺度法):データ間の距離行列から低次元座標を再構成する手法です。

$$\min_{\{z_i\}} \sum_{i < i'} (d_{ii'} - \|z_i - z_{i'}\|)^2$$

「元の距離関係をできるだけ保った地図を作る」操作です。 地図作成に例えると、各都市間の距離を保ちながら2次元の地図に落とし込むイメージです。

Isomap:直線距離ではなく、多様体の表面に沿った距離(測地線距離)を使うMDSです。 曲がった構造を正しく「展開」できます。 S字カーブの例で言えば、遠回りな曲線上の距離を使って近傍を定義します。

LLE(局所線形埋め込み):各点の近傍だけ線形に近似し、その局所構造を低次元で保持します。 「全体は曲がっているが、局所的には平ら」という性質を利用します。

これらの手法は、PCAが「地球を平面の地図に広げる」ような操作と似ていますが、 PCAが投影(影を映す)のに対し、非線形次元削減は 「皮を剥いて広げる」イメージに近いです。

混ざった信号を分解する — 独立成分分析(ICA)

カクテルパーティーを想像してください。複数の人が同時に話している部屋に、2本のマイクがあります。 各マイクは全員の声が混ざって録音されます。この録音データから、「誰が何を言っていたか」を取り出せるでしょうか?

これが「カクテルパーティー問題」です。独立成分分析(ICA: Independent Component Analysis)はまさにこれを解きます。

独立成分分析による信号分離
上段: 元の独立した信号(サイン波・ノコギリ波) → 中段: 混合された複雑な波形 → 下段: ICAで分離された元の波形

数学モデル

数学的なモデルは単純です:

$$\mathbf{x} = \mathbf{A} \mathbf{s}$$

s は「元の独立した信号」(各人の声)、A は「混合行列」(マイクの位置関係)、x が実際に観測されるデータです。

ICAの目標は、x だけから As を推定することです。 分離行列 W = A⁻¹ が求まれば:

$$\hat{\mathbf{s}} = \mathbf{W} \mathbf{x}$$

PCAとの本質的な違い

PCAは「分散(2次統計)を最大化」しますが、 ICAは「統計的独立性(高次の統計量)を最大化」します。 独立とは、2つの変数の間にどんな統計的依存関係もないことを意味します。

手法最大化するもの求める構造
PCA分散(2次統計)無相関な方向
ICA統計的独立性(高次統計)独立な信号源

重要な条件:元信号 s の各成分が独立で、 かつ非ガウス分布であること(ガウス分布では原理的に分離不可能です)。

実際の応用例: 脳波(EEG)データから筋電図などのノイズを除去、 金融データから独立なリスク因子を抽出、音声認識の前処理など。 混ざり合ったものを分解したい場面で広く使われています。

教師なし学習の全体像

ここで一歩引いて、教師なし学習の全体像を眺めてみましょう。

教師なし学習の全体像 - 各手法が異なる構造を発見する
1つのデータ(中央グレー点群)から4つの異なる視点が放射状に展開。各手法は異なる「構造」を見出す
手法発見する構造直感的なたとえ
K-meansクラスタリングデータのグループ動物を種類ごとに仕分ける
主成分分析(PCA)分散の最大方向影が最も長くなる向きを見つける
非線形次元削減曲がった多様体S字を引き伸ばして直線に戻す
独立成分分析(ICA)独立な信号源混ざった声を一人ずつ分離する
アソシエーション規則同時出現パターンよく一緒に買われる商品の発見

これらは異なる仮定と目的を持っています。 どの手法が正しいかではなく、「データの中にどんな構造があるか」という問いに対して、 それぞれの手法が異なる「答えの形」を提案しています。

教師なし学習の本質的な難しさ

教師なし学習の本質的な難しさは、「答え合わせ」ができないことです。 正解がないからこそ、発見した構造が意味を持つかどうかは、 ドメイン知識と洞察力で判断する必要があります。

でも考えてみると——これは科学の営みそのものです。 仮説を立て、パターンを発見し、それが意味を持つかを問い続ける。 教師なし学習は、データサイエンスの中で最も「探索的」な領域です。 そしてラベルなしの生データこそが、世界のほとんどを占めています。

あなたが今見ているこの画面も、モデルが学習したテキストも、 センサーが記録した膨大なデータも——ほとんどはラベルなしです。 教師なし学習は、その「ほとんど」に光を当てる方法です。