机器学习算法2_逻辑回归

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+ezi1(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 ) &lt; 0.5 1 h w ( x ) ≥ 0.5 y_i = \left\{\begin{matrix} 0 &amp; h_w(x) &lt; 0.5\\ 1 &amp; 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=1m[yilog(hw(xi))+(1yi)log(1hw(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 wJ=m1XT(hw(x)y)(5)
得到梯度的方向后,会定义一个 常数 α \alpha α (学习率 Learning Rate),执行权重更新:
(6) w ← w − α ∂ J ∂ w w \leftarrow w - \alpha \frac{\partial{J}}{\partial{w}} \tag6 wwαwJ(6)

如下图,每次更新 w 0 w_0 w0 w 1 w_1 w1, w 2 w_2 w2 … 直到获得最优解w*

不断更新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 wwαm1XT(hw(x)y)(7)

1.2.4 性能度量

【 占位 - todo 】

2 Softmax

2.1 概念

  • 处理多分类问题
  • 应用于分类任务的输出层

2.2 推导方法

2.2.1 模型

数据集
(8) { ( x 1 , y 1 ) , ⋯ &ThinSpace; , ( 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 , ⋯ &ThinSpace; , 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 的计算过程

CSDN图标

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+e3e320+2.7+0.05200.88p(y2)=ez1+ez2+ez3ez2=e3+e1+e3e120+2.7+0.052.70.12p(y3)=ez1+ez2+ez3ez3=e3+e1+e3e320+2.7+0.050.050

∑ 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θlTxi1eθ1Txieθ2Txieθ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 ) &amp;= -\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 ] \\ &amp;= - \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 ] \\ &amp;= -\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=1mj=1k1{yi=j} logl=1keθlTxieθjTxi]=m1[i=1m(1yi)log(1hθ(xi))+yilog(hθ(xi))]=m1[i=1mj=1k1{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 神经网络

6 疑问

  1. 逻辑回归的对数损失函数为什么是凸函数,要用梯度下降算法??
    可以参考这两篇文章
    机器学习总结之逻辑回归Logistic Regression
    Proofs you probably weren’t taught
  2. 逻辑回归和Softmax回归除了梯度下降的方法,还有没有其他的求解方法?

参考资料

逻辑回归
第三章_线性模型:对数几率回归
逻辑回归算法面经
详解softmax函数以及相关求导过程
softmax 损失函数以及梯度推导计算
简单易懂的softmax交叉熵损失函数求导
Softmax回归
Logistic and Softmax Regression (逻辑回归和Softmax回归)

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值