k-means法――クラスタリング
最後に紹介するのは、クラスタリングのアルゴリズム「k-means法」です。
クラスタリングとは、多数のデータを似たもの同士のグループに分類する操作のことで、それぞれのグループをクラスターと呼びます。データ間の距離を定義できれば、距離の遠近でそれぞれのデータがどれくらい似ているかを判断でき、クラスタリングすることができます。
k-means法は基本的・代表的なもので、クラスターが事前に与える数(k個)になるようにクラスタリングするアルゴリズムです。
![リスト4-1 リスト4-1](http://cz-cdn.shoeisha.jp/static/images/article/10198/10198_04_1.jpg)
まず、クラスタリングを行いたいデータを用意しましょう。次に、クラスター数を決めます。今回は3とします。このイラストでは、データを点で表し、データ間の距離は2点間の直線距離を用います。
![リスト4-2 リスト4-2](http://cz-cdn.shoeisha.jp/static/images/article/10198/10198_04_2.jpg)
クラスターの中心点として、3点をランダムに設置します。
![リスト4-3 リスト4-3](http://cz-cdn.shoeisha.jp/static/images/article/10198/10198_04_3.jpg)
各データについて、3つの中心点のうち最も近い点を計算します。
![リスト4-4 リスト4-4](http://cz-cdn.shoeisha.jp/static/images/article/10198/10198_04_4.jpg)
各データを決定したクラスターに分類します。これで三つのクラスターができました。
![リスト4-5 リスト4-5](http://cz-cdn.shoeisha.jp/static/images/article/10198/10198_04_5.jpg)
各クラスターに属するデータの重心を計算し、クラスターの中心点をそこに移動させます。
![リスト4-6 リスト4-6](http://cz-cdn.shoeisha.jp/static/images/article/10198/10198_04_6.jpg)
最も近いクラスターの中心点を再計算し、各データをクラスターに再分類しました。
![リスト4-7 リスト4-7](http://cz-cdn.shoeisha.jp/static/images/article/10198/10198_04_7.jpg)
各データのクラスターへの分類と、中心点の重心への移動を中心点が収束するまで(動かなくなるまで)繰り返します。
![リスト4-8 リスト4-8](http://cz-cdn.shoeisha.jp/static/images/article/10198/10198_04_8.jpg)
これは3回目の繰り返しが終わったあとの状態です。
![リスト4-9 リスト4-9](http://cz-cdn.shoeisha.jp/static/images/article/10198/10198_04_9.jpg)
4回目の繰り返しが終わったところです。これ以上やっても中心点は移動しないので、クラスタリング完了です。
k-measn法では操作を繰り返すと中心点が必ずどこかに収束することが証明されています。設定するクラスター数が適切でないと、有意な結果が得られないこともあるので気をつけましょう。
ビジュアライズされたアルゴリズム
紹介した三つのアルゴリズムを既に知っていた方、あるいは全然知らなかった方も、このように仕組みをイラストでしっかり表現すれば、一気に視覚的にイメージしやすくなったのではないでしょうか。
『アルゴリズム図鑑』にはほかのアルゴリズムも掲載していますので、気になる方はチェックしてみてください。