2

ポイントのデータセットがあります。

 lat   |long    | time
 34.53  -126.34  1
 34.52  -126.32  2
 34.51  -126.31  3
 34.54  -126.36  4
 34.59  -126.28  5
 34.63  -126.14  6
 34.70  -126.05  7
 ...

(はるかに大きなデータセットですが、これは一般的な構造です。)

距離と時間に基づいてポイントをクラスター化したい。クラスターがいくつあるか分からないので、DBSCAN は良い選択のようです。

私は現在、分/5500を使用しています(これは約20メートルで、スケーリングされていると思います。)

library(fpc)
 results<-dbscan(data,MinPts=3,eps=0.00045,method="raw",scale=FALSE,showplot=1)

生データがあるため、スケーリング/距離がどのように決定されるかを理解するのに問題があります。スケーリングされている場合とスケーリングされていない場合の eps の値を推測できますが、スケーリングが何を行うのか、またはどの距離メトリックが使用されているのかは不明です (おそらくユークリッド距離ですか?) これに関するドキュメントはどこにありますか?

(これは、選択する自動化された方法を見つけることではありません ( DBSCAN (R) の eps と minpts を選択しますか?のように)、異なる値が何を意味するかについてです。「最初に距離関​​数が必要です」と言っても、距離関数使用されているか、または作成する方法...)

4

2 に答える 2

1

まず、データの距離行列を計算します。次に、 を使用する代わりに を使用method='row'できますmethod='dist'。このように、dbscan はデータを距離行列として扱うので、距離関数の実装方法について心配する必要はありません。距離行列を事前に計算してメモリに保存しているため、これにはより多くのメモリが必要になる場合があることに注意してください。

于 2013-09-04T14:34:15.767 に答える
0

私はR/fpcELKI しか使っていないので、あなたの質問にはあまり答えられません。fpcその理由は、特にインデックスを使用できる場合は、よりも大幅に高速であることがわかったためです。100 万ポイントのデータ セットを扱う場合、その差は非常に大きくなります。

さらに、それは非常に柔軟であり、それが必要なようです。

ELKI には、大圏距離を使用する LatLng 距離関数があります。次に、イプシロンをキロメートル単位で簡単に設定できます。

ただし、time属性もあります。これを分析に含める計画はまだありますか? ELKI には、カスタム距離関数の作成に関するチュートリアルがあり、おそらく必要なものです。大圏距離を再利用できるはずです。DBSCAN を使用した巧妙なトリックを次に示します。

DBSCAN は実際には距離を必要としません。近隣を知る必要がありますが、距離はイプシロンとの比較にのみ使用されます。したがって、2 つのオブジェクトが類似している場合は 0、異なる場合は 1 である距離関数を 0.5 のイプシロンと共に定義することで、より複雑なクラスタリングを実行できます。コンテキストでは、距離関数を次のように定義できます。

0 if the distance is less than 0.1 km and the time difference is also less than t
1 otherwise
于 2013-02-21T06:39:20.343 に答える