二分类问题
对于二分类问题,原论文中使用的对数损失函数:
L(y,F)=log(1+exp(−2yF)),y∈−1,1
其中
F(x)=21log[Pr(y=−1∣x)Pr(y=1∣x)]
那么按照上面的算法一步步进行计算,首先计算负梯度
y~i=−[∂F(xi)∂L(y,F(xi))]F(x)=Fm−1(x)=1+exp(2yiFm−1(xi))2yi
然后估计叶子节点的值
γjm=argminγxi∈Rm∑log(1+exp(−2yi(Fm−1(xi)+γ)))
原论文中,直接使用Newton-Raphson方法得出近似结果,
γjm=∑xi∈Rm∣y~i∣(2−∣y~i∣)∑xi∈Rmy~i
初始值如何设置
在梯度提升树算法中,我们知道,初始值的设置是:
Fo(x)=argmini=1∑NL(yi,F(xi))
我们让损失函数L对F求偏导,并令偏导为0,求极值
∂F∂∑i=1NL(yi,F(xi))=0i=1∑Ne−2yiF+1(−2yi)e−2yiF=0
由于是二分类,所以yi的取值是1和-1,所以有
i:yi=1∑e−2F+12e−2F+i:yi=−1∑e2F+1−2e2F=0
将分母处理成一致:
\sum_{i:y_i=1} \frac{2}{e^{2F}+1} + \sum_{i:y_i=-1} \frac{-2e{2F}}{e{2F}+1} = 0
设正样本数量为m个,负样本数量为n个,则有:
m−ne2F=0
e2F=nm=1−m+nm−n1+m+nm−n=1−yˉ1+yˉ
m+n表示样本总数,m-n表示yi求和
最终可以得出
Fo(X)=21log1−yˉ1+yˉ
牛顿近似法求解
如何将公式1转化为公式2
γjm=argminγxi∈Rm∑log(1+exp(−2yi(Fm−1(xi)+γ)))
γjm=∑xi∈Rm∣y~i∣(2−∣y~i∣)∑xi∈Rmy~i
首先,牛顿法是一种迭代求解的方法,论文中提到进一步迭代,我们首先令:
g(γ)=xi∈Rjm∑log(1+exp(−2yi(Fm−1(xi+γ))))
然后使用牛顿法求解
γ0=0开始迭代
γjm=γ0−g′′(γ0)g′(γ0)=−g′′(γ0)g′(γ0)
然后分别对
γ进行一阶求导和二阶求导
g′(γ)=xi∈Rjm∑1+exp(2yi(Fm−1(xi)+γ))−2yi
g′′(γ)=xi∈Rjm∑[1+exp(2yi(Fm−1(xi)+γ))]24yi2exp(2yi(Fm−1(xi)+γ))=xi∈Rjm∑[1+exp(2yi(Fm−1(xi)+γ))]24yi2(exp(2yi(Fm−1(xi)+γ))+1)−4yi2
然后由于
y~i=−[∂F(xi)∂L(y,F(xi))]F(x)=Fm−1(x)=1+exp(2yiFm−1(xi))2yi
所以可以近似的得出
g′(γ)=xi∈Rjm∑1+exp(2yi(Fm−1(xi)+γ))−2yi=−y~i
g′′(γ)=xi∈Rjm∑[1+exp(2yi(Fm−1(xi)+γ))]24yi2(exp(2yi(Fm−1(xi)+γ))+1)−4yi2
=xi∈Rjm∑[[1+exp(2yi(Fm−1(xi)+γ))]2∗2yi2−yi2~]
由于yi取值为+1或者-1,所以
yi2=∣yi∣,所以有:
g′′(γ)=∣yi~∣(2−∣yi~∣)
二分类问题
最终我们求出F(x),那么如何使用它进行分类呢:
F(x)=21log(1−pp)
稍微进行转化可得
e2F(x)=1−pp
进一步转换可得
P+(x)=p=1+e2F(x)e2F(x)=1+e−2F(x)1
P−(x)=1−p=1+e2F(x)1
最终实现二分类