いろいろ倉庫

KNIME、EXCEL、R、Pythonなどの備忘録

【KNIME】クラスタ数を決めたい(シルエット係数)

・これまでにいくつかクラスタを扱ったが、k-meansなどの手法はクラスタ数を自分で決めなければならない。

・何を以て「最適なクラスタ数」というのはは諸説あるが、k-means法でクラスタ数を決めるのに一般的に用いられたいるのは、エルボー法かシルエット法(シルエット分析)だと思う。

・KNIMEで簡単に実装できないか調べてみたところ、シルエット係数を求めるためのノード(Silhouette Coefficient)があった。

・例えば、クラスタ数3でシルエット係数を求めてみると、以下のようになった(右のウィンドウは上の出力ポート、下のウィンドウは下の出力ポートより)。

f:id:choron81:20211121111541p:plain

・ざっくり見るのであれば、クラスタ数を2-10程度に振って、Mean Shilhouette CoeficientとOverallを見れば良い。基本的に、シルエット係数が1に近いほどクラスタリングの性能が良いと解釈られるらしい。細かく見たければ、個別データのシルエット係数を確認する。いずれのクラスタでも高いシルエット係数を示しているようなクラスタ数が好ましいとされ、クラスタごとのシルエット係数の高低が大きいのは好ましくないとされる。

クラスタ数が少ないとOverallが大きくなりがちで判断を誤りかねないので、注意が必要であり、クラスタの可視化はした方が良い。

クラスタ数を振りたい場合はLoop処理する(例えば下図)。

f:id:choron81:20211121112555p:plain

・シルエット図の作成方法が分かればもっと便利。。。

 

終わり。