CS/기계학습개론

Lec08.Ensemble Learning

טוֹבָה 2023. 10. 7. 13:01
  • Ensemble Learning
    • Voting
    • Bagging/Pasting
      • Random Forest
    • Boosting
    • Staking

Random Forest

- Overfitting을 방지하기 위해 최적의 기준 변수를 랜덤 선택하는 ML

- Random Forest는 여러 개의 Decision tree를 만들고 숲을 이룬다는 의미에서 숲 이라고 불린다.(Random 은 숲에 심는 의사결정 나무에 쓰이는 특성들을 랜덤하게 선택하기 때문이다.)

 

1) Ensemble

  • 핵심은 훈련한 결과 중에서 잘 된 것이 많이 나왔다고 말하는 것을 찾아보는 것이다.
  • 개별의 예측값 중 가장 잘 된 것을 뽑는다.
  • Ensemble method의 예
    • N개의 sample들을 M개로 나눠서 DT로 학습한다.
    • 각각 나눠진 DT들을 class한다.
    • 각 클래스에 대해 학습이 잘 된 경우와 잘 되지 못 한 경우가 나오게 된다.
    • 위의 결과들을 다 보고 정확성이 더 높은 것을 찾는다.
    • 이런한 것을 Random Forest라고 한다.

 

Voting Classifiers

  • 어떤 훈려하고자 하는 집합이 있을 때, 이것을 Logistic Regression, SVM Classifier, Random Forest Classifier, Other , .... 등으로 나눠서 각각 훈련한다.
  • 다양한 훈련방법을 통해 클래스를 나눠서 나온 에측값들중, 가장 예측값이 많이 혹은 잘 나온 것으로 Voting한다.

 

  • Hard voting classifier predictions
    • 단순히 확률이 잘 나온것을 거수한다. 하지만, 선택지가 좋지 못 한 것에서 확률이 잘 나온것을 고른다면, 예측의 정확성이 떨어질 수도 있다.
    • Each classifier : weak learner(random으로 추측한 각각의 모든 모델들이 항상 slightly better하진 못 한다.)
    • Ensemble : strong learner(Generalization과 비례한다.)

 

Best option for Ensemble

  • 다양한 기계학습에 대한 장점을 더 잘 수집하기 위해서 하는 것
  • 따라서 Ensemble방법에 대해선 기계학습 방법과는 다른 방법으로 가야한다.
  • Different classifiers
    • Logistic Regression
    • Random Forest
    • Support Vector Machine(SVM) : SV,서포트 벡터란 각각의 클래스를 대표하고, 마진을 형성하기 위한 Plus, Minus-Plane을 결정짓는데 필요한 데이터

Soft Voting

위에서 보았던, Voting방법은 HardVoting이고, Soft Voting은 각각의 ML에 대한 classifiers에 대한 persentage value를 다 더해서 classifiers의 수로 나누는 것이다.

Ex) A = 0.2 B = 0.4 C = 99 D = 0.3 (%), SoftVoting = A+B+C+D/4

For Ensemble

그렇다면, 다양한 classfiers를 얻기위해선, 

1) Previous : Use very different training algorithms

2) Another : 

   -> 예측를 위한 알고리즘은 같은 training algorithm을 사용한다.

   -> 하지만 훈련 세트의 다른 무작위 하위 집합에 대해 훈련시킨다.

즉, 훈련 집합에 대한 하위집합에 대해서 무작위로 뽑아서 다시 학습을 시킨다.

2) About Dataset : Bagging / Pasting

예측에 집중하지 말고, 데이터 집합을 N으로 Subset을 했을 때, Noise가 없는 것이 있을 수 있으니, 그런 Dataset을 찾아보자.

Bias / Variance trade-off

Generation Error = Bias + Variance + Irreducible error

  • Bias
    • Bias는 잘못된 가정으로 발생하는 것이다.
    • Bias 값이 높아질수록, Underfiting의 오류가 날 가능성이 높아진다.
  • Variance
    • Variance는 훈련 데이터의 작은 변화에 대한 모델의 과도한 민감성 때문에 발생한다.
    • Variance값이 높아질수록(모델의 자유도에 대한 차수가 높아질수록) , Overfitting이 발생할 가능성이 높아진다.
  • Irreducible error
    • Irreducible은 데이터 그 자체로써 data에 noise가 없는 경우이다.
    • 이 부분에 대한 에러를 줄이는 유일한 방법은, data를 정리하는 것이다(e.g., fix the data sources, broken sensors, detect, remove outliers)

Another approach for  Ensemble

  • 훈련집합에 대해 다른 하위 집합에 대해 무작위로 나눠서 훈련을 하는 것
  • Bagging
    • 데이터 추출 후 추출한 데이터를 다시 훈련집합에 넣어서 무작위 하위집합을 만들어서 분류하는 방법
  • Pasting
    • 데이터 추출 후 추출한 데이터를 다시 넣지 않고, 무작위 하위집합을 만들어서 분류하는 방법

Bagging and Pasting

  • 훈련집합에 대해 랜덤하게 데이터들을 추출하고 각각에 대해 훈련시킨 예측결과 값을 반환한다.
  • 만약, 새로운 데이터가 들어오면, Ensemble 방법을 어떻게 활용해야 할까?
  • 간단하게, 모든 나온 예측결과 값들에 대해 예측을 집계한다.
    • 집계를 위한 집계 함수는 1) HardVoting 2) SoftVoting 이 있다.

DT vs DT w / Bagging

DT + Bagging을 통한 결과를 보니, 일부 noise들을 Dismiss할 수 있게 되었다.

  • Bootstrapping은 하위 집합에 다양성을 도입한다.
    • 그러므로, Bagging은 Pasting보다 좀 더 높은 bias를 가진다.
    • 하지만 예측의 상관관계는 다소 떨어진다 -> ensemble은 variance를 감소시킨다.

Random Forests

  • Random Forest는 DT의 ensemble이다.
    • 일반적으로, bagging method(or 때때로 pasting)을 통해 훈련한다.
    • 일반적으로, max_samples 은 훈련 집합의 크기로 결정된다.(-> 모든 학습 샘플들을 가져온다)
      • bagging방식의 경우, 한 번도 추출되지 못 한 데이터가 존재할 수도 있어서 일반성이 오히려 좋아질수도 있다.
  • Coce:
    • RandomForestClassifier(alternative: BaggingClassifier + DTClassfier)
    • RandomForestRegressor
    • These are optimized for DT
  • Random Forest는 다양성을 포함하는 Feature를 찾기 위해 한다. 그래서 Trees의 depth를 늘릴 때, 무작위성을 도입한다.
    • DT : node 분할시 최적의 feature를 탐색
    • RF : features의 랜덤한 부분집합 중 최적의 feature를 찾는다.
    • -> 그 결과 Tree의 다양성이 더 좋아진다. 

Random Forests : another advantage

Feature Importance

--> RF 는 중요한 Feature과 그렇지 않은 것을 솎아낸다. -> 과적합 방지

Ensemble methods

  • 다양한 예측변수를 갖고 이를 종합하여 가장 많은 표를 얻은 클래스를 예측한다. -> Voting
  • 동일한 예측 변수 유형을 사용하여 훈련 세트의 무작위 하위 집합을 샘플링한다. -> Bagging

그렇다면, Update까지 하면 어떻게 될까?

 

3) Boosting : about predictors

Boosting 

week learners에 대해 strong learner로 훈련하는 기법

  • AdaBoost
  • Gradient Boosting

1) AdaBoost

  • 훈련 과정 중, 과소적합이 난 것에 대해 집중을 해서, 해당 부분에 대해 다시 학습하는 것

AdaBoost  sequential training with instance weight updates
Decision boundaries of five consecutive predictors on the moons dataset

parameter을 변경하는 것이 아니라, dataset을 변경한다.

AdaBoost는 예측을 앙상블에 추가해서, 점진적으로 더 낫게 만든다.

 

2) Gradient Boosting

  • AdaBoost와 비슷하다.
    • Gradient Boosting은 앙상블에 예측 변수를 순차적으로 추가하는 방법으로 진행되며, 각각의 예측 변수는 이전의 예측 변수를 수정한다.
    • 하지만, Gradient Boosting은 이전 예측 변수에서 발생한 잔차 오류에 새 예측 변수를 맞추려고 시도한다.
    • AdaBoost처럼 인스턴스 가중치를 조정하지 않는다.

 

4) Stacking : hybrid model

Stacking 

  • 예측을 집계해서, 예측을 혼합한다.

예측값들에 대해 blending후, Voting

 

하위집합1에 대해 예측값을 나누고, 집합2에 대해 AdaBoost후, Train결과 반환, 그 뒤, Bloender

 

여러 단계의 Layer로 나눠서, 각각의 예측에 대해 두 개 이상의 예측값을 통한 또 다른 layer을 내고, 평균값을 낸다.