トピックス

クラスタ分けを体験

投稿日:

コロナウィルスが流行っていますが、ニュースでクラスタ感染という言葉が出てきます。クラスタとはある同一条件下での塊・集団を意味します。例えば、横軸に体重、縦軸に血圧にしてプロットした場合に、体重大・血圧高、体重小・血圧低、体重大・血圧小、体重小・血圧大の4つの集団に分類できる場合、4つのクラスターがあると言います。 過去ブログ「教師なし学習で失敗することもあり」でクラスタ分析の一つの手法として「K-means法」を説明しましたが、「python」で説明したため、プログラムの中身までわからなかったのではないかと思います。「直感でわかるExcelで機械学習」(著者:堅田洋資、福澤彰吾 発行所:インプレス)の中で分かり易い説明がありましたので、早速Excelで試してみました。次の資料参照ください。

資料はこちら → Kmeans法

Excelファイルはこちら → Kmeans法

p.1 100個のデータをプロットしたものが右図です。100個のデータを4つのクラスタに適当に割り振ります。各クラスターの構成データのx座標とy座標より平均を算出します。この値が仮の重心」です。 グラフの中に赤い矢印で示したところが重心です。適当に割り振ったので中心付近に4つの重心が集まっています。 次に、クラスタ毎に、重心と構成データとの距離の二乗を算出して合計します。4つの合計の総和をWCSS(Within Cluster sum of square )と呼びます。この場合は、3,364でした。

p.2 一番上のグラフにおいて、各点について距離が近い重心のクラスタ番号再割り付けます。 改めて新たなクラスタ毎の重心位置を計算してプロットしたものが、真中のグラフです。各重心位置が各クラスターの中心位置になってきています。 同様なことを、WCSSが落ち着くまで繰り返してきます。

p.3 今回4つのクラスタに設定しましたが、クラスタの数はいくつに設定すればよいでしょうか? 「エルボー法」という手法があります。WCSSを縦軸、試行回数横軸にしてプロットしたのが右図です。最初のからWCSSは減少していきます。上のイメージと見比べて見てください。クラスタの構成要素が全て重心と同じ位置にある場合は、距離はゼロですのでWCSSはゼロになります。このグラフではゼロではなく211で一定値になっています。 WCSSのカーブが肘のように折れ曲がった曲線になるのでエルボーと呼びます。クラスタの数は、この折れ曲がった辺りを目安にします。

クラスタに分ける「K-means法」少しは実践で理解していただければと思います。Excelも眺めてみてください。 pythonを使えば直ぐできてしまうのですが、原理を知ることで長所・短所を理解して欲しいと思います。短所は、過去ブログに書きました。

 

-トピックス

Copyright© 進化するガラクタ , 2024 All Rights Reserved Powered by STINGER.