티스토리 뷰

반응형

요즘 하고 있는 캐글 타이타닉 스코어 올리기 중 가장 좋은 점수를 보여주고 있는 '랜덤 포레스트' 이다. 



출처) 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=Nonemin_samples_split=2min_samples_leaf=1min_weight_fraction_leaf=0.0max_features=’auto’max_leaf_nodes=Nonemin_impurity_decrease=0.0min_impurity_split=Nonebootstrap=Trueoob_score=Falsen_jobs=Nonerandom_state=Noneverbose=0warm_start=Falseclass_weight=None)

n_estimators : 생성할 의사결정 나무 개수 


max_features : 의사결정나무 만들 시, 사용하는 feature 개수 

                         default 는 auto 이며 이 의미는, 전체 feature 개수에 를 한 값이다. 




5. 파이썬 사용예


In [448]:
from sklearn.ensemble import RandomForestClassifier

rf = RandomForestClassifier(n_estimators=600)
rf.fit(X_train, Y_train)
Out[448]:
RandomForestClassifier(bootstrap=True, class_weight=None, criterion='gini',
            max_depth=None, max_features='auto', max_leaf_nodes=None,
            min_impurity_decrease=0.0, min_impurity_split=None,
            min_samples_leaf=1, min_samples_split=2,
            min_weight_fraction_leaf=0.0, n_estimators=600, n_jobs=1,
            oob_score=False, random_state=None, verbose=0,
            warm_start=False)
In [449]:
rf.score(X_test, Y_test)
Out[449]:
0.81343283582089554


반응형