博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
逻辑回归
阅读量:2240 次
发布时间:2019-05-09

本文共 4982 字,大约阅读时间需要 16 分钟。

逻辑回归推导

我们在讲逻辑回归推导前,先给大家介绍下损失函数

损失函数用于描述模型预测值与真实值的差距大小。一般对于回归问题的算法有—均值平方差(MSE)和交叉熵。

1、均值平方差

均值平方差(Mean Squared Error,MSE),也称“均方误差”,在神经网络中主要是表达预测值和真实值之间的差异,在数理统计中,均方误差是指参数估计值与参数真值之差平方的预期值。

2、交叉熵

交叉熵(crossentropy)也是loss算法的一种,一般用在分类问题上,表达意思为预测输入样本属于哪一类的概率。其表达式如下,其中y代表真实值分类(0或1), a代表预测值。

二分类情况下的公式:

C = − 1 m ∑ i = 1 m [ y l n ( a i ) + ( 1 − y ) l n ( 1 − a i ) ] C=-\frac{1}{m}\sum_{i=1}^{m}[{yln(a_{i}})+({1-y)ln(1-a_{i}})] C=m1i=1m[yln(ai)+(1y)ln(1ai)]
交叉熵也是值越小,代表预测结果越准。

3、损失算法的选取

损失函数的选取取决于输入标签数据的类型:

如果输入的实数、无界的值,损失函数使用均值平方差。

如果输入标签是位矢量(分类标志),使用交叉熵会更适合。

下面我们正式进入推导过程

假如我们得到线性回归如下:

f ( x ) = θ 0 + θ 1 x 1 + θ 2 x 2 + ⋅ ⋅ ⋅ + θ n x n f(x)=\theta _{0}+\theta _{1}x_{1} +\theta _{2}x_{2}+\cdot \cdot \cdot +\theta _{n}x_{n} f(x)=θ0+θ1x1+θ2x2++θnxn
线性回归是拟合函数,给我们提供的是一个预测值,值的范围是(-∞,+∞),如果我们想知道分布概率,这时候我们可以引入sigmoid函数,将 f ( x ) f(x) f(x)值 从(-∞,+∞)压缩到(0,1),

对线性可分样本,我们将 f ( x ) f(x) f(x) 代入sigmoid函数,即可得到:

Z = 1 1 + e − x = 1 1 + e − f ( x ) Z=\frac{1}{1+e^{-x}}=\frac{1}{1+e^{-f(x)}} Z=1+ex1=1+ef(x)1
在这里插入图片描述
这是 若 f(x)=0 ,则Z=0.5,

​ 若f(x)>0 ,则Z>0.5,我们将Z>0.5,分为1类,令y=1,

​ 若f(x)<0 ,则Z<0.5,我们将Z<0.5,分为0类,令y=0,

这里我们令

h ( x ) = Z = 1 1 + e − f ( x ) h(x)=Z=\frac{1}{1+e^{-f(x)}} h(x)=Z=1+ef(x)1
这时我们可得到概率模型
P ( x i ) = { h ( x i ) i f y = 1 1 − h ( x i ) i f y = 0 P(x_{i})=\left\{\begin{matrix} h(x_{i}) &if y=1 \\ 1-h(x_{i}) &if y=0 \end{matrix}\right. P(xi)={
h(xi)1h(xi)ify=1ify=0
我们进一步把两式整合
P ( x ) = ( h ( x i ) ) y i ∗ ( 1 − h ( x i ) ) 1 − y i P(x)=(h(x_{i}))^{y_{i}}*(1-h(x_{i}))^{1-y_{i}} P(x)=(h(xi))yi(1h(xi))1yi
这样我们可以把模型最优问题看做是极大似然估计问题
L ( θ ) = ∏ i = 1 m ( P ( x ) ) = ∏ i = 1 m [ ( h ( x i ) ) y i ∗ ( 1 − h ( x i ) ) 1 − y i ] L(\theta )= \prod_{i=1}^{m}(P(x))=\prod_{i=1}^{m}[(h(x_{i}))^{y_{i}}*(1-h(x_{i}))^{1-y_{i}}] L(θ)=i=1m(P(x))=i=1m[(h(xi))yi(1h(xi))1yi]
似然函数取对数
l n ( L ( θ ) ) = ∑ i = 1 m [ y i l n ( h ( x i ) ) + ( 1 − y i ) l n ( 1 − h ( x i ) ) ] ln(L(\theta ))=\sum_{i=1}^{m}[{y_{i}ln(h(x_{i})})+({1-y_{i})ln(1-h(x_{i})})] ln(L(θ))=i=1m[yiln(h(xi))+(1yi)ln(1h(xi))]
要使似然函数最大, 即max :
1 m ∑ i = 1 m [ y i l n ( h ( x i ) ) + ( 1 − y i ) l n ( 1 − h ( x i ) ) ] \frac{1}{m}\sum_{i=1}^{m}[{y_{i}ln(h(x_{i})})+({1-y_{i})ln(1-h(x_{i})})] m1i=1m[yiln(h(xi))+(1yi)ln(1h(xi))]
线性回归和逻辑回归的损失函数是标准的凸函数 ,即可知min:
− 1 m ∑ i = 1 m [ y i l n ( h ( x i ) ) + ( 1 − y i ) l n ( 1 − h ( x i ) ) ] -\frac{1}{m}\sum_{i=1}^{m}[{y_{i}ln(h(x_{i})})+({1-y_{i})ln(1-h(x_{i})})] m1i=1m[yiln(h(xi))+(1yi)ln(1h(xi))]
这样我们可以得到损失函数为
J ( θ ) = − 1 m ∑ i = 1 m [ y i l n ( h ( x i ) ) + ( 1 − y i ) l n ( 1 − h ( x i ) ) ] J(\theta )=-\frac{1}{m}\sum_{i=1}^{m}[{y_{i}ln(h(x_{i})})+({1-y_{i})ln(1-h(x_{i})})] J(θ)=m1i=1m[yiln(h(xi))+(1yi)ln(1h(xi))]
现在我们可以通过梯度下降算法求出min 的J(θ)

​ θ梯度更新 :

θ i = θ i − λ ∂ J ( θ ) ∂ θ \theta _{i}=\theta _{i}-\lambda \frac{\partial J(\theta )}{\partial \theta } θi=θiλθJ(θ)
另外,对于sigmoid函数 Z‘=Z(1-Z)
∂ J ( θ ) ∂ θ = − 1 m ∑ i = 1 m [ y i 1 h ( x i ) ∂ h ( x i ) ∂ θ − ( 1 − y i ) 1 1 − h ( x i ) ∂ h ( x i ) ∂ θ ] \frac{\partial{J(\theta)}}{\partial \theta }=-\frac{1}{m}\sum_{i=1}^{m}[{y_{i}}\frac{1}{h(x_{i})}\frac{\partial {h(x_{i})}}{\partial\theta }-(1-{y_{i}})\frac{1}{1-h(x_{i})}\frac{\partial{h(x_{i})} }{\partial\theta }] θJ(θ)=m1i=1m[yih(xi)1θh(xi)(1yi)1h(xi)1θh(xi)]

= − 1 m ∑ i = 1 m [ y i 1 h ( x i ) − ( 1 − y i ) 1 1 − h ( x i ) ] ∂ h ( x i ) ∂ θ i =- \frac{1}{m} \sum_{i=1}^{m}\left [y_{i}\frac{1}{h{\left ( x_{i} \right )}} -(1-y_{i}) \frac{1}{1-h{({x_{i}})}}\right ] \frac{\partial h{({x_{i}})} }{\partial \theta _{i}} =m1i=1m[yih(xi)1(1yi)1h(xi)1]θih(xi)

由 h ( x i ) = 1 1 + e − f ( x ) , f ( x ) = θ 0 + θ 1 x 1 + θ 2 x 2 + ⋅ ⋅ ⋅ + θ n x n , s i g m o i d 函 数 ∂ Z ∂ ( f ( x ) ) = Z ( 1 − Z ) 由h_{(x_{i})}=\frac{1}{1+e^{-f{(x)}}} , f(x)=\theta _{0}+\theta _{1}x_{1} +\theta _{2}x_{2}+\cdot \cdot \cdot +\theta _{n}x_{n} ,sigmoid函数 \frac{\partial{Z}}{\partial (f({x}))}=Z(1-Z) h(xi)=1+ef(x)1,f(x)=θ0+θ1x1+θ2x2++θnxn,sigmoid(f(x))Z=Z(1Z)

可 得 到 ∂ h ( x i ) ∂ θ i = h ( x i ) ( 1 − h ( x i ) ) x i n 代 入 J ( θ ) 可得到\frac{\partial h{({x_{i}})} }{\partial \theta _{i}}=h{(x_{i})} \left ( 1- h{(x_{i})}\right ) x_{in}代入J(\theta ) θih(xi)=h(xi)(1h(xi))xinJ(θ)

= − 1 m ∑ i = 1 m [ y i 1 h ( x i ) − ( 1 − y i ) 1 1 − h ( x i ) ] h ( x i ) ( 1 − h ( x i ) ) x i n =- \frac{1}{m} \sum_{i=1}^{m}\left [y_{i}\frac{1}{h{\left ( x_{i} \right )}} -(1-y_{i})\frac{1}{1-h{({x_{i}})}}\right ] h{(x_{i})}(1-h{(x_{i})})x_{in} =m1i=1m[yih(xi)1(1yi)1h(xi)1]h(xi)(1h(xi))xin

= − 1 m ∑ i = 1 m [ y i − h ( x i ) ] x i n =-\frac{1}{m} \sum_{i=1}^{m}\left [y_{i}- h{(x_{i})} \right ]x_{in} =m1i=1m[yih(xi)]xin

= 1 m ∑ i = 1 m [ h ( x i ) − y i ] =\frac{1}{m} \sum_{i=1}^{m}\left [ h{(x_{i})}- y_{i}\right ] =m1i=1m[h(xi)yi]

则 更 新 θ 的 梯 度 θ i = θ i − λ 1 m ∑ i = 1 m [ h ( x i ) − y i ] x i n 则更新\theta的梯度 \theta _{i}=\theta _{i}-\lambda \frac{1}{m}\sum_{i=1}^{m}\left[ h{(x_{i})}- y_{i}\right ]x_{in} θθi=θiλm1i=1m[h(xi)yi]xin

每次更新梯度会产生一组新θ值,当某组θ值所对应的J(θ)值与前一个J(θ)差很小时,可以认为到达最低点,这时的这组θ值就是我们求出的答案。

转载地址:http://exqbb.baihongyu.com/

你可能感兴趣的文章
用 TensorFlow.js 在浏览器中训练神经网络
查看>>
cs230 深度学习 Lecture 2 编程作业: Logistic Regression with a Neural Network mindset
查看>>
梯度消失问题与如何选择激活函数
查看>>
为什么需要 Mini-batch 梯度下降,及 TensorFlow 应用举例
查看>>
为什么在优化算法中使用指数加权平均
查看>>
初探Java设计模式4:一文带你掌握JDK中的设计模式
查看>>
初探Java设计模式5:一文了解Spring涉及到的9种设计模式
查看>>
Java集合详解1:一文读懂ArrayList,Vector与Stack使用方法和实现原理
查看>>
Java集合详解2:一文读懂Queue和LinkedList
查看>>
Java集合详解3:一文读懂Iterator,fail-fast机制与比较器
查看>>
Java集合详解4:一文读懂HashMap和HashTable的区别以及常见面试题
查看>>
Java集合详解5:深入理解LinkedHashMap和LRU缓存
查看>>
Java集合详解6:这次,从头到尾带你解读Java中的红黑树
查看>>
Java集合详解8:Java集合类细节精讲,细节决定成败
查看>>
Java并发指南1:并发基础与Java多线程
查看>>
Java并发指南2:深入理解Java内存模型JMM
查看>>
Java并发指南5:JMM中的final关键字解析
查看>>
Java并发指南6:Java内存模型JMM总结
查看>>
Java并发指南7:JUC的核心类AQS详解
查看>>
Java并发指南8:AQS中的公平锁与非公平锁,Condtion
查看>>