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%
'공부 > R & Python' 카테고리의 다른 글
13-2. 군집분석 - 계층적 군집분석 - (0) | 2020.03.05 |
---|---|
13-1. 군집분석-군집분석과 유사성척도 (0) | 2020.03.05 |
11-2. 의사결정나무 (Decision Tree) 2 (0) | 2020.03.04 |
12-1. 의사결정나무와 랜덤 포레스트-의사결정나무 (Decision Tree) 1 (0) | 2020.03.04 |
11-3. 서포트벡터머신 3 (Support Vector Machine) (0) | 2020.03.04 |