算法强化 —— 提升树算法(四)

多分类问题

对于多分类问题,与二分类问题类似,仅在损失函数部分有所区别,对于多分类问题,原论文中选择的是交叉熵损失函数
L ( { y k , F k ( x ) } 1 K ) = − ∑ k = 1 K y k log ⁡ p k ( x ) L\left(\left\{y_{k}, F_{k}(x)\right\}_{1}^{K}\right)=-\sum_{k=1}^{K} y_{k} \log p_{k}(x) L({yk,Fk(x)}1K)=k=1Kyklogpk(x)
同时多分类问题一般使用softmax 函数进行类别概率的计算,其中k表示当前的类别,K表示类别的数量
p k ( x ) = exp ⁡ ( F k ( x ) ) / ∑ l = 1 K exp ⁡ ( F l ( x ) ) p_{k}(x)=\exp \left(F_{k}(x)\right) / \sum_{l=1}^{K} \exp \left(F_{l}(x)\right) pk(x)=exp(Fk(x))/l=1Kexp(Fl(x))
然后同样的求负梯度(残差)
y ~ i k = − [ ∂ L ( { y i l , F l ( x i ) } l = 1 K ) ∂ F k ( x i ) ] { F l ( x ) = F l m − 1 ( α ) } 1 K = y i k − p k , m − 1 ( x i ) \tilde{y}_{i k}=-\left[\frac{\partial L\left(\left\{y_{i l}, F_{l}\left(x_{i}\right)\right\}_{l=1}^{K}\right)}{\partial F_{k}\left(x_{i}\right)}\right]_{\left\{F_{l}(x)=F_{l m-1(\alpha)}\right\}_{1}^{K}}=y_{i k}-p_{k, m-1\left(x_{i}\right)} y~ik=Fk(xi)L({yil,Fl(xi)}l=1K){Fl(x)=Flm1(α)}1K=yikpk,m1(xi)
我们需要求叶子节点的估计值
{ r j k m } = argmin ⁡ γ k ∑ i = 1 N ∑ k = 1 K ϕ ( y i k , F k , m − 1 ( x i ) + ∑ j = 1 J γ j k I ( x i ∈ R j m ) } ) \left.\left\{r_{j k m}\right\}=\operatorname{argmin}_{\gamma_{k}} \sum_{i=1}^{N} \sum_{k=1}^{K} \phi\left(y_{i k}, F_{k, m-1}\left(x_{i}\right)+\sum_{j=1}^{J} \gamma_{j k} I\left(x_{i} \in R_{j m}\right)\right\}\right) {rjkm}=argminγki=1Nk=1Kϕ(yik,Fk,m1(xi)+j=1JγjkI(xiRjm)})
可以通过Newton-Raphson来求近似结果
γ j k m = K − 1 K ∑ x i ∈ R j k m y ~ i k ∑ x i ∈ R j k m ∣ y ~ i k ∣ ( 1 − ∣ y ~ i k ∣ ) \gamma_{j k m}=\frac{K-1}{K} \frac{\sum_{x_{i} \in R_{j k m}} \tilde{y}_{i k}}{\sum_{x_{i} \in R_{j k m}}\left|\tilde{y}_{i k}\right|\left(1-\left|\tilde{y}_{i k}\right|\right)} γjkm=KK1xiRjkmy~ik(1y~ik)xiRjkmy~ik

回归问题

在原论文中使用的是huber损失函数,为了简单,我们使用平方损失
L ( y , F ) = ( y − F ) 2 2 L(y,F) = \frac{(y-F)^2}{2} L(y,F)=2(yF)2
y ~ i = − [ ∂ L ( y , F ( x i ) ) ∂ F ( x i ) ] F ( x ) = F m − 1 ( x ) = y i − F m − 1 ( x i ) \tilde{y}_{i}=-\left[\frac{\partial L\left(y, F\left(x_{i}\right)\right)}{\partial F\left(x_{i}\right)}\right] F(x)=F_{m-1}(x)=y_{i}-F_{m-1}\left(x_{i}\right) y~i=[F(xi)L(y,F(xi))]F(x)=Fm1(x)=yiFm1(xi)
叶子节点值的估计
γ j m = argmin ⁡ γ ∑ x i ∈ R j m 1 2 ( y i − ( F m − 1 ( x i ) + γ ) ) 2 γ j m = argmin ⁡ γ ∑ x i ∈ R j m 1 2 ( y i − F m − 1 ( x i ) − γ ) 2 γ j m = argmin ⁡ γ ∑ x i ∈ R j m 1 2 ( y ~ i − γ ) 2 \begin{array}{c} \gamma_{j m}=\operatorname{argmin}_{\gamma} \sum_{x_{i} \in R_{j m}} \frac{1}{2}\left(y_{i}-\left(F_{m-1}\left(x_{i}\right)+\gamma\right)\right)^{2} \\ \gamma_{j m}=\operatorname{argmin}_{\gamma} \sum_{x_{i} \in R_{j m}} \frac{1}{2}\left(y_{i}-F_{m-1}\left(x_{i}\right)-\gamma\right)^{2} \\ \gamma_{j m}=\operatorname{argmin}_{\gamma} \sum_{x_{i} \in R_{jm}} \frac{1}{2}\left(\tilde{y}_{i}-\gamma\right)^{2} \end{array} γjm=argminγxiRjm21(yi(Fm1(xi)+γ))2γjm=argminγxiRjm21(yiFm1(xi)γ)2γjm=argminγxiRjm21(y~iγ)2
所以,我们可以去 y ~ i \tilde{y}_i y~i均值,来使得损失最小:
γ j m = a v e r a g e x i ∈ R j m y ~ i \gamma_{jm} = average_{x_i \in R_{jm}} \tilde{y}_i γjm=averagexiRjmy~i

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值