妊婦がプログラマーになるまで

プログラミング未経験ワーママが産休からPythonで機械学習を学ぶ記録を記します。

機械学習「クラスタリング」とは?(学習メモ)

機械学習クラスタリング」について学んだことをメモします。
f:id:damion_n:20210905070009p:plain

クラスタリング

クラスタリングは、データを互いに似た者同士に分類する、教師なし学習

たとえば、つぎの図の点を2つのクラスター、すなわち、グループに分類することを考える。
f:id:damion_n:20211003064825p:plain

似た者同士にグルーピングすることにより、どのデータと、どのデータが似ているのかを把握することができる。
f:id:damion_n:20211003064919p:plain

クラスタリングでは、データ間の「似ている」を、「距離」で定義する。
距離は、ユークリッド距離を使う。
図では、「×」を中心として、そこからの距離が近い2つのクラスターに分けている。

ユークリッド距離
人が定規で測るような二点間の「通常の」距離のこと。



ユークリッド距離の例

3人の生徒の国語、数学の点数が、つぎのようにあるとする。
f:id:damion_n:20211003065301p:plain

このとき、

・AさんとBさんの距離は、30 ( = √*1
・AさんとCさんの距離は、57 ( = √*2
・BさんとCさんの距離は、41 ( = √*3
になるので、AさんとBさんが、同じグループになる、ということ。

f:id:damion_n:20211003065351p:plain

クラスタリングの例

・顧客がどの程度利用しているかによって、ヘビー、ミドル、ライトに分類
・気象条件による地区の分類
・得点によるグループ分け
・アンケートによる分類

クラスタリングはデータを大まかにグループ化する際に効果的。
クラスタリングはその手法から、大きく次の 2 種類に分けることができる。

・階層的クラスタリング
・非階層的クラスタリング

階層的クラスタリング

階層的クラスタリングは、データやクラスター間の類似度に基づいてデータを 1 つのグループ(クラスター)にまとめていき、すべてのクラスターが統合されるまでこれを繰り返す手法。 クラスターに分類した結果は樹形図(デンドログラム)として表すことができる。

樹形図をある高さで切断することにより、データを複数のクラスターに分類することができる。 また、樹形図の下の下で併合したデータはその類似度が高いことを意味しており、より直感的にデータの類似度を確認することができる。

ただし、階層的クラスタリングは、分類対象データが多い場合には計算量が莫大になってしまう問題がある。大量データの場合には、非階層的クラスタリングが用いられることが多い。



非階層的クラスタリング

非階層的クラスタリングは、データやクラスター間の類似度など基づいてデータを、指定したクラスター数にまとめていく。
代表的な分析手法として、k-平均法(k-means)がある。
現在は、k-平均法を改良した k-means++ が使われている。


k-平均法

k-平均法のアルゴリズムは以下のような手順で行う。

1. ランダムに k 個のデータを中心に決める
2. k 個の中心からの距離により、データをクラスターに分類
3. クラスターの中心を計算後、クラスターを解散
4. クラスターの中心が変化しなければ計算終了、それ以外は 2 に戻る
5. このアルゴリズムによって、k 個のクラスターができる

ただ、初期の中心はランダムに決めるため、場合によっては、うまく分類できないこともある。
この欠点を改良した k-means++ 法というのもある。
scikit-learn のk-平均法では、デフォルトで、この k-means++ を使っている。




分析の手順とAPI

基本的な分析手順のフローは、以下の図のようになる。
f:id:damion_n:20211003065912p:plain



ハイパーパラメーター探索

k-平均法は、あらかじめ、いくつのクラスターに分けるかを決めておく必要がある。
この、クラスター数がハイパーパラメーターになる。
ただ、クラスターに分けてみないことには、どの程度のクラスター数が適しているかはわからない。
そこで使われるのが、エルボー図やシルエット図といったもの。
ここでは、エルボー図について、紹介。

エルボー図は、クラスター数を最初から見積もるのは難しいので、クラスター数を変えたときに、そのクラスター内の中心と点の距離の平方和(残差平方和、SSE: Sum of Squared errors of prediction) を確認していく、というように、見積もる手法。 残差平方和は、クラスター数が増えると、だんだん減少していく。
この残差平方和をプロットして、この減少具合の変わり目に着目し、クラスター数を決める、というもの。
この変わり目のところが、肘を曲げたところに似ているので、「エルボー図」と呼ぶ。

以下がエルボー図。クラスター数が増えると、残差平方和がだんだんと減っているのがわかる。
f:id:damion_n:20211003070213p:plain








押していただけると励みになります!

にほんブログ村 資格ブログ スキルアップへ
にほんブログ村

*1:90 - 60)2 + (60 - 60)2

*2:90 - 50)2 + (60 - 100)2

*3:60 - 50)2 + (60 - 100)2