- 我的个人微信公众号: Microstrong
- 微信公众号ID: MicrostrongAI
- 微信公众号介绍: Microstrong(小强)同学主要研究机器学习、深度学习、计算机视觉、智能对话系统相关内容,分享在学习过程中的读书笔记!期待您的关注,欢迎一起学习交流进步!
- 我的知乎主页: https://www.zhihu.com/people/MicrostrongAI/activities
- Github: https://github.com/Microstrong0305
- 个人博客: https://blog.csdn.net/program_developer
- 本文首发在我的微信公众号里,地址:https://mp.weixin.qq.com/s/-UmOhpktgRaOF7tT2-5nsQ,如有公式和图片不清楚,可以在我的微信公众号里阅读。
目录:
- GBDT多分类算法
1.1 Softmax回归的对数损失函数
1.2 GBDT多分类原理 - GBDT多分类算法实例
- 手撕GBDT多分类算法
3.1 用Python3实现GBDT多分类算法
3.2 用sklearn实现GBDT多分类算法 - 总结
- Reference
本文的主要内容概览:

1. GBDT多分类算法
1.1 Softmax回归的对数损失函数
当使用逻辑回归处理多标签的分类问题时,如果一个样本只对应于一个标签,我们可以假设每个样本属于不同标签的概率服从于几何分布,使用多项逻辑回归(Softmax Regression)来进行分类:
P ( Y = y i ∣ x ) = h θ ( x ) [ P ( Y = 1 ∣ x ; θ ) P ( Y = 2 ∣ x ; θ ) . . . P ( Y = k ∣ x ; θ ) ] = 1 ∑ j = 1 k e θ j T x [ e θ 1 T x e θ 2 T x . . . e θ k T x ] \begin{aligned} P(Y=y_{i}|x) &= h_{\theta}(x) \begin{bmatrix} P(Y=1|x;\theta )\\ P(Y=2|x;\theta) \\ . \\ . \\ . \\ P(Y=k|x;\theta) \end{bmatrix} \\ &=\frac{1}{\sum_{j=1}^{k}{e^{\theta_{j}^{T}x}}} \begin{bmatrix} e^{\theta^{T}_{1}x} \\ e^{\theta^{T}_{2}x} \\ . \\ . \\ . \\ e^{\theta^{T}_{k}x } \end{bmatrix} \end{aligned} P(Y=yi∣x)=hθ(x)⎣⎢⎢⎢⎢⎢⎢⎡P(Y=1∣x;θ)P(Y=2∣x;θ)...P(Y=k∣x;θ)⎦⎥⎥⎥⎥⎥⎥⎤=∑j=1keθjTx1⎣⎢⎢⎢⎢⎢⎢⎡eθ1Txeθ2Tx...eθkTx⎦⎥⎥⎥⎥⎥⎥⎤
其中, θ 1 , θ 2 , . . . , θ k ∈ ℜ n \theta_{1},\theta_{2},...,\theta_{k}\in \Re^{n} θ1,θ2,...,θk∈ℜn 为模型的参数,而 1 ∑ j = 1 k e θ j T x \frac{1}{\sum_{j=1}^{k}{e^{\theta^{T}_{j}x}}} ∑j=1keθjTx1 可以看作是对概率的归一化。一般来说,多项逻辑回归具有参数冗余的特点,即将 θ 1 , θ 2 , . . . , θ k \theta_{1},\theta_{2},...,\theta_{k} θ1,θ2,...,θk 同时加减一个向量后预测结果不变,因为 P ( Y = 1 ∣ x ) + P ( Y = 2 ∣ x ) + . . . + P ( Y = k ∣ x ) = 1 P(Y=1|x)+P(Y=2|x)+...+P(Y=k|x) = 1 P(Y=1∣x)+P(Y=2∣x)+...+P(Y=k∣x)=1 ,所以 P ( Y = 1 ∣ x ) = 1 − P ( Y = 2 ∣ x ) − . . . − P ( Y = k ∣ x ) P(Y=1|x) = 1-P(Y=2|x)-...-P(Y=k|x) P(Y=1∣x)=1−P(Y=2∣x)−...−P(Y=k∣x) 。
假设从参数向量 θ j T \theta^{T}_{j} θjT 中减去向量 ψ \psi ψ ,这时每一个 θ j T \theta^{T}_{j} θjT都变成了 θ j T − ψ ( j = 1 , 2 , . . . , k ) \theta^{T}_{j} - \psi (j=1,2,...,k) θjT−ψ(j=1,2,...,k)。此时假设函数变成了以下公式:
P ( Y = y j ∣ x ; θ ) = e θ j T x ∑ i = 1 k e θ i T x = e ( θ j T − ψ ) x ∑ i = 1 k e ( θ i T − ψ ) x = e θ j T x × e − ψ x ∑ i = 1 k e θ i T x × e − ψ x = e θ j T x ∑ i = 1 k e θ i T x \begin{aligned} P(Y=y_{j}|x;\theta) &= \frac{e^{\theta^{T}_{j}x}}{\sum_{i=1}^{k}{e^{\theta^{T}_{i}x}}} \\ &= \frac{e^{(\theta^{T}_{j}-\psi)x}}{\sum_{i=1}^{k}{e^{(\theta^{T}_{i}-\psi) x}}} \\ & = \frac{e^{\theta^{T}_{j}x} \times e^{-\psi x}}{\sum_{i=1}^{k}{e^{\theta^{T}_{i}x} \times e^{-\psi x} }} \\ & = \frac{e^{\theta^{T}_{j}x}}{\sum_{i=1}^{k}{e^{\theta^{T}_{i}x}}} \end{aligned} P(Y=yj∣x;θ)=∑i=1keθiTxeθjTx=∑i=1ke(θiT−ψ)xe(θjT−ψ)x=∑i=1keθiTx×e−ψxeθjTx×e−ψx=∑i=1keθiTxeθjT

本文深入探讨了GBDT(梯度提升决策树)在多分类问题中的应用,从Softmax回归的对数损失函数出发,解析了GBDT多分类原理,通过实例详细解释了如何使用GBDT进行多分类,包括用Python3和sklearn实现。最后,文章总结了GBDT在多分类任务中的关键点,并提供了相关参考资料。
最低0.47元/天 解锁文章
2448





