バイナリデータのクラスタリングが重要かどうかをテストするにはどうすればよいですか


12

私はショッピングカートを分析しています。私のデータセットはトランザクションベクトルのセットであり、購入する商品が含まれています。

トランザクションにk-meansを適用すると、常に何らかの結果が得られます。ランダム行列はおそらくいくつかのクラスターも表示します。

私が見つけたクラスタリングが重要なものであるかどうかをテストする方法はありますか、それは偶然かもしれません。はいの場合、どうすればよいですか。

回答:


14

ショッピングカートの分析に関しては、主な目的は、顧客が購入した製品の最も頻繁な組み合わせを個別化することだと思います。はassociation rulesここで最も自然な方法論を表しています(実際、これらは実際にこの目的のために開発されました)。顧客が購入した製品の組み合わせ、およびこれらの組み合わせが繰り返される回数を分析すると、「if条件の場合、結果」というタイプのルールが生成され、対応する興味深い測定値が得られます。Log-linear models考慮される変数間の関連を調査するために考慮することもできます。

次に、クラスタリングについて、役立つ情報をいくつか紹介します。

まず検討してくださいVariable clustering。変数のクラスタリングは、共線性、冗長性の評価、および変数を単一の変数としてスコアリングできるクラスターに分離するために使用され、結果としてデータが削減されます。varclus関数を探します(RのパッケージHmisc)

クラスターごとの安定性の評価:関数clusterboot{Rパッケージfpc}

クラスター検証の距離ベースの統計:関数cluster.stats{Rパッケージfpc}

mbqが述べたように、シルエットの幅を使用して、最適なクラスター数を評価します。これをてください。シルエットの幅については、optsil関数も参照してください。

ギャップ統計を介してデータセットのクラスター数を推定する

非類似度インデックスと距離メジャーの計算については、dsvdisおよびvegdistを参照してください。

EMクラスタリングアルゴリズムは、交差検証によって作成するクラスターの数を決定できます(生成するクラスターの数を事前に指定できない場合)。EMアルゴリズムは最大値に収束することが保証されていますが、これはローカル最大値であり、必ずしもグローバル最大値と同じであるとは限りません。グローバル最大値を取得する可能性を高めるには、パラメーター値の初期推定値を変えて、手順全体を数回繰り返す必要があります。全体的な対数尤度図を使用して、取得されたさまざまな最終構成を比較できます最大値の最大値を選択するだけです。EMクラスタラーの実装は、オープンソースプロジェクトWEKAにあります。

これも興味深いリンクです。

また、検索ここのためにFinding the Right Number of Clusters in k-Means and EM Clustering: v-Fold Cross-Validation

最後に、clusterflyを使用してクラスタリングの結果を探索できます


8

これは、モンテカルロを使用して結果が正しいかどうかを示す方法です。

Null仮説H_0は、データセットに興味深いクラスタリングがないことです。対立仮説H_1は、データセットに興味深いクラスタリングが含まれていることです。

これにより、同じ行と列の余白を持つランダムなデータセットのクラスタリング構造よりも興味深いと考えることができます。もちろん、他の制約を選択することもできますが、制約を緩めると結果が一般的になりすぎ、制約を狭めるとクラスタリングが大幅に固定されるため、結果は自動的に重要ではなくなります。これから説明するように、マージンはランダム化のための既存の方法のため、適切な選択です。

テスト統計として、クラスタリングエラー(クラスター内の2乗距離)、T_0からのTを定義します。元のデータセットの値はtです。

この分布については、サンプルを抽出できること以外は何も知りません。これは、モンテカルロの候補として最適です。

次に、Π_0からn個の(iid)ランダムサンプルを描画し、式p_emp = 1 /(n + 1)*(Σ_i= 1-n I(t_i> = t)+ 1)を使用して経験的p値を計算します

ランダムサンプリングは、スワップランダム化によって実行できます。簡単に言えば、正方形は、2つの対角コーナーが1で、他の2つのコーナーが0で検索されます。次に、コーナーが反転します。これは、列と行のマージンを維持しています。データセットが十分にランダム化されるまで、この手順が十分に繰り返されます(これにはいくつかの実験が必要になります)。この詳細については、GionisらによるSwap Randomizationによるデータマイニング結果の評価を参照してください。al。

これを行う1つの方法は、データの分布を定義し、クラスタリングエラーを検定統計量tとして取得することです。

たとえば、同じ行と列の余白を持つすべてのデータセットをデータ分布と見なすと、この分布からn個のランダム行列Xiを取り、それらのクラスタリングエラーを計算できます。次に、式から経験的p値を計算できます


4

シルエットのようなものがあります。これは、クラスターの品質を決定する統計をある程度定義します(たとえば、kの最適化に使用されます)。今、可能なモンテカルロは次のようになります:元のデータに類似した多数のランダムなデータセットを生成し(たとえば、各列の行間で値をシャッフルすることにより)、クラスターを作成し、平均シルエットの分布を取得して、有意性のテストに使用できます。実際のデータのシルエットの。それでも私はこの考えを試したことがないことを管理しています。


1
これは、Human Brain Mapping 2010カンファレンスで見たポスターを思い出させます。Tom Nicholsは、パラメトリックブートストラップを使用して、階層的クラスタリングにおけるコフェネティック相関とシルエットの安定性を評価しましたが、彼のポスターj.mp/9yXObAを参照してください。
10

@chlありがとうございます。実際、最近私は自分のラボで同様のことが行われているのを見てきました。その結果、クラスターは重要ではありませんでした:-/

これはブートストラップのように聞こえることに同意します。
Vass

(FYI:シルエット値の解釈)。また、k = 1クラスターのシルエット値は定義されていないため、シルエット値を使用して仮説k = 1(データセットがクラスター化されていない)とk> 1(データセットがクラスター化されている)を比較できないことに注意してください。
フランクダーノンコート2013年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.