랜덤 포레스트 랜드 커버 분류를 수행하는 방법?


32

다음은 이전 게시물에 대한 후속 조치 입니다. 토지 표지 분류를위한 기계 학습 알고리즘 .

RF ( Random Forest ) 분류 방법은 원격 감지 세계에서 많은 추진력을 얻고 있는 것으로 보입니다 . 나는 RF의 많은 장점으로 인해 RF에 특히 관심이 있습니다.

  • 원격 감지 데이터에 적합한 비모수 적 접근
  • 높은 분류 정확도
  • 변수 중요성이보고됩니다

이러한 강점을 감안할 때, 고해상도 4 밴드 이미지를 사용하여 랜덤 포레스트 랜드 분류를 수행하고 싶습니다. Random Forest의 장점을 선전하는 많은 자료와 연구가 있지만 실제로 분류 분석을 수행하는 방법에 대한 정보는 거의 없습니다. R을 사용한 RF 회귀에 익숙하며이 환경을 사용하여 RF 분류 알고리즘을 실행하는 것을 선호합니다.

R을 사용하여 교육 데이터 (예 : 고해상도 CIR 항공 이미지 기반)를 랜덤 포레스트 알고리즘 으로 수집, 처리 및 입력하는 방법은 무엇입니까? 분류 된 토지 표지 래스터를 생산하는 방법에 대한 모든 단계적인 조언은 대단히 감사하겠습니다.


10cm 해상도의 이미지로 RF 종 (종 분포)을 위해 노력하고 있기 때문에이 래스터 분류를 이해하려고합니다. 따라서 점 모양을 입력 할 수 없지만 래스터 만 입력 할 수 있다고 생각합니다. * png 또는 * tif -files를 어떻게 진행할 수 있습니까?
steveomb

답변:


29

"수집"데이터의 의미를 이해하고 있는지 잘 모르겠습니다. 헤드 업 디지타이징 및 수업 할당을 언급하는 경우 GIS에서 가장 잘 수행됩니다. 적합한 많은 무료 옵션이 있습니다 (예 : QGIS, GRASS). 분류를 훈련시키기위한 필드 데이터가있는 것이 이상적입니다.

랜덤 포레스트를 사용한 분류 절차는 매우 간단합니다. "rgdal"또는 "maptools"를 사용하여 학습 데이터 (예 : 점 모양 파일)를 읽고을 사용하여 스펙트럼 데이터를 읽고 raster::stack래스터 값을 사용하여 학습 포인트에 할당 raster:extract한 다음randomForest. RF가 모델을 분류 인스턴스로 인식하게하려면 "클래스"열을 요인으로 강제 변환해야합니다. 맞는 모델이 있으면 예측 기능을 사용하여 래스터 스택을 전달할 수 있습니다. 래스터 예측 기능과 관련된 것 외에도 예측하려면 표준 인수를 전달해야합니다. 래스터 패키지에는 래스터를 "메모리 부족"으로 처리 할 수있는 기능이 있으므로 매우 큰 래스터에서도 메모리가 안전합니다. 래스터 예측 기능의 인수 중 하나는 "파일 이름"으로 래스터를 디스크에 쓸 수 있습니다. 멀티 클래스 문제의 경우 클래스의 정수 래스터를 출력하는 type = "response"및 index = 1을 설정해야합니다.

주의 해야 할 몇 가지 주의 사항 이 있습니다.

  1. 반응 변수 ( y ) 또는 방정식 오른쪽의 인자 ( x )에 32 개 이상의 수준을 가질 수 없습니다
  2. 수업은 균형을 이루어야합니다. 30 % 규칙은 따라야 할 좋은 규칙입니다. 즉, 다른 클래스보다 한 클래스에서 30 % 이상의 관측치가있는 경우 문제가 불균형 해지고 결과가 편향 될 수 있습니다.
  3. RF가 과적 합할 수 없다는 것은 잘못된 이름입니다. 앙상블을 과도하게 연관 시키면 모델을 과적 합시킬 수 있습니다. 이를 피하는 좋은 방법은 예비 모델을 실행하고 오류 안정화를 플로팅하는 것입니다. 일반적으로 ntree 매개 변수의 오류를 안정화하는 데 필요한 부트 스트랩 수를 2 배로 선택합니다. 이는 가변 상호 작용이 오류보다 느린 속도로 안정화되기 때문입니다. 모델에 많은 변수를 포함하지 않으면이 매개 변수를 사용하여 훨씬 더 보수적 일 수 있습니다.
  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)

캐노피 덮개를 식별하기 위해 RF 및 predict ()를 사용하여 상당히 좋은 결과를 보았습니다. 그러나 ISODATA 알고리즘보다 더 나은 결과를 얻을 수없는 것 같습니다. 트레이닝 샘플이 바이어스되었거나 스펙트럼 중첩이 너무 많은 것으로 의심됩니다. 더 나은 결과를 얻을 수있는 감독되지 않은 RF 구현이 있습니까? ISODATA 알고리즘과 마찬가지로 출력에 클래스 수를 할당 할 수 있습니까?
Aaron

3
@Aaron, 레이블이없는 (감독되지 않은) RF를 실행할 수 있지만 결과를 다루기가 어렵습니다. YaImpute 패키지에서 사용 가능한 RF 대치 방법을 살펴볼 것을 제안합니다. 이것은 당신이 겪고있는 편견 / 불평형 문제 중 일부를 다룰 수 있습니다.
Jeffrey Evans

5

이 스레드는 약간 오래된 것으로 알고 있지만에서 원격 감지 데이터의 분류를 시도하려는 사람 R에게는 매우 유망한 새 패키지가 릴리스되었습니다.

install.packages("RSToolbox")

감독되지 않은 분류와 감독 된 분류 (임의의 포리스트 사용)를위한 기능이 함께 제공됩니다. 자세한 내용은 여기를 참조하십시오 -http : //bleutner.github.io/RStoolbox/


이 패키지에 대한 귀하의 작업에 감사드립니다. 한 가지 설명은 캐럿을 통해 임의의 포리스트를 지정하고 있습니까? 그렇다면 설명서에서이 부분을 명확하게해야합니다. 캐럿 패키지는 원래 Breiman (2001) 정의와 다른 노드 분할 통계를 사용합니다. 통계는 Strobl et al. (2007)을 따르며 제안 된 통계가 유효한 경우 시뮬레이션 조건을 구입 한 적이 없습니다. 또한 관측 된 바이어스는 요인 수준의 변동을 기반으로합니다. 원래 엔트로피 통계를 선호하므로 캐럿을 사용하지 않습니다.
Jeffrey Evans

안녕 Jeffrey, 내가 패키지의 저자가 아닌 것을 두려워합니다. 그의 세부 사항은 내가 제공 한 링크에서 찾을 수 있습니다.
JPD


0

여기서 문제는 고해상도 CIR 이미지를 분류하는 것이 었으므로 위성 데이터에 사용 된 기존의 접근 방식 (픽셀 기반)을 사용하지 말고 항공 이미지의 분할 분석을 생성 한 다음 클래스 (RF)를 사용하는 것이 좋습니다.


3
이것이 매우 유효한 접근법 인 경우 집계 기반 분류가 사용자의 요구를 충족한다고 가정해서는 안됩니다. 세분화는 계산적 다루기 쉬움을 다루기 위해서가 아니라 특정 분석 목표를 달성하기 위해 적용되어야합니다. 이것은 픽셀 기반 방법을 자동으로 대체하는 카트 블랜치 방법이 아닙니다. 통계적 / 공간적 평활화로 인해 정보 손실이 의도 한 결과와 균형을 이루어야합니다. 공간 변동 세분화에 관심이있는 경우이를 제거 할 수 있습니다. 결과는 세그먼테이션 매개 변수에 따라 크게 달라질 수 있습니다.
Jeffrey Evans

나는 당신에게 전적으로 동의합니다. 실제로 각 방법은 특정 목표를 지향해야합니다. 그렇기 때문에 고해상도 CIR 이미지 (스펙트럼 대역이 제한적일 수 있음)를 사용하면 보조 데이터 또는 텍스처 값을 포함하는 GEOBIA 변수 세트가 RF와 같은 분류기와 결합 될 때 분류 최종 정확도를 크게 향상시킬 수 있다고 제안했습니다.
빈센트
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.