[Ensemble_2] RandomForest (랜덤포레스트)
요즘 하고 있는 캐글 타이타닉 스코어 올리기 중 가장 좋은 점수를 보여주고 있는 '랜덤 포레스트' 이다.
출처) https://medium.com/@williamkoehrsen/random-forest-simple-explanation-377895a60d2d
1. 랜덤포레스트란?
- 여러 개의 의사결정나무를 만들고, 그들의 다수결로 결과를 결정하는 방법
2. 장점
- 비교적 하이퍼파라미터 튜닝 없이 간단히 쓸 수 있다
- 대부분 좋은 결과를 가져다 준다
- 단순하며, classification 과 regression 에 모두 쓸 수 있다.
3. 어떻게 만들까?
- 의사결정 나무를 랜덤하게 여러개 만든다.
랜덤하게란?
train 데이터를 전부 이용해서 학습하는 것이 아니라, train 데이터로 Bagging을 하여 각 나무의 입력값으로 넣어 학습한다.
-> 즉, train 데이터에서 복원추출하여 서브셋들을 만들어 그 서브셋들로 의사결정나무들을 만든다.
(Bagging 이란 : http://iludaslab.tistory.com/67?category=742274)
그러면 각 나무가 서로 다른 데이터로 만들어지기 때문에 랜덤성이 생기게 된다. 이렇게 되면 오버피팅도 방지할 수 있다.
[참고] 랜덤포레스트를 구성하고 있는 의사결정나무에 대한 것은 아래글을 참고
http://iludaslab.tistory.com/40?category=742274
http://iludaslab.tistory.com/41?category=742274
4. 파이썬 사용 함수
3.2.4.3.1. sklearn.ensemble
.RandomForestClassifier
- class
sklearn.ensemble.
RandomForestClassifier
(n_estimators=’warn’, criterion=’gini’, max_depth=None, min_samples_split=2, min_samples_leaf=1, min_weight_fraction_leaf=0.0, max_features=’auto’, max_leaf_nodes=None, min_impurity_decrease=0.0, min_impurity_split=None, bootstrap=True, oob_score=False, n_jobs=None, random_state=None, verbose=0, warm_start=False, class_weight=None)
n_estimators : 생성할 의사결정 나무 개수
max_features : 의사결정나무 만들 시, 사용하는 feature 개수
default 는 auto 이며 이 의미는, 전체 feature 개수에 를 한 값이다.
5. 파이썬 사용예