最小クラスターサイズの制約によるクラスタリング(k-meansなど)


14

グループ内平方和(WSS)を最小化するために、ユニットをクラスターにクラスター化する必要がありますが、クラスターに少なくともm個のユニットが含まれていることを確認する必要があります。Rのクラスタリング機能のいずれかが、最小クラスターサイズの制約の対象となるkクラスターへのクラスタリングを可能にするかどうかについての考えはありますか?kmeans()はサイズ制約オプションを提供していないようです。kmk

回答:


5

EMクラスタリングを使用する

EMクラスタリングでは、アルゴリズムが初期クラスターモデルを繰り返し改良してデータに適合させ、クラスター内にデータポイントが存在する確率を決定します。アルゴリズムは、確率モデルがデータに適合するとプロセスを終了します。近似を決定するために使用される関数は、モデルが与えられたデータの対数尤度です。

プロセス中に空のクラスターが生成される場合、または1つ以上のクラスターのメンバーシップが所定のしきい値を下回る場合、人口の少ないクラスターが新しいポイントで再シードされ、EMアルゴリズムが再実行されます。


ありがとう、マリアンナ。私は、(通常、正当化できない)パラメトリックモデルにあまり依存しないソリューションを好むでしょうが、間違いなくそれを検討します。
サイラスS

4

この問題はこのペーパーで扱われます:

Bradley、PS、KP Bennett、およびAyhan Demiriz。「制約付きk-meansクラスタリング」。Microsoft Research、Redmond(2000):1-8。

私が持っている実装のpythonでのアルゴリズムのを。


これは完璧です、ありがとう!rPythonR のパッケージを使用して、Rスクリプトからアクセスしたこの実装へのインターフェイスを作成しました。
マイケルOhlrogge

@MichaelOhlrogge pythonパッケージフォームRを呼び出すために書いたインターフェイスのどこかに(github?)ありがとう!
マティフォー

申し訳ありませんが、古いコードを見回しましたが、もう見つかりませんでした。
マイケルオルロッゲ

3

私はそれがクラスタサイズのテストでifループの一部としてk平均を実行することの問題だと思う、すなわちクラスタkのカウントn-また、k平均は同じデータの実行ごとに異なる結果を与えることを覚えておいてくださいとにかくループの一部として実行して、「最良の」結果を抽出する必要があります。


1
ありがとう、アレックス。しかし、これには問題があります:ループ上で生成された解が制約を満たさない場合はどうなりますか?これは、クラスターサイズの制約なしで実行するようにkが設定されている場合に発生する可能性があります。これを回避するソリューションが欲しいです。(アプリケーションの性質上、クラスターの最小サイズを確保する必要があります。)
Cyrus S

1

データセットの大きさは?階層的クラスタリングを実行してから、樹状図に基づいて保持するクラスターを決定することもできます。

データセットが巨大な場合は、最初の非階層クラスタリングと、非階層分析のグループを使用した階層クラスタリングの両方のクラスタリング方法を組み合わせることもできます。このアプローチの例は、Martínez-Pastoret al(2005)にあります。


ありがとう、マヌエル。これは実際には非常に興味深い可能性のように聞こえます。階層的な分割が、サイズの制約下でアルゴリズムが最適なクラスター分割を達成するのを妨げる特定の制約を課すかどうかを考える必要があります。しかし、直感的には、これが機能する可能性があることがわかります。
サイラスS

0

これは、最小コストフロー(MCF)線形ネットワーク最適化問題として定式化することにより、クラスター割り当てステップ(EMのE)を変更することで実現できます。

GoogleのOperations Researchツールの高速なC ++実装であるSimpleMinCostFlowを使用するpythonパッケージを作成しました。標準のscikit-lean APIがあります。

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