본문 바로가기

Data Science

Gradient Boosting (그래디언트 부스팅) for classification

Gradient Boosting (그래디언트 부스팅) for Classification (분류)

 

n 개의 Data

 

n 개의 Data sample이 있을 때,

 

Loss Function (Negative Log Likelihood)

 

Loss Function (손실 함수) 을 Negative Log Likelihood 로 정의한다.

 

수식 정리

 

수식을 정리하면,

Loss Function은 이렇게 표현할 수 있다.

 

F(x) = log(odds)

 

Gradient Boosting for regression 이 Linear Regression 과 매우 닮은 것처럼,

Gradient Boosting for classification 또한 Logistic Regression 과 아주 닮아있다.

 

 

 

Loss Function 미분

 

Loss Function 을 F(x) 에 대해 미분하면,

결과적으로 " -관측값 (-Observed) + 예측값 (Predicted)  = 0 " 일 때

Loss Function 값이 최소가 되는 걸 알 수 있다.

 

 

 


Step 1

F0(x) 구하기

 

먼저 F0(x) 를 구한다.

y 값이 1인 샘플들과, 0인 샘플들의 log(odds) 값이 된다.

 

 

 

Step 2

M 개의 Trees

 

M 개의 tree를 생성한다고 할 때,

1번부터 M번 tree까지, Step 2를 총 M 번 반복한다.

 

 

    < Step 2 - (a) >

Residual

 

현재 관측값 (Observed) 과 이전 단계 (m-1) 예측값 (Predicted) 의 차이를 구한다.

즉, 잔차 (Pseudo Residual) 를 구한다.

 

 

 

    < Step 2 - (b) >

 

(a) 에서 구한 잔차 (Residual) 을 해당 data가 속한 leaf node에 위치시킨다.

 

 

 

    < Step 2 - (c) >

m번 tree의 j번째 leaf node

 

현재 m 번째 tree의 j 번째 leaf node에서,

Loss Function을 최소화하는 Gamma 값을 찾는다.

 

계산을 위해 테일러 급수 (Taylor Series) 를 2차항까지 전개하면,

 

Taylor Series (2nd-order)

 위와 같은 식이 만들어진다.

 

이를 Gamma에 대해 미분하면,

 

Gamma에 대한 미분

 

이렇게 정리할 수 있다.

 

residual / (p * (1-p))

 

즉, Negative Log Likelihood를 최소화하는 Gamma 값은

해당 leaf node에 속하는 데이터들의 잔차 (residual) 들의 합을,

이전 단계 (m-1) 에서의 ( 예측값 * (1 - 예측값)) 들의 합으로 나눈 것과 같다.

 

 

 

    < Step 2 - (d) >

Fm(x) 업데이트

 

(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