결정트리의 경우 한개만 생성하기에 상부에서 생성하는 에러가 하부까지 영향을 줌, 트리의 깊이에 따라 과적합도 일어남
위의 문제는 트리의 앙상블을 통해 해결가능
랜덤포레스트는 RandomForestClassifier를 통해 구현 가능
n_jobs옵션을 -1로 두면 현재 컴퓨터에서 가용가능한 모든 프로세스를 사용
여러개의 모델들을 만들어서 예측
학습하는 여러개의 모델을 weak base learner (기본모델) 이라고 함
모델의 다수결이나 평균을 통해 하나의 결과를 냄
랜덤포레스트는 결정트리를 기본모델로두는 앙상블 모델
결정트리들은 독립적으로 만들어진다.
각각의 모델이 랜덤으로 예측하는 것보다 성능이 좋으면 랜덤포레스트는 결정트리보다는 성능이 좋다
랜덤포레스트의 기본모델을 부트스트랩 sample로 만들어진다.
부트스트랩에서 만들어진 sample로 모델학습을 하고 합치는 과정
부트스트랩 샘플링
1) 기존 데이터셋에서 원본데이터의 개수만큼 복원추출을 진행함
2) training set에서 뽑히지않은 것들로 test set을 만든다. 이 test set을 oob set라고 말한다.
3) 데이터가 충분히 크다고 가정했을 때 한 부트스트랩세트는 표본의 63.2%에 해당하는 샘플을 가진다. 여기서 추출되지 않는 36.8%의 샘플이 out-of-bag 샘플이 되고 이를 사용해서 모델을 검증할 수 있다.
4) 따라서 따로 검증세트를 구성하지 않고 oobscore를 통해서 검증가능하다.
부트스트랩세트로 만들어진 모델을 합치는 과정을 aggregation이라고 한다.
회귀 문제 : 기본모델 결과들의 평균으로 결과를 낸다
분류 문제 : 다수결로 가장 많은 모델들이 선택한 범주로 예측한다.
랜덤포레스트는 기본모델들의 트리를 만들 때 무작위로 선택한 특성세트를 사용한다.
기본모델 트리를 만드는 것은 일반 결정트리 알고리즘과 다른 부분이 있다.
1) 결정트리에서는 분할 위한 특성선택시 모든 특성 고려
2) 랜덤포레스트는 특성n개 중 일부분 k개의 특성을 선택, k개에서 최적의 특성을 찾아내어 분할.
3) k는 일반적으로 log2_n을 사용한다.
max_depth를 통해서 트리의 깊이, n_estimators를 통해서 기본모델의 수를 정할 수 있다.
트리기반 모델에서 범주형 자료를 모델에서 사용하고자할때 원핫인코딩보다 순서형 인코딩이 좋다.
원핫인코딩의 경우 범주의 개수대로 특성들이 생성된다. 이 경우 트리에서는 범주형 특성이 상위노드에 선택될 기회가 적어진다.
순서형 인코딩의 경우 순서적인 정보 인코딩, 트리모델에서는 순서정보가 상관없기에 괜찮다.
category_mapping을 통해 인코딩된 데이터의 매핑정보를 볼 수 있다.
%%time을 통해서 실행시간 체크 가능
H1N1 데이터셋에서 원핫인코딩의 경우보다 두배정도 빨라졌다.
순서형 인코딩은 특성의 수가 변하지 않는다.
인코딩 방법이 선형모델에 주는 영향
1) 범주형에 순서형 인코딩을 사용시 무작위로 순서를 매핑한다.
2) 의미를 잘 살리지 못하므로 선형모델에서는 정확도가 떨어진다.
지니불순도가 가장 많이 감소하는 특징이 중요하다.
노드가 중요할수록 불순도가 크게 감소한다.
노드는 한 특성의 값을 기준으로 분리되기에 불순도가 크게감소하는데 많이 사용된 특성이 중요도가 올라간다.
1) (예측모델 성능 비교 논문) Data-driven advice for applying machine learning to bioinformatics problems
https://arxiv.org/abs/1708.05070
2) MACHINE LEARNING LECTURE 8: ENSEMBLE METHODS
https://vdocuments.mx/machine-learning-lecture-8-ensemble-methods.html
3) Random Ferests Algorithm
http://pages.cs.wisc.edu/~matthewb/pages/notes/pdf/ensembles/RandomForests.pdf
4) Testing Variable Importance in Random Forests
https://eeecon.uibk.ac.at/~zeileis/papers/Lifestat-2008.pdf
5) One-Hot Encoding is making your Tree-Based Ensembles worse, here’s why?
https://towardsdatascience.com/one-hot-encoding-is-making-your-tree-based-ensembles-worse-heres-why-d64b282b5769