固定距離内のポイント数を最大にする既知の数の円中心を見つける


10

指定された距離()内のポイントの総数を最大化する、指定された数の円の中心()の中心を見つけたい2次元データのセットがあります。RNR

たとえば、10,000個のデータポイントあり、半径内でできるだけ多くのポイントをキャプチャする円の中心を見つけたいと考えています。5つの中心と10の半径は、データからではなく、あらかじめ与えられています。N = 5 R = 10(Xi,Yi)N=5R=10

円内のデータポイントの存在は、バイナリまたは命題のいずれかです。場合、どちらも> 10であるため、値が11単位離れている点と100単位離れている点で差はありません。同様に、円内にある場合も、中心付近と端付近の値は異なります。 。データポイントは、いずれかの円の中にあるか外にあります。R=10

この問題を解決するために使用できる優れたアルゴリズムはありますか?これらはクラスタリング手法に関連しているようですが、平均距離を最小化するのではなく、「距離」関数は、ポイントがポイントのいずれかの内にある場合は0、それ以外の場合は1です。NRN

私の好みはRでこれを行う方法を見つけることですが、どのようなアプローチでもありがたいです。


円の重なりは許可されますか?
curious_cat 2013

1
これは、基本的にはラスターデータセットの近傍(または焦点)操作です。GISサイトをチェックして、回答があるかどうかを確認し、Rパッケージを調べてラスター分析を行うとよいでしょう。
アンディW

1
円の重複は許可されますが、両方の円でカバーされるデータポイントは二重にカウントされません。ラスターデータセットの近傍/焦点操作へのポインターをありがとう。それらに沿って何かを探します。
colonel.triq 2013

@Andy Wフォーカル操作は当然ソリューションに関与しますが、この質問はGISコミュニティIMHOの専門知識を超えています。これは本当に(かなり難しい)最適化問題であるためです。これは、焦点の平均的なグリッドの最大値を簡単に見つけることではありません。しばらくここに置いておき、満足のいく解決策が見つからない場合は、プログラミング指向のサイトに移行することをお勧めします。
whuber

....またはmath.overflowに移行しますか?彼らはこれについてもいくつかの洞察を持っているかもしれません。
curious_cat 2013

回答:


1

これは変動k-means問題です。中心が等しいと見なされる限り、中心の半径は重要ではありません。

リンク:

点の確率が最も高い場所に円の中心が配置されます。

古典的なK平均法手順:

  1. クラスター数を5に設定
  2. 各ポイントをランダムなクラスターに配置する
  3. 各クラスターについて、平均位置を計算する
  4. 各ポイントについて、新しい各平均位置までの距離を計算します
  5. メンバーシップを最も近いクラスターに関連付ける
  6. 完了するまで繰り返す(反復、位置の変更、またはその他のエラーメトリック)

オプション:

  • 3の後でリラックス不足を使用して、平均位置を新しい位置に向かってゆっくりと変換できます。
  • これは個別のシステムであるため、完全には収束しません。ポイントがメンバーシップの変更を停止したときに終了することもありますが、少しだけ揺らぐこともあります。
  • 独自のコードを作成している場合(ほとんどの人がそうしているように)、上記のPOR k平均を開始点として使用し、円によって完全かつ完全に囲まれたポイントのパーセントによって通知されるEMにいくつかのバリエーションを実行できます。

K平均法が問題を攻撃する理由:

  • これは、成分の共分散が等しいガウス混合モデルのフィッティングと同等です。混合成分の中心は、最も期待される点の位置に配置されます。一定の確率の曲線は円になります。これはEMアルゴリズムなので、漸近的な収束があります。メンバーシップはハードではなく、ソフトです。
  • 等分散成分混合モデルの基本的な仮定が合理的に「近い」ものである場合は、それが何を意味するにせよ、この方法が適していると思います。ランダムにポイントを分散させるだけでは、うまく適合しない可能性が高くなります。

均一な分布を拾う非ガウス分布の成分がある「ゼロ膨張ポアソン」の類似物があるはずです。

モデルを「調整」する必要があり、十分なサンプルポイントがあると確信している場合は、k-meansを使用して初期化し、円の半径の外側のポイントを競合から削除する拡張k-meansアジャスターを作成できます。それはあなたが持っている円を少し乱すでしょう、しかしそれは与えられたデータを与えられて少し改善されたパフォーマンスを持っているかもしれません。


K平均法がこの問題をどのように解決するかについてもう少し明確にしていただけませんか?
whuber

提案をありがとう。K平均法が問題を解決するかどうかは、まだはっきりしていませんか?通常(0,1)で生成されたデータの3つのクラスターの例を考えます。ここで、中心は5単位ほどオフセットされています。K-meansセンターは最大密度を与えます。ここで、中心に0.5よりも近いデータが削除されるように、「穴」のある点をいくつか切り取ります。K平均法は同じ中心について表示されますが、N = 3、R = 0.5の最大カバレッジを取得しようとした場合、それは明らかに正しい答えではありません(ドーナツの穴にデータがないため)。私は何かを誤解していますか?
colonel.triq 2013

時間があれば、より良い回答を得るために、質問を詳しく調べます。負の重みを許可したい。は、データドーナツや動径有理多項式を処理できる場合があります。
EngrStudent 2013

0

誰かがより良い正式なアルゴリズムを持っている可能性がありますが、ここではブルートフォースアプローチ(ハック?)の1つを示します。六角形のビニングアルゴリズムの1つを使用して、2Dヒストグラムを計算します。のようhexbinR

半径Rの円を大まかに囲む六角形のサイズを使用し、上位N個のビンで並べ替えます。あなたがN明確な遠くのビンを手に入れたら、素晴らしい。ここで1つの方法は、最高密度の六角形の中心から(xおよびy方向に)2 * Rスケールで円を局所的に移動することです。密度を計算すると、ローカルで位置を大まかに最適化できます。これは、六角形が固定原点に関して移動ウィンドウではなかったという事実を説明します。

上位のビンがすべて近くにある場合は、その近くでサークルを移動するためのよりスマートな方法が必要です。

そのような素朴な戦略が見事に失敗するいくつかのコーナーケースを考えることができることに注意してください。まだ、出発点にすぎません。

その間、私は誰かがより良いアルゴリズムを持っていることを望みます。


1
このような何かは、少なくとも1つの円について、問題を解決するかもしれません。(これはGISでフォーカルカウントを使用して簡単に行うことができます。)しかし、それは複数の円の問題を解決しません。
whuber

@whuber:1つの円を解いてから、その円内にあるすべての点をドロップし、元のアルゴリズムを繰り返すのはどうですか?これが失敗する状況を見ることができますか?
curious_cat 2013

R=10,N=20,1,2,20,21,28,29,30,31,32,39,4028,29,30,31,320,1,220,21,28,29,3030,31,32,39,40

@whuber:はい。あなたが正しいです。一部の(多くの?)ケースで入力ポイントの構造に依存しますが、貪欲なソリューションと貪欲でないソリューションは同じか、近いですか?知りません。
curious_cat 2013

@whuber:問題は主に境界にあるようです。(私の回答で少し言ったように)ウィンドウ+Rを移動し、-Rすべての実行可能なソリューションをスタックに配置して、それらの中から選択した場合はどうなりますか?たとえば、あなたの1D例では、28,29,30,31,32それを押す18-28と、ウィンドウをスライドさせて38-48すべての実行可能なソリューションを探します。次に、これらの中で最大の点をもたらす組み合わせを探すことができます。それが役立つかどうかわからない?私の素朴なアルゴリズムが回収されるかどうかを確認しようとしていますか?:)
curious_cat
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.