機械学習記13日目続き ~ k-平均法アルゴリズム
ここまで、scikit-learnで試してきた機械学習の手法は、正解ラベルが学習データに付いている「教師あり学習」と呼ばれるものです。もう1つの機械学習である「教師なし学習」です。
教師なし学習とは、回帰や分類による「予想」とは異なり、ラベルなし学習データから「特徴を分析」するための手法です。「クラスター分析」「主成分分析」といった分析手法があるようですが、今回は「クラスタリング」(クラスター分析)を調べます。
クラスタリングには、大きく分けて「階層的」アルゴリズムと「非階層的」アルゴリズムに分けられ、それぞれに複数のアルゴリズムが存在します。今回は、数あるクラスタリングアルゴリズムの中で、scikit-learnが実装していて、かつ、わかりやすかった(というか、私でも理解できた)アルゴリズムの「k平均法」(k-means clustering)を試します。
▶k平均法
k平均法は、非階層的クラスタリングです。非階層的クラスタリングは、あらかじめ観測データをいくつかに分割するのか、その数(クラスタ数)を指定します。例えば、クラスタ数3でクラスタリングを行うと、似た特徴を持ったグループ(クラスタ)に3分割されます。
①k平均法のアルゴリズムでは、特徴ベクトルを最も近い重心のクラスタに割り振るこ
とで分割を行います。
②k平均法では、次の手順で観測データを3つのクラスタに分離します。まず、各データ
に3つのランダムなクラスタを割り当てます。そして、クラスタごとに重心(座標の
平均)を求めます。
③求まった重心を仮のクラスタの重心として、一番近いデータを重心のクラスタに変更
します。再び重心を計算します。
④重心に変更があった場合は、仮のクラスタの重心として一番近いデータを重心のクラ
スタに変更し、再び重心を求めるという作業を繰り返します。
⑤重心に変化がなくなるとクラスタリングが完了します。
これが、k平均法のアルゴリズムです。私は理解するのに少し時間がかかりました。初期値納品ランダムな割り振りによる幅が大きいので、何度も実行して結果の平均をとるのが良いそうです。
k-平均法のアルゴリズムを可視化したものが以下のサイトにありました。とても分かりやすいので、ぜひ参考にしてみてください。