본문 바로가기
공부/R & Python

12-3. 랜덤포레스트 (Random Forest)

by 드인 2020. 3. 4.

12-3. 랜덤포레스트 (Random Forest)


1) 랜덤포레스트 (Random Forest) - 모형설명

- 랜덤포레스트 (Random Forest)

- 2001년에 Leo Breiman에 의해 제안된 기법 의사결정나무의 단점(과적합)을 개선한 알고리즘

- Ensemble 기법을 사용한 모델로서 주어진 데이터로 리샘플링을 통해 다수의 의사결정나무를 만든 다음, 여러 모델의 예측 결과들을 종합해 정확도를 높이는 방법

 

training data로부터 표본의 크키가 n인 bootstrap sample을 추출

-> tree모형 구성 (tree1, tree2, ... treek)

-> 각 모델 tree들의 앙상블 결과를 출력

 

- Bagging(Bootstrap Aggregating)

- 전체 데이터에서 학습데이터를 복원추출(resampling) 트리를 구성

- Training Data에서 Random Sampling

 

2) 랜덤포레스트 (Random Forest)

- 랜덤포레스트 (Random forest) 패키지 : randomForest

randomForest 패키지 설치, 라이브러리 설정

caret 라이브러리 설정 (ConfusionMatrix)

 

- help(randomForest)

ntree : Number of decision trees to be grown 트리를 몇개까지 형성 할 것인지

replace : Takes True and False and indicates whether to take sample with/without replacement

sampsize : Sample size to be drawn from the input data for growing decision tree 샘플 사이즈 어떻게

importance : Whether independent variable importance in random forest be assessed

 

- iris 데이터 (iris.csv)

 

- 랜덤포레스트 : randomForest(종속변수~x1+x2+x3+x4, data= )

rf_out1<-randomForest(Species~.,data=train,importance=T)
rf_out1

mtry=number of variables randomly sampled as candidates at each split, default=sqrt(p)

여기서 p=4

rf_out2<-randomForest(Species~.,data=train,importance=T, mtry=4)
rf_out2

mtry=4일때가 mtty=2일때보다 정확도 높음

 

- 변수의 중요도 : random forest결과로부터 중요변수 확인

round(importance(rf_out2), 2)

분류의 정확도에 기여도가 높은 변수

 

randomForest::importance(rf_out2)
varImpPlot(rf_out2)

 

- 랜덤포레스트 결과 정확도 : test data에 대한 정확도

rfpred<-predict(rf_out2,test)
confusionMatrix(rfpred,test$Species)

정확도 94%