私は、主stats
にR
言語のパッケージに実装されているさまざまなk平均クラスタリングアルゴリズムを理解しようとしています。
私はロイドのアルゴリズムとマックイーンのオンラインアルゴリズムを理解しています。それらを理解する方法は次のとおりです。
ロイドのアルゴリズム:
最初に、「k」個のクラスターの重心として機能する「k」個のランダムな観測値が選択されます。次に、重心が収束するまで、次のステップが反復で発生します。
- 各観測値と選択された重心間のユークリッド距離が計算されます。
- 各重心に最も近い観測値は、「k」バケット内でタグ付けされます。
- 各バケットのすべての観測値の平均は、新しい重心として機能します。
- 新しい重心は古い重心を置き換え、古い重心と新しい重心が収束していない場合、反復はステップ1に戻ります。
収束する条件は次のとおりです。古い重心と新しい重心がまったく同じであるか、重心の差が小さい(10 ^ -3のオーダー)か、最大反復回数(10または100)に達しています。
MacQueenのアルゴリズム:
これは、最初の「k」インスタンスが重心として選択されるオンラインバージョンです。
次に、各インスタンスは、そのインスタンスに最も近い重心に応じてバケットに配置されます。それぞれの重心が再計算されます。
各インスタンスが適切なバケットに配置されるまで、この手順を繰り返します。
このアルゴリズムには反復が1つしかなく、ループは 'x'インスタンスに対して続行されます
Hartigan-Wongアルゴリズム:
- すべてのポイント/インスタンスをランダムなバケットに割り当て、それぞれの重心を計算します。
- 最初のインスタンスから始めて、最も近い重心を見つけ、そのバケットを割り当てます。バケットが変更された場合、新しい重心、つまり、新しく割り当てられたバケットの重心と古いバケット割り当ての重心が、変更の影響を受ける2つの重心であるため、それらを再計算します。
- すべてのポイントをループして、新しい重心を取得します。
- ポイント2と3の2回目の反復を実行します。これは、一種のクリーンアップ操作を実行し、漂遊ポイントを正しいバケットに再割り当てします。
したがって、このアルゴリズムは、収束結果を確認する前に2回の反復を実行します。
さて、Hartigan-Wongアルゴリズムのポイント4で私が考えることがアルゴリズムの正しい方法であるかどうかはわかりません。私の質問は、次のHartigan-Wongのメソッドがk-meansを実装する正しい方法であるかどうかです。この方法の反復は2つだけですか?そうでない場合、収束の条件は何ですか(いつ停止するか)?
私が理解しているもう1つの可能な実装の説明は次のとおりです。
- すべてのポイント/インスタンスをランダムなバケットに割り当て、それぞれの重心を計算します。
- 最初のインスタンスから始めて、最も近い重心を見つけ、そのバケットを割り当てます。バケットが変更された場合は、新しい重心、つまり新しく割り当てられたバケットの重心と古いバケット割り当ての重心が変更の影響を受ける2つの重心であるため、それらを再計算します。
- いずれかの時点でバケットに変更があったら、最初のインスタンスに戻って手順を繰り返します。
- すべてのインスタンスが反復され、どのポイントもバケットを変更しない場合、反復は終了します。
このように、インスタンスがバケットを変更するたびに、データセットの最初から何度も繰り返される多くの反復があります。
説明があれば役に立ちます。これらの方法のいずれかについて私の理解が間違っている場合はお知らせください。