शोर (DBSCAN) के साथ अनुप्रयोगों में घनत्व आधारित स्थानिक क्लस्टरिंग R में क्लस्टरिंग


9

यह प्रश्न " R में क्लस्टरिंग स्थानिक डेटा " के रूप में शुरू हुआ और अब DBSCAN प्रश्न पर चला गया है।

जैसा कि पहले सवाल के जवाब में मैंने DBSCAN के बारे में जानकारी खोजी और कुछ डॉक्स के बारे में पढ़ा। नए सवाल खड़े हो गए हैं।

DBSCAN को कुछ मापदंडों की आवश्यकता होती है, उनमें से एक "दूरी" है। जैसा कि मेरे डेटा तीन आयामी, देशांतर, अक्षांश और तापमान हैं, मुझे किस "दूरी" का उपयोग करना चाहिए? वह दूरी किस आयाम से संबंधित है? मुझे लगता है कि यह तापमान होना चाहिए। मैं आर के साथ ऐसी न्यूनतम दूरी कैसे पा सकता हूं?

एक और पैरामीटर क्लस्टर बनाने के लिए नीडेड बिंदुओं की न्यूनतम संख्या है। क्या उस संख्या को खोजने की कोई विधि है? दुर्भाग्य से मुझे नहीं मिला है।

Google की खोज करते हुए मैं अपने समान डेटासेट में dbscan का उपयोग करने के लिए R उदाहरण नहीं खोज सका, क्या आप इस तरह के उदाहरणों के साथ किसी भी वेबसाइट को जानते हैं? इसलिए मैं पढ़ सकता हूं और अपने मामले के अनुकूल होने का प्रयास कर सकता हूं।

आखिरी सवाल यह है कि डीबीएससीएएन के साथ मेरा पहला आर प्रयास (पूर्व सवालों के उचित जवाब के बिना) एक स्मृति समस्या का परिणाम है। आर का कहना है कि यह वेक्टर को आवंटित नहीं कर सकता है। मैं 779191 अंकों के साथ 4 किमी की दूरी वाले ग्रिड से शुरू करता हूं जो लगभग 300000 पंक्तियों में समाप्त होता है x 3 कॉलम (अक्षांश, देशांतर और तापमान) जब वैध एसएसटी अंक नहीं हटाते हैं। इस स्मृति समस्या को हल करने के लिए कोई संकेत। क्या यह मेरे कंप्यूटर पर या DBSCAN में ही निर्भर करता है?

धैर्य के लिए एक लंबा और शायद उबाऊ संदेश पढ़ने के लिए और आपकी मदद के लिए धन्यवाद।


स्थानिक विश्लेषण के लिए समर्पित एक मंच है। हो सकता है कि इस पोस्ट का वहां उल्लेख करें (यह उल्लेख करना सुनिश्चित करें कि आप क्रॉस पोस्टिंग हैं)। gis.stackexchange.com
रोमन लुसट्रिक

जवाबों:


2

मैं अभी भी इस समस्या से फंसा हुआ हूं। मुझे आर मेलिंग सूची (क्रिश्चियन हेनिग के लिए धन्यवाद) से कुछ सुझाव मिले हैं, जिन्हें मैं यहां संलग्न करता हूं:

क्या आपने पुस्तकालय fpc में dbscan फ़ंक्शन पर विचार किया है , या यह एक और था? fpc::dbscan()समारोह एक "दूरी" पैरामीटर लेकिन कई विकल्प, जिनमें से एक अपनी स्मृति समस्या हल हो सकती ( "स्मृति" पैरामीटर का प्रलेखन देखो) नहीं है।

सैकड़ों हजारों बिंदुओं के लिए एक दूरी मैट्रिक्स का उपयोग करना आपदा (स्मृति-वार) के लिए एक नुस्खा है। मुझे यकीन नहीं है कि आपने जिस फ़ंक्शन का उपयोग किया है, वह है, लेकिन 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 है। जैसा कि यह एक गंभीर डेटा सेट है, कोई भी बिंदु आठ डेटा बिंदुओं से घिरा हुआ है, तो मैंने सोचा कि आसपास के बिंदुओं में से कम से कम 5 पुनरावृत्ति दूरी के भीतर होना चाहिए। लेकिन मुझे यकीन नहीं है कि मैं केवल तापमान मूल्य पर विचार करके सही दृष्टिकोण प्राप्त कर रहा हूं, शायद तब मुझे स्थानिक जानकारी याद आ रही है। मुझे देशांतर और अक्षांश डेटा से कैसे निपटना चाहिए?

के आयाम sst2हैं: 152243 पंक्तियों x 3 कॉलम "

अगर आप R और DBSCAN पर कुछ प्रकाश साझा कर सकते हैं तो मैं इस मेल संदेशों को यहाँ साझा करता हूँ। एक बार फिर धन्यवाद


हे, जहां आप समस्या को हल करने में सक्षम हैं? मैं इसी तरह के मुद्दों को लेकर फंस गया हूं। क्या आप कृपया अपने विचार साझा कर सकते हैं?
कुमार

प्रिय @ कुमार मुझे क्लारा क्लस्टर विधियों में वापस जाना था। मैं DBSCAN का उपयोग नहीं कर सका, मुझे खेद है कि मैं आपकी मदद नहीं कर सकता
pacomet 10

2

यहां समस्या आर के साथ है । DBSCAN के प्रभावी होने के लिए, आपको एक उपयुक्त सूचकांक संरचना (जो आपकी दूरी से मेल खाना चाहिए) होनी चाहिए। लेकिन वास्तव में अनुक्रमण नहीं करता है। इसके अतिरिक्त, fpc पैकेज DBSCAN का एक न्यूनतर कार्यान्वयन है, जो केवल इसकी कार्यक्षमता का एक छोटा सा हिस्सा प्रदान करता है।

दूरी फ़ंक्शन के लिए, यह वह जगह है जहां आपके "डोमेन ज्ञान" की आवश्यकता है। यदि आपके पास एक लचीला पर्याप्त डीबीएससीएएन कार्यान्वयन है (इसे लागू करना वास्तव में आसान है, तो सूचकांक इसे तेजी से बनाने के लिएO(n2)बहुत कठिन है!) आपको एक अनियंत्रित दूरी में रखने में सक्षम होना चाहिए। आप यह भी कर सकते हैं कि दो दूरी के कार्य और एप्सिलॉन मान: अंक सबसे अधिक होने चाहिए10km दूर, और तापमान में अंतर से कम होना चाहिए 1K.

सामान्य सिद्धांतों के लिए "सामान्यीकृत DBSCAN" को देखें जिन्हें DBSCAN की आवश्यकता है: "पड़ोस" की धारणा और "मुख्य बिंदुओं" (या "घनत्व") की एक धारणा।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.