10

英国の自転車事故のデータを分析して、統計的なブラックスポットを見つけようとしています。これは別のウェブサイトからのデータの例です。http://www.cycleinjury.co.uk/map

私は現在、SQLiteを使用して緯度/経度の場所を約100kストアしています。近くの場所をグループ化したい。このタスクはクラスター分析と呼ばれます。

孤立したインシデントを無視し、代わりに、小さなエリアで複数の事故が発生したクラスターの発生源のみを表示することで、データセットを単純化したいと思います。

私が克服する必要がある3つの問題があります。

  1. パフォーマンス-近くのポイントをすばやく見つけるにはどうすればよいですか。たとえば、SQLiteのRツリーの実装を使用する必要がありますか?

  2. チェーン-近くのポイントのチェーンを拾わないようにするにはどうすればよいですか?

  3. 密度-サイクル人口密度をどのように考慮に入れるか?ロンドンのサイクリストの人口密度ははるかに高く、ブリストルと言います。したがって、ロンドンにはバックストップの数が多いようです。

このような「チェーン」シナリオは避けたいと思います。

ここに画像の説明を入力してください

代わりに、クラスターを見つけたいと思います。

ここに画像の説明を入力してください

ロンドンのスクリーンショット(私はいくつかのクラスターを手で描いた)...

ここに画像の説明を入力してください

ブリストルのスクリーンショット-はるかに低い密度-この領域で実行された同じプログラムは、相対密度が考慮されていない場合、ブラックスポットを検出しない可能性があります。

ここに画像の説明を入力してください

どんなポインタも素晴らしいでしょう!

4

2 に答える 2

12

問題の説明は、DBSCANクラスタリングアルゴリズム(ウィキペディア)とまったく同じです。少なくともminPtsオブジェクトである必要があるという意味で、チェーン効果を回避します。

密度の違いについては、OPTICS(ウィキペディア)が解決するはずです。ただし、クラスターを抽出する別の方法を使用する必要がある場合があります。

ええと、100%ではないかもしれません。「密度が接続されている」領域ではなく、単一のホットスポットが必要な場合があります。OPTICSプロットについて考えるとき、あなたは小さいが深い谷にのみ興味があり、大きな谷には興味がないと思います。おそらく、OPTICSプロットを使用して、「少なくとも10件の事故」の極小値をスキャンすることができます。

更新:データセットへのポインタをありがとう。本当におもしろいです。だから私はそれをサイクリストに絞り込みませんでしたが、今は座標付きの120万のレコードすべてを使用しています。ELKIは非常に高速であり、実際にはユークリッド距離の代わりに測地距離(つまり、緯度と経度)を使用してバイアスを回避できるため、分析のためにそれらをELKIにフィードしました。STRの一括読み込みでR*ツリーインデックスを有効にしました。これは、ランタイムを大幅に短縮するのに役立つはずだからです。。Xi = .1、epsilon = 1(km)、minPts = 100でOPTICSを実行しています(大きなクラスターのみを探しています)。実行時間は約11分で、それほど悪くはありませんでした。もちろん、OPTICSプロットの幅は120万ピクセルになるため、完全な視覚化には適していません。巨大なしきい値を考えると、それぞれ100〜200のインスタンスを持つ18のクラスターを識別しました。次に、これらのクラスターを視覚化してみます。ただし、実験には必ず低いminPtsを試してください。

見つかった主なクラスターは次のとおりです。

  • 51.690713-0.045545ロンドンの北にあるA10の交差点でM25を過ぎたところ
  • 51.477804-0.404462「ワゴナーズラウンドアバウト」
  • 51.690713-0.045545「HaltonCrossRoundabout」またはその南の交差点
  • 51.436707-0.499702A30およびA308ステーンズバイパスのフォーク
  • 53.556186-2.489059マンチェスター北西部のA58へのM61出口
  • 55.170139 -1.53​​2917 A189、ノースシートンラウンドアバウト
  • 55.067229 -1.577334 A189とA19、このすぐ南、4車線のラウンドアバウト。
  • 51.570594 -0.096159マナーハウス、ピカデリーライン
  • 53.477601 -1.152863 M18およびA1(M)
  • 53.091369 -0.789684 A1、A17、およびA46、A1の両側にラウンドアバウトがある複雑な構造。
  • 52.949281-0.97896A52およびA46
  • 50.659544 -1.15251ワイト島、サンダウン。
  • ..。

これらは、クラスターから取得された単なるランダムなポイントであることに注意してください。代わりに、クラスターの中心や半径などを計算するのが賢明かもしれませんが、私はそれをしませんでした。そのデータセットを垣間見たかったのですが、面白そうです。

minPts = 50、epsilon = 0.1、xi=0.02のスクリーンショットを次に示します。

ロンドン中心部のいくつかのクラスター

OPTICSでは、クラスターを階層化できることに注意してください。詳細は次のとおりです。

ネストされたクラスター-OPTICSは階層を生成します

于 2013-02-05T08:08:56.383 に答える
2

まず、あなたの例はかなり誤解を招くものです。2つの異なるデータセットがあり、データを制御していません。それがチェーンに現れる場合、あなたはチェーンを出します。

この問題は、データベースには必ずしも適していません。プラットフォームにこのアルゴリズムを実装するコードを作成するか、パッケージを見つける必要があります。

多くの異なるクラスタリングアルゴリズムがあります。1つはk-meansで、固定数のクラスターを探す反復アルゴリズムです。k-meansは、データの完全なスキャンを数回必要とします。これで、クラスターができました。インデックスは特に役に立ちません。

もう1つは、通常はわずかに小さいデータセットに適していますが、階層的クラスタリングです。最も近い2つのものを組み合わせてから、クラスターを構築します。ここでインデックスが役立つ場合があります。

ただし、 kdnuggetsなどのサイトをよく読んで、無料またはその他の方法で利用できるソフトウェアを確認することをお勧めします。

于 2013-02-04T20:47:34.373 に答える