Boosting
Decision tree | Bagging | Boosting |
![]() |
![]() |
![]() |
- 단 한 번의 sample 추출과 한 개의 model이 필요함 | - sample을 복원추출 - ensemble 기법으로 여러 model을 이용함. |
|
- 분류기들이 서로 독립적이고 상호 영향을 주지 않는다고 가정 | - 학습이 sequential하게 진행됨 - 이전 sample의 학습 결과가 다음 학습 결과에 영향을 줌 - Adaboost, Gradient boost가 있음. |
Boosting algorithm
Adaboost (Adaptive Boosting)
- Stump: tree에서 한 번의 split만을 통해 두개의 node를 내는 classifer로 weak classifer이다.
- 이전 model의 예측 결과에 따라 오분류된 데이터에 대해 가중치를 둔다.
- randon forest는 node들의 가중치가 동일했고, 모든 tree가 만들어진 순서에 상관 없이 독립적이었다.
Heart Disease 예시
초기의 8개의 sample에 대해 모든 sample의 weight는 동일하게 1/8로 둔다.
Chest Pain, Blocked Arteries, Patient Weigt -> Heart disease에 영향을 끼치는 생각해보자.
Stump 만들기
Patient Weight로 split 했을 때가 Gini 계수가 가장 낮았고 이를 첫번째 stump로 쓰기로 했다.
Patient Weight으로 분류했을 때 incorrect 하게 분류된 예시가 1개뿐이므로 이 때 total error=1/8이 된다.
amount of say
total error에 대한 amount of say의 그래프는 왼쪽과 같이 그릴 수 있고, 실제 amount of say는 위 계산에 작은 입실론 값을 더해줘서 발산하는 것을 막아야 한다.
위 예시에서 amount of say = (1/2) * log(e)((1-1/8)/(1/8)) = 0.97이다.
- total error가 낮으면( ≒0) amout of say는 높아진다.
- total error가 높으면(≒ 1) amount of say는 낮아진다.
- total error=0.5이면 amount of say는 0이다.
new example weight
-1) 오분류 된 example에 대한 new weight
1개의 오분류된 sample의 새로운 weight = (1/8) * e^(0.97) =0.33
amount of say가 높을 수록 오분류된 sample은 새로이 높은 weight를 부여받게 된다.
-2) 맞게 분류된 example에 대한 new weight
나머지 7개의 정분류된 sample에 대한 weight = (1/8) * e^(-0.97) =0.05
amount of say가 클 수록 정분류된 sample은 낮은 weight를 가진다.
normalization
new weight의 합계가 1이 되도록 weight를 normalize 해준다.
두번째 stump 만들기
새롭게 weight이 설정된 sample들에 대해 값을 범위로 다시 지정해준다.
0~1사이의 난수를 뽑아서 그 난수에 해당되는 sample을 새로 추출한다.
ex) 난수로 0.5가 나왔다면 4번째 sample, 난수로 0.9가 나왔다면 7번째 sample and so on...
새롭게 만들어진 표본에 대해서도 stump를 만들어 준다.
model 생성이 끝나고 최종 예측 하기
모델 학습이 끝났을 때 heart disease가 있다고 판단하는 stump와 heart disease가 없다고 판단하는 stump가 있을 것이다. 새로운 example에 대해 만들어놓은 각각의 stump에서 amount of say를 계산하고 amount of say가 높은 쪽으로 예측한다.
??????
'머신러닝 > 분석 base' 카테고리의 다른 글
Keras, TensorFlow (0) | 2021.03.04 |
---|---|
Resnet (0) | 2021.02.23 |
Bagging & Random Forest : Programming (0) | 2021.02.09 |
Bagging & Random Forest (0) | 2021.02.09 |
SVM: programming (0) | 2021.02.08 |