k-meansのクラスターの選択:1クラスターの場合


9

kmeansを使用したクラスタリングが適切かどうかを判断するための良い方法を知っている人はいますか?つまり、サンプルが実際に均質である場合はどうなりますか?(Rのmclustを介した)混合モデルのようなものが1:kクラスターの場合の適合統計を提供することを知っていますが、kmeansを評価するすべての手法には少なくとも2つのクラスターが必要であるようです。

kmeansの1と2のクラスターケースを比較する手法を知っている人はいますか?

回答:


10

ギャップ統計はこれを行うための優れた方法です。Tibshirani、Hastie&Walther(2001)。

http://stat.ethz.ch/R-manual/R-devel/library/cluster/html/clusGap.html-関連するRパッケージ。

アイデアは、K = 1,2,3、...のデータをクラスター化する順次仮説検定を実行することです。これは、1つのクラスターに相当するランダムノイズの帰無仮説です。その特別な長所は、K = 1かどうか、つまりクラスターがないかどうかの信頼できる指標を提供することです。

例を挙げましょう。数日前に天文学のデータを調べていました。つまり、通過する太陽系外惑星の調査です。(凸)クラスターにはどのような証拠があるのか​​知りたいと思いました。私のデータは「交通機関」です

library(cluster)
cgap <- clusGap(transit, FUN=kmeans, K.max=kmax, B=100)
for(k in 1:(kmax-1)) {
    if(cgap$Tab[k,3]>cgap$Tab[(k+1),3]-cgap$Tab[(k+1),4]) {print(k)}; 
    break;
}

ギャップ統計では、テストが「失敗」した、つまりギャップ統計が大幅に低下するKの最初の値を探しています。上記のループはそのようなakを出力しますが、cgapをプロットするだけで次の図が得られます
ここに画像の説明を入力してください 。k= 1からk = 2までのGapに大幅な落ち込みがあることを確認してください。


単一のリンケージによる階層的クラスタリングに対して同じことをするには clusGapのFUN引数について説明していただけますか?階層的なkmax = 20 cgap <-clusGap(cluster_feat_base [、2:ncol(cluster_feat_base)]、FUN = hclust、K.max = kmax、B = 100)に対して以下の行を実行しました。しかし、FUNcluster(X、kk、...)にエラーがあるというエラーが表示されます。無効なクラスタリング方法2
GeorgeOfTheRF

4

より最近の方法を試すこともできます:A. KalogeratosおよびA.Likas、Dip-means:クラスター数を推定するためのインクリメンタルクラスタリング方法、NIPS 2012。

アイデアは、1つの点とセットの残りの点の間の類似性/距離を含むベクトルに対して、ユニモダリティの統計的仮説検定を使用することです。テストは、Hartigan-Hartigan dip test、Ann を使用して行われます。統計学者。13(1):70-84。

この方法は、すべてのデータセットを1つのクラスターとして開始し、単峰性仮説が拒否される(つまり、複数のクラスターが存在する)限り、データセットを徐々に分割します。

したがって、この方法は、データ(質問)に複数のクラスターがあるかどうかを示しますが、最終的なクラスター化も提供します。

ここでは、Matlabでいくつかのコードを見つけることができます


0

同じ例を考えているとしましょう

Tab[k]>cgap

最大ギャップ統計に基づいて、最適なクラスタリングソリューションに対応するクラスターの要素をサブセット化するにはどうすればよいですか?各クラスターの詳細な分析に使用できるようにします。

私はサブセットと呼ばれるコマンドがあることを知っています。必要な数のクラスターを指定した場合、このコマンドを使用しても問題はありません。しかし、ギャップを使用して取得された最適なkに基づいてサブセット化する場合にサブセット化する方法(ループがある場合、クラスターの要素をサブセット化する)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.