Logistic回归和Softmax回归属于机器学习和深度学习中比较经典和基础的两个算法,许多优秀的模型中都使用到了这两个算法。所以这周打算整理和介绍一下Logistic回归和Softmax回归。

线性回归

既然这两个算法中都有“回归”二字,因此我们有必要先复习一下回归(regression)问题。回归问题的形象表述如下,假设我们有一批带标记的样本数据 { ( x ( 1 ) , y ( 1 ) ) , . . . , ( x ( m ) , y ( m ) ) } \{(x^{(1)},y^{(1)}),...,(x^{(m)},y^{(m)})\} {(x(1),y(1)),...,(x(m),y(m))},其中 x ( i ) ∈ R m + 1 x^{(i)}\in R^{m+1} x(i)∈Rm+1是 m + 1 m+1 m+1维特征向量( x 0 ( i ) = 1 x_0^{(i)}=1 x0(i)​=1表示偏置项); y ( i ) ∈ R y^{(i)}\in R y(i)∈R是特征向量 x ( i ) x^{(i)} x(i)对应的目标值。我们期望找到一个函数: y = h ( x ) y=h(x) y=h(x)使得 y ( i ) ≈ h ( x ( i ) ) y^{(i)}\approx h(x^{(i)}) y(i)≈h(x(i))对每个样本数据都成立,这就是回归问题的目标。当然 h ( x ) h(x) h(x)可以选择很多种类型,从方便计算的角度,我们通常选择线性函数类
h θ ( x ) = ∑ j θ j x j = θ T x h_\theta(x)=\sum_j\theta_jx_j=\theta^Tx hθ​(x)=j∑​θj​xj​=θTx

表示我们的目标函数, θ \theta θ表示函数 h θ ( x ) h_\theta(x) hθ​(x)依赖参数 θ \theta θ,从而得到了线性回归(Linear Regression)。为了找到最优参数 θ \theta θ,循着我们的目标,我们定义目标值 y ( i ) y^{(i)} y(i)与预测值 h θ ( x ( i ) ) h_\theta(x^{(i)}) hθ​(x(i))之间的误差为损失函数,并使之最小化。通常我们采用梯度下降法,在参数上迭代寻找最优参数。
线性回归虽然简单,但是它是许多复杂算法的基础,甚至可以认为线性回归是机器学习任务的本质,比如神经网络也是对线性值的处理组合等。

Logistic回归

Logistic回归的样本数据集同样可以表示为 { ( x ( 1 ) , y ( 1 ) ) , . . . , ( x ( m ) , y ( m ) ) } \{(x^{(1)},y^{(1)}),...,(x^{(m)},y^{(m)})\} {(x(1),y(1)),...,(x(m),y(m))},其中 x ( i ) ∈ R m + 1 x^{(i)}\in R^{m+1} x(i)∈Rm+1是 m + 1 m+1 m+1维特征向量( x 0 ( i ) = 1 x_0^{(i)}=1 x0(i)​=1表示偏置项);但是 y ( i ) ∈ { 0 , 1 } y^{(i)}\in \{0,1\} y(i)∈{0,1}只取二值。因此Logistic回归是针对二分类问题的算法。因此我们需要对目标函数 y = h θ ( x ) y=h_\theta(x) y=hθ​(x)稍作修改,将预测值改为,预测属于“1”类或“0”类的概率。
p ( y = 1 ∣ x ) = h θ ( x ) = 1 1 + e x p ( − θ T x ) = σ ( θ T x ) p ( y = 0 ∣ x ) = 1 − p ( y = 1 ∣ x ) = 1 − h θ ( x ) p(y=1|x)=h_\theta(x)=\frac{1}{1+exp(-\theta^Tx)}=\sigma(\theta^Tx)\\ p(y=0|x)=1-p(y=1|x)=1-h_\theta(x) p(y=1∣x)=hθ​(x)=1+exp(−θTx)1​=σ(θTx)p(y=0∣x)=1−p(y=1∣x)=1−hθ​(x)

可以看到Logistic回归只是在线性回归的结果值外面套了一层Sigmoid函数,将 θ T x \theta^Tx θTx的值压缩到[0,1]区间,将其解释为概率(并非真正的随机性概率)。因此我们希望选择的参数 θ \theta θ,当样本 x x x属于类“1”时, p ( y = 1 ∣ x ) = h θ ( x ) p(y=1|x)=h_\theta(x) p(y=1∣x)=hθ​(x)尽可能大;当样本 x x x属于类“0”时, p ( y = 0 ∣ x ) = 1 − h θ ( x ) p(y=0|x)=1-h_\theta(x) p(y=0∣x)=1−hθ​(x)尽可能大。
观察上面的两个概率函数,我们可以将其更加简洁的表示为一个函数:
p ( y ∣ x ; θ ) = ( h θ ( x ) ) y ⋅ ( 1 − h θ ( x ) ) 1 − y p(y|x;\theta)=(h_\theta(x))^y\centerdot(1-h_\theta(x))^{1-y} p(y∣x;θ)=(hθ​(x))y⋅(1−hθ​(x))1−y

所以当我们有我们有 m m m个相互独立的训练样本时,我们期望 m m m个样本的概率预测值的连乘积尽可能大,我们称这个函数为似然函数 L ( θ ) L(\theta) L(θ)
L ( θ ) = Π i = 1 m p ( y ( i ) ∣ x ( i ) ; θ ) = Π i = 1 m ( h θ ( x ( i ) ) ) y ( i ) ⋅ ( 1 − h θ ( x ( i ) ) ) 1 − y ( i ) L(\theta)=\Pi_{i=1}^mp(y^{(i)}|x^{(i)};\theta)=\Pi_{i=1}^m(h_\theta(x^{(i)}))^{y^{(i)}}\centerdot(1-h_\theta(x^{(i)}))^{1-y^{(i)}} L(θ)=Πi=1m​p(y(i)∣x(i);θ)=Πi=1m​(hθ​(x(i)))y(i)⋅(1−hθ​(x(i)))1−y(i)

似然函数的并不易求解,通常我们在其外面套一个单调递减的函数 − l o g ( x ) -log(x) −log(x),当 − l o g ( L ( θ ) ) -log(L(\theta)) −log(L(θ))取得极小值时, L ( θ ) L(\theta) L(θ)同时就取得了极大值。我们称这个此时的目标函数为负对数似然函数 J ( θ ) J(\theta) J(θ)
J ( θ ) = − l o g ( L ( θ ) ) = − ∑ i = 1 m { y ( i ) l o g ( h θ ( x ( i ) ) ) + ( 1 − y ( i ) ) l o g ( 1 − h θ ( x ( i ) ) ) } J(\theta)=-log(L(\theta))=-\sum_{i=1}^m\{y^{(i)}log(h_\theta(x^{(i)}))+(1-y^{(i)})log(1-h_\theta(x^{(i)}))\} J(θ)=−log(L(θ))=−i=1∑m​{y(i)log(hθ​(x(i)))+(1−y(i))log(1−hθ​(x(i)))}

同样我们可以利用梯度下降算法来迭代寻找最佳参数 θ \theta θ。

Softmax回归

Softmax也是用来解决分类问题的,不过Softmax是用来解决多分类问题的(分类类别多于二类)。所以Softmax回归的样本数据集同样可以表示为 { ( x ( 1 ) , y ( 1 ) ) , . . . , ( x ( m ) , y ( m ) ) } \{(x^{(1)},y^{(1)}),...,(x^{(m)},y^{(m)})\} {(x(1),y(1)),...,(x(m),y(m))},其中 x ( i ) ∈ R m x^{(i)}\in R^m x(i)∈Rm是 m m m维特征向量;但是 y ( i ) ∈ { 1 , 2 , . . . , K } y^{(i)}\in \{1,2,...,K\} y(i)∈{1,2,...,K}有 k k k种类别取值可能。
因此当给定一个 x ( i ) x^{(i)} x(i)时,我们想计算出 y ( i ) y^{(i)} y(i)属于每一个类别 j j j的概率 p ( y ( i ) = j ∣ x ; θ ) p(y^{(i)}=j|x;\theta) p(y(i)=j∣x;θ),因此我们需要 k k k个线性回归函数并将其值压缩到区间[0,1],所以此时的 h θ ( x ) h_\theta(x) hθ​(x)输出是一个 k k k维向量(向量所有元素之和为1)。具体的,我们可以将 h θ ( x ) h_\theta(x) hθ​(x)表示如下:
h θ ( x ) = [ p ( y = 1 ∣ x ; θ ) p ( y = 2 ∣ x ; θ ) ⋮ p ( y = K ∣ x ; θ ) ] = 1 ∑ j = 1 K e x p ( θ j T ( x ) ) [ e x p ( θ 1 T ( x ) ) e x p ( θ 2 T ( x ) ) ⋮ e x p ( θ K T ( x ) ) ] h_\theta(x)= \left[ \begin{matrix} p(y=1|x;\theta)\\ p(y=2|x;\theta)\\ \vdots\\ p(y=K|x;\theta) \end{matrix} \right] =\frac{1}{\sum_{j=1}^Kexp(\theta_j^T(x))} \left[ \begin{matrix} exp(\theta_1^T(x))\\ exp(\theta_2^T(x))\\ \vdots\\ exp(\theta_K^T(x)) \end{matrix} \right] hθ​(x)=⎣⎢⎢⎢⎡​p(y=1∣x;θ)p(y=2∣x;θ)⋮p(y=K∣x;θ)​⎦⎥⎥⎥⎤​=∑j=1K​exp(θjT​(x))1​⎣⎢⎢⎢⎡​exp(θ1T​(x))exp(θ2T​(x))⋮exp(θKT​(x))​⎦⎥⎥⎥⎤​

其中, θ j ∈ R n + 1 ( j = 1 , 2 , . . . , K ) \theta_j\in R^{n+1}(j=1,2,...,K) θj​∈Rn+1(j=1,2,...,K)表示每一个线性回归函数的参数。 1 ∑ j = 1 K e x p ( θ j T ( x ) ) \frac{1}{\sum_{j=1}^Kexp(\theta_j^T(x))} ∑j=1K​exp(θjT​(x))1​用来对概率分布进行归一化,使得概率之和等于1。
为了将 h θ ( x ) h_\theta(x) hθ​(x)的形式与上面的线性回归和Logistic回归统一,我们可以将 θ \theta θ写成矩阵的形式:
θ = [ ∣ ∣ ∣ ∣ θ 1 θ 2 ⋯ θ K ∣ ∣ ∣ ∣ ] ⇒ θ T = [ —— θ 1 T —— —— θ 2 T —— —— ⋯ —— —— θ K T —— ] ⇓ h θ ( x ) = s o f t m a x ( θ T x ) \theta= \left[ \begin{matrix} \big| & \big| & \big| & \big|\\ \theta_1 & \theta_2 & \cdots & \theta_K\\ \big| & \big| & \big| & \big| \end{matrix} \right] \Rightarrow \theta^T= \left[ \begin{matrix} \verb|——| & \theta_1^T & \verb|——|\\ \verb|——| & \theta_2^T & \verb|——|\\ \verb|——| & \cdots & \verb|——|\\ \verb|——| & \theta_K^T & \verb|——| \end{matrix} \right]\\ \Downarrow\\ h_\theta(x)=softmax(\theta^Tx) θ=⎣⎡​∣∣​θ1​∣∣​​∣∣​θ2​∣∣​​∣∣​⋯∣∣​​∣∣​θK​∣∣​​⎦⎤​⇒θT=⎣⎢⎢⎡​————————​θ1T​θ2T​⋯θKT​​————————​⎦⎥⎥⎤​⇓hθ​(x)=softmax(θTx)

下面需要定义softmax回归的代价函数,为了方便表述,函数记号 1 { ⋅ } 1\{\cdot\} 1{⋅}表示示性函数,其取值规则如下:
{ 1 { 表 达 式 值 为 真 } = 1 1 { 表 达 式 值 为 假 } = 0 \begin{cases} 1\{表达式值为真\}=1\\ 1\{表达式值为假\}=0 \end{cases} {1{表达式值为真}=11{表达式值为假}=0​

同样的我们希望概率似然函数的值尽可能大
max ⁡ θ J ( θ ) = Π i = 1 m Π k = 1 K ( s o f t m a x ( θ k T x ( i ) ) ) 1 { y ( i ) = k } \max_\theta \quad J(\theta)=\Pi_{i=1}^m\Pi_{k=1}^K(softmax(\theta_k^Tx^{(i)}))^{1\{y^{(i)}=k\}} θmax​J(θ)=Πi=1m​Πk=1K​(softmax(θkT​x(i)))1{y(i)=k}

在外面套上 − l o g ( x ) -log(x) −log(x)函数,经过化简得
min ⁡ θ J ( θ ) = − ∑ i = 1 m ∑ k = 1 K 1 { y ( i ) = k } l o g ( s o f t m a x ( θ k T x ( i ) ) ) \min_\theta \quad J(\theta)=-\sum_{i=1}^m\sum_{k=1}^K1\{y^{(i)}=k\}log(softmax(\theta_k^Tx^{(i)})) θmin​J(θ)=−i=1∑m​k=1∑K​1{y(i)=k}log(softmax(θkT​x(i)))

采用梯度下降法,迭代求解 J ( θ ) J(\theta) J(θ)的极小值。
∂ J ( θ ) ∂ θ l t = − ∂ ∂ θ l t { ∑ i = 1 m ∑ k = 1 K 1 { y ( i ) = k } l o g e x p ( θ l T x ( i ) ) ∑ j = 1 K e x p ( θ j T x ( i ) ) } = − ∑ i = 1 m ∑ k = 1 K ∂ ∂ θ l t ( 1 { y ( i ) = k } l o g e x p ( θ l T x ( i ) ) ∑ j = 1 K e x p ( θ j T x ( i ) ) ) = − ∑ i = 1 m ∑ k = 1 K ∂ ∂ θ l t ( 1 { y ( i ) = k } ( θ l T x ( i ) − l o g ( ∑ j = 1 K e x p ( θ j T x ( i ) ) ) ) = − ∑ i = 1 m ∑ k = 1 K ∂ ∂ θ l t ( 1 { y ( i ) = k } ( θ l T x ( i ) ) ) − ∂ ∂ θ l t ( 1 { y ( i ) = k } l o g ( ∑ j = 1 K e x p ( θ j T x ( i ) ) ) ) = − ∑ i = 1 m ( ( 1 { y ( i ) = l } ⋅ x t ( i ) ) − ( p ( y ( i ) = l ∣ x ( i ) ; θ ) ⋅ x t ( i ) ) ) = − ∑ i = 1 m x t ( i ) ⋅ ( 1 { y ( i ) = l } − p ( y ( i ) = l ∣ x ( i ) ; θ ) ) \begin{aligned} \frac{\partial J(\theta)}{\partial \theta_{lt}} =& -\frac{\partial}{\partial\theta_{lt}} \{ \sum_{i=1}^m\sum_{k=1}^K1\{y^{(i)}=k\}log\frac{exp(\theta_l^Tx^{(i)})}{\sum_{j=1}^Kexp(\theta_j^Tx^{(i)})} \}\\ =& -\sum_{i=1}^m\sum_{k=1}^K\frac{\partial }{\partial \theta_{lt}}\bigg(1\{y^{(i)}=k\}log\frac{exp(\theta_l^Tx^{(i)})}{\sum_{j=1}^Kexp(\theta_j^Tx^{(i)})}\bigg)\\ =& -\sum_{i=1}^m\sum_{k=1}^K\frac{\partial}{\partial \theta_{lt}}\bigg(1\{y^{(i)}=k\}\big(\theta_l^Tx^{(i)}-log(\sum_{j=1}^Kexp(\theta_j^Tx^{(i)})\big)\bigg)\\ =& -\sum_{i=1}^m\sum_{k=1}^K\frac{\partial}{\partial \theta_{lt}}\big(1\{y^{(i)}=k\}(\theta_l^Tx^{(i)})\big) -\frac{\partial}{\partial \theta_{lt}}\bigg(1\{y^{(i)}=k\}log\big(\sum_{j=1}^Kexp(\theta_j^Tx^{(i)})\big)\bigg)\\ =& -\sum_{i=1}^m\bigg(\big(1\{y^{(i)}=l\}\cdot x_t^{(i)}\big)-\big(p(y^{(i)}=l|x^{(i)};\theta)\cdot x_t^{(i)}\big)\bigg)\\ =& -\sum_{i=1}^m x_t^{(i)}\cdot \big(1\{y^{(i)}=l\}-p(y^{(i)}=l|x^{(i)};\theta)\big) \end{aligned} ∂θlt​∂J(θ)​======​−∂θlt​∂​{i=1∑m​k=1∑K​1{y(i)=k}log∑j=1K​exp(θjT​x(i))exp(θlT​x(i))​}−i=1∑m​k=1∑K​∂θlt​∂​(1{y(i)=k}log∑j=1K​exp(θjT​x(i))exp(θlT​x(i))​)−i=1∑m​k=1∑K​∂θlt​∂​(1{y(i)=k}(θlT​x(i)−log(j=1∑K​exp(θjT​x(i))))−i=1∑m​k=1∑K​∂θlt​∂​(1{y(i)=k}(θlT​x(i)))−∂θlt​∂​(1{y(i)=k}log(j=1∑K​exp(θjT​x(i))))−i=1∑m​((1{y(i)=l}⋅xt(i)​)−(p(y(i)=l∣x(i);θ)⋅xt(i)​))−i=1∑m​xt(i)​⋅(1{y(i)=l}−p(y(i)=l∣x(i);θ))​

将所有上式写成向量的形式有
∇ θ j J ( θ ) = − ∑ i = 1 m x ( i ) ⋅ ( 1 { y ( i ) = l } − p ( y ( i ) = l ∣ x ( i ) ; θ ) ) \nabla_{\theta_j}J(\theta)=-\sum_{i=1}^mx^{(i)}\cdot \big(1\{y^{(i)}=l\}-p(y^{(i)}=l|x^{(i)};\theta)\big) ∇θj​​J(θ)=−i=1∑m​x(i)⋅(1{y(i)=l}−p(y(i)=l∣x(i);θ))

Softmax回归之所以要取指数,第一是为了契合max,使大的更大,这样就能从错误中快速学习;同时指数函数也方便求导。
经过上面的推导,我们可以发现,当类别数 k = 2 k=2 k=2时,Softmax回归退化为Logistic回归。所以Logistic回归是Softmax回归的一种特殊情况。
既然Softmax回归是一种多分类算法,那实际应用中,我们是选择Softmax分类器,还是构造 k k k个独立的Logistic二分类器呢?通常情况下,这取决于分类类别是否互斥,如果互斥,我们一般采用Softmax回归;如果分类类别不是互斥的,一般采用 k k k个Logistic回归分类器更为合适。这样,对于每个类别,我们的算法可以分别判断它是否属于各个类别。

参考文献

ufldl-Softmax回归

Logistic回归与Softmax回归相关推荐

  1. Logistic and Softmax Regression (逻辑回归和Softmax回归)

    1. 简介 逻辑回归和Softmax回归是两个基础的分类模型,虽然听名字以为是回归模型,但实际我觉得他们也有一定的关系.逻辑回归,Softmax回归以及线性回归都是基于线性模型,它们固定的非线性的基函 ...

  2. 【机器学习】对数线性模型之Logistic回归、SoftMax回归和最大熵模型

    来源 | AI小白入门 作者 | 文杰 编辑 | yuquanle 完整代码见:原文链接 1. Logistic回归 ​ 分类问题可以看作是在回归函数上的一个分类.一般情况下定义二值函数,然而二值函数 ...

  3. Logistic 回归与 Softmax 回归在解决二分类问题的区别

    Logistic 回归与 Softmax 回归在解决二分类问题的区别 在学习邱锡鹏老师的<神经网络与深度学习>的Softmax回归时,他在最后提出了此问题. 久经思考后,没想出来有什么区别 ...

  4. 生成模型 VS. 判别模型 Logistic 回归 VS. Softmax 回归

    生成模型 VS. 判别模型 从概率分布的角度考虑,对于一堆样本数据,每个均有特征Xi对应分类标记yi. 生成模型:学习得到联合概率分布P(x,y),即特征x和标记y共同出现的概率,然后求条件概率分布. ...

  5. 线性回归、Logistic回归和softmax回归

    区别: (1)输出:线性回归的输出是一个数值,适用于回归问题,如房屋预测价格.气温.销售额. logistic回归.softmax的输出是一个标签,适用于分类问题,如图像分类等. (2)支持类别:Lo ...

  6. Logistic回归与Softmax回归比较

    Logistic回归与Softmax回归比较 在机器学习中,Logistic回归和Softmax回归都是常见的分类算法.它们在很多方面都有相似之处,但也存在一些不同之处.本文将介绍这两种模型的区别,并 ...

  7. 机器学习--logistic回归和softmax回归

    logistic回归和softmax回归放在一起总结一下,其实softmax就是logistic的推广,logistic一般用于二分类,而softmax是多分类. logistic回归虽然也是叫回归, ...

  8. logistic回归和softmax回归

    logistic回归 在 logistic 回归中,我们的训练集由  个已标记的样本构成:.由于 logistic 回归是针对二分类问题的,因此类标记 . 假设函数(hypothesis functi ...

  9. Scikit-Learn 机器学习笔记 -- 线性回归、逻辑回归、softmax回归

    Scikit-Learn 机器学习笔记 – 线性回归.逻辑回归.softmax回归 参考文档: handson-ml import numpy as np from matplotlib import ...

最新文章

  1. php写账户冻结_线上开户指南(首次入金2万,账户总净资产不得低于1万,交易佣金万三,最低25,合单,没平台费)入金后才会有账户号...
  2. 小米面试题:单词搜索
  3. 【David Silver强化学习公开课】-5:Model-Free Control
  4. 中石油训练赛 - The King’s Ups and Downs(记忆化搜索)
  5. c语言p1口转向灯实验,实验三模拟汽车左右转向灯控制.doc
  6. 让0球平局怎么算_半场16中5+0助攻+空气球,欧文威化,看看众美媒怎么说?
  7. sdut 数据结构实验图论一:基于邻接矩阵的广度优先搜索遍历
  8. OK6410裸机调试
  9. 软件测试适合女生学吗?
  10. 4、Cocos2dx 3.0游戏开发找小三之Hello World 分析
  11. I00013 鸡兔同笼
  12. uigetfile命令的应用
  13. 进程调度算法-先来先服务、最短作业优先调度算法和高响应比优先调度算法
  14. PySpark fold foldByKey用法
  15. fastlane二开java_从入门开始使用Fastlane
  16. Windows中redis设置密码
  17. 拉姆达999城市电话114 V3.3.1
  18. Twitter API
  19. 线性代数1.3行列式的按行展开
  20. HFS安装PHP,Http-File-Server 一个好用的HFS模版,界面非常漂亮,功能也很齐全。 WEB(ASP,PHP,...) 238万源代码下载- www.pudn.com...

热门文章

  1. MPTCP 源码分析(一) MPTCP的三次握手
  2. GWAS分析中SNP解释百分比PVE | 第三篇,MLM模型中如何计算PVE?
  3. c语言双重for循环流程图_循环三巨头—之for,while与do while
  4. Centos下堡垒机Jumpserver V3.0环境部署完整记录(1)-安装篇
  5. CF723D. Lakes in Berland[DFS floodfill]
  6. insert mysql int类型_注意在insert插入数据库时的int类型问题
  7. 构建企业级DNS系统(六)DNS动态更新
  8. 微信小程序从入坑到放弃二十九:一个小场景搞懂冒泡事件bindtap和catchtap的区别
  9. 基于SSH开发学院图书馆管理系统 课程设计 大作业 毕业设计
  10. oracle当前时间减去记录的生成时间差值计算