演習として、自分で Spark を使用してk-meansを実装しています。これを行うにはid -> cluster_id
、各ステップで の 2 つのマップを比較する必要があります。現在、私はそれらの両方を収集し、2 つの単純なスカラ マップとして比較することでそれを行っています。
これを並行して行う方法はありますか?その価値はありますか?
アップデート:
K-MEANSクラスタリングアルゴリズムから始めて、状況を詳しく説明しましょう(簡単です)
- それらを重心にするすべての N ポイントからランダムな K ポイントを選択します。
- 各点を最も近い重心に割り当てます(ユークリッド距離に従って)
- 重心を再計算し、割り当てられた重心ですべてのポイントをグループ化し、それらの平均を計算します
- 再計算によって、前のステップのもの以外のマッピング (obj_id -> centroid_id) が生成された場合は、ステップ 2-3 を繰り返します。
ステップ#4が問題です。前のステップで持っていたマッピングと現在持っているマッピングを比較する必要があります。これは、ワーカー全体でランダムな読み取りをあまり行わずに、何らかの形で並行して行う必要があります。