Dive into hoge

データ分析関連の備忘録

クラスタリング

<非階層的手法>
評価関数(例えばクラスタ内誤差平方和、SSE)を定義し、これが最適になるような分割する。
k-meansの流れは次の4段階にまとめられる。

1: k個の中心点をランダムに選ぶ。
2: 各サンプルを最も近い中心点に割り当てクラスタを作る。
3: クラスタの実際の中心(=平均)を計算し、そこを新たな中心点とする(中心点の更新)
4: 2〜3を繰り返す。割り当てられるサンプルが変わらなくなったら終了。または、更新時に動く距離が許容値以下になったり、決められた最大回数まで繰り返したら終了。

n_cluster:クラスタの数(=中心点の数)kを決める
init:中心点の初期値の取り方のrandomかk-means++で指定(k-means++は初期値の取り方を改善した方法)
n_init:k-menas自体を繰り返す回数
max_iter:2〜3を繰り返す最大回数(繰り返しのことをイテレーション、iterationと呼ぶ)
tol:4での終了判定に使われる許容値で、上の例では0.0001
random_state:中心点の初期値のための乱数の状態を固定(これでKMeansクラスを実行するたびに違う結果になることはない)

sklearn.cluster.KMeans — scikit-learn 0.19.1 documentation

クラスタ数の評価にはエルボー法、シルエット分析など。
下記によくまとまっている。

qiita.com


<階層的手法>
凝集型ではボトムアップ的に階層を作る。
分岐型はトップダウン的に分割するから計算量多いからあまり使われない。

完全連結法
単連結法(最短距離法)
完全連結法(最長距離法)
郡平均法
ウォード法(最小分散法)