Rでのノイズを伴うアプリケーションの密度ベースの空間クラスタリング(DBSCAN)クラスタリング


9

この質問は「Rでの空間データのクラスタリング」から始まり、現在はDBSCANの質問に移動しています。

最初の質問への回答が示唆したように、私はDBSCANに関する情報を検索し、いくつかのドキュメントを読みました。新しい質問が発生しました。

DBSCANにはいくつかのパラメータが必要です。そのうちの1つは「距離」です。私のデータは3次元、経度、緯度、および温度なので、どの「距離」を使用する必要がありますか?どの距離がその距離に関連していますか?温度だと思います。Rでそのような最小距離を見つけるにはどうすればよいですか?

別のパラメーターは、クラスターを形成するために必要なポイントの最小数です。その数を見つける方法はありますか?残念ながら見つかりませんでした。

Googleで検索すると、私のようなデータセットでdbscanを使用するためのRの例が見つかりませんでした。そのような種類のWebサイトを知っていますか?だから私は読んで私のケースに適応しようとすることができます。

最後の質問は、DBSCANを使用した最初のR試行(前の質問に対する適切な回答なし)がメモリ問題を引き起こしたということです。Rは、ベクトルを割り当てることができないと言います。有効ではないSSTポイントを削除する場合、約300000行x 3列(緯度、経度、温度)で終わる779191ポイントの4 km間隔のグリッドから始めます。このメモリの問題に対処するためのヒント。それは私のコンピューターに依存していますか、それともDBSCAN自体に依存していますか?

長くて退屈なメッセージを読むのを辛抱強く、そしてあなたの助けをありがとう。


空間分析に特化したフォーラムがあります。多分そこにこの投稿に言及してください(あなたがクロス投稿していることを忘れないでください)。gis.stackexchange.com
RomanLuštrik

回答:


2

私はまだこの問題で立ち往生しています。ここに添付するRメーリングリスト(Christian Hennigに感謝)からいくつかの提案を受け取りました。

ライブラリfpcの dbscan関数を検討しましたか、それとも別の関数ですか?このfpc::dbscan()関数には「距離」パラメータはありませんが、いくつかのオプションがあります。そのうちの1つはメモリの問題を解決する可能性があります(「メモリ」パラメータのドキュメントを参照してください)。

数十万のポイントに距離行列を使用することは、災害のレシピです(メモリの観点から)。あなたが使用した関数がそれをしたかどうかはわかりませんが、それfpc::dbscan()は回避できます。

fpc::dbscan()ユーザーが提供しなければならない調整定数を必要とすることは事実です。残念ながら、これを行う方法に関する一般的な規則はありません。メソッドと定数の意味、およびこれがアプリケーションの要件にどのように変換されるかを理解する必要があります。

いくつかの異なる選択肢を試してみて、何が機能するかを確認するためにクラスター検証を行うこともできますが、これを電子メールで簡単に説明することはできません。

私は自分のデータでいくつかの試みをしましたが、成功しませんでした:

「はい、fpcからdbscanを試してみましたが、まだメモリの問題が解決していません。あなたの答えについては、どのメモリパラメータを調べればよいかわかりません。次に、dbscanパラメータで試したコードを示します。間違いがないか確認してください。

> sstdat=read.csv("sst.dat",sep=";",header=F,col.names=c("lon","lat","sst"))
> library(fpc)
> sst1=subset(sstdat, sst<50)
> sst2=subset(sst1, lon>-6)
> sst2=subset(sst2, lon<40)
> sst2=subset(sst2, lat<46)
> dbscan(sst2$sst, 0.1, MinPts = 5, scale = FALSE, method = c("hybrid"), 
         seeds = FALSE, showplot = FALSE, countmode = NULL)
Error: no se puede ubicar un vector de tamaño  858.2 Mb
> head(sst2)
             lon   lat   sst
1257 35.18 24.98 26.78
1258 35.22 24.98 26.78
1259 35.27 24.98 26.78
1260 35.31 24.98 26.78
1261 35.35 24.98 26.78
1262 35.40 24.98 26.85

この例ではdbscan()、温度値にのみ適用し、経度/緯度には適用しないため、epsパラメーターは0.1です。グリッドデータセットであるため、どのポイントも8つのデータポイントで囲まれているので、周囲のポイントのうち少なくとも5つは到達可能距離内にあるべきだと思いました。しかし、温度値のみを考慮することで適切なアプローチが得られているかどうかはわかりません。おそらく、空間情報が不足しています。経度と緯度のデータはどのように扱うべきですか?

寸法はsst2、次のとおりです。152243行は3列をx」は

RとDBSCANについていくつかの光を共有できる場合に備えて、このメールメッセージをここで共有します。再度、感謝します


どこで問題を解決できますか?同様の問題を抱えています。ご意見をお聞かせください。
クマー2016

@kumar様CLARAクラスターメソッドに戻る必要がありました。DBSCANを使用できませんでした。お
役に立て

2

ここでの問題はRにあります。DBSCANを効果的に使用するには、適切なインデックス構造(距離に一致する必要がある)が必要です。ただし、Rは実際にはインデックス作成を行いません。さらに、fpcパッケージはDBSCANの最小限の実装であり、その機能のごく一部しか提供していません。

距離関数に関しては、これが「ドメインの知識」が必要な場所です。十分に柔軟なDBSCAN実装がある場合(実際に実装するのは簡単ですが、よりも速くするためのインデックスは非常に困難です!)任意の距離に配置できるはずです。2つの距離関数とイプシロン値を作成することもできます。ポイントは最大離れている必要があり、温度差は未満でなければなりません10 KのM 1 K O(n2)10km1K.

「一般化されたDBSCAN」でDBSCANに必要な一般的な原則を確認します。「近隣」の概念と「コアポイント」(または「密度」)の概念です。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.