k-means法 (k-means clustering) |
2017-04-23 - 2018-05-30 (update) |
|
|
*k-means法 とは
n次元で表現されるデータ群を,クラスタに分割する方法の1つです.繰り返し計算に基づく方法で,逐次的により良い分割の状態を計算します.図1は2次元の点群を10個のクラスタに分割した例を示します.
[img:bpwy]
{{small:図1 2次元の点群とクラスタリング結果}}
k-means法は,アルゴリズムが簡単でかつ実際の応用で都合よくクラスタリングができることが多いため実践的な方法として良く利用されます.
k-means法および他の一般的なクラスタリング手法について詳しく知りたい場合,[1]の文献が参考になります.詳しくアルゴリズムが解説されていて,R以外のプログラミング言語で実装する場合にも役に立ちます.
{{small:[1]新納浩幸, "Rで学ぶクラスタ解析", オーム社, 2007}}
{{small:[link:https://estore.ohmsha.co.jp/titles/978427406703P] }}
*サンプルコード (C++)ライブラリ:[link:simplesp]
サンプルコード:simplesp/sample/gl/kmeans
ランダムに設定した2次元の点群を,10個のクラスタに分割します.
*アルゴリズム
ここでは,k-means法の処理の手順を説明します.
1.母集団の点群から,ランダムにK個の点をサンプリングする(=各クラスタの初期の中心位置)
2.母集団の点群の各点の位置の情報を元に,どのクラスタに所属するかを決定する
3.各クラスタの中心位置を更新する
処理2と3は繰り返し計算します.その繰り返し回数は固定値を設定するか,或いは処理3の更新の程度を見て決定します.
**1.クラスタの初期化
母集団の点群から,クラスタの初期の中心位置を設定します.一般的には,ランダムにサンプリングする方法が利用されます.
サンプリングの方法はランダムである必要はないですが,繰り返し計算の回数を少なく済ます上で,できるだけ偏りなくサンプリングできる方法が望ましいはずです.
**2.各点の所属を決定
母集団の点群の各点について最も距離の近いクラスタを調べることで,各点の所属を決定します.
**3.クラスタの中心位置を更新
各クラスタに所属する点群の位置の平均(mean)を取ることで,各クラスタの中心位置を更新します.
>> ご意見・ご質問など お気軽にご連絡ください.info