k-means法
k-means Clustering
概要(教師なし|クラスタリング)
k-means法は、クラスタリング(教師なし学習)の代表的な手法のひとつで、サンプルをグループ分けする目的で使用します。
クラスターというのは「房」「集団」「群れ」のことで、類似したデータが集まっている様子を意味します。説明変数の数が多くなると、人間の目では直感的な分類ができませんが、例えば全体を3つに分類できるという前提で、多次元軸上でのグループの重心を仮定して、データ間の距離を測ると、それぞれの距離(ズレ)を最も小さくするような重心とデータセットを見出すことができます。対象を分けるという点では上記の分類と似ていますが、クラスタリングの場合は、いくつに分類するかを分析者が事前に決定するのみで、事前に目的変数を定義することはありません。3つに分けてみたら、それぞれこんなタイプのかたまりがあることがわかりました・・といった作業になります。
k-means法の k はクラスターの個数を意味するもので、この手法では、分類するクラスターの数を事前に決めて、クラスター内では分散が小さく、クラスター間では分散が大きくなるように各データをクラスターに振り分けていきます。
以下のような手順で、計算処理を繰り返し、結果が収束した時点で、処理をストップします。ひたすら計算を繰り返す・・という点で、当然ですが、これもコンピュータが登場してはじめて現実的なものとなりました。
- 1) 各データをランダムにクラスタに割り当てる(初期設定)
- 2) クラスタの重心を求める
- 3) 各データのクラスタを、一番重心の近いクラスタに変更する
- 4) 3) でデータの入れ替えがどの程度発生しているかチェック
- 5) 4) の結果、変化がなければ収束したとみなして終了。
入れ替えが生じている場合は、2) に戻る(計算と入れ替えを繰り返す)
プログラム例
以下に、k-means法 のサンプルを掲載しています。
https://github.com/koichi-inoue/DataScience/blob/main/K_MeansClustering.ipynb
- 使用しているライブラリ
- seaborn:ビジュアライゼーション
- sklearn:KMeans
- 使用しているデータ:IRIS(sklearnに付属)
- Sepal Length(がく片長 cm)
- Sepal Width(がく片幅 cm)
- Petal Length(花びら長 cm)
- Petal Width(花びら幅 cm)
- Species:setosa, versicolor, virginica ← これは使わない
クラスタ数を「3」に設定してクラスタリングすると、データの性質から、Species と一致するクラスタリングができていることがわかります。