Il s'agit d'un suivi d'un article précédent: Algorithmes d'apprentissage automatique pour la classification de la couverture terrestre .
Il semble que la méthode de classification Random Forest (RF) gagne du terrain dans le monde de la télédétection. Je suis particulièrement intéressé par la RF en raison de ses nombreux atouts:
- Une approche non paramétrique adaptée aux données de télédétection
- Précision de classification élevée rapportée
- Une importance variable est signalée
Compte tenu de ces points forts, j'aimerais effectuer une classification des terres de la forêt aléatoire en utilisant des images à haute résolution à 4 bandes. Il y a beaucoup de matériel et de recherche vantant les avantages de Random Forest, mais très peu d'informations existent sur la façon d'effectuer réellement l'analyse de classification. Je connais la régression RF à l'aide de R et préférerais utiliser cet environnement pour exécuter l'algorithme de classification RF.
Comment puis-je collecter, traiter et saisir des données d'entraînement (c'est-à-dire basées sur des images aériennes CIR à haute résolution) dans l' algorithme Random Forest à l' aide de R? Tout conseil étape par étape sur la façon de produire une trame de couverture du sol classée serait grandement apprécié.
Réponses:
Je ne suis pas sûr de comprendre ce que vous entendez par «collecter» des données. Si vous faites référence à la numérisation en tête-à-tête et à l'affectation de classes, il est préférable de le faire dans un SIG. Il existe de nombreuses options gratuites qui conviendraient (c'est-à-dire, QGIS, GRASS). Idéalement, vous auriez des données de terrain pour former votre classification.
La procédure de classification à l'aide de forêts aléatoires est assez simple. Vous pouvez lire vos données d'entraînement (c.-à-d. Un fichier de formes de points) en utilisant "rgdal" ou "maptools", lire vos données spectrales en utilisant
raster::stack
, attribuer les valeurs de trame à vos points d'entraînement en utilisantraster:extract
puis les transmettre àrandomForest
. Vous devrez contraindre votre colonne "classe" en un facteur pour que RF reconnaisse le modèle comme une instance de classification. Une fois que vous avez un modèle ajusté, vous pouvez utiliser la fonction de prédiction, en lui passant la pile raster. Vous devrez passer les arguments standard à prévoir en plus de ceux spécifiques à la fonction de prédiction raster. Le package raster a la capacité de gérer les rasters «hors mémoire» et, en tant que tel, il est sûr de la mémoire, même avec de très grands rasters. Un des arguments de la fonction de prédiction de raster est "nom de fichier" permettant à un raster d'écrire sur le disque. Pour un problème multiclasse, vous devrez définir type = "response" et index = 1 qui produiront un raster entier de vos classes.Il y a quelques mises en garde à noter:
J'ai des fonctions de sélection de modèle, de déséquilibre de classe et de validation dans le package rfUtilities disponible sur CRAN.
Voici un code simple pour vous aider à démarrer.
la source
Je sais que ce fil est un peu ancien, mais pour tous ceux qui souhaitent essayer la classification des données de télédétection dans
R
, un nouveau package très prometteur a été publié.install.packages("RSToolbox")
Il est livré avec des fonctions pour la classification non supervisée et supervisée (en utilisant des forêts aléatoires). Plus d'informations peuvent être trouvées ici - http://bleutner.github.io/RStoolbox/
la source
Ici et ici sont des tutoriels sur la classification / régression supervisée avec R, qui comprend des exemples RandomForest.
la source
Étant donné que le problème ici était de classer une image CIR à haute résolution, je suggère de ne pas utiliser l'approche traditionnelle (basée sur les pixels) utilisée pour les données satellite, mais de produire une analyse de segmentation de l'image aérienne, puis d'utiliser le classeur (RF).
la source