k-means(k平均法)
#機械学習
#データ分析
#クラスタリング
近いものは仲間と考えて、近いもの同士でグループ分けをするアルゴリズム
k個のクラスタ(グループ)の平均値を使ってグループ分けをするのでk平均法.
何グループに分けたいかを指定して、データ全体をその数に分割する
クラスタ分けされたそれぞれが、どういう共通点を持ったデータなのかまでは分からない
クラスタごとに特徴量の平均などを見ればわかる
考察の仕方は分析者がどう見るかによってくる
クラスタ数の求め方
エルボー法
k-means法の結果を元に、クラスタ内誤差平方和(SSE)と呼ばれる指標を計算する
クラスタ内誤差平方和(SSE)
クラスタごとのデータの中心点との分散
各クラスタごとに、中心点から各データの距離を2乗して、それらを合計し、各クラスタの合計値を足す
SSEが小さいほど、綺麗にまとまっている状態
ただし、最小というのは1クラスター1データの状態になるため、クラスタリングの目的と矛盾した状態
最適なクラスター数を求める必要がある
それを求めるのがSSEで、折れ線グラフにするとわかりやすい
途中で折れるところがあるので、そこが最適なクラスター数となる
流れ
指定したクラスタ(k個)の数分、データをランダムに選ぶ
この時にデータ同士が近くなる組み合わせは選ばれにくいようにはなっている(0ではない)
k-means法ではなく、k-means++法と呼ばれている
scikit-learnのデフォルトは、k-means++法となっている
選ばれたデータを代表点という
各データと各代表点の距離を元に、各クラスタに所属をさせる
最も距離の近いクラスタに所属させる
各クラスタの中心点(重心)を計算して、その中心を代表点として変更する
各クラスタのx座標の平均、y座標の平均が中心
上記の2つを繰り返す
各データを各クラスタに所属させる(代表点が変わったので、所属するクラスタが変わる可能性がある)
各クラスタの代表点を変更する(所属するデータが変わったので、中心点も変わっている可能性がある)
中心点が変わらなくなる時がくるので、それが最終的なクラスタとなる