クラスタリング(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アソシエイトリンクを含みます。他分野は おすすめ書籍ページ へ。