그라디언트 부스팅과 히스토그램 기반 그라디언트 부스팅이 이해되지 않는다

와다닥·2023년 11월 29일
0
post-custom-banner

혼공머신 교재를 참고하여 공부중인데 어떻게 해도 그라디언트 부스팅(GB)과 히스토그램 그라디언트 부스팅(HGB)이 감이 안 잡힌다.
스스로 맞게 이해했는지도 확신할 수가 없다...


그라디언트 부스팅

최대한 작은 잔차(residual)를 구해 평균값과 합연산

테이블 형태의 정보가 있다 가정하자.
특성끼리의 관계를 고려하여 특성 A의 보편적 값을 구하고자 한다.

  1. 일단은 특성 A 값들의 단순 평균값을 준비한다.
  2. 그리고 얕은 트리를 내린다. GB는 합리적 판단을 통해 노드를 분할한다.
  3. 잔차 = (leaf의 값 - 특성 A의 평균값)을 구한다. 만약 leaf에 값이 여러 개 있다면 해당 잔차들의 평균을 구한다.
  4. 미리 정해둔 학습률(하이퍼파라미터)과 leaf의 값(잔차)을 곱한 뒤 A의 평균값에 더한다. 이제 이게 A의 새로운 평균값이다. 잔차는 음수로도 나오기 때문에 줄어들 수 있다.
  5. 새로운 얕은 트리를 내린다. (2~4 반복)
  6. 적당히(iter 횟수 제한, 최소 변동률 제한 등) 학습했다면 지금까지 만든 모든 트리를 이용해 다른 특성값도 예측할 수 있다.

히스토그램 기반 그라디언트 부스팅

분산된 값들을 모아 일정량으로 압축하여 빠른 속도를 보장

  1. 특성값들을 기준으로 샘플 전부에 대해 임의의 정수(3~256)개의 구간으로 분할한다. 각 구간 당 소속된 샘플 개수는 비슷하게 맞춘다. 수많은 샘플이 300개 미만으로 압축되는 것이다.
    1-1. 그 중 하나는 빼 둔다. 누락값이 있으면 여기서 빼서 채워넣는다.
  2. 이제 특성 A 값들의 단순 평균값을 준비한다.
  3. 그리고 얕은 트리를 내린다. 이하는 GB와 같다.

HGB에서 입력 특성을 256개로 나눈다는 게 대체 무슨 의미인지 이해가 되지 않아 고생을 했다... 특성값을 기준으로 샘플 데이터를 256등분 하여 빠르게 처리하겠다는 뜻인 것 같다.

근데 그러면 특성이 여러 개면? 어라?


머신러닝이란 뭘까?
이 글은 깨달음을 얻을 때마다 수정된다...

profile
I can't die I'm ALL IN
post-custom-banner

1개의 댓글

comment-user-thumbnail
2023년 11월 29일

애초에 HGB에 이렇게까지 집착할 필요가 있는가? 어차피 HGB도 그저 GB의 종류 중 하나일 뿐인데

답글 달기