앙상블은 조화라는 의미를 지닌 것으로 알고 있다. 그렇다면 머신러닝에서 앙상블은 무엇일까? 그리고 앙상블은 왜 나오게 되었을까?
배경은 이렇다 사람도 개인이 혼자서 항상 옳은 결정을 할 수는 없다. 기계도 100퍼센트 맞는다는 보장이 없어서 자기들끼리 투표를 한다.
과반수 투표 분류기는 같은 데이터에 대해 학습된 서로 다른 개별 분류기를 이용해 주어진 샘플의 예측 레이블 값을 얻고, 과반수 선택을 받는 클래스 레이블을 선택하는 방법이라고 한다. 아까 말했던 투표를 하는 것이다. 시각적으로 표현하면 다음과 같다.
이런 식으로 학습데이터 셋으로 여러 모델들이 예측 결과를 내고 다수결로 결과를 정한다.
𝑚𝑜𝑑𝑒{0,1,1,1,0,0,1,1} = 1
모드는 최빈값
투표를 하고 결과를 낼 때 하드 보팅과 소프트 보팅이 있다. 하드 보팅은 개별 분류기 예측 레이블 값들의 최빈값이다. 아까 계속 했던 것들이 하드 보팅이다.
소프트 보팅은 개별 분류기 예측 확률 값들의 평균값이다.
c1 = [0.6, 0.4]
c2 = [0.55, 0.45]
c3 = [0.1, 0.9]
라고 가정해보자.
예측 임계값이 0.5일 경우
c1 = [1, 0]
c2 = [1, 0]
c3 = [0, 1]
이 될 것이다.
하드 보팅의 경우에는 뒤에 확률 결과가
𝑦= 𝑚𝑜𝑑𝑒 0,0,1 = 0
이 될 것이다.
소프트 보팅의 경우에는 결과가 평균이니까 [0.417, 0.583] => [0, 1]
𝑦= 1.
이 될 것이다.
둘이 다른 결과를 띄게 된다.
트롤이 있을 수 있다. 잘 맞추는 모델이 있을 것이고 잘 못 맞추는 모델이 있을 것이다. 이 때문에 가중치를 부여해서 계산을 진행한다. 가중치를 부여하는 공식은 다음과 같다.
그냥 아까 나왔던 공식들에 가중치 W만 곱해준 것이다.
이것도 예시를 한번 살펴보자.
argmax는 최대값 위치 반환!