728x90

앙상블 학습

트레이닝 데이터를 기반을 분류 모형을 여러 개 만들고 서로 비교하는 것
분류기를 결합하여 성능이 뛰어난 최종 분류기를 만드는 것이 최종 목표

보팅(voting): 여러개의 분류 모형의 결과를 대상으로 투표를 통해 최종 클래스 라벨을 결정하는 방법

다수결 투표(plurality voting) vs 과반수 투표(majority voting)

단일 분류기로 오차가 0.3인 각 5개의 분류기를 앙상블 학습시켜 보팅을 하면 오차가 0.09로 줄어듦

배깅과 랜덤 포레스트

배깅(bootstrap aggregating)은 개별 분류기들의 분류 결과를 종합하여 최종 분류기의 성능을 향상하는 방법

부트스트랩: 중복을 허용한 랜덤 샘플 방법

voting은 동일한 트레이닝 데이터로 학습하지만 bootstrap aggregating 배깅은 부트스트랩 샘플을 뽑아 학습시킴
개별 분류 모형의 결괏값을 모아 다수결 투표를 통해 최종 예측

배깅의 예시: 랜덤 포레스트

  1. n개의 데이터 랜덤 추출
  2. p개의 피처 선택
  3. 의사 결정 나무 학습
  4. 1-3 반복
  5. 각 의사 결정 나무별 결과를 투표를 토앻 클래스 레이블 설정

부스팅

의존적 앙상블 기법(Dependent Ensemble Method): 개별 학습기들이 서로 독립이 아닌 경우
ex: 부스팅 (boosting)
부스팅은 학습이 진행되면서 잘못 분류된 데이터 포인트의 가중치가 증가
이전 단계에서 만들어진 학습기는 다음 단계에서 사용할 트레이닝 셋의 가중치를 변경하는데 사용
잘못된 데이터에 집중하는 기법
배깅에서는 각 데이터 포인트가 추출될 확률이 동일하지만, 부스팅에서는 각 데이터 포인트에 할당된 가중치에 비례해 추출

에이다 부스트
부스팅은 약한 학습기 여러개를 모아 강한 학습기 만드는 방법 (ex 깊이 1인 의사 결정 나무)
부스팅은 순차적 학습 (보팅, 배깅은 병렬적 학습)

에이다 부스트는 이전에 잘못 분류된 트레이닝 데이터 포인트의 가중치가 증가하고, 다음의 약한 학습기에서 증가한 오차율을 낮추도록 학습하는 기법

AdaBoost 알고리즘(이산형 타깃)
  1. 트레이닝 데이터의 각 데이터 포인트 별 초기 가중치

  2. j번째 약한 학습기 를 이용해 트레이닝 데이터 학습

  3. 2에서 사용한 약한 학습기의 가중치가 적용된 오차율 구하기

  4. 약한 학습기 전체에 적용될 가중치 를 구하기

  5. 4에서 구한 가중치 aj와 현재 데이터 포인트에 적용 중인 가중치 wi를 이용해 wi를 업데이트

    예측값 = 실젯값이면 yi fj(xi) = 1이되고, 다르면 -1이 되어 개별 데이터 포인트 xi의 가중치가 커짐

  6. 가중치 합이 1이 되도록 가중치 정규화

  7. 2-6 단계를 약한 학습기 수만큼 반복

  8. 강한 학습기를 이용해 최종 예측값을 구함

AdaBost 알고리즘(연속형 타깃)
  1. 트레이닝 데이터의 각 데이터 포인트별 초기 가중치를 설정. 초기 가중치는 모든 데이터 포인트가 동일
  2. wi를 트레이닝 데이터에 적용한 후 피처 데이터가 주어질 때의 클래스 확률을 추정
  3. 개별적인 약한 학습기 업데이트
  4. 3에서 구한 f와 현제 데이터 포인트에 적용죽인 가중치 wi를 이용해 가중치 wi를 업데이트
  5. 가중치 합이 1이 되도록 가중치 정규화
  6. 2-5 단계를 약한 학습기 수만큼 반복
  7. 강한 학습기를 이용해 최종 예측값 구하기

그래디언트 부스팅

Gradient Boosting은 비용함수를 최적화 시킴으로써 학습 능력을 향상하는 알고리즘

전체 데이터 피처 학습 모형 예측 결과 잔차
(x1, y1) x1 F(x) y1 y1-F(x1)

기본 학습 과정에 성능을 높이기 위한 모형 추가

F(x1) + f(x1) = y1 <-> f(x1) = y1 - F(x1)

(x1, y1-F(x1))
그래디언트 학습은 피처데이터와 잔차 데이터 페어를 이용해 f를 학습시킴

그래디언트 부스팅 알고리즘

  1. 초기화 단계L = 손실함수
    F0(x)는 손실함수를 최소화 하는 값으로 설정됨
    ex) L2 손실함수를 쓰는 경우라면 F0(x)는 모든 타깃 데이터의 평균으로 설정됨
  2. 3-5 과정을 M번 반복
  3. 타깃 데이터값과 m-1 번째 모형의 잔차 구함
  4. m번째 약한 학습기 fm(x)를 3에서 구한 m-1번째 모형의 잔차 em-1에 적합
  5. 약한 학습시에 학습률 를 적용해 전체 모형을 업데이트
  6. 3-5 과정을 M번 반복한 최종 모형 FM(x) 출력

그래디언트 부스팅은 scikit-learn의 라이브러리를 사용할수 있고, XGBoost라는 라이브러리나 LightGBM 사용 가능

스태킹

스태킹(stacking): 베이스 학습기와 메타 학습기로 구성되어 있고, 여러 가지 학습기를 쌓는 방법

스태킹 알고리즘

  1. 트레이닝 데이터를 두 개의 분리된 데이터 셋으로 분리
  2. 베이스 학습기로 첫 번째 트레이닝 데이터 셋을 학습
  3. 학습된 베이스 학습기에 두 번째 트레이닝 데이터 셋을 넣고 예측
  4. 3에서 출력된 예측값을 또 다른 인풋 데이터로 활용해 메타 학습기를 학습
반응형