1. AdaBoost와 Gradient Boost와의 차이
1) AdaBoost는 이전 stump의 에러들을 기반으로 새로운 stump들을 만든다.
2) 이와 반대로 Gradient Boost는 tree나 stump가 아닌 단일 leaf 부터 생성한다.
3) 이 단일 leaf는 모든 샘플의 weight의 단일 추정량(평균)이다.
4) 그리고 나서 AdaBoost 처럼 Gradient Boost는 Tree를 만들어 에러들을 전달한다.
5) 그러나 이때 Tree는 AdaBoost의 stump보다 크다 (leaf가 8~32개)
6) 또한 AdaBoost와 다르게 Gradient Boost의 Tree들은 같은 가중치를 갖는다.
2. Gradient Boost의 학습 과정
1) 초기 예측값(leaf)을 종속변수의 평균으로 초기화 한다.
2) 초기 예측값(leaf)와 실제 값 간의 Pseudo Residual을 구한다.
3) Pseudo Residual을 예측하는 Decision Tree를 만든다.
4) leaf - sum of (Pseudo Residual*learning rate)를 이용해서 Pseudo Residual을 개선한다.
5) 3번과 4번 과정을 반복한다.
3. Question
1) 왜 초기 예측값(leaf)를 평균으로 초기화 하나요?
이 질문에 답하기 전에 위 loss function을 가지고 Gradient Boost를 수행함을 가정합니다.
leaf는 곧 첫번째 predict value이기 때문에 우리는 최적의 Predicted값을 찾아야하고 위 loss function을 Predicted의 모든 행에 대해 각각 미분하여 더한 값이 0이 되게 하여 최적해를 찾을 수 있습니다. 그 결과가 평균과 같습니다.
2) 왜 그냥 Residual이 아니고 Pseudo Residual 인가요?
Gradient Boost에는 다양한 Loss Function이 있기 때문입니다.
0 comments:
댓글 쓰기