* Decision Tree 포스팅
https://soso-bigdatamarketing.tistory.com/21
* 랜덤 포레스트
- 앙상블에서 대표적인 배깅 방식
- 수많은 의사결정 나무(Decision Tree)가 모여서 생성됨
- 전체 feature 중 랜덤으로 일부 feature만 선택해 하나의 결정 트리를 만들고, 또 전체 feature 중 랜덤으로 일부 feature을 선택해 또 다른 결정 트리를 만들며, 여러개의 의사 결정 트리를 만드는 방식으로 구성
- 여러 결정 트리들이 내린 예측 값들 중, 가장 많이 나온 값을 최종 예측값으로 정함
- 'Random'? 각각의 의사 결정 나무를 만드는데 있어 쓰이는 특징들을 무작위로 선정
<장점>
1) 결측치를 다루기 쉽다
2) 대용량 데이터 처리에 효과적이다
3) 과적합(Overfitting) 문제를 회피하여, 모델의 정확도 향상시킨다
4) Classification 모델에서 상대적으로 중요한 변수를 선정 및 Ranking이 가능하다
5) 특성의 중요도(feature importance)를 측정하기 쉽다
Q) 랜덤 포레스트가 의사결정 나무 모델에 비해 상대적으로 과적합을 피할 수 있는 이유?
- 랜덤 포레스트는 앙상블 모델로 여러개의 결정트리를 만들어 회귀라면 평균으로 결과를 예측하기 때문에 특정 모델은 과적합 되어있고, 특정 모델은 과적합이 안되어 있다.
- 이러한 많은 모델을 결합(배깅)하여 평균내기 때문에 기존 의사결정 나무에 비해 상대적으로 과적합을 피할 수 있게 된다.
- 또한, 의사결정 나무의 경우 모든 속성을 고려하지만 랜덤 포레스트는 일부의 속성만으로 랜덤으로 선택하여 학습 모델들을 만들기 때문에 상대적으로 과적합이 될 확률이 낮다.
* RandomForest 코딩하기
1) 분류 예측_RandomForestClassifier
- 모형생성
model = RandomForestClassifier(random_state = 0, n_estimators = 300, max_depth = 3)
➡️ 깊이가 3인 decision tree 모형을 300개 만든다
- 파라미터
n_estimators: 랜덤 포레스트 안의 결정 트리 갯수 (default = 10)
max_depth: 트리의 깊이
max_features: 무작위로 선택할 feature의 갯수 (default: bootstrap = True)
* (참고) GridSearchCV를 통한 RandomForestClassifier의 하이퍼 파라미터 튜닝
2) 회귀 예측_RandomForestRegressor
- 모형 생성
model = RandomForestRegressor(random_state = 0, n_estimators = 100, max_depth = 4)