[기계학습개론] Ensemble Learning

SUbbb·2021년 10월 25일
0

기계학습개론

목록 보기
6/10
post-thumbnail

Ensemble Learning, Random Forest

Ensemble

  • 집단지성과 비슷한 개념
    • 예측 변수 그룹의 예측을 집계하면 개별 최적 예측 변수를 사용할 때보다 더 나은 예측을 얻을 수 있다.
  • Ensemble
    • 예측기의 그룹
    • 학습 알고리즘들을 따로 쓰는 경우보다 더 좋은 예측 성능을 얻기 위해 다수의 학습 알고리즘을 사용하는 방법

Voting Classifiers

  • case: 다양한 classifiers를 학습
  • Having a few trained classifiers. Best accuracy is the best classifier's one
    • 여러 예측기의 결과를 가지고 다수결로 결과를 내림

Hard voting classifier predictions

다양한 classifier가 필요

  • 각 classifier: weak learner (random guessing보다는 조금이라도 더 도움이 되는 classifier)
  • Ensemble: strong learner

Best option for Ensemble

  • ensemble methods는 각 예측기가 서로 독립적인 경우에 최고의 효율을 낸다. (weak learner라 할 지라도 독립적이고 다양한 모델을 사용하는 것이 좋다)

Example: Code + Result

  • dataset: 'make_moons'

  • 서로 다른 classifiers 사용
    • Logistic Regression, Random Forest, Support Vector Machine
    • 추가적으로 비슷한 classifier를 추가하게 되면, 결과는 감소한다. (random forest가 decision tree와 유사, 최대한 독립적이고 다양한 predictor가 좋다는 것 의미)

Soft Voting

확률에 기반하는 voting classifier

  • 모든 classifier들이 class 확률을 측정할 수 있는 경우,
    • 각 classifier에 걸쳐 평균을 계산
    • 확률이 가장 높은 class로 결과 class를 예측

hard voting에 비해 정확도가 증가

For Ensemble

  • classifiers의 다양한 sets을 얻기 위해,
    • Previous)
      • 다양한 학습 알고리즘을 사용해야 함.
    • Another)
      • 예측기마다 동일한 학습 알고리즘을 사용
      • training set의 서로 다른 랜덤한 하위 sets을 학습

Another approach for Ensemble

  • training set의 서로 다른 랜덤한 하위 sets을 학습 (dataset이 random이므로 같은 classifier라도 결과가 다양해짐)
    • sampling: dataset으로부터 학습시킬 data를 뽑아내는 것
  • 중복을 허용하는 sampling - bagging(bootstrap aggregating)
  • 중복을 허용하지 않는 sampling - pasting

Bagging and Pasting

  • data를 set으로 나누어 병렬화가 가능해져 학습속도의 향상
  • predictor는 동일하고, 학습되는 data가 중복되거나(bagging), 중복되지 않는다.(pasting)

어떻게 ensemble이 새로운 instance에 대한 예측을 만드는가?

  • 모든 predictors의 예측결과를 집계한다.
    • 집계는 일반적으로, classification에 대한 statistical mode(가장 많이 나온 예측값 선택: hard voting처럼) 또는 regression의 평균을 사용한다.
    • 각 예측기의 결과가 {1, 1, 2, 1}와 같은 경우, statistical mode의 결과는 {1}이고, regression의 평균의 결과는 {1.25}이다.

Bagging: a code

  • n_estimators=500 \rarr DT를 500개 생성한다는 의미
  • 다른 결과들과 비교해보면,
    단일 classifier를 사용하는 것보다 bagging이나 pasting이 성능이 더 좋다는 것을 알 수 있다.

DT vs. DT with Bagging

  • 왼쪽은 parameter에 대한 tuning이 없는(maximum depth를 수정하지 않은) DT로, overfitting이 발생하지만, 오른쪽 Bagging을 사용한 DT는 overfitting이 발생하지 않는 것을 확인할 수 있다.

Bias/Variance trade-off

모델의 일반화 오류는 세 가지 서로 다른 에러의 합으로 표현될 수 있다.

  • Bias (편향 정도)
    • 잘못된 가정으로 인해 발생 (ex. 선형 데이터인 줄 알았지만 알고보니 2차원 데이터인 경우)
    • 높은 bias를 가진 model은 training data에 대해 underfitting될 가능성이 있다.
  • Variance
    • bias와 상충
    • training data의 작은 변화에 영향을 받는 model의 민감한 반응성 때문
    • 높은 자유도를 가진 model(ex. high-degree polynomial model)의 경우 high variance를 가질 가능성과 training data에 overfitting될 가능성이 있다.
  • Irreducible error
    • data 자체의 noise 로 인해 발생

Bias를 줄일려다가 Variance가 증가하게 될 수도 있다.

DT vs. DT with Bagging (again)

Application에 따라 원하는 model이 달라질 수 있다. (overfitting을 감수하더라도 더 높은 정확도를 요구하거나, 일반화가 좋은 model을 요구하거나)

  • Bootstrapping(=bagging)은 하위 sets에 다양성을 부여하기 때문에,
    • pasting보다 결과적으로 더 높은 bias를 가지게 된다.(underfitting으로 인해 정확도가 떨어질 수 있다.)
    • 하지만 예측기 간의 관련성은 적어져서 variance는 감소하고, overfitting은 피할 수 있다.

Random Forests

Random Forest는 Decision Trees의 ensemble

  • 일반적으로 bagging(때로는 pasting)을 이용하여 학습
  • max_samples는 일반적으로 training set의 크기로 지정한다.(즉, 모든 training samples를 사용하겠다는 의미)
    • bagging은 randomly sampling을 수행하기에 같은 sample을 반복적으로 선택할 수도 있어서 모든 training sample을 사용하지 않을 수도 있다.

Random ForestDecision Tree의 비교

  • DT: 하나의 노드를 쪼갤 때, 가장 적합한 feature를 찾는 것이 목표
  • RF: feature의 random subset에서 가장 적합한 feature를 찾는 것이 목표
    \rarr 훨씬 더 큰 다양성

Random Forests: another advantage

Feature Importance

  • 각 feature의 상대적인 중요도를 측정할 수 있다.
    • 이를 통해 중요한 feature만 가지고 재학습시킬 수 있다.

Ensemble methods

1) 다양한 predictors를 확보하고, 이들을 집계하여 가장 많은 표를 받은 class를 예측

  • Voting
  • predictor의 한계를 극복

2) 동일한 predictor type을 가지는 training set에서 random한 하위 sets 표본을 추출

  • Bagging
  • overfitting을 예방

이들은 predictors를 update하지 않는다.

Boosting

model 자체를 update하는 ensemble method

  • 어떤 ensemble method이든지간에 여러 weak learners를 strong learner로 결합할 수 있는 ensemble method (model을 더 잘 학습하는 model로 update해줌)
    • 직전의 model에 대해 연이은 수정으로 update
  • 대표적인 methods: AdaBoost & Gradient Boosting

AdaBoost

  • Motivation:
    • underfitting된 training instance(weak learner)에 초점을 둔다.

Example

  • instance weight updates를 이용한 AdaBoost sequential training

  • hard case의 sample들을 맞추는 방향에 초점을 두고 predictor를 계속 update
  • 마치 Gradient Descent처럼, 하나의 predictor의 parameter를 조금씩 update하는 것과 비슷해 보일 수는 있으나,
    • Gradient Descent는 update를 하려고 해도 안되는 경우가 존재하고, AdaBoost는 hard case에 초점을 두고 느리지만 점진적으로 update가 수행된다.

Gradient Boosting

  • AdaBoost와 비슷하게 순차적으로 ensemble에 predictor를 더하고, 점진적으로 update를 수행한다.
  • 하지만 Gradient Boosting은 직전의 predictor로부터 만들어진 residual errors(차이값, 직전의 predictor에서 맞춰지지 않은 data들)를 새로운 predictor에 좀 더 적합시킬려는 method
    • AdaBoost처럼 instance의 weights를 변경하는 것이 아님, 새로운 predictor를 residual errors에 적합시킨다.

Example: Gradient Boosted Regression Trees(GBRT)

  • y : 예측값
  • tree_reg1.predict(X) : y^\hat y
  • yy^y-\hat y : 오차
  • tree_reg2.predict(X) : y2y_2를 label로 가지는 model의 y2^\hat {y_2}
  • 오차를 줄이는 것이 목표 (residual이 0이 되도록)
  • 코드를 보면, 계속해서 학습하고 나온 오차를 label로 가지도록 새로운 예측기를 생성하여 학습하고 최종적으로 생성했던 예측기들을 합한다.

  • residual이 존재하는 부분에 대해서만 update를 수행

Ensemble methods

predictions을 집계하는 'voting' model을 학습?

  • "model for model"

Stacking

Stacking: 누적 일반화의 줄임말, Voting을 학습시키는 method

  • ensemble에서 모든 predictors의 예측결과를 집계하기 위해 trivial(흔한, 하찮은) functions(hard voting같은) 사용하는 것 대신, 이러한 집계를 수행하는 model 자체를 학습하는 방식
  • blending predictor를 사용하여 예측 결과를 집계
    • predictor 위에 또 다른 predictor가 존재

Subset1의 역할은 학습 이후, 학습된 blender로 Subset2와의 오차를 계산,
Voting classifier(predictor)를 update(학습)

Subset2의 역할은 Subset1에서 학습된 predictor들은 학습시키지 않고(freezing),
이들을 통해 나온 prediction을 가지고 blending predictor를 학습시키는 역할

multilayer stacking ensemble이 가능하다.

profile
배우고 정리하고 공유하기

0개의 댓글