Gradient Boosting (그래디언트 부스팅) for Classification (분류)
n 개의 Data sample이 있을 때,
Loss Function (손실 함수) 을 Negative Log Likelihood 로 정의한다.
수식을 정리하면,
Loss Function은 이렇게 표현할 수 있다.
Gradient Boosting for regression 이 Linear Regression 과 매우 닮은 것처럼,
Gradient Boosting for classification 또한 Logistic Regression 과 아주 닮아있다.
Loss Function 을 F(x) 에 대해 미분하면,
결과적으로 " -관측값 (-Observed) + 예측값 (Predicted) = 0 " 일 때
Loss Function 값이 최소가 되는 걸 알 수 있다.
Step 1
먼저 F0(x) 를 구한다.
y 값이 1인 샘플들과, 0인 샘플들의 log(odds) 값이 된다.
Step 2
M 개의 tree를 생성한다고 할 때,
1번부터 M번 tree까지, Step 2를 총 M 번 반복한다.
< Step 2 - (a) >
현재 관측값 (Observed) 과 이전 단계 (m-1) 예측값 (Predicted) 의 차이를 구한다.
즉, 잔차 (Pseudo Residual) 를 구한다.
< Step 2 - (b) >
(a) 에서 구한 잔차 (Residual) 을 해당 data가 속한 leaf node에 위치시킨다.
< Step 2 - (c) >
현재 m 번째 tree의 j 번째 leaf node에서,
Loss Function을 최소화하는 Gamma 값을 찾는다.
계산을 위해 테일러 급수 (Taylor Series) 를 2차항까지 전개하면,
위와 같은 식이 만들어진다.
이를 Gamma에 대해 미분하면,
이렇게 정리할 수 있다.
즉, Negative Log Likelihood를 최소화하는 Gamma 값은
해당 leaf node에 속하는 데이터들의 잔차 (residual) 들의 합을,
이전 단계 (m-1) 에서의 ( 예측값 * (1 - 예측값)) 들의 합으로 나눈 것과 같다.
< Step 2 - (d) >
(c) 에서 구한 Gamma 값에 학습률 (Learning Rate)를 곱해서,
이전 단계 (m-1) 에서 구한 F(m-1)(x) 에 더해준 값이, 바로 Fm(x) 가 된다.
Step 3
위 Step 2를 M 번 반복하면, F(M)(x) 값을 얻는다.
그 값이 output 값이 된다.
F(x)는 log(odds) 값이기 때문에,
확률 p 로 변환해서 0.5를 기준으로 Yes or No 를 예측할 수 있다.
사실 Regression의 경우와 크게 다른 것은 없었다.
차이가 있다면 Linear Regression 대신, Logistic Regression과 아주 닮아있다는 점이다.
◎ References
< StatQuest, Gradient Boost Part 4 (of 4): Classification Details >
< Gradient Boosting (그래디언트 부스팅) for regression >
'Data Science' 카테고리의 다른 글
XGBoost for classification (0) | 2023.05.06 |
---|---|
XGBoost for regression (0) | 2023.05.05 |
Probability and Likelihood (0) | 2023.05.01 |
Linear Regression (0) | 2023.05.01 |
p-value & p-hacking (0) | 2023.04.28 |