机器学习算法系列(九)-多分类对数几率回归算法(Multinomial Logistic Regression)

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

=

W

j

(

i

=

1

N

(

1

j

(

y

i

)

(

W

j

T

X

i

ln

k

=

1

K

e

W

k

T

X

i

)

l

j

K

1

l

(

y

i

)

(

W

l

T

X

i

ln

k

=

1

K

e

W

k

T

X

i

)

)

)

(

3

)

=

i

=

1

N

(

1

j

(

y

j

)

(

X

i

e

W

j

T

X

i

X

i

k

=

1

K

e

W

k

T

X

i

)

l

j

K

1

l

(

y

i

)

(

0

e

W

j

T

X

i

X

i

k

=

1

K

e

W

k

T

X

i

)

)

(

4

)

=

i

=

1

N

(

X

i

(

1

j

(

y

i

)

j

=

1

K

1

j

(

y

i

)

e

W

j

T

X

i

k

=

1

K

e

W

k

T

X

i

)

)

(

5

)

=

i

=

1

N

(

X

i

(

1

j

(

y

i

)

e

W

j

T

X

i

k

=

1

K

e

W

k

T

X

i

)

)

(

6

)

\begin{aligned} \frac{\partial \operatorname{Cost}(W)}{\partial W_{j}} &=\frac{\partial}{\partial W_{j}}\left(-\sum_{i=1}^{N} \sum_{j=1}^{K} 1_{j}\left(y_{i}\right) \ln \frac{e{W_{j}{T} X_{i}}}{\sum_{k=1}^{K} e{W_{k}{T} X_{i}}}\right) & (1) \ &=\frac{\partial}{\partial W_{j}}\left(-\sum_{i=1}^{N}\left(1_{j}\left(y_{i}\right) \ln \frac{e{W_{j}{T} X_{i}}}{\sum_{k=1}^{K} e{W_{k}{T} X_{i}}}+\sum_{l \neq j}^{K} 1_{l}\left(y_{i}\right) \ln \frac{e{W_{l}{T} X_{i}}}{\sum_{k=1}^{K} e{W_{k}{T} X_{i}}}\right)\right) & (2) \ &=\frac{\partial}{\partial W_{j}}\left(-\sum_{i=1}{N}\left(1_{j}\left(y_{i}\right)\left(W_{j}{T} X_{i}-\ln \sum_{k=1}^{K} e{W_{k}{T} X_{i}}\right)+\sum_{l \neq j}^{K} 1_{l}\left(y_{i}\right)\left(W_{l}^{T} X_{i}-\ln \sum_{k=1}^{K} e{W_{k}{T} X_{i}}\right)\right)\right) & (3) \ &=-\sum_{i=1}{N}\left(1_{j}\left(y_{j}\right)\left(X_{i}-\frac{e{W_{j}^{T} X_{i}} X_{i}}{\sum_{k=1}^{K} e{W_{k}{T} X_{i}}}\right)+\sum_{l \neq j}^{K} 1_{l}\left(y_{i}\right)\left(0-\frac{e{W_{j}{T} X_{i}} X_{i}}{\sum_{k=1}^{K} e{W_{k}{T} X_{i}}}\right)\right) & (4) \ &=-\sum_{i=1}{N}\left(X_{i}\left(1_{j}\left(y_{i}\right)-\sum_{j=1}{K} 1_{j}\left(y_{i}\right) \frac{e{W_{j}{T} X_{i}}}{\sum_{k=1}^{K} e{W_{k}{T} X_{i}}}\right)\right) & (5) \ &=-\sum_{i=1}{N}\left(X_{i}\left(1_{j}\left(y_{i}\right)-\frac{e{W_{j}^{T} X_{i}}}{\sum_{k=1}^{K} e{W_{k}{T} X_{i}}}\right)\right) & (6) \end{aligned}

∂Wj​∂Cost(W)​​=∂Wj​∂​(−i=1∑N​j=1∑K​1j​(yi​)ln∑k=1K​eWkT​Xi​eWjT​Xi​​)=∂Wj​∂​⎝⎛​−i=1∑N​⎝⎛​1j​(yi​)ln∑k=1K​eWkT​Xi​eWjT​Xi​​+l​=j∑K​1l​(yi​)ln∑k=1K​eWkT​Xi​eWlT​Xi​​⎠⎞​⎠⎞​=∂Wj​∂​⎝⎛​−i=1∑N​⎝⎛​1j​(yi​)(WjT​Xi​−lnk=1∑K​eWkT​Xi​)+l​=j∑K​1l​(yi​)(WlT​Xi​−lnk=1∑K​eWkT​Xi​)⎠⎞​⎠⎞​=−i=1∑N​⎝⎛​1j​(yj​)(Xi​−∑k=1K​eWkT​Xi​eWjT​Xi​Xi​​)+l​=j∑K​1l​(yi​)(0−∑k=1K​eWkT​Xi​eWjT​Xi​Xi​​)⎠⎞​=−i=1∑N​(Xi​(1j​(yi​)−j=1∑K​1j​(yi​)∑k=1K​eWkT​Xi​eWjT​Xi​​))=−i=1∑N​(Xi​(1j​(yi​)−∑k=1K​eWkT​Xi​eWjT​Xi​​))​(1)(2)(3)(4)(5)(6)​

(1)代价函数对 W 求黑塞矩阵
(2)第一项对 W 来说为常数,只需对第二项求导
(3)利用求导公式求出对应的导数
(4)整理结果,分子为连加中去掉第 j 项

2

Cost

(

W

)

W

j

W

j

T

=

W

j

(

i

=

1

N

(

X

i

(

1

j

(

y

i

)

e

W

j

T

X

i

k

=

1

K

e

W

k

T

X

i

)

)

)

(

1

)

=

i

=

1

N

W

j

(

e

W

j

T

X

i

k

=

1

K

e

W

k

T

X

i

X

i

)

(

2

)

=

i

=

1

N

k

=

1

K

e

W

k

T

X

i

e

W

j

T

X

i

X

i

e

W

j

T

X

i

e

W

j

T

X

i

X

i

(

k

=

1

K

e

W

k

T

X

i

)

2

X

i

(

3

)

=

i

=

1

N

k

j

K

e

W

k

T

X

i

e

W

j

T

X

i

(

k

=

1

K

e

W

k

T

X

i

)

2

X

i

X

i

T

(

4

)

\begin{aligned} \frac{\partial^{2} \operatorname{Cost}(W)}{\partial W_{j} \partial W_{j}^{T}} &=\frac{\partial}{\partial W_{j}}\left(-\sum_{i=1}{N}\left(X_{i}\left(1_{j}\left(y_{i}\right)-\frac{e{W_{j}^{T} X_{i}}}{\sum_{k=1}^{K} e{W_{k}{T} X_{i}}}\right)\right)\right) & (1)\ &=\sum_{i=1}^{N} \frac{\partial}{\partial W_{j}}\left(\frac{e{W_{j}{T} X_{i}}}{\sum_{k=1}^{K} e{W_{k}{T} X_{i}}} X_{i}\right) & (2)\ &=\sum_{i=1}^{N} \frac{\sum_{k=1}^{K} e{W_{k}{T} X_{i}} e{W_{j}{T} X_{i}} X_{i}-e{W_{j}{T} X_{i}} e{W_{j}{T} X_{i}} X_{i}}{\left(\sum_{k=1}^{K} e{W_{k}{T} X_{i}}\right)^{2}} X_{i} & (3)\ &=\sum_{i=1}^{N} \frac{\sum_{k \neq j}^{K} e{W_{k}{T} X_{i}} e{W_{j}{T} X_{i}}}{\left(\sum_{k=1}^{K} e{W_{k}{T} X_{i}}\right)^{2}} X_{i} X_{i}^{T} & (4) \end{aligned}

∂Wj​∂WjT​∂2Cost(W)​​=∂Wj​∂​(−i=1∑N​(Xi​(1j​(yi​)−∑k=1K​eWkT​Xi​eWjT​Xi​​)))=i=1∑N​∂Wj​∂​(∑k=1K​eWkT​Xi​eWjT​Xi​​Xi​)=i=1∑N​(∑k=1K​eWkT​Xi​)2∑k=1K​eWkT​Xi​eWjT​Xi​Xi​−eWjT​Xi​eWjT​Xi​Xi​​Xi​=i=1∑N​(∑k=1K​eWkT​Xi​)2∑k​=jK​eWkT​Xi​eWjT​Xi​​Xi​XiT​​(1)(2)(3)(4)​

同前面的证明,黑塞矩阵前面的常数必然大于零,则对应的黑塞矩阵矩阵为正定矩阵,说明其代价函数为凸函数,证毕。

对数几率回归是多分类对数几率回归的特例
(1)当 K 的值为 2 时,带入到多分类对数几率回归的假设函数
(2)将分子分母同时乘以 e 的

W

1

-W_1

−W1​ 次幂
(3)e 的零次幂为 1,化简可得
(4)将

W

2

W

1

W_2-W_1

W2​−W1​ 视为新的 w,这时会发现假设函数就为二分类的对数几率回归的假设函数

h

(

x

)

=

1

e

W

1

T

x

e

W

2

T

x

[

e

W

1

T

x

e

W

2

T

x

]

(

1

)

=

1

e

0

T

x

e

(

W

2

W

1

)

T

x

[

e

0

T

x

e

(

W

2

W

1

)

T

x

]

(

2

)

=

1

1

e

(

W

2

W

1

)

T

x

[

1

e

(

W

2

W

1

)

T

x

]

(

3

)

=

[

1

1

e

w

^

T

x

e

w

^

T

x

1

e

w

^

T

x

]

(

4

)

\begin{aligned} h(x) &=\frac{1}{e{W_{1}{T} x}+e{W_{2}{T} x}}\left[\begin{array}{c} e{W_{1}{T} x} \ e{W_{2}{T} x} \end{array}\right] & (1)\ &=\frac{1}{e{0{T} x}+e{\left(W_{2}-W_{1}\right){T} x}}\left[\begin{array}{c} e{0{T} x} \ e{\left(W_{2}-W_{1}\right){T} x} \end{array}\right] & (2) \ &=\frac{1}{1+e{\left(W_{2}-W_{1}\right){T} x}}\left[\begin{array}{c} 1 \ e{\left(W_{2}-W_{1}\right){T} x} \end{array}\right] & (3) \ &=\left[\begin{array}{c} \frac{1}{1+e{\hat{w}{T} x}} \ \frac{e{\hat{w}{T} x}}{1+e{\hat{w}{T} x}} \end{array}\right] & (4) \end{aligned}

h(x)​=eW1T​x+eW2T​x1​[eW1T​xeW2T​x​]=e0Tx+e(W2​−W1​)Tx1​[e0Txe(W2​−W1​)Tx​]=1+e(W2​−W1​)Tx1​[1e(W2​−W1​)Tx​]=[1+ewTx1​1+ewTxew^Tx​​]​(1)(2)(3)(4)​

对数几率回归是多分类对数几率回归在 K = 2 时候的特例,也可以看到多分类对数几率回归的权重系数具有冗余的性质,即权重系数同时改变相同的值时,对最后的预测结果不影响。

四、代码实现

使用 Python 实现多分类对数几率回归算法(梯度下降法):

import numpy as np

def dcost(X, y, w):
   """
 多分类对数几率回归的代价函数的梯度


![img](https://img-blog.csdnimg.cn/img_convert/df3a429ff2eb2d1d4eb580a90abef3ab.png)
![img](https://img-blog.csdnimg.cn/img_convert/0104b9623c210a8d13b5ce7aa9f50dbe.png)

**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

**[需要这份系统化资料的朋友,可以戳这里获取](https://bbs.csdn.net/topics/618545628)**


**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**


 
 
 T 
 
 
 
 x 
 
 
 
 
 
 
 
 [ 
 
 
 
 
 
 
 
 e 
 
 
 
 
 0 
 
 
 T 
 
 
 
 x 
 
 
 
 
 
 
 
 
 
 
 
 e 
 
 
 
 
 
 ( 
 
 
 
 W 
 
 
 2 
 
 
 
 − 
 
 
 
 W 
 
 
 1 
 
 
 
 ) 
 
 
 
 T 
 
 
 
 x 
 
 
 
 
 
 
 
 
 ] 
 
 
 
 
 
 
 
 
 
 ( 
 
 
 2 
 
 
 ) 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 = 
 
 
 
 1 
 
 
 
 1 
 
 
 + 
 
 
 
 e 
 
 
 
 
 
 ( 
 
 
 
 W 
 
 
 2 
 
 
 
 − 
 
 
 
 W 
 
 
 1 
 
 
 
 ) 
 
 
 
 T 
 
 
 
 x 
 
 
 
 
 
 
 
 [ 
 
 
 
 
 
 
 1 
 
 
 
 
 
 
 
 
 
 e 
 
 
 
 
 
 ( 
 
 
 
 W 
 
 
 2 
 
 
 
 − 
 
 
 
 W 
 
 
 1 
 
 
 
 ) 
 
 
 
 T 
 
 
 
 x 
 
 
 
 
 
 
 
 
 ] 
 
 
 
 
 
 
 
 
 
 ( 
 
 
 3 
 
 
 ) 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 = 
 
 
 
 [ 
 
 
 
 
 
 
 
 1 
 
 
 
 1 
 
 
 + 
 
 
 
 e 
 
 
 
 
 
 w 
 
 
 ^ 
 
 
 
 T 
 
 
 
 x 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 e 
 
 
 
 
 
 w 
 
 
 ^ 
 
 
 
 T 
 
 
 
 x 
 
 
 
 
 
 1 
 
 
 + 
 
 
 
 e 
 
 
 
 
 
 w 
 
 
 ^ 
 
 
 
 T 
 
 
 
 x 
 
 
 
 
 
 
 
 
 
 
 ] 
 
 
 
 
 
 
 
 
 
 ( 
 
 
 4 
 
 
 ) 
 
 
 
 
 
 
 
 \begin{aligned} h(x) &=\frac{1}{e^{W\_{1}^{T} x}+e^{W\_{2}^{T} x}}\left[\begin{array}{c} e^{W\_{1}^{T} x} \\ e^{W\_{2}^{T} x} \end{array}\right] & (1)\\ &=\frac{1}{e^{0^{T} x}+e^{\left(W\_{2}-W\_{1}\right)^{T} x}}\left[\begin{array}{c} e^{0^{T} x} \\ e^{\left(W\_{2}-W\_{1}\right)^{T} x} \end{array}\right] & (2) \\ &=\frac{1}{1+e^{\left(W\_{2}-W\_{1}\right)^{T} x}}\left[\begin{array}{c} 1 \\ e^{\left(W\_{2}-W\_{1}\right)^{T} x} \end{array}\right] & (3) \\ &=\left[\begin{array}{c} \frac{1}{1+e^{\hat{w}^{T} x}} \\ \frac{e^{\hat{w}^{T} x}}{1+e^{\hat{w}^{T} x}} \end{array}\right] & (4) \end{aligned} 
 
 
 h(x)​=eW1T​x+eW2T​x1​[eW1T​xeW2T​x​]=e0Tx+e(W2​−W1​)Tx1​[e0Txe(W2​−W1​)Tx​]=1+e(W2​−W1​)Tx1​[1e(W2​−W1​)Tx​]=[1+ew^Tx1​1+ew^Txew^Tx​​]​(1)(2)(3)(4)​


  对数几率回归是多分类对数几率回归在 K = 2 时候的特例,也可以看到多分类对数几率回归的权重系数具有冗余的性质,即权重系数同时改变相同的值时,对最后的预测结果不影响。


## 四、代码实现


使用 Python 实现多分类对数几率回归算法(梯度下降法):



import numpy as np

def dcost(X, y, w):
“”"
多分类对数几率回归的代价函数的梯度

[外链图片转存中…(img-a5gSGYF5-1715825783224)]
[外链图片转存中…(img-zHKXp4Cn-1715825783224)]

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值