Este é um acompanhamento de um post anterior: Algoritmos de aprendizado de máquina para classificação da cobertura do solo .
Parece que o método de classificação Random Forest (RF) está ganhando muito impulso no mundo do sensoriamento remoto. Estou particularmente interessado em RF devido a muitos de seus pontos fortes:
- Uma abordagem não paramétrica adequada para dados de sensoriamento remoto
- Alta precisão de classificação relatada
- Importância variável é relatada
Dado esses pontos fortes, eu gostaria de realizar a classificação aleatória da terra da Floresta usando imagens de alta resolução em 4 bandas. Há muito material e pesquisa divulgando as vantagens do Random Forest, mas existem poucas informações sobre como realmente executar a análise de classificação. Eu estou familiarizado com a regressão de RF usando R e preferiria usar esse ambiente para executar o algoritmo de classificação de RF.
Como coletar, processar e inserir dados de treinamento (ou seja, com base em imagens aéreas CIR de alta resolução) no algoritmo Random Forest usando R? Qualquer conselho passo a passo sobre como produzir uma varredura classificada de cobertura da terra seria muito apreciado.
Respostas:
Não sei ao certo o que você entende por "coletar" dados. Se você está se referindo à digitalização heads-up e à atribuição de classes, é melhor fazer isso em um GIS. Existem muitas opções gratuitas que seriam adequadas (i..e, QGIS, GRASS). Idealmente, você teria dados de campo para treinar sua classificação.
O procedimento para classificação usando florestas aleatórias é bastante simples. Você pode ler seus dados de treinamento (ou seja, um shapefile de ponto) usando "rgdal" ou "maptools", ler seus dados espectrais
raster::stack
, atribuir os valores de varredura aos seus pontos de treinamento usandoraster:extract
e depois passar isso pararandomForest
. Você precisará coagir sua coluna "classe" a um fator para que a RF reconheça o modelo como uma instância de classificação. Depois de ter um modelo de ajuste, você pode usar a função de previsão, passando a pilha raster. Você precisará passar os argumentos padrão para prever, além dos argumentos específicos para a função de previsão de varredura. O pacote raster tem a capacidade de lidar com rasters "sem memória" e, como tal, é seguro para a memória, mesmo com rasters muito grandes. Um dos argumentos da função de previsão de varredura é "nome do arquivo", permitindo que uma varredura seja gravada no disco. Para um problema de várias classes, você precisará definir type = "response" e index = 1, o que produzirá uma varredura inteira de suas classes.Existem algumas ressalvas que devem ser observadas:
Tenho funções para seleção de modelo, desequilíbrio de classe e validação no pacote rfUtilities disponível no CRAN.
Aqui está um código simples para você começar.
fonte
Eu sei que esse segmento é um pouco antigo, mas para quem quiser experimentar a classificação de dados de sensoriamento remoto
R
, um novo pacote muito promissor foi lançado.install.packages("RSToolbox")
Ele vem com funções para classificação não supervisionada e supervisionada (usando florestas aleatórias). Mais informações podem ser encontradas aqui - http://bleutner.github.io/RStoolbox/
fonte
Aqui e aqui estão os tutoriais sobre classificação / regressão supervisionada com R, que inclui exemplos de RandomForest.
fonte
Como o problema aqui estava em classificar uma imagem CIR de alta resolução, sugiro não usar a abordagem tradicional (baseada em pixels) usada para dados de satélite, mas produzir uma análise de segmentação da imagem aérea e depois usar o classier (RF).
fonte