1 逻辑回归
1.1 概念
- 处理二分类问题
- 逻辑回归是广义的线性回归
- 将数据集带入Sigmoid分布函数,得到的结果大于0.5则判断为1,否则为0
1.2 推导方法
1.2.1 模型 - Sigmoid 分布函数
数据集:
(1)
z
i
=
w
0
x
0
+
w
1
x
1
+
⋯
+
w
i
x
i
=
w
T
x
z_{i} = {w_0}{x_0} + {w_1}{x_1} + \cdots + {w_i}{x_i} = {w^T}x \tag1
zi=w0x0+w1x1+⋯+wixi=wTx(1)
z
i
z_i
zi 与线性回归模型很相似,一般情况下:
w
0
=
b
w_0=b
w0=b,
x
0
=
1
x_0=1
x0=1,也就是对应着线性函数中的截距项。
Sigmoid 分布函数:
(2)
f
(
z
i
)
=
1
1
+
e
−
z
i
f(z_{i})=\frac{1}{1+e^{-z_{i}}} \tag2
f(zi)=1+e−zi1(2)
对每一个特征
x
x
x 乘上系数
w
w
w,然后通过 Sigmoid 函数计算
f
(
z
)
f(z)
f(z) 值得到概率。其中,
z
z
z 可以被看作是分类边界,即将公式(1)代入公式(2)得到:
(3)
h
w
(
x
)
=
f
(
w
T
x
)
=
1
1
+
e
w
T
x
h_{w}(x) = f({w^T}x) = \frac{1}{1+e^{{w^T}x}} \tag3
hw(x)=f(wTx)=1+ewTx1(3)
Sigmoid 函数图像:
(4) y i = { 0 h w ( x ) < 0.5 1 h w ( x ) ≥ 0.5 y_i = \left\{\begin{matrix} 0 & h_w(x) < 0.5\\ 1 & h_w(x) \geq 0.5 \end{matrix}\right. \tag4 yi={01hw(x)<0.5hw(x)≥0.5(4)
1.2.2 目标函数 - 对数损失函数
(5)
J
(
w
)
=
−
1
m
∑
i
=
1
m
[
y
i
log
(
h
w
(
x
i
)
)
+
(
1
−
y
i
)
log
(
1
−
h
w
(
x
i
)
)
]
J(w) = - \frac{1}{m} \sum_{i=1}^m \left [ y_i \log (h_{w}(x_i)) + (1-y_i) \log(1-h_{w}(x_i)) \right ]\tag5
J(w)=−m1i=1∑m[yilog(hw(xi))+(1−yi)log(1−hw(xi))](5)
目标就是求得 公式(5) 对数损失函数的 最小值
由于非凸函数,不能像最小二乘法求得全局最小值,所以需要用到梯度下降算法求解
1.2.3 求解方法
1.2.3.1 梯度下降法
针对公式(5)求导,得到梯度下降的方向
(5)
∂
J
∂
w
=
1
m
X
T
(
h
w
(
x
)
−
y
)
\frac{\partial{J}}{\partial{w}} = \frac{1}{m}X^T(h_{w}(x)-y) \tag5
∂w∂J=m1XT(hw(x)−y)(5)
得到梯度的方向后,会定义一个 常数
α
\alpha
α (学习率 Learning Rate),执行权重更新:
(6)
w
←
w
−
α
∂
J
∂
w
w \leftarrow w - \alpha \frac{\partial{J}}{\partial{w}} \tag6
w←w−α∂w∂J(6)
如下图,每次更新 w 0 w_0 w0, w 1 w_1 w1, w 2 w_2 w2 … 直到获得最优解w*
(7) w ⟸ w − α 1 m X T ( h w ( x ) − y ) w {\color{Magenta} \Longleftarrow} w - \alpha \frac{1}{m}X^T(h_{w}(x)-y) \tag7 w⟸w−αm1XT(hw(x)−y)(7)
1.2.4 性能度量
【 占位 - todo 】
2 Softmax
2.1 概念
- 处理多分类问题
- 应用于分类任务的输出层
2.2 推导方法
2.2.1 模型
数据集:
(8)
{
(
x
1
,
y
1
)
,
⋯
 
,
(
x
i
,
y
i
)
}
\left \{ \left ( x_1,y_1 \right ), \cdots ,\left ( x_i,y_i \right ) \right \} \tag8
{(x1,y1),⋯,(xi,yi)}(8)
(9) z i = w i 0 x i + w i 1 x i + ⋯ + w i k x i = w k T x i z_i = {w_{i0}}{x_i} + {w_{i1}}{x_i} + \cdots + {w_{ik}}{x_i} = {w_{k}^{T}}x_i \tag9 zi=wi0xi+wi1xi+⋯+wikxi=wkTxi(9)
其实 y i y_i yi 这里是类别,有 { 1 , ⋯   , k } \left \{ 1, \cdots, k \right \} {1,⋯,k}个类别,通过 Softmax函数 求得每个类别的概率:
(10) p ( y i ) = e z i ∑ i = 1 k e z i p(y_i) = \frac{e^{z_i}}{\sum_{i=1}^{k} e^{z_i}} \tag{10} p(yi)=∑i=1keziezi(10)
公式(9) 这里为什么是 w k T x i w_{k}^{T}x_i wkTxi,这里演示一下 z i z_i zi 的计算过程
z 1 = w 11 x 1 + w 21 x 2 + w 31 x 3 z 2 = w 12 x 1 + w 22 x 2 + w 33 x 3 z 3 = w 13 x 1 + w 23 x 2 + w 33 x 3 z_1 = w_{11}x_1 + w_{21}x_2 + w_{31}x_3 \\ z_2 = w_{12}x_1 + w_{22}x_2 + w_{33}x_3 \\ z_3 = w_{13}x_1 + w_{23}x_2 + w_{33}x_3 z1=w11x1+w21x2+w31x3z2=w12x1+w22x2+w33x3z3=w13x1+w23x2+w33x3
公式(10), p ( y i ) p(y_i) p(yi) 计算演示,注意:图中的 y i y_i yi 应该是 p ( y i ) p(y_i) p(yi)
p ( y 1 ) = e z 1 e z 1 + e z 2 + e z 3 = e 3 e 3 + e 1 + e − 3 ≈ 20 20 + 2.7 + 0.05 ≈ 0.88 p ( y 2 ) = e z 2 e z 1 + e z 2 + e z 3 = e 1 e 3 + e 1 + e − 3 ≈ 2.7 20 + 2.7 + 0.05 ≈ 0.12 p ( y 3 ) = e z 3 e z 1 + e z 2 + e z 3 = e − 3 e 3 + e 1 + e − 3 ≈ 0.05 20 + 2.7 + 0.05 ≈ 0 p( y_1) =\frac{e^{z_1}}{e^{z_1} +e^{z_2}+e^{z_3}} = \frac{e^3}{e^3 +e^1+e^{-3}} \approx \frac{20}{20 + 2.7 + 0.05} \approx 0.88 \\ p(y_2) =\frac{e^{z_2}}{e^{z_1} +e^{z_2}+e^{z_3}} = \frac{e^1}{e^3 +e^1+e^{-3}} \approx \frac{2.7}{20 + 2.7 + 0.05} \approx 0.12 \\ p(y_3) =\frac{e^{z_3}}{e^{z_1} +e^{z_2}+e^{z_3}} = \frac{e^{-3}}{e^3 +e^1+e^{-3}} \approx \frac{0.05}{20 + 2.7 + 0.05} \approx 0 p(y1)=ez1+ez2+ez3ez1=e3+e1+e−3e3≈20+2.7+0.0520≈0.88p(y2)=ez1+ez2+ez3ez2=e3+e1+e−3e1≈20+2.7+0.052.7≈0.12p(y3)=ez1+ez2+ez3ez3=e3+e1+e−3e−3≈20+2.7+0.050.05≈0
∑ p ( y i ) = p ( y 1 ) + p ( y 2 ) + p ( y 3 ) = 0.88 + 0.12 + 0 = 1 \sum p(y_i) = p(y_1) + p(y_2) + p(y_3) = 0.88 + 0.12 + 0 = 1 ∑p(yi)=p(y1)+p(y2)+p(y3)=0.88+0.12+0=1
看着计算过程,我们不难得到,我们的 模型函数:
(11) h w ( x i ) = [ p ( y i = 1 ∣ x i ; θ ) p ( y i = 2 ∣ x i ; θ ) ⋯ p ( y i = k ∣ x i ; θ ) ] = 1 ∑ l = 1 k e θ l T x i [ e θ 1 T x i e θ 2 T x i ⋯ e θ k T x i ] h_{w}(x_i) =\begin{bmatrix} p(y_i = 1 \ | \ x_i \ ; \ \theta ) \\ p(y_i = 2 \ | \ x_i \ ; \ \theta ) \\ \cdots \\ p(y_i = k \ | \ x_i \ ; \ \theta ) \end{bmatrix} = \frac{1}{\sum_{l=1}^{k}e^{\theta _{l}^{T}x_i}}\begin{bmatrix} e^{\theta _{1}^{T}x_i} \\ e^{\theta _{2}^{T}x_i} \\ \cdots \\ e^{\theta _{k}^{T}x_i} \end{bmatrix} \tag{11} hw(xi)=⎣⎢⎢⎡p(yi=1 ∣ xi ; θ)p(yi=2 ∣ xi ; θ)⋯p(yi=k ∣ xi ; θ)⎦⎥⎥⎤=∑l=1keθlTxi1⎣⎢⎢⎡eθ1Txieθ2Txi⋯eθkTxi⎦⎥⎥⎤(11)
2.2.2 目标函数 - loss函数
(12) J ( θ ) = − 1 m [ ∑ i = 1 m ∑ j = 1 k 1 { y i = j } log e θ j T x i ∑ l = 1 k e θ l T x i ] = − 1 m [ ∑ i = 1 m ( 1 − y i ) log ( 1 − h θ ( x i ) ) + y i log ( h θ ( x i ) ) ] = − 1 m [ ∑ i = 1 m ∑ j = 1 k 1 { y i = j } p ( y i = j ∣ x i ; θ ) ] \begin{aligned} J(\theta ) &= -\frac{1}{m} \left [\sum_{i=1}^m\sum_{j=1}^k 1 \left \{ y_i = j \right \} \ \log\frac{e^{\theta _{j}^{T}x_i}}{\sum_{l=1}^{k}e^{\theta _{l}^{T}x_i}} \right ] \\ &= - \frac{1}{m} \left [ \sum_{i=1}^m (1-y_i) \log(1-h_{\theta }(x_i)) + y_i \log (h_{\theta }(x_i)) \right ] \\ &= -\frac{1}{m} \left [\sum_{i=1}^m\sum_{j=1}^k 1 \left \{ y_i = j \right \} \ p(y_i = j \ | \ x_i \ ; \ \theta ) \right ] \tag{12} \end{aligned} J(θ)=−m1[i=1∑mj=1∑k1{yi=j} log∑l=1keθlTxieθjTxi]=−m1[i=1∑m(1−yi)log(1−hθ(xi))+yilog(hθ(xi))]=−m1[i=1∑mj=1∑k1{yi=j} p(yi=j ∣ xi ; θ)](12)
公式(12)中的 1 { y i = j } 1 \left \{ y_i = j \right \} 1{yi=j} 是一个指示性函数,即当大括号中的值为真时(即 y i = j y^i = j yi=j ),结果为1,否则为0
2.2.3 求解方法
2.2.3.1 梯度下降法
推导过程 可以参考 Softmax回归
这里不详细解释,过程可以参考 1.2.3.1 梯度下降法 理解
2.2.4 性能度量
【 占位 - todo 】
3 sklearn
3.1 逻辑回归
3.1.1 例子
from sklearn.linear_model import LogisticRegression
model = LogisticRegression(tol=0.001, max_iter=10000) # 设置数据解算精度和迭代次数
model.fit(x, y)
model.coef_, model.intercept_
3.1.2 参数说明
模型参数详解 Google的文档
3.2 Sofrmax回归
3.2.1 例子
【 占位 - todo 】
3.2.2 参数说明
【 占位 - todo 】
4 优缺点
【 占位 - todo 】
5 算法对比
5.1 逻辑回归 vs 线性回归
- 逻辑回归处理二分类问题
- 线性回归处理连续值问题
5.2 逻辑回归/Softmax回归 vs 神经网络
- 当k为2的时候,Softmax就是逻辑回归
- 神经网络是多分层的模型,逻辑回归/Softmax回归可以看作最简单的神经网络
https://blog.csdn.net/danieljianfeng/article/details/41901063
6 疑问
- 逻辑回归的对数损失函数为什么是凸函数,要用梯度下降算法??
可以参考这两篇文章
机器学习总结之逻辑回归Logistic Regression
Proofs you probably weren’t taught - 逻辑回归和Softmax回归除了梯度下降的方法,还有没有其他的求解方法?
参考资料
逻辑回归
第三章_线性模型:对数几率回归
逻辑回归算法面经
详解softmax函数以及相关求导过程
softmax 损失函数以及梯度推导计算
简单易懂的softmax交叉熵损失函数求导
Softmax回归
Logistic and Softmax Regression (逻辑回归和Softmax回归)