Este es un seguimiento de una publicación anterior: Algoritmos de aprendizaje automático para la clasificación de la cobertura del suelo .
Parece que el método de clasificación Random Forest (RF) está ganando mucho impulso en el mundo de la teledetección. Estoy particularmente interesado en RF debido a muchos de sus puntos fuertes:
- Un enfoque no paramétrico adecuado para datos de teledetección
- Alta precisión de clasificación reportada
- Se informa la importancia variable
Dadas estas fortalezas, me gustaría realizar la clasificación de tierras de Random Forest utilizando imágenes de 4 bandas de alta resolución. Hay mucho material e investigación que promociona las ventajas de Random Forest, pero existe muy poca información sobre cómo realizar el análisis de clasificación. Estoy familiarizado con la regresión de RF usando R y preferiría usar este entorno para ejecutar el algoritmo de clasificación de RF.
¿Cómo recopilo, proceso e ingreso datos de entrenamiento (es decir, basados en imágenes aéreas CIR de alta resolución) en el algoritmo Random Forest usando R? Cualquier consejo paso a paso sobre cómo producir un ráster de cobertura terrestre clasificado sería muy apreciado.
Respuestas:
No estoy seguro de entender lo que quiere decir con "recopilar" datos. Si se está refiriendo a la digitalización y la asignación de clases, esto se hace mejor en un SIG. Hay muchas opciones gratuitas que serían adecuadas (es decir, QGIS, GRASS). Lo ideal sería tener datos de campo para entrenar su clasificación.
El procedimiento para la clasificación con bosques aleatorios es bastante sencillo. Puede leer sus datos de entrenamiento (es decir, un archivo de forma de puntos) usando "rgdal" o "maptools", leer sus datos espectrales usando
raster::stack
, asignar los valores ráster a sus puntos de entrenamiento usandoraster:extract
y luego pasar esto arandomForest
. Deberá forzar su columna de "clase" en un factor para que RF reconozca el modelo como una instancia de clasificación. Una vez que tenga un modelo ajustado, puede usar la función de predicción, pasándola a su ráster. Deberá pasar los argumentos estándar para predecir, además de los específicos de la función de predicción ráster. El paquete ráster tiene la capacidad de manejar rásteres "sin memoria" y, como tal, es seguro para la memoria, incluso con rásteres muy grandes. Uno de los argumentos en la función de predicción de ráster es "nombre de archivo" que permite que un ráster se escriba en el disco. Para un problema multiclase, deberá establecer type = "response" e index = 1, que generará un ráster entero de sus clases.Hay algunas advertencias que deben tenerse en cuenta:
Tengo funciones para selección de modelo, desequilibrio de clase y validación en el paquete rfUtilities disponible en CRAN.
Aquí hay un código simple para comenzar.
fuente
Sé que este hilo es un poco viejo, pero para cualquiera que quiera probar la clasificación de datos de detección remota
R
, se ha lanzado un nuevo paquete muy prometedor.install.packages("RSToolbox")
Viene con funciones para clasificación no supervisada y supervisada (utilizando bosques aleatorios). Puede encontrar más información aquí: http://bleutner.github.io/RStoolbox/
fuente
Aquí y aquí hay tutoriales sobre clasificación / regresión supervisada con R, que incluye ejemplos de RandomForest.
fuente
Dado que el problema aquí era clasificar una imagen CIR de alta resolución, sugiero no utilizar el enfoque tradicional (basado en píxeles) utilizado para los datos satelitales, sino producir un análisis de segmentación de la imagen aérea y luego utilizar el más elegante (RF).
fuente