网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事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∑Nj=1∑K1j(yi)ln∑k=1KeWkTXieWjTXi)=∂Wj∂⎝⎛−i=1∑N⎝⎛1j(yi)ln∑k=1KeWkTXieWjTXi+l=j∑K1l(yi)ln∑k=1KeWkTXieWlTXi⎠⎞⎠⎞=∂Wj∂⎝⎛−i=1∑N⎝⎛1j(yi)(WjTXi−lnk=1∑KeWkTXi)+l=j∑K1l(yi)(WlTXi−lnk=1∑KeWkTXi)⎠⎞⎠⎞=−i=1∑N⎝⎛1j(yj)(Xi−∑k=1KeWkTXieWjTXiXi)+l=j∑K1l(yi)(0−∑k=1KeWkTXieWjTXiXi)⎠⎞=−i=1∑N(Xi(1j(yi)−j=1∑K1j(yi)∑k=1KeWkTXieWjTXi))=−i=1∑N(Xi(1j(yi)−∑k=1KeWkTXieWjTXi))(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=1KeWkTXieWjTXi)))=i=1∑N∂Wj∂(∑k=1KeWkTXieWjTXiXi)=i=1∑N(∑k=1KeWkTXi)2∑k=1KeWkTXieWjTXiXi−eWjTXieWjTXiXiXi=i=1∑N(∑k=1KeWkTXi)2∑k=jKeWkTXieWjTXiXiXiT(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)=eW1Tx+eW2Tx1[eW1TxeW2Tx]=e0Tx+e(W2−W1)Tx1[e0Txe(W2−W1)Tx]=1+e(W2−W1)Tx1[1e(W2−W1)Tx]=[1+ewTx11+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)=eW1Tx+eW2Tx1[eW1TxeW2Tx]=e0Tx+e(W2−W1)Tx1[e0Txe(W2−W1)Tx]=1+e(W2−W1)Tx1[1e(W2−W1)Tx]=[1+ew^Tx11+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行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!