K-means 法 の アルゴリズム

「プログラミング」及び「開発」関連用語集

カテゴリー: 統計  閲覧数:397 配信日:2016-08-25 09:32


一般的な流れ


データ数
・n

クラスタ数
・k
・まず事前に分割したいクラスター数を指定

1.シードをランダム選出
・サンプルの中から、予め設定した「分割したいクラスター数と同じ数のサンプル」をランダムに選出
・選出したサンプルをシード(seed = 種)と言う

2.各サンプルと各シードに対する距離を計算。各サンプルに最も近いシードを求める
・各サンプルを、「最も近いシードと同じクラスターに属する」と仮決定

3.クラスターの重心という架空の点をそれぞれ求める
・重心は、各クラスターの平均値をもとに算出

4.2度目のクラスター分け
・この重心を新しいシードとして、最初と同様に、それぞれのサンプルを「最も近いシード」と「同じクラスター」に属するよう「仮クラスター分け」

5.2度目の各クラスター重心を求める
・クラスター構成が変わったため、そのクラスターの平均値を表わす重心も移動

6.以下、「重心を求め、クラスタリングをしなおすという手法」を繰り返せなくなるまで継続
・全ての クラスタ割り当てが変化しなかった場合、あるいは変化量が事前に設定した一定の閾値を下回った場合に、収束したと判断して処理を終了する
・そうでない場合は新しく割り振られたクラスタから 重心 を再計算して上記の処理を繰り返す




結果


最初のクラスタのランダムな割り振りに大きく依存する
・1回の結果で最良のものが得られるとは限らない

対策案
1.何度か繰り返して行って最良の結果を選択する手法
2.k-means++法のように最初のクラスタ中心点の振り方を工夫する手法