यादृच्छिक वन भूमि कवर वर्गीकरण कैसे करें?


32

यह पिछली पोस्ट का अनुसरण करने वाला यंत्र है : लैंड कवर वर्गीकरण के लिए मशीन लर्निंग एल्गोरिदम

ऐसा लगता है कि रैंडम फ़ॉरेस्ट (RF) वर्गीकरण विधि दूरस्थ संवेदी दुनिया में बहुत गति प्राप्त कर रही है। मैं अपनी कई खूबियों के कारण RF में विशेष रूप से दिलचस्पी रखता हूँ:

  • दूरस्थ संवेदी डेटा के लिए एक गैर-समरूप दृष्टिकोण
  • उच्च रिपोर्ट वर्गीकरण सटीकता
  • चर महत्व बताया गया है

इन खूबियों को देखते हुए, मैं उच्च रिज़ॉल्यूशन 4 बैंड इमेजरी का उपयोग करके रैंडम फ़ॉरेस्ट लैंड वर्गीकरण का प्रदर्शन करना चाहूंगा। रैंडम फॉरेस्ट के फायदों के बारे में बहुत सारी सामग्री और अनुसंधान है, फिर भी बहुत कम जानकारी मौजूद है कि वास्तव में वर्गीकरण विश्लेषण कैसे किया जाए। मैं आर का उपयोग करते हुए आरएफ प्रतिगमन से परिचित हूं और आरएफ वर्गीकरण एल्गोरिदम को चलाने के लिए इस वातावरण का उपयोग करना पसंद करेंगे।

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


मैं इस रेखापुंज-वर्गीकरण को समझने की कोशिश कर रहा हूं, क्योंकि मैं 10 सेमी-रिज़ॉल्यूशन वाली छवियों के साथ आरएफ-क्लास (प्रजाति-वितरण के लिए) पर काम कर रहा हूं। इसलिए मुझे लगता है कि मैं बिंदु आकार को इनपुट नहीं कर सकता, लेकिन केवल रेखापुंज। मैं * png या * tif -files के साथ कैसे आगे बढ़ने में सक्षम हूं?
स्टेवॉम्ब

जवाबों:


29

मुझे यकीन नहीं है कि मैं समझता हूं कि "एकत्रित" डेटा से आपका क्या मतलब है। यदि आप हेड-अप डिजिटाइज़िंग और कक्षाओं के असाइनमेंट की बात कर रहे हैं, तो यह जीआईएस में सबसे अच्छा है। कई मुफ्त विकल्प हैं जो उपयुक्त होंगे (i..e, QGIS, GRASS)। आदर्श रूप से आपके पास अपने वर्गीकरण को प्रशिक्षित करने के लिए फ़ील्ड डेटा होगा।

यादृच्छिक जंगलों का उपयोग करके वर्गीकरण की प्रक्रिया काफी सीधे आगे है। आप "rgdal" या "maptools" का उपयोग करके अपने प्रशिक्षण डेटा (यानी, एक बिंदु आकृति) में पढ़ सकते हैं, अपने वर्णक्रमीय डेटा का उपयोग करके पढ़ सकते हैं raster::stack, उपयोग करने वाले अपने प्रशिक्षण बिंदुओं को रेखापुंज मान असाइन करें raster:extractऔर फिर इसे पास करेंrandomForest। आरएफ को मॉडल को एक वर्गीकरण उदाहरण के रूप में पहचानने के लिए आपको अपने "वर्ग" कॉलम को एक कारक में तब्दील करने की आवश्यकता होगी। एक बार जब आपके पास एक फिट मॉडल होता है, तो आप भविष्यवाणी फ़ंक्शन का उपयोग कर सकते हैं, इसे पास करके आप स्टैस्टर स्टैक कर सकते हैं। आपको रास्टर प्रेडिक्ट फंक्शन के लिए विशिष्ट के अलावा भविष्यवाणी करने के लिए मानक तर्क पारित करने की आवश्यकता होगी। रेखापुंज पैकेज में चूहों को "स्मृति से बाहर" संभालने की क्षमता है और जैसे कि बहुत बड़ी चूहों के साथ भी स्मृति सुरक्षित है। रेखापुंज पूर्वानुमान समारोह में एक तर्क "फ़ाइलनाम" है जो डिस्क पर लिखे गए रेखापुंज के लिए अनुमति देता है। एक बहुस्तरीय समस्या के लिए आपको टाइप = "रेस्पॉन्स" और इंडेक्स = 1 सेट करना होगा जो आपकी कक्षाओं के पूर्णांक रेखापुंज को आउटपुट करेगा।

वहाँ कुछ चेतावनी है कि ध्यान दिया जाना चाहिए:

  1. आपके प्रतिक्रिया चर ( y ) या समीकरण के दाईं ओर किसी भी कारक में 32 से अधिक स्तर नहीं हो सकते हैं ( x )
  2. आपकी कक्षाएं संतुलित होनी चाहिए। एक 30% नियम का पालन करने के लिए एक अच्छा एक है, अगर आप एक समस्या पर 30% से अधिक अवलोकन है किसी भी अन्य की तुलना में आपकी समस्या असंतुलित हो जाती है और परिणाम पक्षपाती हो सकते हैं
  3. यह एक गलत धारणा है कि आरएफ ओवरफिट नहीं कर सकता है। यदि आप अपने पहनावा को सहसंबंधित करते हैं तो आप मॉडल को ओवरफिट कर सकते हैं। इससे बचने का एक अच्छा तरीका प्रारंभिक मॉडल को चलाना और त्रुटि स्थिरीकरण की साजिश है। अंगूठे के एक नियम के रूप में, मैं ntree पैरामीटर के लिए त्रुटि को स्थिर करने के लिए आवश्यक बूटस्ट्रैप की संख्या 2X चुनता हूं। ऐसा इसलिए है क्योंकि चर इंटरैक्शन त्रुटि की तुलना में धीमी दर पर स्थिर होता है। यदि आप मॉडल में कई चर शामिल नहीं हैं, तो आप इस पैरामीटर के साथ अधिक रूढ़िवादी हो सकते हैं।
  4. परिवर्तनीय महत्व के उपाय के रूप में नोड शुद्धता का उपयोग न करें। यह सटीकता में माध्य में कमी की तरह अनुमत नहीं है।

मेरे पास CRAN पर उपलब्ध rfUtilities पैकेज में मॉडल चयन, वर्ग असंतुलन और सत्यापन के लिए कार्य हैं।

आपको आरंभ करने के लिए यहां कुछ सरल कोड दिए गए हैं।

require(sp)
require(rgdal)
require(raster)
require(randomForest)

# CREATE LIST OF RASTERS
rlist=list.files(getwd(), pattern="img$", full.names=TRUE) 

# CREATE RASTER STACK
xvars <- stack(rlist)      

# READ POINT SHAPEFILE TRAINING DATA
sdata <- readOGR(dsn=getwd() layer=inshape)

# ASSIGN RASTER VALUES TO TRAINING DATA
v <- as.data.frame(extract(xvars, sdata))
  sdata@data = data.frame(sdata@data, v[match(rownames(sdata@data), rownames(v)),])

# RUN RF MODEL
rf.mdl <- randomForest(x=sdata@data[,3:ncol(sdata@data)], y=as.factor(sdata@data[,"train"]),
                       ntree=501, importance=TRUE)

# CHECK ERROR CONVERGENCE
plot(rf.mdl)

# PLOT mean decrease in accuracy VARIABLE IMPORTANCE
varImpPlot(rf.mdl, type=1)

# PREDICT MODEL
predict(xvars, rf.mdl, filename="RfClassPred.img", type="response", 
        index=1, na.rm=TRUE, progress="window", overwrite=TRUE)

मैं चंदवा कवर की पहचान करने के लिए आरएफ और भविष्यवाणी () का उपयोग करते हुए काफी अच्छे परिणाम देख रहा हूं। हालाँकि, मैं ISODATA एल्गोरिथ्म की तुलना में बेहतर परिणाम नहीं दे सकता। मुझे संदेह है कि मेरे प्रशिक्षण नमूने पक्षपाती हैं, या बहुत अधिक वर्णक्रमीय ओवरलैप हैं। क्या आरएफ का एक असुरक्षित कार्यान्वयन है जो बेहतर परिणाम दे सकता है? क्या यह आउटपुट के लिए वर्गों की संख्या निर्दिष्ट करना संभव है, जैसा कि आप ISODATA एल्गोरिदम होगा?
हारून

3
@ ऐरन, एक अनलेबेल (अनसुनी) आरएफ चलाना संभव है, लेकिन परिणाम से निपटना मुश्किल है। मेरा सुझाव है कि आप YaImpute पैकेज में उपलब्ध RF इंक्यूबेशन पद्धति को देखें। यह कुछ पूर्वाग्रह / असंतुलन के मुद्दों से निपट सकता है जो आप सामना कर रहे हैं।
जेफरी इवांस

5

मुझे पता है कि यह धागा थोड़ा पुराना है, लेकिन रिमोट सेंसिंग डेटा के वर्गीकरण का प्रयास करने के इच्छुक किसी भी व्यक्ति के लिए Rएक बहुत ही आशाजनक नया पैकेज जारी किया गया है।

install.packages("RSToolbox")

यह अनपेक्षित और पर्यवेक्षित वर्गीकरण (यादृच्छिक जंगलों का उपयोग करके) दोनों के लिए कार्य करता है। अधिक जानकारी यहां पाई जा सकती है - http://bleutner.github.io/RStoolbox/


यह बहुत ही आशाजनक लग रहा है, इस पैकेज पर आपके काम के लिए धन्यवाद। एक स्पष्टीकरण, क्या आप कैरेट के माध्यम से यादृच्छिक जंगलों को निर्दिष्ट कर रहे हैं? यदि ऐसा है, तो आपको दस्तावेज़ में यह बहुत स्पष्ट करना चाहिए। कैरेट पैकेज मूल ब्रीमन (2001) परिभाषा की तुलना में एक अलग नोड विभाजन विभाजन का उपयोग करता है। स्टेटिस्टिक स्ट्रोबल एट अल। (2007) का अनुसरण करता है और जहां प्रस्तावित स्टेटिस्टिक मान्य हो सकता है, मैंने उसकी सिमुलेशन स्थितियों को कभी नहीं खरीदा है। इसके अतिरिक्त, मनाया गया पूर्वाग्रह भाज्य स्तरों में भिन्नता पर आधारित है। मैं मूल एन्ट्रापी आँकड़ा पसंद करता हूं और जैसे कि कैरट का उपयोग नहीं करता।
जेफरी इवांस

हाय जेफरी, डर है कि मैं पैकेज का लेखक नहीं हूं। उसका विवरण मेरे द्वारा दिए गए लिंक पर पाया जा सकता है।
JPD


0

चूँकि यहाँ समस्या एक उच्च रिज़ॉल्यूशन CIR छवि को वर्गीकृत करने के साथ थी, इसलिए मेरा सुझाव है कि उपग्रह डेटा के लिए उपयोग किए जाने वाले पारंपरिक दृष्टिकोण (पिक्सेल आधारित) का उपयोग न करें, लेकिन हवाई छवि के विभाजन विश्लेषण और फिर क्लासियर (आरएफ) का उपयोग करने के लिए।


3
जहां यह एक काफी मान्य दृष्टिकोण है, किसी को यह अनुमान नहीं लगाना चाहिए कि एक एकत्रीकरण आधारित वर्गीकरण उपयोगकर्ता की जरूरतों को पूरा करता है। विभाजन को कम्प्यूटेशनल ट्रैक्टिबिलिटी को संबोधित करने के लिए लागू नहीं किया जाना चाहिए, बल्कि विशिष्ट विश्लेषणात्मक लक्ष्यों को पूरा करने के लिए। यह कार्ट ब्लांच विधि नहीं है जो पिक्सेल-आधारित विधियों को स्वचालित रूप से दबा देती है। अपेक्षित परिणाम के विरुद्ध सांख्यिकीय / स्थानिक चौरसाई के कारण जानकारी के नुकसान को संतुलित करना चाहिए। यदि आप स्थानिक भिन्नता में रुचि रखते हैं तो विभाजन इसे हटा सकता है। परिणाम भी विभाजन के मापदंडों पर अत्यधिक निर्भर हो सकते हैं।
जेफरी इवांस

मैं आपसे पूरी तरह सहमत हूं, वास्तव में प्रत्येक विधि को विशिष्ट लक्ष्यों के लिए उन्मुख होना चाहिए। यही कारण है कि मैंने सुझाव दिया कि उच्च रिज़ॉल्यूशन CIR छवियों के साथ (जिसमें संभवतः सीमित वर्णक्रमीय बैंड हैं) एक चर का GEOBIA सेट जिसमें सहायक डेटा, या बनावट मान शामिल हैं, विशेष रूप से RF के साथ क्लासिफायर होने पर वर्गीकरण अंतिम सटीकता में काफी सुधार कर सकता है।
विन्सेन्ट
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.