SlideShare ist ein Scribd-Unternehmen logo
1 von 81
Downloaden Sie, um offline zu lesen
GBRT를 소개합니다
Web & Image 임민섭
Why before What?
• 2010 Yahoo L2R Challenge
• 36k 질의, 883k 문서, 700개의 feature를 사용
• Challenge 내 몇가지 특징들:
(1) 탑 랭커들은 decision tree를 주로 사용했다. (상위 5
팀이 모두 앙상블 트리를 사용함)
(2) 앙상블 기법(boosting, bagging and random
forests)들이 주로 사용됐다.
(3) 탑 랭커들 사이의 점수차는 굉장히 미미했다. (같은 방
식을 사용했으니 당연한 것일수도…)
Why before What?
• 2010 Yahoo L2R Challenge
• 36k 질의, 883k 문서, 700개의 feature를 사용
• Challenge 내 몇가지 특징들:
(1) 탑 랭커들은 decision tree를 주로 사용했다. (상위 5
팀이 모두 앙상블 트리를 사용함)
(2) 앙상블 기법(boosting, bagging and random
forests)들이 주로 사용됐다.
(3) 탑 랭커들 사이의 점수차는 굉장히 미미했다. (같은 방
식을 사용했으니 당연한 것일수도…)
Why before What?
• 2010 Yahoo L2R Challenge
• 36k 질의, 883k 문서, 700개의 feature를 사용
• Challenge 내 몇가지 특징들:
(1) 탑 랭커들은 decision tree를 주로 사용했다. (상위 5
팀이 모두 앙상블 트리를 사용함)
(2) 앙상블 기법(boosting, bagging and random
forests)들이 주로 사용됐다.
(3) 탑 랭커들 사이의 점수차는 굉장히 미미했다. (같은 방
식을 사용했으니 당연한 것일수도…)
Why before What?
• 2010 Yahoo L2R Challenge
• 36k 질의, 883k 문서, 700개의 feature를 사용
• Challenge 내 몇가지 특징들:
(1) 탑 랭커들은 decision tree를 주로 사용했다. (상위 5
팀이 모두 앙상블 트리를 사용함)
(2) 앙상블 기법(boosting, bagging and random
forests)들이 주로 사용됐다.
(3) 탑 랭커들 사이의 점수차는 굉장히 미미했다. (비슷한
방식을 사용했으니 당연한 것일수도…)
Gradient Boosted Regression Tree
• Boosting 컨셉은?
• “The idea is to used the weak learning method
several times to get a succession of hypotheses,
each one refocused on the examples that the
previous ones found difficult and misclassified. …
Note, however, it is not obvious at all how this
can be done” - Probably Approximately Correct:
Nature’s Algorithms for Learning and Prospering
in a Complex World, page 152, 2013
Gradient Boosted Regression Tree
• 더러운 수식에 들어가기 전에 그림으로 먼저 컨셉을 짚
어보자
• Ex1) 1차원 feature를 가진 data를 트리로 regression
하기.
Gradient Boosted Regression Tree
• 더러운 수식에 들어가기 전에 그림으로 먼저 컨셉을 짚
어보자
• Ex1) 1차원 feature를 가진 data를 트리로 regression
하기.
Tree depth : 1
Gradient Boosted Regression Tree
• 더러운 수식에 들어가기 전에 그림으로 먼저 컨셉을 짚
어보자
• Ex1) 1차원 feature를 가진 data를 트리로 regression
하기.
Tree depth : 2
Gradient Boosted Regression Tree
• 더러운 수식에 들어가기 전에 그림으로 먼저 컨셉을 짚
어보자
• Ex1) 1차원 feature를 가진 data를 트리로 regression
하기.
Tree depth : 10
Gradient Boosted Regression Tree
• 더러운 수식에 들어가기 전에 그림으로 먼저 컨셉을 짚
어보자
• Ex2) 2차원 feature를 가진 data를 앙상블 트리로
classification 하기.
TREE1 of depth 1
Gradient Boosted Regression Tree
• 더러운 수식에 들어가기 전에 그림으로 먼저 컨셉을 짚
어보자
• Ex2) 2차원 feature를 가진 data를 앙상블 트리로
classification 하기.
TREE2 of depth 1
Gradient Boosted Regression Tree
• 더러운 수식에 들어가기 전에 그림으로 먼저 컨셉을 짚
어보자
• Ex2) 2차원 feature를 가진 data를 앙상블 트리로
classification 하기.
TREE3 of depth 1
Gradient Boosted Regression Tree
• 더러운 수식에 들어가기 전에 그림으로 먼저 컨셉을 짚
어보자
• Ex2) 2차원 feature를 가진 data를 앙상블 트리로
classification 하기.
Ensemble of all TREEs
Gradient Boosted Regression Tree
• 그렇다면 짱짱이라고 하는 GBRT에 대해선 좀 자세히
보도록 하자.
• 우선 ML의 공통적인 목표 함수를 review해 보면:
• training data의 loss :
• square loss:
• logistic loss:
Obj(⇥) = L(⇥) + ⌦(⇥)
L =
nX
i=1
l(yi, ˆyi)
l(yi, ˆyi) = (yi ˆyi)2
l(yi, ˆyi) = yiln(1 + e ˆyi
) + (1 yi)ln(1 + eˆyi
)
training loss Regularisation
Gradient Boosted Regression Tree
• 그렇다면 짱짱이라고 하는 GBRT에 대해선 좀 자세히
보도록 하자.
• 우선 ML의 공통적인 목표 함수를 review해 보면:
• training data의 loss :
• square loss:
• logistic loss:
Obj(⇥) = L(⇥) + ⌦(⇥)
L =
nX
i=1
l(yi, ˆyi)
l(yi, ˆyi) = (yi ˆyi)2
l(yi, ˆyi) = yiln(1 + e ˆyi
) + (1 yi)ln(1 + eˆyi
)
training loss Regularisation
Gradient Boosted Regression Tree
• 그렇다면 짱짱이라고 하는 GBRT에 대해선 좀 자세히
보도록 하자.
• 우선 ML의 공통적인 목표 함수를 review해 보면:
• training data의 loss :
• square loss:
• logistic loss:
Obj(⇥) = L(⇥) + ⌦(⇥)
L =
nX
i=1
l(yi, ˆyi)
l(yi, ˆyi) = (yi ˆyi)2
l(yi, ˆyi) = yiln(1 + e ˆyi
) + (1 yi)ln(1 + eˆyi
)
training loss Regularisation
Gradient Boosted Regression Tree
• 그렇다면 짱짱이라고 하는 GBRT에 대해선 좀 자세히
보도록 하자.
• 우선 ML의 공통적인 목표 함수를 review해 보면:
• Regularisation : how complicated the model is
• L2 norm:
• L1 norm:
Obj(⇥) = L(⇥) + ⌦(⇥)
⌦(w) = ||w||2
⌦(w) = ||w||1
training loss Regularisation
Gradient Boosted Regression Tree
• Loss 를 최적화하면 예측값이 더 잘나오고,
regularization을 최적화하면 좀 더 simple한 모델이
된다. Simple한 모델은 unseen data 예측에 variance
가 작아서 좀 더 stable 하다.
• Regression tree는 decision tree와 같은 decision
rule 을 가지며, 각 leaf node당 score를 가지고 있다.
• 이제 regression tree의 예제를 보며 배워보자!
Gradient Boosted Regression Tree
• Loss 를 최적화하면 예측값이 더 잘나오고,
regularization을 최적화하면 좀 더 simple한 모델이
된다. Simple한 모델은 unseen data 예측에 variance
가 작아서 좀 더 stable 하다.
• Regression tree는 decision tree와 같은 decision
rule 을 가지며, 각 leaf node당 score를 가지고 있다.
• 이제 regression tree의 예제를 보며 배워보자!
Gradient Boosted Regression Tree
• Loss 를 최적화하면 예측값이 더 잘나오고,
regularization을 최적화하면 좀 더 simple한 모델이
된다. Simple한 모델은 unseen data 예측에 variance
가 작아서 좀 더 stable 하다.
• Regression tree는 decision tree와 같은 decision
rule 을 가지며, 각 leaf node당 score를 가지고 있다.
• 이제 regression tree의 예제를 보며 배워보자!
Gradient Boosted Regression Tree
• Input:
• 나이, 직업, 성 등의 feature vector 로 나타냄.
• Problem: 이 사람은 컴퓨터 게임을 좋아하나요?
옆집 아저씨 뒷집 할아버지
이웃집 아가씨
남동생 아랫집 여아
Age < 15
Male?
옆집 아저씨
뒷집 할아버지이웃집 아가씨
Y
Y N
N
+2 +0.1 -1
남동생 아랫집 여아
Gradient Boosted Regression Tree
• Input:
• 나이, 직업, 성 등의 feature vector 로 나타냄.
• Problem: 이 사람은 컴퓨터 게임을 좋아하나요?
남동생 아랫집 여아
Age < 15
Male?
옆집 아저씨
뒷집 할아버지이웃집 아가씨
Y
Y N
N
+2 +0.1 -1
옆집 아저씨 뒷집 할아버지
이웃집 아가씨 남동생 아랫집 여아
Gradient Boosted Regression Tree
• Tree Ensemble
Tree 1 Tree 2
남동생 아랫집 여아
Age < 15
Male?
옆집 아저씨
뒷집 할아버지
이웃집 아가씨
Y
Y N
N
+2 +0.1 -1
컴퓨터를 매일
사용한다
남동생
뒷집 할아버지
옆집 아저씨
아랫집 여아
이웃집 아가씨
Y N
+0.9 -0.9
Gradient Boosted Regression Tree
• Tree Ensemble
Tree 1 Tree 2
남동생 아랫집 여아
Age < 15
Male?
옆집 아저씨
뒷집 할아버지
이웃집 아가씨
Y
Y N
N
+2 +0.1 -1
컴퓨터를 매일 사
용한다
남동생
뒷집 할아버지
옆집 아저씨
아랫집 여아
이웃집 아가씨
Y N
+0.9 -0.9
Gradient Boosted Regression Tree
• 이런 tree ensemble을 통해서 fine tuning을 해 나가
는 것이다!
• tree가 split되는 로직을 보면 input scaling을 요하지
않기 때문에 feature normalization이 필요없다!
• 트리 모델링을 시작해보자!
Gradient Boosted Regression Tree
• 이런 tree ensemble을 통해서 fine tuning을 해 나가
는 것이다!
• tree가 split되는 로직을 보면 input scaling을 요하지
않기 때문에 feature normalization이 필요없다!
• 트리 모델링을 시작해보자! (Let’s get dirty…)
Gradient Boosted Regression Tree
• 이런 tree ensemble을 통해서 fine tuning을 해 나가
는 것이다!
• tree가 split되는 로직을 보면 input scaling을 요하지
않기 때문에 feature normalization이 필요없다!
• 트리 모델링을 시작해보자! (Let’s get dirty…)
Gradient Boosted Regression Tree
• Model : assuming we have K trees
• Parameters
• 각 tree의 구조와 leaf의 score를 포함한다
• weight를 학습하는 게 아니라 function(tree)를 학
습하는 것!
ˆyi =
KX
k=1
fk(xi), fk 2 F
Gradient Boosted Regression Tree
• Model : assuming we have K trees
• Parameters
• 각 tree의 구조와 leaf의 score를 포함한다
• weight를 학습하는 게 아니라 function(tree)를 학
습하는 것!
ˆyi =
KX
k=1
fk(xi), fk 2 F
Gradient Boosted Regression Tree
• 어떻게 함수를 학습할 수 있지?
• 이전과 똑같이 objective(loss,regularization)을 정해놓고 최적화 하면 된다!
• 예를 들어볼까:
• 하나의 input t(time)을 가지는 regression tree
• 내가 불특정 시간 t에서 사랑노래를 듣고 싶어하는지 예측을 해보고 싶다.
시간으로 쪼개지는 regression tree
t < 2016년 1월 28일
t < 2016년 5월 7일
Y N
Y N
0.2 1.2
1.0
Gradient Boosted Regression Tree
• 어떻게 함수를 학습할 수 있지?
• 이전과 똑같이 objective(loss,regularization)을 정해놓고 최적화 하면 된다!
• 예를 들어볼까:
• 하나의 input t(time)을 가지는 regression tree
• 내가 불특정 시간 t에서 사랑노래를 듣고 싶어하는지 예측을 해보고 싶다.
시간으로 쪼개지는 regression tree
t < 2016년 1월 28일
t < 2016년 5월 7일
Y N
Y N
0.2 1.2
1.0
Gradient Boosted Regression Tree
• 어떻게 함수를 학습할 수 있지?
• 이전과 똑같이 objective(loss,regularization)을 정해놓고 최적화 하면 된다!
• 예를 들어볼까:
• 하나의 input t(time)을 가지는 regression tree
• 내가 불특정 시간 t에서 사랑노래를 듣고 싶어하는지 예측을 해보고 싶다.
시간으로 쪼개지는 regression tree
t < 2016년 1월 28일
t < 2016년 5월 7일
Y N
Y N
0.2 1.2
1.0
Gradient Boosted Regression Tree
• 어떻게 함수를 학습할 수 있지?
• 이전과 똑같이 objective(loss,regularization)을 정해놓고 최적화 하면 된다!
• 예를 들어볼까:
• 하나의 input t(time)을 가지는 regression tree
• 내가 불특정 시간 t에서 사랑노래를 듣고 싶어하는지 예측을 해보고 싶다.
시간으로 쪼개지는 regression tree
t < 2016년 1월 28일
t < 2015년 5월 7일
Y N
Y N
0.2 1.2
1.0
Gradient Boosted Regression Tree
• Step function 학습 예
User data Too many splits : Regularisation loss too high
Wrong split points : Loss too high Good balance of L and R
Gradient Boosted Regression Tree
• 다시 Object 로 돌아가서:
• Square loss 를 사용한다면:
Obj(t)
=
nX
i=1
l(yi, ˆy
(t)
i ) +
tX
i=1
⌦(fi)
=
nX
i=1
l
⇣
yi, ˆy
(t 1)
i + ft(xi)
⌘
+ ⌦(ft) + constant
Goal: find f_t to minimize this
Obj(t)
=
nX
i=1
⇣
yi
⇣
ˆy
(t 1)
i + ft(xi)
⌘⌘2
+ ⌦(ft) + const
=
nX
i=1
h
2(ˆy
(t 1)
i yi)ft(xi) + ft(xi)2
i
+ ⌦(ft) + const
Gradient Boosted Regression Tree
• 다시 Object 로 돌아가서:
• Square loss 를 사용한다면:
Obj(t)
=
nX
i=1
l(yi, ˆy
(t)
i ) +
tX
i=1
⌦(fi)
=
nX
i=1
l
⇣
yi, ˆy
(t 1)
i + ft(xi)
⌘
+ ⌦(ft) + constant
Goal: find f_t to minimize this
Obj(t)
=
nX
i=1
⇣
yi
⇣
ˆy
(t 1)
i + ft(xi)
⌘⌘2
+ ⌦(ft) + const
=
nX
i=1
h
2(ˆy
(t 1)
i yi)ft(xi) + ft(xi)2
i
+ ⌦(ft) + const
Gradient Boosted Regression Tree
• Square loss 가 아니라면 상당이 복잡한데…
• Taylor expansion을 써보자:
Taylor Expansion : f(x + x) ⇡ f(x) + f0
(x) x + 1
2 f00
(x) x2
Define : gi =
@ l(yi, ˆy(t 1)
)
@ ˆy(t 1)
, and hi =
@2
l(yi, ˆy(t 1)
)
@2 ˆy(t 1)
Obj(t)
⇡
nX
i=1

l(yi, ˆy
(t 1)
i ) + gift(xi) +
1
2
hif2
t (xi) + ⌦(ft) + constant
Obj(t)
⇡
nX
i=1

gift(xi) +
1
2
hif2
t (xi) + ⌦(ft) with constants removed
Gradient Boosted Regression Tree
• Square loss 가 아니라면 상당이 복잡한데…
• Taylor expansion을 써보자:
Taylor Expansion : f(x + x) ⇡ f(x) + f0
(x) x + 1
2 f00
(x) x2
Define : gi =
@ l(yi, ˆy(t 1)
)
@ ˆy(t 1)
, and hi =
@2
l(yi, ˆy(t 1)
)
@2 ˆy(t 1)
Obj(t)
⇡
nX
i=1

l(yi, ˆy
(t 1)
i ) + gift(xi) +
1
2
hif2
t (xi) + ⌦(ft) + constant
Obj(t)
⇡
nX
i=1

gift(xi) +
1
2
hif2
t (xi) + ⌦(ft) with constants removed
Gradient Boosted Regression Tree
• Square loss 가 아니라면 상당이 복잡한데…
• Taylor expansion을 써보자:
Taylor Expansion : f(x + x) ⇡ f(x) + f0
(x) x + 1
2 f00
(x) x2
Define : gi =
@ l(yi, ˆy(t 1)
)
@ ˆy(t 1)
, and hi =
@2
l(yi, ˆy(t 1)
)
@2 ˆy(t 1)
Obj(t)
⇡
nX
i=1

l(yi, ˆy
(t 1)
i ) + gift(xi) +
1
2
hif2
t (xi) + ⌦(ft) + constant
Obj(t)
⇡
nX
i=1

gift(xi) +
1
2
hif2
t (xi) + ⌦(ft) with constants removed
Gradient Boosted Regression Tree
• Tree의 정의를 좀 더 디테일하게 해보자 :
• Tree를 leaf score의 벡터와 각 instance를 leaf로 매
핑해주는 함수(q)로 나타낸다:
fx(x) = wq(x), w 2 RT
, q : Rd
! 1, 2, ..., T
남동생 아랫집 여아
Age < 15
Male?
옆집 아저씨
뒷집 할아버지
이웃집 아가씨
Y
Y N
N
w1 = +2 w2 = +0.1 w3 = -1
q( ) = 1남동생
q( ) = 3이웃집 아가씨
Gradient Boosted Regression Tree
• Tree의 정의를 좀 더 디테일하게 해보자 :
• Tree를 leaf score의 벡터와 각 instance를 leaf로 매
핑해주는 함수(q)로 나타낸다:
fx(x) = wq(x), w 2 RT
, q : Rd
! 1, 2, ..., T
남동생 아랫집 여아
Age < 15
Male?
옆집 아저씨
뒷집 할아버지
이웃집 아가씨
Y
Y N
N
w1 = +2 w2 = +0.1 w3 = -1
q( ) = 1남동생
q( ) = 3이웃집 아가씨
Gradient Boosted Regression Tree
• Tree의 complexity도 정의해 보고:
남동생 아랫집 여아
Age < 15
Male?
옆집 아저씨
뒷집 할아버지
이웃집 아가씨
Y
Y N
N
w1 = +2 w2 = +0.1 w3 = -1
⌦(ft) = T +
1
2
TX
j=1
w2
j
⌦ = · 3 +
1
2
(4 + 0.01 + 1)
Gradient Boosted Regression Tree
• Tree의 complexity도 정의해 보고:
남동생 아랫집 여아
Age < 15
Male?
옆집 아저씨
뒷집 할아버지
이웃집 아가씨
Y
Y N
N
w1 = +2 w2 = +0.1 w3 = -1
⌦(ft) = T +
1
2
TX
j=1
w2
j
⌦ = · 3 +
1
2
(4 + 0.01 + 1)
Gradient Boosted Regression Tree
• 마지막으로 leaf j에 있는 instance set을 정의:
• Objective 함수를 다시 적어보면:
Ij = {i|q(xi) = j}
Obj(t)
⇡
nX
i=1

gift(xi) +
1
2
hif2
t (xi) + ⌦(ft)
=
nX
i=1

giwq(xi) +
1
2
hiw2
q(xi) + T +
1
2
TX
j=1
w2
j
=
TX
j=1
2
4(
X
i2Ij
gi)wj +
1
2
(
X
i2Ij
hi + )w2
j
3
5 + T
Gradient Boosted Regression Tree
• 마지막으로 leaf j에 있는 instance set을 정의:
• Objective 함수를 다시 적어보면:
Ij = {i|q(xi) = j}
Obj(t)
⇡
nX
i=1

gift(xi) +
1
2
hif2
t (xi) + ⌦(ft)
=
nX
i=1

giwq(xi) +
1
2
hiw2
q(xi) + T +
1
2
TX
j=1
w2
j
=
TX
j=1
2
4(
X
i2Ij
gi)wj +
1
2
(
X
i2Ij
hi + )w2
j
3
5 + T
Gradient Boosted Regression Tree
• 마지막으로 leaf j에 있는 instance set을 정의:
• Objective 함수를 다시 적어보면:
Ij = {i|q(xi) = j}
Obj(t)
⇡
nX
i=1

gift(xi) +
1
2
hif2
t (xi) + ⌦(ft)
=
nX
i=1

giwq(xi) +
1
2
hiw2
q(xi) + T +
1
2
TX
j=1
w2
j
=
TX
j=1
2
4(
X
i2Ij
gi)wj +
1
2
(
X
i2Ij
hi + )w2
j
3
5 + T
Gradient Boosted Regression Tree
• 마지막으로 leaf j에 있는 instance set을 정의:
• Objective 함수를 다시 적어보면:
Ij = {i|q(xi) = j}
Obj(t)
⇡
nX
i=1

gift(xi) +
1
2
hif2
t (xi) + ⌦(ft)
=
nX
i=1

giwq(xi) +
1
2
hiw2
q(xi) + T +
1
2
TX
j=1
w2
j
=
TX
j=1
2
4(
X
i2Ij
gi)wj +
1
2
(
X
i2Ij
hi + )w2
j
3
5 + T
Gradient Boosted Regression Tree
• w에 관한 2차 방정식이므로 optimal weight w*:
=
TX
j=1
2
4(
X
i2Ij
gi)wj +
1
2
(
X
i2Ij
hi + )w2
j
3
5 + T
=
TX
j=1

Gjwj +
1
2
(Hj + )w2
j + T
w⇤
j =
Gj
Hj +
Obj =
1
2
TX
j=1
G2
j
Hj +
+ T
Gradient Boosted Regression Tree
• w에 관한 2차 방정식이므로 optimal weight w*:
=
TX
j=1
2
4(
X
i2Ij
gi)wj +
1
2
(
X
i2Ij
hi + )w2
j
3
5 + T
=
TX
j=1

Gjwj +
1
2
(Hj + )w2
j + T
w⇤
j =
Gj
Hj +
Obj =
1
2
TX
j=1
G2
j
Hj +
+ T
Gradient Boosted Regression Tree
• w에 관한 2차 방정식이므로 optimal weight w*:
=
TX
j=1
2
4(
X
i2Ij
gi)wj +
1
2
(
X
i2Ij
hi + )w2
j
3
5 + T
=
TX
j=1

Gjwj +
1
2
(Hj + )w2
j + T
w⇤
j =
Gj
Hj +
Obj =
1
2
TX
j=1
G2
j
Hj +
+ T
Gradient Boosted Regression Tree
Age < 15
Male?
Y
Y N
N
Index Instance
Gradient
Statistics
1 남동생 g1, h1
2 이웃집 아가씨 g2, h2
3 뒷집 할아버지 g3, h3
4 아랫집 여아 g4, h4
5 옆집 아저씨 g5, h5
I3 = {2, 3, 5}
G3 = g2 + g3 + g5
H3 = h2 + h3 + h5
I1 = {1}
G1 = g1
H1 = h1
I2 = {4}
G2 = g4
H2 = h4
Obj =
X
j
G2
j
Hj +
+ 3
Gradient Boosted Regression Tree
• 알고리즘:
(1) 가능한 tree structure q들을 listing한다
(2) 각 q의 Obj 값을 구한다.
(3) 가장 Obj값이 낮은 tree structure를 찾고 optimal
weight w*를 사용한다.
• 하지만 엄청나게 많은 tree structure q들이 있겠지…
Gradient Boosted Regression Tree
• 알고리즘:
(1) 가능한 tree structure q들을 listing한다
(2) 각 q의 Obj 값을 구한다.
(3) 가장 Obj값이 낮은 tree structure를 찾고 optimal
weight w*를 사용한다.
• 하지만 엄청나게 많은 tree structure q들이 있겠지…
Gradient Boosted Regression Tree
• 알고리즘:
(1) 가능한 tree structure q들을 listing한다
(2) 각 q의 Obj 값을 구한다.
(3) 가장 Obj값이 낮은 tree structure를 찾고 optimal
weight w*를 사용한다.
• 하지만 엄청나게 많은 tree structure q들이 있겠지…
Gradient Boosted Regression Tree
• 알고리즘:
(1) 가능한 tree structure q들을 listing한다
(2) 각 q의 Obj 값을 구한다.
(3) 가장 Obj값이 낮은 tree structure를 찾고 optimal
weight w*를 사용한다.
• 하지만 엄청나게 많은 tree structure q들이 있겠지…
Gradient Boosted Regression Tree
• 알고리즘:
(1) 가능한 tree structure q들을 listing한다
(2) 각 q의 Obj 값을 구한다.
(3) 가장 Obj값이 낮은 tree structure를 찾고 optimal
weight w*를 사용한다.
• 하지만 엄청나게 많은 tree structure q들이 있겠지…
Gradient Boosted Regression Tree
• 그래서 practical하게: Greedy learning of the Tree:
(1) depth 0인 트리로 시작
(2) 각 leaf 노드에서 split을 했을때의 gain을 연산:
• 어떻게 best split을 찾을까?
Gain =
G2
L
HL +
+
G2
R
HR +
(GL + GR)2
HL + HR +
Left child score Right child score split을 하지 않을 때 score
Gradient Boosted Regression Tree
• 그래서 practical하게: Greedy learning of the Tree:
(1) depth 0인 트리로 시작
(2) 각 leaf 노드에서 split을 했을때의 gain을 연산:
• 어떻게 best split을 찾을까?
Gain =
G2
L
HL +
+
G2
R
HR +
(GL + GR)2
HL + HR +
Left child score Right child score split을 하지 않을 때 score
Gradient Boosted Regression Tree
• 그래서 practical하게: Greedy learning of the Tree:
(1) depth 0인 트리로 시작
(2) 각 leaf 노드에서 split을 했을때의 gain을 연산:
• 어떻게 best split을 찾을까?
Gain =
G2
L
HL +
+
G2
R
HR +
(GL + GR)2
HL + HR +
Left child score Right child score split을 하지 않을 때 score
Gradient Boosted Regression Tree
• 그래서 practical하게: Greedy learning of the Tree:
(1) depth 0인 트리로 시작
(2) 각 leaf 노드에서 split을 했을때의 gain을 연산:
• 어떻게 best split을 찾을까?
Gain =
G2
L
HL +
+
G2
R
HR +
(GL + GR)2
HL + HR +
Left child score Right child score split을 하지 않을 때 score
Gradient Boosted Regression Tree
• 그래서 practical하게: Greedy learning of the Tree:
(1) depth 0인 트리로 시작
(2) 각 leaf 노드에서 split을 했을때의 gain을 연산:
• 어떻게 best split을 찾을까?
Gain =
G2
L
HL +
+
G2
R
HR +
(GL + GR)2
HL + HR +
Left child score Right child score split을 하지 않을 때 score
Gradient Boosted Regression Tree
• 로 split을 했을 때의 gain은 얼마지? 가 나이라
고 가정해보자.
• 이 값들을 사용해서 gain을 구하고:
• Linear 스캔을 통해 best split을 찾으면 된다!
xj < a xj
남동생 아랫집 여아 옆집 아저씨 뒷집 할아버지이웃집 아가씨
g1, h1 g4, h4 g2, h2 g5, h5 g3, h3
GL = g1 + g4 GR = g2 + g3 + g5
Gain =
G2
L
HL +
+
G2
R
HR +
(GL + GR)2
HL + HR +
a
Gradient Boosted Regression Tree
• 로 split을 했을 때의 gain은 얼마지? 가 나이라
고 가정해보자.
• 이 값들을 사용해서 gain을 구하고:
• Linear 스캔을 통해 best split을 찾으면 된다!
xj < a xj
남동생 아랫집 여아 옆집 아저씨 뒷집 할아버지이웃집 아가씨
g1, h1 g4, h4 g2, h2 g5, h5 g3, h3
GL = g1 + g4 GR = g2 + g3 + g5
Gain =
G2
L
HL +
+
G2
R
HR +
(GL + GR)2
HL + HR +
a
Gradient Boosted Regression Tree
• 로 split을 했을 때의 gain은 얼마지? 가 나이라
고 가정해보자.
• 이 값들을 사용해서 gain을 구하고:
• Linear 스캔을 통해 best split을 찾으면 된다!
xj < a xj
남동생 아랫집 여아 옆집 아저씨 뒷집 할아버지이웃집 아가씨
g1, h1 g4, h4 g2, h2 g5, h5 g3, h3
GL = g1 + g4 GR = g2 + g3 + g5
Gain =
G2
L
HL +
+
G2
R
HR +
(GL + GR)2
HL + HR +
a
Gradient Boosted Regression Tree
• 각 leaf node에서 모든 feature을 iterate 하는데
• Leaf node의 instance들을 feature value로 정렬
• Linear 스캐닝을 통해서 best split 찾고
• 모든 feature들 중에서 가장 좋은 split으로 한다
• Depth가 K인 tree로 만드는 데 걸리는 Time
Complexity는 O(n · d · K · log(n))
Gradient Boosted Regression Tree
• 각 leaf node에서 모든 feature을 iterate 하는데
• Leaf node의 instance들을 feature value로 정렬
• Linear 스캐닝을 통해서 best split 찾고
• 모든 feature들 중에서 가장 좋은 split으로 한다
• Depth가 K인 tree로 만드는 데 걸리는 Time
Complexity는 O(n · d · K · log(n))
Gradient Boosted Regression Tree
• 각 leaf node에서 모든 feature을 iterate 하는데
• Leaf node의 instance들을 feature value로 정렬
• Linear 스캐닝을 통해서 best split 찾고
• 모든 feature들 중에서 가장 좋은 split으로 한다
• Depth가 K인 tree로 만드는 데 걸리는 Time
Complexity는 O(n · d · K · log(n))
Gradient Boosted Regression Tree
• 각 leaf node에서 모든 feature을 iterate 하는데
• Leaf node의 instance들을 feature value로 정렬
• Linear 스캐닝을 통해서 best split 찾고
• 모든 feature들 중에서 가장 좋은 split으로 한다
• Depth가 K인 tree로 만드는 데 걸리는 Time
Complexity는 O(n · d · K · log(n))
Gradient Boosted Regression Tree
• 각 leaf node에서 모든 feature을 iterate 하는데
• Leaf node의 instance들을 feature value로 정렬
• Linear 스캐닝을 통해서 best split 찾고
• 모든 feature들 중에서 가장 좋은 split으로 한다
• Depth가 K인 tree로 만드는 데 걸리는 Time
Complexity는 O(n · d · K · log(n))
Gradient Boosted Regression Tree
• Gain 이 음수일 경우도 있다는 사실!
• training loss reduction < regularisation 일 때.
• Predictiveness 와 simplicity의 tradeoff.
• Best split이 음수일 때 stop하는 pre-stopping과 tree
를 먼저 max depth로 키운 후에 negative gain split
을 pruning 하는 post pruning 기법이 있다.
Gain =
G2
L
HL +
+
G2
R
HR +
(GL + GR)2
HL + HR +
Gradient Boosted Regression Tree
• Gain 이 음수일 경우도 있다는 사실!
• training loss reduction < regularisation 일 때.
• Predictiveness 와 simplicity의 tradeoff.
• Best split이 음수일 때 stop하는 pre-stopping과 tree
를 먼저 max depth로 키운 후에 negative gain split
을 pruning 하는 post pruning 기법이 있다.
Gain =
G2
L
HL +
+
G2
R
HR +
(GL + GR)2
HL + HR +
Gradient Boosted Regression Tree
• Gain 이 음수일 경우도 있다는 사실!
• training loss reduction < regularisation 일 때.
• Predictiveness 와 simplicity의 tradeoff.
• Best split이 음수일 때 stop하는 pre-stopping과 tree
를 먼저 max depth로 키운 후에 negative gain split
을 pruning 하는 post pruning 기법이 있다.
Gain =
G2
L
HL +
+
G2
R
HR +
(GL + GR)2
HL + HR +
Gradient Boosted Regression Tree
• GBRT 총 정리:
• 각 iteration에서 나무 하나를 추가한다
• iteration은 grad stats를 계산하는 것으로 시작:
• stats 사용해서 greedy하게 tree 를 키운다
• 마지막으로 tree를 지금까지 모델에다가 추가해 준다:
gi =
@ l(yi, ˆy(t 1)
)
@ ˆy(t 1)
, hi =
@2
l(yi, ˆy(t 1)
)
@2 ˆy(t 1)
ft(x)
Obj =
1
2
TX
j=1
G2
j
Hj +
+ T
ˆy
(t)
i = ˆy
(t 1)
i + ✏ft(xi)
Gradient Boosted Regression Tree
• GBRT 총 정리:
• 각 iteration에서 나무 하나를 추가한다
• iteration은 grad stats를 계산하는 것으로 시작:
• stats 사용해서 greedy하게 tree 를 키운다
• 마지막으로 tree를 지금까지 모델에다가 추가해 준다:
gi =
@ l(yi, ˆy(t 1)
)
@ ˆy(t 1)
, hi =
@2
l(yi, ˆy(t 1)
)
@2 ˆy(t 1)
ft(x)
Obj =
1
2
TX
j=1
G2
j
Hj +
+ T
ˆy
(t)
i = ˆy
(t 1)
i + ✏ft(xi)
Gradient Boosted Regression Tree
• GBRT 총 정리:
• 각 iteration에서 나무 하나를 추가한다
• iteration은 grad stats를 계산하는 것으로 시작:
• stats 사용해서 greedy하게 tree 를 키운다
• 마지막으로 tree를 지금까지 모델에다가 추가해 준다:
gi =
@ l(yi, ˆy(t 1)
)
@ ˆy(t 1)
, hi =
@2
l(yi, ˆy(t 1)
)
@2 ˆy(t 1)
ft(x)
Obj =
1
2
TX
j=1
G2
j
Hj +
+ T
ˆy
(t)
i = ˆy
(t 1)
i + ✏ft(xi)
Gradient Boosted Regression Tree
• GBRT 총 정리:
• 각 iteration에서 나무 하나를 추가한다
• iteration은 grad stats를 계산하는 것으로 시작:
• stats 사용해서 greedy하게 tree 를 키운다
• 마지막으로 tree를 지금까지 모델에다가 추가해 준다:
gi =
@ l(yi, ˆy(t 1)
)
@ ˆy(t 1)
, hi =
@2
l(yi, ˆy(t 1)
)
@2 ˆy(t 1)
ft(x)
Obj =
1
2
TX
j=1
G2
j
Hj +
+ T
ˆy
(t)
i = ˆy
(t 1)
i + ✏ft(xi)
Gradient Boosted Regression Tree
• GBRT 총 정리:
• 각 iteration에서 나무 하나를 추가한다
• iteration은 grad stats를 계산하는 것으로 시작:
• stats 사용해서 greedy하게 tree 를 키운다
• 마지막으로 tree를 지금까지 모델에다가 추가해 준다:
gi =
@ l(yi, ˆy(t 1)
)
@ ˆy(t 1)
, hi =
@2
l(yi, ˆy(t 1)
)
@2 ˆy(t 1)
ft(x)
Obj =
1
2
TX
j=1
G2
j
Hj +
+ T
ˆy
(t)
i = ˆy
(t 1)
i + ✏ft(xi)
Gradient Boosted Regression Tree
• GBRT 총 정리:
• 각 iteration에서 나무 하나를 추가한다
• iteration은 grad stats를 계산하는 것으로 시작:
• stats 사용해서 greedy하게 tree 를 키운다
• 마지막으로 tree를 지금까지 모델에다가 추가해 준다:
gi =
@ l(yi, ˆy(t 1)
)
@ ˆy(t 1)
, hi =
@2
l(yi, ˆy(t 1)
)
@2 ˆy(t 1)
ft(x)
Obj =
1
2
TX
j=1
G2
j
Hj +
+ T
ˆy
(t)
i = ˆy
(t 1)
i + ✏ft(xi)
shrinkage (~0.1) : helps
prevent overfitting
References
• “Introduction to Boosted Trees” : https://
homes.cs.washington.edu/~tqchen/pdf/
BoostedTree.pdf
• “A Gentle Introduction to the Gradient
Boosting Algorithm for Machine Learning” :
http://machinelearningmastery.com/gentle-
introduction-gradient-boosting-algorithm-
machine-learning/
• “Yahoo! Learning to Rank Challenge Overview”
Questions?

Weitere ähnliche Inhalte

Ähnlich wie GBRT tutorial

ESM Mid term Review
ESM Mid term ReviewESM Mid term Review
ESM Mid term ReviewMario Cho
 
[홍대 머신러닝 스터디 - 핸즈온 머신러닝] 4장. 모델 훈련
[홍대 머신러닝 스터디 - 핸즈온 머신러닝] 4장. 모델 훈련[홍대 머신러닝 스터디 - 핸즈온 머신러닝] 4장. 모델 훈련
[홍대 머신러닝 스터디 - 핸즈온 머신러닝] 4장. 모델 훈련Haesun Park
 
알아두면 쓸데있는 신비한 딥러닝 이야기
알아두면 쓸데있는 신비한 딥러닝 이야기알아두면 쓸데있는 신비한 딥러닝 이야기
알아두면 쓸데있는 신비한 딥러닝 이야기Kwangsik Lee
 
딥 러닝 자연어 처리를 학습을 위한 파워포인트. (Deep Learning for Natural Language Processing)
딥 러닝 자연어 처리를 학습을 위한 파워포인트. (Deep Learning for Natural Language Processing)딥 러닝 자연어 처리를 학습을 위한 파워포인트. (Deep Learning for Natural Language Processing)
딥 러닝 자연어 처리를 학습을 위한 파워포인트. (Deep Learning for Natural Language Processing)WON JOON YOO
 
[한글] Tutorial: Sparse variational dropout
[한글] Tutorial: Sparse variational dropout[한글] Tutorial: Sparse variational dropout
[한글] Tutorial: Sparse variational dropoutWuhyun Rico Shin
 
Chapter 7 Regularization for deep learning - 2
Chapter 7 Regularization for deep learning - 2Chapter 7 Regularization for deep learning - 2
Chapter 7 Regularization for deep learning - 2KyeongUkJang
 
Dsh data sensitive hashing for high dimensional k-nn search
Dsh  data sensitive hashing for high dimensional k-nn searchDsh  data sensitive hashing for high dimensional k-nn search
Dsh data sensitive hashing for high dimensional k-nn searchWooSung Choi
 
Coursera Machine Learning (by Andrew Ng)_강의정리
Coursera Machine Learning (by Andrew Ng)_강의정리Coursera Machine Learning (by Andrew Ng)_강의정리
Coursera Machine Learning (by Andrew Ng)_강의정리SANG WON PARK
 
딥 러닝 자연어 처리 학습을 위한 PPT! (Deep Learning for Natural Language Processing)
딥 러닝 자연어 처리 학습을 위한 PPT! (Deep Learning for Natural Language Processing)딥 러닝 자연어 처리 학습을 위한 PPT! (Deep Learning for Natural Language Processing)
딥 러닝 자연어 처리 학습을 위한 PPT! (Deep Learning for Natural Language Processing)WON JOON YOO
 
신경망 첫걸음 - 한빛미디어 요약
신경망 첫걸음 - 한빛미디어 요약신경망 첫걸음 - 한빛미디어 요약
신경망 첫걸음 - 한빛미디어 요약고포릿 default
 
파이썬과 케라스로 배우는 강화학습 저자특강
파이썬과 케라스로 배우는 강화학습 저자특강파이썬과 케라스로 배우는 강화학습 저자특강
파이썬과 케라스로 배우는 강화학습 저자특강Woong won Lee
 
파이썬으로 나만의 강화학습 환경 만들기
파이썬으로 나만의 강화학습 환경 만들기파이썬으로 나만의 강화학습 환경 만들기
파이썬으로 나만의 강화학습 환경 만들기정주 김
 
3.neural networks
3.neural networks3.neural networks
3.neural networksHaesun Park
 

Ähnlich wie GBRT tutorial (14)

ESM Mid term Review
ESM Mid term ReviewESM Mid term Review
ESM Mid term Review
 
[홍대 머신러닝 스터디 - 핸즈온 머신러닝] 4장. 모델 훈련
[홍대 머신러닝 스터디 - 핸즈온 머신러닝] 4장. 모델 훈련[홍대 머신러닝 스터디 - 핸즈온 머신러닝] 4장. 모델 훈련
[홍대 머신러닝 스터디 - 핸즈온 머신러닝] 4장. 모델 훈련
 
Decision tree
Decision treeDecision tree
Decision tree
 
알아두면 쓸데있는 신비한 딥러닝 이야기
알아두면 쓸데있는 신비한 딥러닝 이야기알아두면 쓸데있는 신비한 딥러닝 이야기
알아두면 쓸데있는 신비한 딥러닝 이야기
 
딥 러닝 자연어 처리를 학습을 위한 파워포인트. (Deep Learning for Natural Language Processing)
딥 러닝 자연어 처리를 학습을 위한 파워포인트. (Deep Learning for Natural Language Processing)딥 러닝 자연어 처리를 학습을 위한 파워포인트. (Deep Learning for Natural Language Processing)
딥 러닝 자연어 처리를 학습을 위한 파워포인트. (Deep Learning for Natural Language Processing)
 
[한글] Tutorial: Sparse variational dropout
[한글] Tutorial: Sparse variational dropout[한글] Tutorial: Sparse variational dropout
[한글] Tutorial: Sparse variational dropout
 
Chapter 7 Regularization for deep learning - 2
Chapter 7 Regularization for deep learning - 2Chapter 7 Regularization for deep learning - 2
Chapter 7 Regularization for deep learning - 2
 
Dsh data sensitive hashing for high dimensional k-nn search
Dsh  data sensitive hashing for high dimensional k-nn searchDsh  data sensitive hashing for high dimensional k-nn search
Dsh data sensitive hashing for high dimensional k-nn search
 
Coursera Machine Learning (by Andrew Ng)_강의정리
Coursera Machine Learning (by Andrew Ng)_강의정리Coursera Machine Learning (by Andrew Ng)_강의정리
Coursera Machine Learning (by Andrew Ng)_강의정리
 
딥 러닝 자연어 처리 학습을 위한 PPT! (Deep Learning for Natural Language Processing)
딥 러닝 자연어 처리 학습을 위한 PPT! (Deep Learning for Natural Language Processing)딥 러닝 자연어 처리 학습을 위한 PPT! (Deep Learning for Natural Language Processing)
딥 러닝 자연어 처리 학습을 위한 PPT! (Deep Learning for Natural Language Processing)
 
신경망 첫걸음 - 한빛미디어 요약
신경망 첫걸음 - 한빛미디어 요약신경망 첫걸음 - 한빛미디어 요약
신경망 첫걸음 - 한빛미디어 요약
 
파이썬과 케라스로 배우는 강화학습 저자특강
파이썬과 케라스로 배우는 강화학습 저자특강파이썬과 케라스로 배우는 강화학습 저자특강
파이썬과 케라스로 배우는 강화학습 저자특강
 
파이썬으로 나만의 강화학습 환경 만들기
파이썬으로 나만의 강화학습 환경 만들기파이썬으로 나만의 강화학습 환경 만들기
파이썬으로 나만의 강화학습 환경 만들기
 
3.neural networks
3.neural networks3.neural networks
3.neural networks
 

GBRT tutorial

  • 2. Why before What? • 2010 Yahoo L2R Challenge • 36k 질의, 883k 문서, 700개의 feature를 사용 • Challenge 내 몇가지 특징들: (1) 탑 랭커들은 decision tree를 주로 사용했다. (상위 5 팀이 모두 앙상블 트리를 사용함) (2) 앙상블 기법(boosting, bagging and random forests)들이 주로 사용됐다. (3) 탑 랭커들 사이의 점수차는 굉장히 미미했다. (같은 방 식을 사용했으니 당연한 것일수도…)
  • 3. Why before What? • 2010 Yahoo L2R Challenge • 36k 질의, 883k 문서, 700개의 feature를 사용 • Challenge 내 몇가지 특징들: (1) 탑 랭커들은 decision tree를 주로 사용했다. (상위 5 팀이 모두 앙상블 트리를 사용함) (2) 앙상블 기법(boosting, bagging and random forests)들이 주로 사용됐다. (3) 탑 랭커들 사이의 점수차는 굉장히 미미했다. (같은 방 식을 사용했으니 당연한 것일수도…)
  • 4. Why before What? • 2010 Yahoo L2R Challenge • 36k 질의, 883k 문서, 700개의 feature를 사용 • Challenge 내 몇가지 특징들: (1) 탑 랭커들은 decision tree를 주로 사용했다. (상위 5 팀이 모두 앙상블 트리를 사용함) (2) 앙상블 기법(boosting, bagging and random forests)들이 주로 사용됐다. (3) 탑 랭커들 사이의 점수차는 굉장히 미미했다. (같은 방 식을 사용했으니 당연한 것일수도…)
  • 5. Why before What? • 2010 Yahoo L2R Challenge • 36k 질의, 883k 문서, 700개의 feature를 사용 • Challenge 내 몇가지 특징들: (1) 탑 랭커들은 decision tree를 주로 사용했다. (상위 5 팀이 모두 앙상블 트리를 사용함) (2) 앙상블 기법(boosting, bagging and random forests)들이 주로 사용됐다. (3) 탑 랭커들 사이의 점수차는 굉장히 미미했다. (비슷한 방식을 사용했으니 당연한 것일수도…)
  • 6. Gradient Boosted Regression Tree • Boosting 컨셉은? • “The idea is to used the weak learning method several times to get a succession of hypotheses, each one refocused on the examples that the previous ones found difficult and misclassified. … Note, however, it is not obvious at all how this can be done” - Probably Approximately Correct: Nature’s Algorithms for Learning and Prospering in a Complex World, page 152, 2013
  • 7. Gradient Boosted Regression Tree • 더러운 수식에 들어가기 전에 그림으로 먼저 컨셉을 짚 어보자 • Ex1) 1차원 feature를 가진 data를 트리로 regression 하기.
  • 8. Gradient Boosted Regression Tree • 더러운 수식에 들어가기 전에 그림으로 먼저 컨셉을 짚 어보자 • Ex1) 1차원 feature를 가진 data를 트리로 regression 하기. Tree depth : 1
  • 9. Gradient Boosted Regression Tree • 더러운 수식에 들어가기 전에 그림으로 먼저 컨셉을 짚 어보자 • Ex1) 1차원 feature를 가진 data를 트리로 regression 하기. Tree depth : 2
  • 10. Gradient Boosted Regression Tree • 더러운 수식에 들어가기 전에 그림으로 먼저 컨셉을 짚 어보자 • Ex1) 1차원 feature를 가진 data를 트리로 regression 하기. Tree depth : 10
  • 11. Gradient Boosted Regression Tree • 더러운 수식에 들어가기 전에 그림으로 먼저 컨셉을 짚 어보자 • Ex2) 2차원 feature를 가진 data를 앙상블 트리로 classification 하기. TREE1 of depth 1
  • 12. Gradient Boosted Regression Tree • 더러운 수식에 들어가기 전에 그림으로 먼저 컨셉을 짚 어보자 • Ex2) 2차원 feature를 가진 data를 앙상블 트리로 classification 하기. TREE2 of depth 1
  • 13. Gradient Boosted Regression Tree • 더러운 수식에 들어가기 전에 그림으로 먼저 컨셉을 짚 어보자 • Ex2) 2차원 feature를 가진 data를 앙상블 트리로 classification 하기. TREE3 of depth 1
  • 14. Gradient Boosted Regression Tree • 더러운 수식에 들어가기 전에 그림으로 먼저 컨셉을 짚 어보자 • Ex2) 2차원 feature를 가진 data를 앙상블 트리로 classification 하기. Ensemble of all TREEs
  • 15. Gradient Boosted Regression Tree • 그렇다면 짱짱이라고 하는 GBRT에 대해선 좀 자세히 보도록 하자. • 우선 ML의 공통적인 목표 함수를 review해 보면: • training data의 loss : • square loss: • logistic loss: Obj(⇥) = L(⇥) + ⌦(⇥) L = nX i=1 l(yi, ˆyi) l(yi, ˆyi) = (yi ˆyi)2 l(yi, ˆyi) = yiln(1 + e ˆyi ) + (1 yi)ln(1 + eˆyi ) training loss Regularisation
  • 16. Gradient Boosted Regression Tree • 그렇다면 짱짱이라고 하는 GBRT에 대해선 좀 자세히 보도록 하자. • 우선 ML의 공통적인 목표 함수를 review해 보면: • training data의 loss : • square loss: • logistic loss: Obj(⇥) = L(⇥) + ⌦(⇥) L = nX i=1 l(yi, ˆyi) l(yi, ˆyi) = (yi ˆyi)2 l(yi, ˆyi) = yiln(1 + e ˆyi ) + (1 yi)ln(1 + eˆyi ) training loss Regularisation
  • 17. Gradient Boosted Regression Tree • 그렇다면 짱짱이라고 하는 GBRT에 대해선 좀 자세히 보도록 하자. • 우선 ML의 공통적인 목표 함수를 review해 보면: • training data의 loss : • square loss: • logistic loss: Obj(⇥) = L(⇥) + ⌦(⇥) L = nX i=1 l(yi, ˆyi) l(yi, ˆyi) = (yi ˆyi)2 l(yi, ˆyi) = yiln(1 + e ˆyi ) + (1 yi)ln(1 + eˆyi ) training loss Regularisation
  • 18. Gradient Boosted Regression Tree • 그렇다면 짱짱이라고 하는 GBRT에 대해선 좀 자세히 보도록 하자. • 우선 ML의 공통적인 목표 함수를 review해 보면: • Regularisation : how complicated the model is • L2 norm: • L1 norm: Obj(⇥) = L(⇥) + ⌦(⇥) ⌦(w) = ||w||2 ⌦(w) = ||w||1 training loss Regularisation
  • 19. Gradient Boosted Regression Tree • Loss 를 최적화하면 예측값이 더 잘나오고, regularization을 최적화하면 좀 더 simple한 모델이 된다. Simple한 모델은 unseen data 예측에 variance 가 작아서 좀 더 stable 하다. • Regression tree는 decision tree와 같은 decision rule 을 가지며, 각 leaf node당 score를 가지고 있다. • 이제 regression tree의 예제를 보며 배워보자!
  • 20. Gradient Boosted Regression Tree • Loss 를 최적화하면 예측값이 더 잘나오고, regularization을 최적화하면 좀 더 simple한 모델이 된다. Simple한 모델은 unseen data 예측에 variance 가 작아서 좀 더 stable 하다. • Regression tree는 decision tree와 같은 decision rule 을 가지며, 각 leaf node당 score를 가지고 있다. • 이제 regression tree의 예제를 보며 배워보자!
  • 21. Gradient Boosted Regression Tree • Loss 를 최적화하면 예측값이 더 잘나오고, regularization을 최적화하면 좀 더 simple한 모델이 된다. Simple한 모델은 unseen data 예측에 variance 가 작아서 좀 더 stable 하다. • Regression tree는 decision tree와 같은 decision rule 을 가지며, 각 leaf node당 score를 가지고 있다. • 이제 regression tree의 예제를 보며 배워보자!
  • 22. Gradient Boosted Regression Tree • Input: • 나이, 직업, 성 등의 feature vector 로 나타냄. • Problem: 이 사람은 컴퓨터 게임을 좋아하나요? 옆집 아저씨 뒷집 할아버지 이웃집 아가씨 남동생 아랫집 여아 Age < 15 Male? 옆집 아저씨 뒷집 할아버지이웃집 아가씨 Y Y N N +2 +0.1 -1 남동생 아랫집 여아
  • 23. Gradient Boosted Regression Tree • Input: • 나이, 직업, 성 등의 feature vector 로 나타냄. • Problem: 이 사람은 컴퓨터 게임을 좋아하나요? 남동생 아랫집 여아 Age < 15 Male? 옆집 아저씨 뒷집 할아버지이웃집 아가씨 Y Y N N +2 +0.1 -1 옆집 아저씨 뒷집 할아버지 이웃집 아가씨 남동생 아랫집 여아
  • 24. Gradient Boosted Regression Tree • Tree Ensemble Tree 1 Tree 2 남동생 아랫집 여아 Age < 15 Male? 옆집 아저씨 뒷집 할아버지 이웃집 아가씨 Y Y N N +2 +0.1 -1 컴퓨터를 매일 사용한다 남동생 뒷집 할아버지 옆집 아저씨 아랫집 여아 이웃집 아가씨 Y N +0.9 -0.9
  • 25. Gradient Boosted Regression Tree • Tree Ensemble Tree 1 Tree 2 남동생 아랫집 여아 Age < 15 Male? 옆집 아저씨 뒷집 할아버지 이웃집 아가씨 Y Y N N +2 +0.1 -1 컴퓨터를 매일 사 용한다 남동생 뒷집 할아버지 옆집 아저씨 아랫집 여아 이웃집 아가씨 Y N +0.9 -0.9
  • 26. Gradient Boosted Regression Tree • 이런 tree ensemble을 통해서 fine tuning을 해 나가 는 것이다! • tree가 split되는 로직을 보면 input scaling을 요하지 않기 때문에 feature normalization이 필요없다! • 트리 모델링을 시작해보자!
  • 27. Gradient Boosted Regression Tree • 이런 tree ensemble을 통해서 fine tuning을 해 나가 는 것이다! • tree가 split되는 로직을 보면 input scaling을 요하지 않기 때문에 feature normalization이 필요없다! • 트리 모델링을 시작해보자! (Let’s get dirty…)
  • 28. Gradient Boosted Regression Tree • 이런 tree ensemble을 통해서 fine tuning을 해 나가 는 것이다! • tree가 split되는 로직을 보면 input scaling을 요하지 않기 때문에 feature normalization이 필요없다! • 트리 모델링을 시작해보자! (Let’s get dirty…)
  • 29. Gradient Boosted Regression Tree • Model : assuming we have K trees • Parameters • 각 tree의 구조와 leaf의 score를 포함한다 • weight를 학습하는 게 아니라 function(tree)를 학 습하는 것! ˆyi = KX k=1 fk(xi), fk 2 F
  • 30. Gradient Boosted Regression Tree • Model : assuming we have K trees • Parameters • 각 tree의 구조와 leaf의 score를 포함한다 • weight를 학습하는 게 아니라 function(tree)를 학 습하는 것! ˆyi = KX k=1 fk(xi), fk 2 F
  • 31. Gradient Boosted Regression Tree • 어떻게 함수를 학습할 수 있지? • 이전과 똑같이 objective(loss,regularization)을 정해놓고 최적화 하면 된다! • 예를 들어볼까: • 하나의 input t(time)을 가지는 regression tree • 내가 불특정 시간 t에서 사랑노래를 듣고 싶어하는지 예측을 해보고 싶다. 시간으로 쪼개지는 regression tree t < 2016년 1월 28일 t < 2016년 5월 7일 Y N Y N 0.2 1.2 1.0
  • 32. Gradient Boosted Regression Tree • 어떻게 함수를 학습할 수 있지? • 이전과 똑같이 objective(loss,regularization)을 정해놓고 최적화 하면 된다! • 예를 들어볼까: • 하나의 input t(time)을 가지는 regression tree • 내가 불특정 시간 t에서 사랑노래를 듣고 싶어하는지 예측을 해보고 싶다. 시간으로 쪼개지는 regression tree t < 2016년 1월 28일 t < 2016년 5월 7일 Y N Y N 0.2 1.2 1.0
  • 33. Gradient Boosted Regression Tree • 어떻게 함수를 학습할 수 있지? • 이전과 똑같이 objective(loss,regularization)을 정해놓고 최적화 하면 된다! • 예를 들어볼까: • 하나의 input t(time)을 가지는 regression tree • 내가 불특정 시간 t에서 사랑노래를 듣고 싶어하는지 예측을 해보고 싶다. 시간으로 쪼개지는 regression tree t < 2016년 1월 28일 t < 2016년 5월 7일 Y N Y N 0.2 1.2 1.0
  • 34. Gradient Boosted Regression Tree • 어떻게 함수를 학습할 수 있지? • 이전과 똑같이 objective(loss,regularization)을 정해놓고 최적화 하면 된다! • 예를 들어볼까: • 하나의 input t(time)을 가지는 regression tree • 내가 불특정 시간 t에서 사랑노래를 듣고 싶어하는지 예측을 해보고 싶다. 시간으로 쪼개지는 regression tree t < 2016년 1월 28일 t < 2015년 5월 7일 Y N Y N 0.2 1.2 1.0
  • 35. Gradient Boosted Regression Tree • Step function 학습 예 User data Too many splits : Regularisation loss too high Wrong split points : Loss too high Good balance of L and R
  • 36. Gradient Boosted Regression Tree • 다시 Object 로 돌아가서: • Square loss 를 사용한다면: Obj(t) = nX i=1 l(yi, ˆy (t) i ) + tX i=1 ⌦(fi) = nX i=1 l ⇣ yi, ˆy (t 1) i + ft(xi) ⌘ + ⌦(ft) + constant Goal: find f_t to minimize this Obj(t) = nX i=1 ⇣ yi ⇣ ˆy (t 1) i + ft(xi) ⌘⌘2 + ⌦(ft) + const = nX i=1 h 2(ˆy (t 1) i yi)ft(xi) + ft(xi)2 i + ⌦(ft) + const
  • 37. Gradient Boosted Regression Tree • 다시 Object 로 돌아가서: • Square loss 를 사용한다면: Obj(t) = nX i=1 l(yi, ˆy (t) i ) + tX i=1 ⌦(fi) = nX i=1 l ⇣ yi, ˆy (t 1) i + ft(xi) ⌘ + ⌦(ft) + constant Goal: find f_t to minimize this Obj(t) = nX i=1 ⇣ yi ⇣ ˆy (t 1) i + ft(xi) ⌘⌘2 + ⌦(ft) + const = nX i=1 h 2(ˆy (t 1) i yi)ft(xi) + ft(xi)2 i + ⌦(ft) + const
  • 38. Gradient Boosted Regression Tree • Square loss 가 아니라면 상당이 복잡한데… • Taylor expansion을 써보자: Taylor Expansion : f(x + x) ⇡ f(x) + f0 (x) x + 1 2 f00 (x) x2 Define : gi = @ l(yi, ˆy(t 1) ) @ ˆy(t 1) , and hi = @2 l(yi, ˆy(t 1) ) @2 ˆy(t 1) Obj(t) ⇡ nX i=1  l(yi, ˆy (t 1) i ) + gift(xi) + 1 2 hif2 t (xi) + ⌦(ft) + constant Obj(t) ⇡ nX i=1  gift(xi) + 1 2 hif2 t (xi) + ⌦(ft) with constants removed
  • 39. Gradient Boosted Regression Tree • Square loss 가 아니라면 상당이 복잡한데… • Taylor expansion을 써보자: Taylor Expansion : f(x + x) ⇡ f(x) + f0 (x) x + 1 2 f00 (x) x2 Define : gi = @ l(yi, ˆy(t 1) ) @ ˆy(t 1) , and hi = @2 l(yi, ˆy(t 1) ) @2 ˆy(t 1) Obj(t) ⇡ nX i=1  l(yi, ˆy (t 1) i ) + gift(xi) + 1 2 hif2 t (xi) + ⌦(ft) + constant Obj(t) ⇡ nX i=1  gift(xi) + 1 2 hif2 t (xi) + ⌦(ft) with constants removed
  • 40. Gradient Boosted Regression Tree • Square loss 가 아니라면 상당이 복잡한데… • Taylor expansion을 써보자: Taylor Expansion : f(x + x) ⇡ f(x) + f0 (x) x + 1 2 f00 (x) x2 Define : gi = @ l(yi, ˆy(t 1) ) @ ˆy(t 1) , and hi = @2 l(yi, ˆy(t 1) ) @2 ˆy(t 1) Obj(t) ⇡ nX i=1  l(yi, ˆy (t 1) i ) + gift(xi) + 1 2 hif2 t (xi) + ⌦(ft) + constant Obj(t) ⇡ nX i=1  gift(xi) + 1 2 hif2 t (xi) + ⌦(ft) with constants removed
  • 41. Gradient Boosted Regression Tree • Tree의 정의를 좀 더 디테일하게 해보자 : • Tree를 leaf score의 벡터와 각 instance를 leaf로 매 핑해주는 함수(q)로 나타낸다: fx(x) = wq(x), w 2 RT , q : Rd ! 1, 2, ..., T 남동생 아랫집 여아 Age < 15 Male? 옆집 아저씨 뒷집 할아버지 이웃집 아가씨 Y Y N N w1 = +2 w2 = +0.1 w3 = -1 q( ) = 1남동생 q( ) = 3이웃집 아가씨
  • 42. Gradient Boosted Regression Tree • Tree의 정의를 좀 더 디테일하게 해보자 : • Tree를 leaf score의 벡터와 각 instance를 leaf로 매 핑해주는 함수(q)로 나타낸다: fx(x) = wq(x), w 2 RT , q : Rd ! 1, 2, ..., T 남동생 아랫집 여아 Age < 15 Male? 옆집 아저씨 뒷집 할아버지 이웃집 아가씨 Y Y N N w1 = +2 w2 = +0.1 w3 = -1 q( ) = 1남동생 q( ) = 3이웃집 아가씨
  • 43. Gradient Boosted Regression Tree • Tree의 complexity도 정의해 보고: 남동생 아랫집 여아 Age < 15 Male? 옆집 아저씨 뒷집 할아버지 이웃집 아가씨 Y Y N N w1 = +2 w2 = +0.1 w3 = -1 ⌦(ft) = T + 1 2 TX j=1 w2 j ⌦ = · 3 + 1 2 (4 + 0.01 + 1)
  • 44. Gradient Boosted Regression Tree • Tree의 complexity도 정의해 보고: 남동생 아랫집 여아 Age < 15 Male? 옆집 아저씨 뒷집 할아버지 이웃집 아가씨 Y Y N N w1 = +2 w2 = +0.1 w3 = -1 ⌦(ft) = T + 1 2 TX j=1 w2 j ⌦ = · 3 + 1 2 (4 + 0.01 + 1)
  • 45. Gradient Boosted Regression Tree • 마지막으로 leaf j에 있는 instance set을 정의: • Objective 함수를 다시 적어보면: Ij = {i|q(xi) = j} Obj(t) ⇡ nX i=1  gift(xi) + 1 2 hif2 t (xi) + ⌦(ft) = nX i=1  giwq(xi) + 1 2 hiw2 q(xi) + T + 1 2 TX j=1 w2 j = TX j=1 2 4( X i2Ij gi)wj + 1 2 ( X i2Ij hi + )w2 j 3 5 + T
  • 46. Gradient Boosted Regression Tree • 마지막으로 leaf j에 있는 instance set을 정의: • Objective 함수를 다시 적어보면: Ij = {i|q(xi) = j} Obj(t) ⇡ nX i=1  gift(xi) + 1 2 hif2 t (xi) + ⌦(ft) = nX i=1  giwq(xi) + 1 2 hiw2 q(xi) + T + 1 2 TX j=1 w2 j = TX j=1 2 4( X i2Ij gi)wj + 1 2 ( X i2Ij hi + )w2 j 3 5 + T
  • 47. Gradient Boosted Regression Tree • 마지막으로 leaf j에 있는 instance set을 정의: • Objective 함수를 다시 적어보면: Ij = {i|q(xi) = j} Obj(t) ⇡ nX i=1  gift(xi) + 1 2 hif2 t (xi) + ⌦(ft) = nX i=1  giwq(xi) + 1 2 hiw2 q(xi) + T + 1 2 TX j=1 w2 j = TX j=1 2 4( X i2Ij gi)wj + 1 2 ( X i2Ij hi + )w2 j 3 5 + T
  • 48. Gradient Boosted Regression Tree • 마지막으로 leaf j에 있는 instance set을 정의: • Objective 함수를 다시 적어보면: Ij = {i|q(xi) = j} Obj(t) ⇡ nX i=1  gift(xi) + 1 2 hif2 t (xi) + ⌦(ft) = nX i=1  giwq(xi) + 1 2 hiw2 q(xi) + T + 1 2 TX j=1 w2 j = TX j=1 2 4( X i2Ij gi)wj + 1 2 ( X i2Ij hi + )w2 j 3 5 + T
  • 49. Gradient Boosted Regression Tree • w에 관한 2차 방정식이므로 optimal weight w*: = TX j=1 2 4( X i2Ij gi)wj + 1 2 ( X i2Ij hi + )w2 j 3 5 + T = TX j=1  Gjwj + 1 2 (Hj + )w2 j + T w⇤ j = Gj Hj + Obj = 1 2 TX j=1 G2 j Hj + + T
  • 50. Gradient Boosted Regression Tree • w에 관한 2차 방정식이므로 optimal weight w*: = TX j=1 2 4( X i2Ij gi)wj + 1 2 ( X i2Ij hi + )w2 j 3 5 + T = TX j=1  Gjwj + 1 2 (Hj + )w2 j + T w⇤ j = Gj Hj + Obj = 1 2 TX j=1 G2 j Hj + + T
  • 51. Gradient Boosted Regression Tree • w에 관한 2차 방정식이므로 optimal weight w*: = TX j=1 2 4( X i2Ij gi)wj + 1 2 ( X i2Ij hi + )w2 j 3 5 + T = TX j=1  Gjwj + 1 2 (Hj + )w2 j + T w⇤ j = Gj Hj + Obj = 1 2 TX j=1 G2 j Hj + + T
  • 52. Gradient Boosted Regression Tree Age < 15 Male? Y Y N N Index Instance Gradient Statistics 1 남동생 g1, h1 2 이웃집 아가씨 g2, h2 3 뒷집 할아버지 g3, h3 4 아랫집 여아 g4, h4 5 옆집 아저씨 g5, h5 I3 = {2, 3, 5} G3 = g2 + g3 + g5 H3 = h2 + h3 + h5 I1 = {1} G1 = g1 H1 = h1 I2 = {4} G2 = g4 H2 = h4 Obj = X j G2 j Hj + + 3
  • 53. Gradient Boosted Regression Tree • 알고리즘: (1) 가능한 tree structure q들을 listing한다 (2) 각 q의 Obj 값을 구한다. (3) 가장 Obj값이 낮은 tree structure를 찾고 optimal weight w*를 사용한다. • 하지만 엄청나게 많은 tree structure q들이 있겠지…
  • 54. Gradient Boosted Regression Tree • 알고리즘: (1) 가능한 tree structure q들을 listing한다 (2) 각 q의 Obj 값을 구한다. (3) 가장 Obj값이 낮은 tree structure를 찾고 optimal weight w*를 사용한다. • 하지만 엄청나게 많은 tree structure q들이 있겠지…
  • 55. Gradient Boosted Regression Tree • 알고리즘: (1) 가능한 tree structure q들을 listing한다 (2) 각 q의 Obj 값을 구한다. (3) 가장 Obj값이 낮은 tree structure를 찾고 optimal weight w*를 사용한다. • 하지만 엄청나게 많은 tree structure q들이 있겠지…
  • 56. Gradient Boosted Regression Tree • 알고리즘: (1) 가능한 tree structure q들을 listing한다 (2) 각 q의 Obj 값을 구한다. (3) 가장 Obj값이 낮은 tree structure를 찾고 optimal weight w*를 사용한다. • 하지만 엄청나게 많은 tree structure q들이 있겠지…
  • 57. Gradient Boosted Regression Tree • 알고리즘: (1) 가능한 tree structure q들을 listing한다 (2) 각 q의 Obj 값을 구한다. (3) 가장 Obj값이 낮은 tree structure를 찾고 optimal weight w*를 사용한다. • 하지만 엄청나게 많은 tree structure q들이 있겠지…
  • 58. Gradient Boosted Regression Tree • 그래서 practical하게: Greedy learning of the Tree: (1) depth 0인 트리로 시작 (2) 각 leaf 노드에서 split을 했을때의 gain을 연산: • 어떻게 best split을 찾을까? Gain = G2 L HL + + G2 R HR + (GL + GR)2 HL + HR + Left child score Right child score split을 하지 않을 때 score
  • 59. Gradient Boosted Regression Tree • 그래서 practical하게: Greedy learning of the Tree: (1) depth 0인 트리로 시작 (2) 각 leaf 노드에서 split을 했을때의 gain을 연산: • 어떻게 best split을 찾을까? Gain = G2 L HL + + G2 R HR + (GL + GR)2 HL + HR + Left child score Right child score split을 하지 않을 때 score
  • 60. Gradient Boosted Regression Tree • 그래서 practical하게: Greedy learning of the Tree: (1) depth 0인 트리로 시작 (2) 각 leaf 노드에서 split을 했을때의 gain을 연산: • 어떻게 best split을 찾을까? Gain = G2 L HL + + G2 R HR + (GL + GR)2 HL + HR + Left child score Right child score split을 하지 않을 때 score
  • 61. Gradient Boosted Regression Tree • 그래서 practical하게: Greedy learning of the Tree: (1) depth 0인 트리로 시작 (2) 각 leaf 노드에서 split을 했을때의 gain을 연산: • 어떻게 best split을 찾을까? Gain = G2 L HL + + G2 R HR + (GL + GR)2 HL + HR + Left child score Right child score split을 하지 않을 때 score
  • 62. Gradient Boosted Regression Tree • 그래서 practical하게: Greedy learning of the Tree: (1) depth 0인 트리로 시작 (2) 각 leaf 노드에서 split을 했을때의 gain을 연산: • 어떻게 best split을 찾을까? Gain = G2 L HL + + G2 R HR + (GL + GR)2 HL + HR + Left child score Right child score split을 하지 않을 때 score
  • 63. Gradient Boosted Regression Tree • 로 split을 했을 때의 gain은 얼마지? 가 나이라 고 가정해보자. • 이 값들을 사용해서 gain을 구하고: • Linear 스캔을 통해 best split을 찾으면 된다! xj < a xj 남동생 아랫집 여아 옆집 아저씨 뒷집 할아버지이웃집 아가씨 g1, h1 g4, h4 g2, h2 g5, h5 g3, h3 GL = g1 + g4 GR = g2 + g3 + g5 Gain = G2 L HL + + G2 R HR + (GL + GR)2 HL + HR + a
  • 64. Gradient Boosted Regression Tree • 로 split을 했을 때의 gain은 얼마지? 가 나이라 고 가정해보자. • 이 값들을 사용해서 gain을 구하고: • Linear 스캔을 통해 best split을 찾으면 된다! xj < a xj 남동생 아랫집 여아 옆집 아저씨 뒷집 할아버지이웃집 아가씨 g1, h1 g4, h4 g2, h2 g5, h5 g3, h3 GL = g1 + g4 GR = g2 + g3 + g5 Gain = G2 L HL + + G2 R HR + (GL + GR)2 HL + HR + a
  • 65. Gradient Boosted Regression Tree • 로 split을 했을 때의 gain은 얼마지? 가 나이라 고 가정해보자. • 이 값들을 사용해서 gain을 구하고: • Linear 스캔을 통해 best split을 찾으면 된다! xj < a xj 남동생 아랫집 여아 옆집 아저씨 뒷집 할아버지이웃집 아가씨 g1, h1 g4, h4 g2, h2 g5, h5 g3, h3 GL = g1 + g4 GR = g2 + g3 + g5 Gain = G2 L HL + + G2 R HR + (GL + GR)2 HL + HR + a
  • 66. Gradient Boosted Regression Tree • 각 leaf node에서 모든 feature을 iterate 하는데 • Leaf node의 instance들을 feature value로 정렬 • Linear 스캐닝을 통해서 best split 찾고 • 모든 feature들 중에서 가장 좋은 split으로 한다 • Depth가 K인 tree로 만드는 데 걸리는 Time Complexity는 O(n · d · K · log(n))
  • 67. Gradient Boosted Regression Tree • 각 leaf node에서 모든 feature을 iterate 하는데 • Leaf node의 instance들을 feature value로 정렬 • Linear 스캐닝을 통해서 best split 찾고 • 모든 feature들 중에서 가장 좋은 split으로 한다 • Depth가 K인 tree로 만드는 데 걸리는 Time Complexity는 O(n · d · K · log(n))
  • 68. Gradient Boosted Regression Tree • 각 leaf node에서 모든 feature을 iterate 하는데 • Leaf node의 instance들을 feature value로 정렬 • Linear 스캐닝을 통해서 best split 찾고 • 모든 feature들 중에서 가장 좋은 split으로 한다 • Depth가 K인 tree로 만드는 데 걸리는 Time Complexity는 O(n · d · K · log(n))
  • 69. Gradient Boosted Regression Tree • 각 leaf node에서 모든 feature을 iterate 하는데 • Leaf node의 instance들을 feature value로 정렬 • Linear 스캐닝을 통해서 best split 찾고 • 모든 feature들 중에서 가장 좋은 split으로 한다 • Depth가 K인 tree로 만드는 데 걸리는 Time Complexity는 O(n · d · K · log(n))
  • 70. Gradient Boosted Regression Tree • 각 leaf node에서 모든 feature을 iterate 하는데 • Leaf node의 instance들을 feature value로 정렬 • Linear 스캐닝을 통해서 best split 찾고 • 모든 feature들 중에서 가장 좋은 split으로 한다 • Depth가 K인 tree로 만드는 데 걸리는 Time Complexity는 O(n · d · K · log(n))
  • 71. Gradient Boosted Regression Tree • Gain 이 음수일 경우도 있다는 사실! • training loss reduction < regularisation 일 때. • Predictiveness 와 simplicity의 tradeoff. • Best split이 음수일 때 stop하는 pre-stopping과 tree 를 먼저 max depth로 키운 후에 negative gain split 을 pruning 하는 post pruning 기법이 있다. Gain = G2 L HL + + G2 R HR + (GL + GR)2 HL + HR +
  • 72. Gradient Boosted Regression Tree • Gain 이 음수일 경우도 있다는 사실! • training loss reduction < regularisation 일 때. • Predictiveness 와 simplicity의 tradeoff. • Best split이 음수일 때 stop하는 pre-stopping과 tree 를 먼저 max depth로 키운 후에 negative gain split 을 pruning 하는 post pruning 기법이 있다. Gain = G2 L HL + + G2 R HR + (GL + GR)2 HL + HR +
  • 73. Gradient Boosted Regression Tree • Gain 이 음수일 경우도 있다는 사실! • training loss reduction < regularisation 일 때. • Predictiveness 와 simplicity의 tradeoff. • Best split이 음수일 때 stop하는 pre-stopping과 tree 를 먼저 max depth로 키운 후에 negative gain split 을 pruning 하는 post pruning 기법이 있다. Gain = G2 L HL + + G2 R HR + (GL + GR)2 HL + HR +
  • 74. Gradient Boosted Regression Tree • GBRT 총 정리: • 각 iteration에서 나무 하나를 추가한다 • iteration은 grad stats를 계산하는 것으로 시작: • stats 사용해서 greedy하게 tree 를 키운다 • 마지막으로 tree를 지금까지 모델에다가 추가해 준다: gi = @ l(yi, ˆy(t 1) ) @ ˆy(t 1) , hi = @2 l(yi, ˆy(t 1) ) @2 ˆy(t 1) ft(x) Obj = 1 2 TX j=1 G2 j Hj + + T ˆy (t) i = ˆy (t 1) i + ✏ft(xi)
  • 75. Gradient Boosted Regression Tree • GBRT 총 정리: • 각 iteration에서 나무 하나를 추가한다 • iteration은 grad stats를 계산하는 것으로 시작: • stats 사용해서 greedy하게 tree 를 키운다 • 마지막으로 tree를 지금까지 모델에다가 추가해 준다: gi = @ l(yi, ˆy(t 1) ) @ ˆy(t 1) , hi = @2 l(yi, ˆy(t 1) ) @2 ˆy(t 1) ft(x) Obj = 1 2 TX j=1 G2 j Hj + + T ˆy (t) i = ˆy (t 1) i + ✏ft(xi)
  • 76. Gradient Boosted Regression Tree • GBRT 총 정리: • 각 iteration에서 나무 하나를 추가한다 • iteration은 grad stats를 계산하는 것으로 시작: • stats 사용해서 greedy하게 tree 를 키운다 • 마지막으로 tree를 지금까지 모델에다가 추가해 준다: gi = @ l(yi, ˆy(t 1) ) @ ˆy(t 1) , hi = @2 l(yi, ˆy(t 1) ) @2 ˆy(t 1) ft(x) Obj = 1 2 TX j=1 G2 j Hj + + T ˆy (t) i = ˆy (t 1) i + ✏ft(xi)
  • 77. Gradient Boosted Regression Tree • GBRT 총 정리: • 각 iteration에서 나무 하나를 추가한다 • iteration은 grad stats를 계산하는 것으로 시작: • stats 사용해서 greedy하게 tree 를 키운다 • 마지막으로 tree를 지금까지 모델에다가 추가해 준다: gi = @ l(yi, ˆy(t 1) ) @ ˆy(t 1) , hi = @2 l(yi, ˆy(t 1) ) @2 ˆy(t 1) ft(x) Obj = 1 2 TX j=1 G2 j Hj + + T ˆy (t) i = ˆy (t 1) i + ✏ft(xi)
  • 78. Gradient Boosted Regression Tree • GBRT 총 정리: • 각 iteration에서 나무 하나를 추가한다 • iteration은 grad stats를 계산하는 것으로 시작: • stats 사용해서 greedy하게 tree 를 키운다 • 마지막으로 tree를 지금까지 모델에다가 추가해 준다: gi = @ l(yi, ˆy(t 1) ) @ ˆy(t 1) , hi = @2 l(yi, ˆy(t 1) ) @2 ˆy(t 1) ft(x) Obj = 1 2 TX j=1 G2 j Hj + + T ˆy (t) i = ˆy (t 1) i + ✏ft(xi)
  • 79. Gradient Boosted Regression Tree • GBRT 총 정리: • 각 iteration에서 나무 하나를 추가한다 • iteration은 grad stats를 계산하는 것으로 시작: • stats 사용해서 greedy하게 tree 를 키운다 • 마지막으로 tree를 지금까지 모델에다가 추가해 준다: gi = @ l(yi, ˆy(t 1) ) @ ˆy(t 1) , hi = @2 l(yi, ˆy(t 1) ) @2 ˆy(t 1) ft(x) Obj = 1 2 TX j=1 G2 j Hj + + T ˆy (t) i = ˆy (t 1) i + ✏ft(xi) shrinkage (~0.1) : helps prevent overfitting
  • 80. References • “Introduction to Boosted Trees” : https:// homes.cs.washington.edu/~tqchen/pdf/ BoostedTree.pdf • “A Gentle Introduction to the Gradient Boosting Algorithm for Machine Learning” : http://machinelearningmastery.com/gentle- introduction-gradient-boosting-algorithm- machine-learning/ • “Yahoo! Learning to Rank Challenge Overview”