에다 부스트(Adaboost)

조권휘·2022년 7월 18일
0

Codeit_머신러닝

목록 보기
13/13

Boosting

  • 앙상블 기법 중 하나
  • 일부러 성능이 안 좋은 모델들을 사용한다.
  • 더 먼저 만든 모델들의 성능이, 뒤에 있는 모델이 사용할 데이터 셋을 바꾼다.
  • 모델들의 예측을 종합할 때, 성능이 좋은 모델의 예측을 더 반영한다.

→ 성능이 안 좋은 약한 학습자들을 합쳐 성능을 극대화한다.

스텀프(stump)

  • root노드 하나와 분류 노드 두개를 갖는 얕은 결정 트리
  • 하나의 질문과 그 질문에 대한 답으로 바로 예측을 하는 결정 트리를 의미한다.

에다 부스트(Adaboost)

  • 성능이 좋지 않은 결정 스텀프를 많이 만든다.
  • 각 스텀프는 전에 왔던 스텀프들이 틀린 데이터들을 더 중요하게 맞춘다.
  • 예측을 종합할 때, 성능이 좋은 스텀프의 의견 비중을 더 높게 반영한다.

스텀프 생성과 성능

  • 첫 스텀프는 결정 트리의 생성과 같이 지니 불순도를 이용하여 만든다.
  • 각 데이터에는 중요도가 있다. 이는 total_error를 계산하는 데 사용된다.
    • 첫 스텀프를 만들 때 모든 데이터는 동일한 중요도를 가진다.
    • 각 데이터들의 중요도의 총 합은 1이다.

  • total_error를 이용하여 위의 식으로 스텀프의 성능을 계산한다.

  • total_error가 1에 가까워질수록 작아지고, 0에 가까워질수록 커진다.
  • total_error = 1이면, 성능이 매우 안좋으므로 무한하게 작게 만든다.
  • total_error = 0이면, 모든 데이터를 다 맞게 예측하는 것이므로 성능을 무한히 크게 만든다.
  • total_error = 0.5이면, 데이터 중 절반은 맞고 절반은 틀리게 예측하므로 성능이 아무 의미가 없어 0이 된다.

데이터 중요도 바꾸기

  • 틀리게 분류한 데이터의 중요도는 늘리고, 맞게 분류한 데이터의 중요도는 낮춘다.

  • 틀리게 분류한 모든 데이터에 대해서는 왼쪽의 식으로, 제대로 분류한 모든 데이터에 대해서는 오른쪽의 식으로 중요도를 변환한다.

  • 성능이 0일 때 1인 기점으로 중요도의 증가, 감소를 만들 수 있다.

  • 중요도를 변환한 뒤, 각 중요도의 합이 1이 되도록 비율을 조정해준다.

스텀프 추가하기

  • bootstrap과 유사한 방식이지만 중요도를 이용해서 만드는 부분이 다르다.
  • 누적 상대도수표와 같이 중요도를 표시한 다음 랜덤하게 0~1 사이의 숫자를 고르고, 그 범위를 갖는 데이터를 고른다.
  • 해당 데이터를 새 데이터 셋에 추가한다.
  • 중요도가 높은 데이터는 범위가 크기 때문에 고를 확률이 높다.

에다 부스트 최종 예측

  • 위의 방식들을 반복하여 만들어진 여러개의 스텀프를 이용한다.
  • 각 성능의 합을 계산하여 가장 높은 값으로 예측한다.

본 포스트는 코드잇 강의를 공부하며 정리한 내용입니다! 자세한 설명은 "코드잇 머신러닝 강의를 참고해주세요!

+) 코드잇 강의 바로가기

profile
안녕하세요 :) Data/AI 공부 중인 한국외대 컴퓨터공학부 조권휘입니다.

0개의 댓글