史上最直白的logistic regression教程 之 三

原创 2015年11月19日 16:09:49

在线性拟合的基础上,我们实现logistic regression。

如前所述,样本集是

{x1,y1},{x2,y2},...,{xn,yn}[1]

其中,xi=[1,xi,1,xi,2,xi,3,...,xi,k]T,且yi(0,1)。注意,这里对yi有值上的要求,必须如此,如果值不再这个区间,要以归一化的方式调整到这个区间。对于分类问题,则yi的取值或者是0,或者是1,也就是yi{0,1}

当然,从严格的意义上说,logistic regression拟合后,yi的值只能无限地逼近0和1,而不能真正达到0和1,但在处理实际问题上,可以设定成形如 ifyi>0.5thenyi=1ifyi<=0.5thenyi=0解决。

Logistic regression的拟合形式如下:

yi=f(zi)[2]
zi=Wxi[3]

其中,f(z)=11+ez[4],也就是Logistic函数。

根据公式[2]和公式[3],则:

yi=f(Wxi)[4]

那么,如果用公式[4]拟合xiyi的关系,需要求解W,使得在公式[1]上误差最小。对应的损失函数就是

Loss=12i=1n(yif(Wxi))2[5]

跟前面的一样,我们用梯度下降法求解。
所以,要对公式[5]wj的一阶偏导,于是有

Losswj=i=1n(yif(Wxi))×(1)×f(Wxi)wj=i=1n(yif(Wxi))×(1)×f(zi)zi×ziwj[6]

注意,问题来了,公式[6]的最后一步,实际上是将Wxi视为一个变量zi,分别求导。这一步是在高等数学有详细描述了,不解释。

公式[6]中的f(zi)zi等价于f(z),因为只有一个自变量z。根据公式[4],可以求出

f(z)=ez(ez+1)2[7]

对公式[7]可以做一次变形,以方便求解:
根据公式[4],可以知道
ez=f(z)1f(z)[8]

将公式[8]代入到公式[7],就可以得到
f(z)=f(z)×(1f(z))[9]

也就是说,我们可以根据f(z)得到f(z),而且计算量很小。

把公式[9]代入公式[6],就得到

Losswj=i=1n(yif(Wxi))×(1)×f(zi)zi×ziwj=i=1n(yif(Wxi))×(1)×f(zi)×(1f(zi))×ziwj=i=1n(yif(Wxi))×(1)×f(Wxi)×(1f(Wxi))×(Wxi)wj=i=1n(yif(Wxi))×(1)×f(Wxi)×(1f(Wxi))×(Wxi)wj=i=1n(yif(Wxi))×(1)×f(Wxi)×(1f(Wxi))×xi,j=i=1n(yif(Wxi))×f(Wxi)×(f(Wxi)1)×xi,j[10]

于是公式[10]可以写成
Losswj=i=1n(yif(Wxi))f(Wxi)(f(Wxi)1)xi,j[11]

那么,wj在梯度下降法的迭代公式就是
wj=wj+wj=wjLosswj[12]

现在,我们开始做最麻烦的一步,将公式[11]进行矩阵化

Y=[y1,y2,...,yn][13]

W=[w0,w1,w2,...,wk][14]

X=11...1x1,1x2,1...xn,1x1,2x2,2...xn,2............x1,kx2,k...xn,k[15]

V=f(Wx1)(f(Wx1)1)0...00f(Wx2)(f(Wx2)1)...0............00...f(Wxn)(f(Wxn)1)[16]

L=[f(Wx1),f(Wx2),...,f(Wxn)][17]

公式[16]略有一点复杂,它是对角矩阵。
根据上述设定,公式[11]的矩阵化形式就是
Losswj=(YL)Vx1,jx2,j...xn,j[18]

那么,对W而言,更新公式就是
W=W(YL)VX[19]

到这里,logisitci regression的梯度下降法推导就结束了。下一篇我们用python实现求解过程。

相关文章推荐

史上最直白的logistic regression教程 之 二

实现线性拟合我们用python2.7实现上一篇的推导结果。请先安装python matplotlib包和numpy包。具体代码如下:#!/usr/bin/env python #! -*- codi...

史上最直白的logistic regression教程 之 一

Logistic Regession是什么Logistic Regression是线性回归,但最终是用作分类器。 为什么叫Logistic呢?因为它使用了Logisitic函数,形如: f(z)...

史上最直白的logistic regression教程 之 四

接上篇,用python实现logisitic regression,代码如下:#!/usr/bin/env python #! -*- coding:utf-8 -*-import matplotl...

史上最直白的logistic regression教程 之 二

实现线性拟合我们用python2.7实现上一篇的推导结果。请先安装python matplotlib包和numpy包。具体代码如下:#!/usr/bin/env python #! -*- codi...

机器学习教程之3-逻辑回归(logistic regression)的sklearn实现

0.概述 --- **线性回归**不仅可以做**回归**问题的处理,也可以通过与**阈值**的比较转化为**分类**的处理,但是其**假设函数**的输出范围没有限制,这样很大的输出被分类为1,较少的数...

Regularized logistic regression

  • 2016年06月07日 00:18
  • 6KB
  • 下载

Logistic Regression

  • 2017年08月04日 19:40
  • 242KB
  • 下载

MachineLearning—Logistic Regression(三)

本篇博文为机器学习逻辑回归第三部分,主要介绍Generalized Linear Models(GLMs)广义线性模型;通过以前的学习我们发现无论是线性回归还是逻辑回归,无论是梯度上升亦或梯度下降它们...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:史上最直白的logistic regression教程 之 三
举报原因:
原因补充:

(最多只允许输入30个字)