-
Chapter 7 Ensemble Learning and Random ForestsML/딥러닝 2020. 4. 13. 19:19반응형
- 실생활
- 한 명의 전문가의 의견 < 다수의 일반인의 의견 일 때도 있다.
- 딥러닝
- 하나의 best predicter < 다수의 적당한 predicter 인 경우가 존재.
- Ensemble - predicter들의 그룹
- Ensemble learning - 여러 개의 predicter를 사용하는 방법
- Ensemble method - ensemble learning에 사용되는 알고리즘
- 예시
- Random Forests
- training set에서 서로 다른 subset을 만들어 decision tree classifier를 학습시키는 경우
- 다양하게 학습된 dicision tree classifier로 투표를 해 최종 predict
- Machine Learning competition
- 최종 성능을 끌어 올리기 위해 여러가지 모델들을 사용한다.
- Random Forests
Voting Classifiers
- hard voting classifier
- 가장 간단한 방법
- 여러가지 모델로 학습을 시킨 후 predict할 때 voting해서 최종 결과를 출력함.
- Best classifier의 단독 성능 보다 높은 성능을 가짐.
- 왜 될까?
- 51%로 앞면, 49%로 뒷면이 나오는 동전뒤집기 상황에서
- 1000번 던져서 510번 앞면, 490번 뒷면이 나온다면
- 앞면이 나올 확률은 75%에 가까워진다.
- 이항 분포의 누적확률분포
- 같은 데이터로 3가지 classifier를 만들어 학습한다.
- 각각의 성능보다 ensemble하면 성능이 더 좋다.
- soft voting classifier
- 각 모델이 class 별로 확률을 추정할 수 있는 상황에서
- class별 확률을 더해서 가장 높은 class를 결과로 출력
- hard voting보다 더 성능이 좋다!
Bagging and Pasting
- training set에서 random하게 sampling하여 subset을 만든다.
- 이렇게 만들어진 여러가지 subset으로 각각 다른 predicter를 만든다. (모델은 같다)
- replacement가 있으면 bagging 없으면 pasting
- 즉, bagging은 중복을 허용.
- 각각의 predicter는 data set에 대해 bias를 가진다. 하지만 voting을 하면 bias와 variance를 감소시킨다.
- 그러므로 하나의 predicter보다 ensemble predicter는 더 낮은 variance를 가진다.
Bagging and Pasting in Scikit-Learn
- pasting을 하고 싶으면 bootstrap=False로 바꿔주면 된다.
- n_jobs는 학습에 사용할 CPU cores를 뜻한다. -1은 전부를 말한다.
- Bagging을 했을 때 더 generalized된 결과를 볼 수 있다.
- ensemble은 더 합리적인 bias와 더 작은 variance를 가지기 때문이다.
- Bootstrapping은 더 다양한 subset으로 학습되기 때문에 bagging은 pasting보다 약간 더 높은 bias를 가지게 된다.
- 그러나 높은 다양성은 predictor들이 덜 correlated한 것을 의미한다. 그래서 variance가 낮아진다.
- 전반적으로 bagging이 성능이 좋다.
Out-of-Bag Evaluation
- bagging에서 어떠한 데이터는 predicter의 training set으로 사용되고 어떤 데이터는 사용되지 않는다.
- 사용되지 않는 데이터를 out-of-bag라 한다.
- oob는 모델을 학습할 때 사용되지 않으므로 validation set 대신 evaluation에 사용된다.
- 최종 성능은 oob의 성능을 평균낸다.
- oob_score_는 자동으로 oob 성능의 평균을 구해준다.
- test set의 성능도 올랐다.
Random Patched and Random Subspaces
- 이전에 bagging이 training set을 sampling한것 처럼 이번에는 input features를 sampling한다.
- 고차원 features를 이용할 때 유리
- training set과 input features를 모두 sampling하는 것을 Random Patches method라고 한다.
- input features만 sampling하는 것을 Random Subspaces method라고 한다.
- sampling한 features는 더 다양성을 가진다. 낮은 variance를 위해 약간 더 bias를 가지면서
Random Forests
- Random Forests는 bagging + ensemble of Desicion trees
- Decision tree를 500개 만들고, leaf node를 16개로 제한하고, 모든 코어를 사용
- 이 알고리즘은 tree의 다양성을 더 증가시킨다. subset
Extra-Trees
- 원래 Decision tree처럼 학습을 통해 best possible thresholds를 찾는게 아니라 random thresholds를 사용한다.
- 이렇게 극단적으로 random인 방법을 Extremely Randomized Trees ensemble(or Extra-Trees) 이라고 한다.
- 역시나 높은 bias와 낮은 variance를 가진다.
- 기존 random forest에서 best possible threshold를 찾는데 대부분의 시간을 소요하므로 extra-trees는 보다 빠르게 학습된다.
Feature Importance
- Random Forests의 더 좋은 버전은 각 feature의 상대적인 중요도를 측정하는 방법이다.
- 얼마나 많이 feature가 impurity를 감소시키는 노드를 사용하는지
- MNIST 데이터에 대해 가운데가 중요한 것을 알 수 있다.
Boosting
- Boosting은 성능 좋은 모델에 성능이 좋지 않은 모델을 결합시키는 ensemble 방법이다.
- 이전 모델을 올바르게 하는 시도하면서, 모델들을 sequential하게 학습시키는 방법.
AdaBoost
- 먼저 약한 모델에 데이터셋을 prediction한다.
- 이때 잘못 분류된 데이터들에 대해 상대적인 weights를 증가시킨다.
- 다시 학습하고 prediction해 잘못 분류된 데이터들에 대한 weights 증가.
- AdaBoost는 Gradient Descent와 비슷하다.
- weights는 처음에 1/m으로 초기화된다.
- Randomly하게 predict하면 r_j는 0.5가 되고 a_j는 0이 된다.
- 만약 random보단 성능이 낮으면 r_j는 0.6, a_j는 음수가 된다.
- 실제 y와 예측한 y가
- 같으면 weight는 변하지 않는다.
- 다르면 이미 계산된 predicter weight에 exponential을 취한 후 곱해진다.
- 그 다음 weight의 합으로 나눠진다. (nomalize)
- 다시 새로운 predicter가 위에서 구해진 weight로 학습된다. 그리고 이 동작들이 반복된다.
- 이 알고리즘은 predicter의 수가 다 만들어지든가 아님 완벽한 predicter가 만들어지면 끝난다.
- 최종적으로 AdaBoost가 prediction할 때는 predicter weight를 곱해 prediction 한다.
- Mulitclass AdaBoost Classifier를 사용할 때는 SAMME 알고리즘을 사용한다. 모델의 출력으로 확률이 나올 때는 SAMME.R
Gradient Boosting
- Gradient Boosting은 AdaBoost에서 모든 iteration에서 instance weight를 수정하는 것에 비해 이전 모델에서 만들어진 남은 에러만 수정한다.
- 먼저 학습 시킨후
- 첫번째에서 생긴 에러만 다시 학습
- 계속 반복한다.
- Prediction할 때는 모두 더한다.
- 왼쪽은 각각의 tree를 보여주고 오른쪽은 ensemble된 결과를 보여준다.
- 남은 에러만 계속 학습함으로써 모두 ensemble한 결과에서 나은 결과를 볼 수 있다.
- 너무 많은 트리와 낮은 learning rate는 overfitting을 유발한다.
- 이를 방지하는 것을 shrinkage라한다.
- Early stopping도 사용할 수 있다.
- GradientBoostingRegressor class에는 subsample이라는 hyperparameter가 존재한다.
- 이는 학습되는 training set을 sampling하는 비율을 뜻한다.
- Bagging때 처럼 낮은 variance를 위한 높은 bias를 가지게 한다.
- 속도도 빨라진다.
- 이를 Stochastic Gradient Boosting이라고 한다.
Stacking
- Stacking은 ensemble로부터 나온 prediction들을 다시 입력으로 받는 blending predictor를 가진다.
- Hold-out set이란 2개의 subset으로 나누고 하나의 set으로만 학습하는 것을 말한다.
- 마치 train, test처럼 이 모델은 test set으로는 학습되지 않는 것을 의미한다.
- 두 개의 subset중 하나는 첫번째 layer를 학습하고 다른 subset으로는 첫번째 layer를 통과하고 나온 prediction을 만들고 이로부터 두번째 layer를 학습시킨다.
- 이번에는 데이터셋을 3개로 나누어서 각각 layer를 학습시킨다.
반응형'ML > 딥러닝' 카테고리의 다른 글
[AutoGPTQ] KoAlpaca 양자화하기 (2) 2023.08.18 TRAINING NEURAL AUDIO CLASSIFIERS WITH FEW DATA 논문 리뷰 (0) 2020.11.02 Chapter 16 Natural Language Processing with RNNs and Attention (0) 2020.06.18 Chapter 9 Unsupervised Learning Techniques (0) 2020.05.07 - 실생활