モデリング●●●○○

クラスタリング

Clusteringくらすたりんぐ

正解ラベルなしで、似たデータどうしを距離に基づきグループに分ける手法

概要

クラスタリングは、正解ラベルのないデータを「似たものどうし」のグループ(クラスタ)に自動で分ける手法の総称です。似ているかどうかはデータ間の距離(ユークリッド距離など)で測り、「クラスタ内の距離は近く、クラスタ間の距離は遠く」なるような分け方を探します。何が正解かをデータが教えてくれない中で構造を見つけ出すため、「教師なし学習」の代表格と呼ばれます。

典型的な出番は、顧客のセグメンテーションです。購買履歴から「まとめ買い層」「セール狙い層」「新商品好き層」のようなグループが浮かび上がれば、施策をグループごとに変えられます。ほかにも、文書の自動分類、遺伝子の発現パターンのグループ化、異常検知(どのクラスタからも遠い点を外れ値とみなす)など、応用範囲は広大です。

クラスタリングは仮説を検証する手法ではなく、データの構造に当たりを付ける探索的データ分析の道具です。「答え」を出すというより「良い問いを見つける」ための手法だと捉えると、結果との正しい距離感が保てます。

なぜ生まれたか

出発点は生物学の分類問題です。多数の生物や標本を、複数の測定値に基づいて客観的に分類したい — 分類学者の主観ではなく数値で系統を整理したいという要求から、1950〜60年代に「数値分類学」が興り、距離に基づいて似たものを段階的にまとめる階層クラスタリングの手法群が整備されました。同時期に心理学・人類学でも、調査対象を型に分ける手法として同様のアイデアが独立に育っています。

その後、計算機の発達とデータの大規模化が第二の推進力になりました。全ペアの距離を管理する階層的手法は数万件を超えるデータには重すぎるため、「クラスタ数を先に決め、中心の更新を繰り返す」という軽量な発想の k-means 法(1950年代に原型、1967年に命名)が普及します。ラベル付けのコストを掛けずに大量データから構造を発見したいという需要は、機械学習の時代に入っていっそう強まり、クラスタリングは教師なし学習の中心的な手法群として発展を続けています。

詳細

k-means法 — 中心の更新を繰り返す

最も広く使われる k-means 法は、クラスタ数 k を先に決めて、次の手順を繰り返します。

変化あり

変化なし

クラスタ数 k を決める

k個の中心をランダムに初期配置

各データ点を最も近い中心のクラスタに割り当てる

各クラスタの平均を新しい中心にする

割り当ては変化したか

収束 — クラスタ確定

割り当てと中心更新の繰り返しは必ず収束しますが、初期配置しだいで異なる結果に落ち着くことがあるため、初期値を変えて複数回実行し最良の結果を採る(あるいは初期化を工夫した k-means++ を使う)のが定石です。k-means は高速でスケールしやすい一方、「各クラスタは中心のまわりに丸く分布する」ことを暗黙に仮定しているため、細長いクラスタや三日月形のクラスタはうまく分けられません。

この「割り当て→中心の移動」の2手順は、実際に1ステップずつ自分の手で回してみると仕組みが腑に落ちます。偏った初期値からでもクラスタが見つかっていく様子を下の部品で確かめてみてください。

⚡ 体験: k-means を1ステップずつ回す
クラスタ数 k
ステップ 0クラスタ内平方和× … クラスタ中心● … データ点点線 … 中心の移動

×印がクラスタ中心の初期値です(わざと偏った場所に置いています)。「① 最寄りの中心に割り当て」から順に押して、2つの手順の繰り返しで塊が見つかっていく様子を確かめてください。

階層クラスタリング — 樹形図で構造を見る

もう一つの主要な流派が階層クラスタリングです。凝集型では、まず各データ点を1つのクラスタとみなし、最も近い2つのクラスタを併合する操作をすべてが1つになるまで繰り返します。この併合の履歴を樹形図(デンドログラム)として描くと、どの高さで切るかによって任意のクラスタ数の分割が得られます。

距離ABCDEFこの高さで切るクラスタ1クラスタ2クラスタ3
階層クラスタリングのデンドログラム — 併合された高さが低いほど似ている。点線の高さで切ると3クラスタに分かれる

クラスタ数を事前に決めずに全体の階層構造を眺められるのが強みで、「どの粒度で分けるのが自然か」をデータに語らせることができます。ただしクラスタ間の距離の定義(最短距離法・最長距離法・ウォード法など)によって結果が変わり、計算量の面で大規模データには不向きです。実務ではウォード法が「クラスタ内のばらつきの増加が最小になるように併合する」性質から、バランスのよい分割を得やすいとしてよく選ばれます。

距離の設計と標準化 — 結果を左右する土台

クラスタリングの結果は、アルゴリズム以前に「距離をどう測るか」で決まります。変数の単位がばらばらのまま距離を計算すると、スケールの大きい変数だけが距離を支配してしまうため、事前の標準化が実質的に必須です。また、変数が多すぎると高次元空間では距離の差が付きにくくなる(次元の呪い)ため、主成分分析で次元を削減してからクラスタリングする組み合わせも定番です。文書なら単語の出現ベクトルのコサイン類似度、購買履歴なら共通購入の割合など、データの性質に合った距離・類似度を選ぶこと自体が分析設計の中心になります。

クラスタ数 k の決め方

k-means では「いくつに分けるか」を分析者が決めなければなりません。代表的な目安が2つあります。エルボー法は、k を増やしながらクラスタ内のばらつきの合計を折れ線で描き、改善が鈍る「肘」の位置を採用する方法です。シルエット分析は、各点について「自分のクラスタへの近さ」と「隣のクラスタへの近さ」の差を点数化し、分割の良し悪しを定量化します。ただしどちらも絶対の基準ではなく、最終的には「そのグループ分けが業務上意味を持つか・説明できるか」が判断の軸になります。

確率モデルとしてのクラスタリング

k-means が各点を1つのクラスタに固く割り当てるのに対し、「データは複数の分布の混ざり合いから生成された」と考え、各点がどの分布から来たかの確率を推定する流儀もあります。これが混合分布モデル(代表は混合正規分布・GMM)によるクラスタリングで、実は k-means はその特殊な場合(各クラスタが同じ大きさの球状分布で、割り当てを0か1に固定した場合)とみなせます。確率的な扱いにすると「この顧客はクラスタ1に70%、クラスタ2に30%所属」といった柔らかい割り当てができ、情報量規準によるクラスタ数選択など統計モデルの道具立ても使えるようになります。ほかにも、密度の高い領域をクラスタとみなし、形が不定形でもクラスタ数の指定なしで分けられる密度ベースの手法(DBSCAN など)も実務でよく使われます。

落とし穴 — クラスタは「見つかってしまう」

最大の落とし穴は、クラスタリングは構造のないデータに対してもそれらしいグループを返してしまうことです。k=3 と指定すれば、一様なデータでも必ず3つに分かれます。得られたクラスタが実在の構造なのか、アルゴリズムが作り出した幻なのかは、可視化で分布を確かめる、別のサンプルで再現するか試す、クラスタ間で他の変数に意味のある差があるか調べる、といった検証で見極める必要があります。クラスタに「若年アクティブ層」のような名前を付けた瞬間にそれが実在すると錯覚しやすいので、命名は解釈の仮説にすぎないと意識しておくことが大切です。