티스토리 뷰

반응형

원문

 

  • 부스팅은 많은 약한 분류기를 가지고 강한 분류기를 만들 수 있도록 하는 앙상블 기술임.
  • 이 포스트에서 당신은 머신 러닝에 관한 AdaBoost 앙상블 방법을 발견할 것임. 이 포스트를 읽은 후, 당신은 알게 될것임.
    1. 부스팅 앙상블 방법이 무엇인지 그리고 일반적으로 어떻게 동작하는지.
    2. AdaBoost 알고리즘을 사용하여 의사결정나무를 향상시키는 방법.
    3. 학습된 AdaBoost 모델을 사용하여 예측 하는 방법.
    4. AdaBoost 알고리즘을 사용하기 위해 당신의 데이터를 가장 좋게 준비하는 방법.
  • 이 포스트는 개발자들에 의해 쓰여졌으며, 통계 또는 수학에 관한 배경지식이 없다고 가정함.
  • 이 포스트는 알고리즘이 어떻게 동작하는지 그리고 예측 모델링 문제에 대해 알고리즘을 어떻게 사용하는지에 대해 초점을 맞춤.

 

부스팅 앙상블 모델

  • 부스팅은 많은 수의 약한 분류기들을 통해 강력한 분류기를 만드는 일반적인 앙상블 모델임.
  • 이 것은 훈련 데이터로부터 모델을 만들고, 그런 다음 첫 번째 모델로부터 에러를 수정하려고 시도하는 두 번째 모델을 만듦으로써 행해짐.
  • 모델들은 훈련 집합이 완벽하게 예측되거나 최대 모델 수가 추가될 때 까지 추가됨.
  • AdaBoost는 이진 분류에 대해 개발된 첫 번째로 성공적인 부스팅 알고리즘이였음.
  • 이 것은 부스팅을 이해하는 것에 대한 가장 좋은 출발점임.
  • 현대 부스팅 방법들은 가장 확실한 확률적 그라디언트 부스팅 머신인 AdaBoost를 기반으로 만들어짐.

 

데이터로부터 AdaBoost 모델의 학습

  • AdaBoost는 이진 분류 문제에서 의사결정나무의 성능을 향상시키는데 가장 많이 사용됨.
  • AdaBoost는 기본적으로 기술의 저자인 Freund와 Schapire에 의해 AdaBoost.M1이라고 불렸음.
  • 최근에는 회귀 보다 분류에 사용되기 때문에 이산 AdaBoost로써 언급되기도 함.
  • AdaBoost는 모든 머신러닝 알고리즘의 성능을 향상시키는데 사용될 수 있음. 약한 학습기들을 가지고 사용하는 것이 가장 좋음.
  • 이것들은 분류 문제에서 무작위적인 우연 (random chance) 보다 더 좋은 정확도를 달성하는 모델임.
  • 따라서 AdaBoost와 함께 사용되는 가장 적합한 알고리즘은 하나의 레벨을 가진 의사결정나무임.
  • 왜냐하면 이러한 나무들은 매우 짧고 분류에 대해 한 가지 결정만 포함하기 때문에, 종종 의사결정 그루터기 (stump) 라고도 불림.
  • 각 훈련 데이터셋의 인스턴스는 가중치가 적용되며, 초기 가중치는 다음과 같이 설정됨 : weight(xi) = 1 / n
  • xi는 i 번째 훈련 인스턴스이며, n은 훈련 인스턴스들의 수임.

 

한 가지 모델을 학습하는 방법

  • 약한 분류기 (의사결정 그루터기) 는 가중치가 적용된 샘플들을 사용한 훈련 데이터에 대해 준비됨.
  • 이진 분류 문제만을 지원하므로, 각 의사결정 그루터기는 하나의 입력 변수에 대해 하나의 결정을 만들고 첫 번째 또는 두 번째 클래스 값에 대해 +1.0 또는 -1.0 값을 결과로 냄.
  • 오분류율은 훈련된 모델에 대해 계산됨. 전통적으로, 이 것은 다음과 같이 계산됨 : error = (correct - N) / N
  • error는 오분류율이고, correct는 정확하게 예측된 훈련 인스턴스의 수이며, N은 훈련 인스턴스의 전체 갯수임.
  • 예를 들어, 모델이 100개의 훈련 인스턴스 중 78개를 정확하게 예측하면 오류 또는 오분류율은 (78 - 100) / 100 또는 0.22가 됨.
  • 이 것은 가중치된 훈련 인스턴스들을 사용하여 수정됨 : error = sum(w(i) * terror(i)) / sum(w)
  • 오분류율의 가중치 합을 의미하며, w는 훈련 인스턴스 i의 가중치이며, terror는 오분류됐다면 1, 정확하게 분류했다면 0인 훈련 인스턴스 i에 대한 예측 오류임.
  • 예를 들어, 가중치가 각각 0.01, 0.5 그리고 0.2인 훈련 인스턴스들을 가지고 있음. 예측 값들이 각각 -1, -1 -1이며, 인스턴스들의 실제 결과 변수들은 -1, 1, -1이고 terror는 0, 1, 0임. 오분류율을 계산해보면 : error = (0.01 * 0 + 0.5 * 1 + 0.2 * 0) / (0.01 + 0.5 + 0.2) or error = 0.704
  • stage 값은 모델이 만드는 모든 예측에 대한 가중치들을 제공하는 훈련된 모델에 대해 계산됨.
  • 훈련된 모델에 대한 stage 값은 다음과 같이 계산 됨 : stage = ln((1 - error) / error)
  • stage는 모델의 예측에 가중치를 적용하는데 사용된 stage 값이며, ln()은 자연 로그대수이며, error는 모델에 대한 오분류율임.
  • stage 가중치의 영향은 더 정확한 모델이 마지막 예측에 대한 더 많은 가중치와 기여도를 가지고 있다는 것임.
  • 훈련 가중치들은 부정확하게 예측된 인스턴스에 더 많은 가중치를 주고 정확하게 예측된 인스턴스에 가중치를 덜 줌으로써 갱신됨.
  • 예를 들어, 한 훈련 인스턴스 (w) 의 가중치는 다음을 사용하여 갱신됨 : w = w * exp(stage * terror)
  • w는 구체적인 훈련 인스턴스에 대한 가중치이고, exp()는 지수 상수 e 또는 오일러의 숫자를 제곱한 값이며, stage는 약한 분류기에 대한 오분류율, terror는 약한 분류기가 훈련 인스턴스에 대한 출력 변수를 예측하게 만드는 오류이며, 다음과 같이 추측됨 : terror = 0 if (y == p), otherwise 1
  • y는 훈련 인스턴스에 대한 결과 변수이며 p는 약한 학습기의 예측임.
  • 이 것은 훈련 인스턴스가 정확하게 분류되면 가중치를 변경하지 않고 약한 학습기가 인스턴스를 잘못분류하면 가중치를 약간 더크게 만드는 효과를 가짐.

 

AdaBoost 앙상블

  • 약한 모델들은 가중치가 적용된 훈련 데이터를 사용하여 훈련되면서 순차적으로 추가됨.
  • 이 과정은 미리 설정된 약한 학습기의 수가 만들어지거나 (유저 파라미터) 훈련 데이터셋으로 더 이상의 향상이 없을 때 까지 계속됨.
  • 일단 완료되면, 당신은 stage 값으로 각각 약한 학습자들의 웅덩이로 남아있음. (you are left with a pool of weak learners each with a stage value)

 

AdaBoost를 이용한 예측 생성

  • 예측들은 약한 학습기들의 가중치 평균을 계산하여 만들어짐.
  • 새로운 입력 인스턴스에 경우, 각 약한 학습기들은 +1.0 또는 -1.0으로 예측값을 계산함.
  • 예측값은 각 약한 학습기들의 stage 값들에 의해 가중치가 적용됨. 앙상블 모델에 대한 예측은 가중치 예측의 합계로 사용됨.
  • 만약 합계가 positive (양수) 라면, 첫 번째 클래스가 예측되고, negative (음수) 라면 두 번째 클래스가 예측됨.
  • 예를 들어, 5개의 약한 학습기가 1.0, 1.0, -1.0, 1.0, -1.0으로 값을 예측했다. 다중투표에 의해, 모델은 1.0 또는 첫 번째 클래스로 값을 예측할 것으로 보임.
  • 이런 동일한 5개의 약한 학습기들은 개별적으로 0.2, 0.5, 0.8, 0.2 그리고 0.9의 stage 값들을 가지고 있을 것임.
  • 이런 예측들의 가중치 합을 계산하는 것은 결과를 -0.8로 내며, 앙상블 예측으로 -1.0 또는 두 번째 클래스가 될 것임.

 

AdaBoost에 대한 데이터 준비

  • 이 구역에서는 AdaBoost에 대해 당신의 데이터를 가장 잘 준비하도록 몇 가지 휴리스틱 (Heuristic, 발견적 방법) 을 나열함.
    1. 데이터 품질 : 앙상블 방법이 훈련 데이터의 오분류율을 수정하는 시도를 계속하기 때문에, 당신은 훈련 데이터가 높은 품질을 가질 수 있도록 주의할 필요가 있음.
    2. 이상치 : 이상치들은 비현실적인 경우를 해결하기 위해 열심히 노력하는 토끼 구멍 아래로 앙상블을 강요함(Outliers will force the ensemble down the rabbit hole of working hard to correct for cases that are unrealistic). 이러한 것들은 훈련 데이터셋에서 제거될 수 있음.
    3. 노이즈 데이터 : 노이즈 데이터, 구체적으로 결과 변수의 노이즈는 문제가 될 수 있음. 가능하다면, 당신의 훈련 데이터셋에서 이 것들을 정리하거나 고립시키도록 해야함.

 

요약

  • 이 포스트에서 당신은 머신러닝에 관한 부스팅 앙상블 방법을 발견했음. 당신이 배운 것들은 다음과 같음:
    • 부스팅과 부스팅이 분류 오류들을 수정하기 위해 어떻게 약한 학습기들을 계속 추가하는 일반적인 기술인지.
    • 이진 분류 문제들에 대한 성공적인 첫 번째 부스팅 알고리즘으로써의 AdaBoost.
    • 가중치를 적용한 훈련 인스턴스들과 약한 학습기들 스스로에 의한 AdaBoost 모델 학습.
    • 약한 학습기로부터 예측에 가중치를 부여하여 AdaBoost로 예측.
    • AdaBoost 알고리즘에 대한 이론적 배경.
반응형
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함