고래밥 이야기

23. Gradient Boosting_2 본문

데이터 분석/Foundations Of Machine Learning

23. Gradient Boosting_2

Whale_Rice 2022. 1. 11. 00:19

강의 Foundations of Machine Learning을 듣고 제 나름대로 정리한 글입니다.

해당 사이트는 다음과 같습니다.

Foundations of Machine Learning (bloomberg.github.io)

 

Foundations of Machine Learning

With linear methods, we may need a whole lot of features to get a hypothesis space that's expressive enough to fit our data -- there can be orders of magnitude more features than training examples. While regularization can control overfitting, having a hug

bloomberg.github.io

 

  • BinomialBoost : Gradeint Boosting with Logistic Loss
slide 40,41 / 59

 BinomialBoost를 예시로 든다. 이 Boost는 loss function으로 logistic loss를 사용한다. 그 다음 과정은 무엇인가? 사실 다 똑같다. prediction function 관점에서 미분한 뒤 (두 번째 수식), 이 값을 H space로 project시키면 된다. (세 번째 수식) project를 너무 어렵게 생각하지말자. psedo-residual와 가장 가까운 h를 찾는 것이다. 여기서는 squared least방식을 택하여 h를 추정하였다. 그 후 shrinkage parameter v를 곱해준 값을 기존 함수에 더 해주면 된다. (네 번째 수식)

 

  • Step Size as Regularization
slide 47 / 59 Natekin and Knoll's "Gardient boosting machines a tutorial", Figure 5 

 A 그림부터 설명해보자. 위의 람다는 우리가 여태까지 다뤄왔던 v이다. v를 만약 작은 값으로 설정하자. 그렇다면 굉장히 더디게 h가 추가 될 것이다. (기존의 함수에 vh만큼 추가가 되기 때문이다.) 그렇다면 기존에 mean squared error 또한 더디게 감소할 것이다. 상식적으로 생각해보자. 우리는 loss function을 작게 하기 위해 h를 설정했고 이를 빼는 형태로 과정을 진행시켜왔다. 하지만 h의 일부분만 뺀다면? 당연히 mean squared error는 기존 속도보다 덜 빠르게 작아질 것이다. 그렇다면 v를 크게 하는 것이 맞지 않까? 빠르게 mean squared error를 줄여주기 때문이다. 다음을 살펴보자.

 B 그림은 validation set이다. validation set에 대한 설명은 생략하고 함수의 형태가 convex 형태를 띤다는 것에 주목하자. 처음에는 mean squared error가 감소하다 다시 증가하게 된다. 왜 일까? 이는 바로 model이 overfit되었기 때문이다. 굉장히 상식적이다. v = 1인 경우를 살펴보자. A에서 보았이 가장 빠르게 mean squared error의 값이 감소한다. 즉, 계속해서 반복할 수록 데이터에 가장 맞게 가장 빠르게 적합된다는 소리이다. 이는 여러 데이터 셋으로 나눈 validation set에서 보았을 때 오히려 error가 증가하는 꼴이 되어버린다. 특정 데이터 set에서 가장 적합이 빠르게 되지만, 이 모델이 다른 데이터에서는 그렇지 못하기 때문이다. 따라서 v가 작을 수록 performance 가 좋다. 유일한 단점은 iteration이 많다는 것이다.

 

  • Stochastic Gradient Boosting

 projected gradient step을 계산할 때, 우리는 모든 데이터를 활용하였다. 하지만 데이터의 일부만을 사용한다면 어떻게 될까? 우선 이러한 데이터 일부를 "bag fraction"이라고 한다. 이렇게 일부의 데이터만을 기준으로 gradient를 계산한다면 어떤 이점이 있을까? 첫 번째는 당연히 계산이 빠를 것이다. 두 번째는 overfit되는 것을 막아줄 것이다. 사실 후자는 생각해 보면 당연하다. 전체 데이터를 사용하면 이러한 전체 데이터에 overfit되는 model이 만들어질 가능성이 존재한다. 따라서 데이터를 일부만을 사용함으로써 그러한 방식을 배제하는 것이다. 이러한 방식을 "mimibatch method"라 한다.

 

  • Newton Step Direction

 기존에 우리가 썼던 GBM 방식은 first order 방식이었다. 벡터로 이루어진 함수값을 한 번 미분하여 h를 추정하였기 때문이다. 하지만 두 번 미분하여 h를 추정하는 방법도 존재할까? Newton's method가 바로 그것이다. 이는 second order method이다. XGBoost가 대표적인 Newton Step을 쓰는 방법이다.

 첫 번째 수식은 2차 테일러 공식을 쓴 것이다. 이때 주의해야할 점은 3번째 항이다. 아래 고래밥의 수식을 살펴보자.

 선형대수학을 공부한 사람이라면 익숙하겠지만, 3번째 항은 definite matrix를 판별할 때 쓰이는 것이다. 고래밥의 수식은 r과 f를 2차원으로만 축소시켜서 표현한 것이다. 그렇다면 위의 2번째 수식도 이해할 수 있을 것이다.

 

 

'데이터 분석 > Foundations Of Machine Learning' 카테고리의 다른 글

23. Gradient Boosting_1  (0) 2022.01.09
Comments