logo

k-平均クラスタリング 📂機械学習

k-平均クラスタリング

アルゴリズム

入力

pp次元のデータNN個と、自然数kkが与えられているとする。


ステップ 1. 初期化

kk個の点μ1,,μk\mu_{1} , \cdots , \mu_{k}をランダムに定める。各μj\mu_{j}はクラスタMjM_{j}の平均になる。

20191001\_085422.png


ステップ 2. 距離計算

ii番目のデータxix_{i}j=1,,kj = 1 , \cdots , kに対してxiμj\| x_{i} - \mu_{j} \|を計算する。その中で最も小さいものを選び、それをxiMjx_{i} \in M_{j}にする。各i=1,,Ni = 1 , \cdots , Nに対して繰り返す。

20191001\_085734.png


ステップ 3. μj\mu_{j}の更新

以下の更新をj=1,,kj = 1 , \cdots , kに対して繰り返す。 μjxMjxMj \mu_{j} \gets \sum_{x \in M_{j}} {{ x } \over {| M_{j} |}} 更新してもμj\mu_{j}がこれ以上変わらない場合、アルゴリズムを終了し、きちんと更新された場合はステップ 2に戻る。

20191001\_091309.png


出力

各クラスタの重心であるμj\mu_{j}と、各データがどのクラスタに属するかを返す。


  • ここで\| \cdot \|は、l2l_{2}ノルム、またはユーグリッドノルム、普通のノルムと呼ばれる距離の概念である。

説明

kk平均クラスタリングは、与えられたデータをkk個の類にクラスタリングする教師なし学習法である。上記のイラストは特に、p=2p=2次元で与えられたN=20N=20個のデータをk=2k=2個の類に分けることを示している。

平均は二乗誤差を最小化する代表値であり、kk平均クラスタリングはこの数学的事実に基づいてデータをうまく分類する。もっと簡単に説明すると、座標を足して平均を出すというのは、幾何学的なセンスからすると重心を意味するので、μj\mu_{j}はあるデータの中心に引き寄せられるわけだ。もちろん、これを保証するためには、より強い条件と数式的な説明が必要だが、そもそもkk平均クラスタリングは単純さが魅力のアルゴリズムなので、この点に深く立ち入らない。

長所と短所

最大の問題は、この分類があまり正確でないということだが、これを補うための多くのアルゴリズムが出てきたにもかかわらず、単純さでこのアルゴリズムを圧倒するアルゴリズムはない。データサイエンティストの立場からすると、データを受け取ったらまず試すのは、まさしくkk平均クラスタリングだ。クラスタリング一回で分析を終えるのではなく、分析を始めるにあたって感触を得るために使うアルゴリズムというわけだ。