クラスタリング(k-means・階層型)

教師なしの代表、クラスタリング。k-means・階層型・DBSCANの違いと使い分けを学びます。

教師なし学習の代表、クラスタリング。k-meansと階層型の使い分け。

胡桃 あんず(普段) 胡桃 あんず

顧客を似た傾向ごとにグループ分けしたいんだけど、どうすればいいの?

若葉 みどり 先生(笑顔) 若葉 みどり 先生

そういうときはクラスタリングの出番ね。 代表的なのはk-meansと階層クラスタリングよ。

白銀 ゆき(普段) 白銀 ゆき

k-meansは『k個のクラスタ中心(セントロイド)を決め、各サンプルを最近距離のクラスタに割り当て、中心を再計算』を繰り返す手法。 シンプルで高速。

桜井 もも(普段) 桜井 もも

kって、事前に決めておくんですかぁ?

白銀 ゆき(普段) 白銀 ゆき

そう、kはハイパーパラメータ。 適切なkを選ぶ手法としてエルボー法やシルエット係数があるよ。

胡桃 あんず(普段) 胡桃 あんず

エルボー法って何?

若葉 みどり 先生(普段) 若葉 みどり 先生

kを変えながらクラスタ内分散をプロットすると、ある所で減少が緩やかになる『肘』のような点が現れるの。 そのkを適切な値とする方法ね。

白銀 ゆき(普段) 白銀 ゆき

階層クラスタリングはk指定不要。 全サンプルを最初は別クラスタとし、近いものから順に併合していく(凝集型)。 最後に階層樹図(デンドログラム)が得られる。

桜井 もも(笑顔) 桜井 もも

デンドログラムって、図で見られるんですねぇ。

胡桃 あんず(普段) 胡桃 あんず

k-meansの弱点って何?

若葉 みどり 先生(普段) 若葉 みどり 先生

(1)kを事前指定が必要、(2)初期値依存、(3)球形以外のクラスタが苦手、(4)外れ値に敏感、など。 球形でない密度ベースの問題ならDBSCANが有効。

白銀 ゆき(普段) 白銀 ゆき

クラスタリングは『正解』がないので、結果の解釈はビジネス文脈に強く依存する。 機械的にk-meansを当てはめるのではなく、結果が意味を持つかをドメイン知識で吟味することが大事。

白銀 ゆき(普段) 白銀 ゆき

DS検定では『k-meansはk事前指定』『階層型はデンドログラム』『k選択にエルボー法』が頻出。

from sklearn.cluster import KMeans
import numpy as np

# 適切な k をエルボー法で探す
inertias = []
for k in range(1, 11):
    km = KMeans(n_clusters=k, random_state=42, n_init=10)
    km.fit(X)
    inertias.append(km.inertia_)
# inertias をプロットし、肘の位置のkを採用

確認クイズ

k-meansクラスタリングの特徴として正しいのはどれか。

  1. クラスタ数kを事前に指定する必要がある
  2. デンドログラムが出力される
  3. 正解ラベルが必要
  4. 確率を出力する
こたえを見る

正解: 1. クラスタ数kを事前に指定する必要がある

クラスタ数kを事前に指定する必要があるのがk-meansの特徴です。 適切なkはエルボー法・シルエット係数等で選択します。 デンドログラムを出力するのは階層クラスタリング、確率を出力するのはGMMです。

白銀ゆき・胡桃あんずのイラスト。鏡の前で発表の練習をしていたら見つかって赤面

この記事の関連書籍

Amazonアソシエイトリンクを含みます。他分野は おすすめ書籍ページ へ。

この記事について

データサイエンティスト検定スタディが作成した教材です。運営について・記事の作り方

試験についてはこちらをご覧ください: データサイエンティスト協会 公式サイト

この記事を共有