Dies ist eine Fortsetzung eines vorherigen Beitrags: Algorithmen für maschinelles Lernen zur Klassifizierung der Landbedeckung .
Es scheint, dass die Klassifizierungsmethode Random Forest (RF) in der Welt der Fernerkundung an Dynamik gewinnt. Ich interessiere mich besonders für RF aufgrund vieler seiner Stärken:
- Ein nichtparametrischer Ansatz, der für die Fernerkundung von Daten geeignet ist
- Hohe gemeldete Klassifizierungsgenauigkeit
- Variable Wichtigkeit wird gemeldet
Angesichts dieser Stärken möchte ich eine zufällige Waldlandklassifizierung mit hochauflösenden 4-Band-Bildern durchführen. Es gibt viel Material und Forschung, um die Vorteile von Random Forest anzukündigen, aber es gibt nur sehr wenige Informationen darüber, wie die Klassifizierungsanalyse tatsächlich durchgeführt werden soll. Ich bin mit der RF-Regression unter Verwendung von R vertraut und würde es vorziehen, diese Umgebung zum Ausführen des RF-Klassifizierungsalgorithmus zu verwenden.
Wie sammle, verarbeite und gebe ich Trainingsdaten (dh basierend auf hochauflösenden CIR-Luftbildern) mit R in den Random Forest- Algorithmus ein? Alle schrittweisen Ratschläge zur Erstellung eines klassifizierten Landbedeckungsrasters sind sehr willkommen.
Antworten:
Ich bin nicht sicher, ob ich verstehe, was Sie unter "Sammeln" von Daten verstehen. Wenn Sie sich auf die Heads-up-Digitalisierung und Klassenzuweisung beziehen, ist dies am besten in einem GIS möglich. Es gibt viele freie Optionen, die geeignet wären (d. H. QGIS, GRASS). Idealerweise hätten Sie Felddaten, um Ihre Klassifizierung zu trainieren.
Das Verfahren zur Klassifizierung mit Random Forests ist recht einfach. Sie können Ihre Trainingsdaten (dh ein Punkt-Shapefile) mit "rgdal" oder "maptools" einlesen, Ihre Spektraldaten mit einlesen
raster::stack
, die Rasterwerte mit Ihren Trainingspunkten zuweisenraster:extract
und diese dann übergebenrandomForest
. Sie müssen Ihre "Klassen" -Spalte in einen Faktor zwingen, damit RF das Modell als Klassifizierungsinstanz erkennt. Sobald Sie ein Anpassungsmodell haben, können Sie die Vorhersagefunktion verwenden und es an den Raster-Stack übergeben. Sie müssen zusätzlich zu den für die Raster-Vorhersagefunktion spezifischen Argumenten die Standardargumente für die Vorhersage übergeben. Das Rasterpaket kann Raster "außerhalb des Arbeitsspeichers" verarbeiten und ist daher auch bei sehr großen Rastern speichersicher. Eines der Argumente in der Raster-Vorhersagefunktion ist "Dateiname", mit dem ein Raster auf die Festplatte geschrieben werden kann. Für ein Problem mit mehreren Klassen müssen Sie type = "response" und index = 1 setzen, wodurch ein ganzzahliges Raster Ihrer Klassen ausgegeben wird.Es gibt ein paar Vorsichtsmaßnahmen , die beachtet werden sollten:
Ich habe Funktionen für Modellauswahl, Klassenungleichgewicht und Validierung im rfUtilities- Paket, das auf CRAN verfügbar ist.
Hier ist ein einfacher Code, mit dem Sie loslegen können.
quelle
Ich weiß, dass dieser Thread ein wenig alt ist, aber für alle, die versuchen möchten, Fernerkundungsdaten zu klassifizieren
R
, wurde ein vielversprechendes neues Paket veröffentlicht.install.packages("RSToolbox")
Es enthält Funktionen sowohl für die unbeaufsichtigte als auch für die überwachte Klassifizierung (mithilfe zufälliger Gesamtstrukturen). Weitere Informationen finden Sie hier - http://bleutner.github.io/RStoolbox/
quelle
Hier und hier finden Sie Tutorials zur überwachten Klassifizierung / Regression mit R, die Beispiele für RandomForest enthalten.
quelle
Da das Problem hier in der Klassifizierung eines hochauflösenden CIR-Bildes bestand, empfehle ich, nicht den herkömmlichen Ansatz (pixelbasiert) für Satellitendaten zu verwenden, sondern eine Segmentierungsanalyse des Luftbildes und anschließend den Classier (RF) zu erstellen.
quelle