Hartigan-Wong k-means法と他のアルゴリズムでの収束


10

私は、主statsR言語のパッケージに実装されているさまざまなk平均クラスタリングアルゴリズムを理解しようとしています。

私はロイドのアルゴリズムとマックイーンのオンラインアルゴリズムを理解しています。それらを理解する方法は次のとおりです。

ロイドのアルゴリズム:

最初に、「k」個のクラスターの重心として機能する「k」個のランダムな観測値が選択されます。次に、重心が収束するまで、次のステップが反復で発生します。

  1. 各観測値と選択された重心間のユークリッド距離が計算されます。
  2. 各重心に最も近い観測値は、「k」バケット内でタグ付けされます。
  3. 各バケットのすべての観測値の平均は、新しい重心として機能します。
  4. 新しい重心は古い重心を置き換え、古い重心と新しい重心が収束していない場合、反復はステップ1に戻ります。

収束する条件は次のとおりです。古い重心と新しい重心がまったく同じであるか、重心の差が小さい(10 ^ -3のオーダー)か、最大反復回数(10または100)に達しています。

MacQueenのアルゴリズム:

これは、最初の「k」インスタンスが重心として選択されるオンラインバージョンです。

次に、各インスタンスは、そのインスタンスに最も近い重心に応じてバケットに配置されます。それぞれの重心が再計算されます。

各インスタンスが適切なバケットに配置されるまで、この手順を繰り返します。

このアルゴリズムには反復が1つしかなく、ループは 'x'インスタンスに対して続行されます

Hartigan-Wongアルゴリズム:

  1. すべてのポイント/インスタンスをランダムなバケットに割り当て、それぞれの重心を計算します。
  2. 最初のインスタンスから始めて、最も近い重心を見つけ、そのバケットを割り当てます。バケットが変更された場合、新しい重心、つまり、新しく割り当てられたバケットの重心と古いバケット割り当ての重心が、変更の影響を受ける2つの重心であるため、それらを再計算します。
  3. すべてのポイントをループして、新しい重心を取得します。
  4. ポイント2と3の2回目の反復を実行します。これは、一種のクリーンアップ操作を実行し、漂遊ポイントを正しいバケットに再割り当てします。

したがって、このアルゴリズムは、収束結果を確認する前に2回の反復を実行します。

さて、Hartigan-Wongアルゴリズムのポイント4で私が考えることがアルゴリズムの正しい方法であるかどうかはわかりません。私の質問は、次のHartigan-Wongのメソッドがk-meansを実装する正しい方法であるかどうかです。この方法の反復は2つだけですか?そうでない場合、収束の条件は何ですか(いつ停止するか)?

私が理解しているもう1つの可能な実装の説明は次のとおりです。

  1. すべてのポイント/インスタンスをランダムなバケットに割り当て、それぞれの重心を計算します。
  2. 最初のインスタンスから始めて、最も近い重心を見つけ、そのバケットを割り当てます。バケットが変更された場合は、新しい重心、つまり新しく割り当てられたバケットの重心と古いバケット割り当ての重心が変更の影響を受ける2つの重心であるため、それらを再計算します。
  3. いずれかの時点でバケットに変更があったら、最初のインスタンスに戻って手順を繰り返します。
  4. すべてのインスタンスが反復され、どのポイントもバケットを変更しない場合、反復は終了します。

このように、インスタンスがバケットを変更するたびに、データセットの最初から何度も繰り返される多くの反復があります。

説明があれば役に立ちます。これらの方法のいずれかについて私の理解が間違っている場合はお知らせください。


「バケット」と何ですか?
QUITあり-Anony-Mousse 2016年

@ Anony-Mousseの「バケット」は「クラスター」です。例:k-meansは、データを「k」バケット/クラスターに分割するために使用されます
Sid

しかし、それはMacQueensアルゴリズムのように聞こえます。
QUITあり-Anony-Mousse 2016年

@ Anony-Mousse。はい、最初のステップを除けば、Hartigan-WongはMacQueensアルゴリズムのように見えます。しかし、これが正しい理解であるかどうかはわかりません。反復と収束には欠けている概念があるかもしれません。
2016年

回答:


1

1979年の論文からのHWのアルゴリズムは、入力として初期クラスターを取ります。ただし、著者は最後のセクションでそれらを取得する方法を提案しています。彼らは、サブルーチンでの最初の割り当ての後、どのクラスターも空にならないことが保証される書いています。それは次のようになります:

  1. x¯
  2. x¯||xix¯||2
  3. {1+(L1)[M/K]}L=1,,K[  ]1

主なアルゴリズムについては、HartiganのK-MeansとLloydのK-Means-Is It Time for a Changeと呼ばれる論文に記載されています。N Slonim、E Aharoni、K Crammerによって、AJCAIによって2013年に公開されました。このバージョンは単にランダムな初期パーティションを使用することに注意してください。次のようになります。

xXK

  1. CXKCCvC

  2. XxX

    s=1

    xCC=C{x}

    C+={argメートルCCCC 1dバツvC+1ΣyC[dyvCバツdyvC]}{バツ}

    C+CCCCC+vCvCs0

  3. s=0

CargメートルバツCdvCvC{バツ}

上記のアルゴリズムでは、すべての質問に対する答えは暗黙的だと思います...しかし、このアルゴリズムの実装が標準であることを確認する必要があります。特にRで実装されたものである場合は、コメント/編集を歓迎します。

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