在线性拟合的基础上,我们实现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=1和ifyi<=0.5thenyi=0解决。

Logistic regression的拟合形式如下:

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

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

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

yi=f(Wxi)[4]

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

Loss=12∑i=1n(yi−f(Wxi))2[5]

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

∂Loss∂wj=∑i=1n(yi−f(Wxi))×(−1)×∂f(Wxi)∂wj=∑i=1n(yi−f(Wxi))×(−1)×∂f(zi)∂zi×∂zi∂wj[6]

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

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

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

对公式[7]可以做一次变形,以方便求解: 
根据公式[4],可以知道

ez=f(z)1−f(z)[8]

将公式[8]代入到公式[7],就可以得到

f′(z)=f(z)×(1−f(z))[9]

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

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

∂Loss∂wj=∑i=1n(yi−f(Wxi))×(−1)×∂f(zi)∂zi×∂zi∂wj=∑i=1n(yi−f(Wxi))×(−1)×f(zi)×(1−f(zi))×∂zi∂wj=∑i=1n(yi−f(Wxi))×(−1)×f(Wxi)×(1−f(Wxi))×∂(Wxi)∂wj=∑i=1n(yi−f(Wxi))×(−1)×f(Wxi)×(1−f(Wxi))×∂(Wxi)∂wj=∑i=1n(yi−f(Wxi))×(−1)×f(Wxi)×(1−f(Wxi))×xi,j=∑i=1n(yi−f(Wxi))×f(Wxi)×(f(Wxi)−1)×xi,j[10]

于是公式[10]可以写成

∂Loss∂wj=∑i=1n(yi−f(Wxi))f(Wxi)(f(Wxi)−1)xi,j[11]

那么,wj在梯度下降法的迭代公式就是

wj=wj+△wj=wj−∂Loss∂wj[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]的矩阵化形式就是

∂Loss∂wj=(Y−L)V⎛⎝⎜⎜⎜⎜x1,jx2,j...xn,j⎞⎠⎟⎟⎟⎟[18]

那么,对W而言,更新公式就是

W=W−(Y−L)VX[19]

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

logistic regression教程3的更多相关文章

  1. logistic regression教程1

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

  2. ufldl学习笔记与编程作业:Logistic Regression(逻辑回归)

    ufldl学习笔记与编程作业:Logistic Regression(逻辑回归) ufldl出了新教程,感觉比之前的好,从基础讲起.系统清晰,又有编程实践. 在deep learning高质量群里面听 ...

  3. [机器学习] Coursera ML笔记 - 逻辑回归(Logistic Regression)

    引言 机器学习栏目记录我在学习Machine Learning过程的一些心得笔记,涵盖线性回归.逻辑回归.Softmax回归.神经网络和SVM等等.主要学习资料来自Standford Andrew N ...

  4. 逻辑回归 Logistic Regression

    逻辑回归(Logistic Regression)是广义线性回归的一种.逻辑回归是用来做分类任务的常用算法.分类任务的目标是找一个函数,把观测值匹配到相关的类和标签上.比如一个人有没有病,又因为噪声的 ...

  5. logistic regression与SVM

    Logistic模型和SVM都是用于二分类,现在大概说一下两者的区别 ① 寻找最优超平面的方法不同 形象点说,Logistic模型找的那个超平面,是尽量让所有点都远离它,而SVM寻找的那个超平面,是只 ...

  6. Logistic Regression - Formula Deduction

    Sigmoid Function \[ \sigma(z)=\frac{1}{1+e^{(-z)}} \] feature: axial symmetry: \[ \sigma(z)+ \sigma( ...

  7. SparkMLlib之 logistic regression源码分析

    最近在研究机器学习,使用的工具是spark,本文是针对spar最新的源码Spark1.6.0的MLlib中的logistic regression, linear regression进行源码分析,其 ...

  8. [OpenCV] Samples 06: [ML] logistic regression

    logistic regression,这个算法只能解决简单的线性二分类,在众多的机器学习分类算法中并不出众,但它能被改进为多分类,并换了另外一个名字softmax, 这可是深度学习中响当当的分类算法 ...

  9. Stanford机器学习笔记-2.Logistic Regression

    Content: 2 Logistic Regression. 2.1 Classification. 2.2 Hypothesis representation. 2.2.1 Interpretin ...

随机推荐

  1. 两个input可能会用到的小方法

    1.一个普通的input元素,在不被 form包裹的时候,如何跳转或搜索 var oInput = document.getElementsByTagName('input')[0]; oInput. ...

  2. Debug技巧(1)

    首先声明,以下有些是自己遇到的问题自己解决了,其它里面包括了网上看到的Debug经验和书里看到的经验,时间问题就不一一说明,如有侵权,私信我进行删除,我会道歉.我写这个的本意是记录我学习中遇到的问题, ...

  3. ADPU 大全

    APDU协议 APDU协议,即是智能卡与读写器间的应用层协议,在ISO7816-4[7]中定义了该协议的结构格式.APDU数据有两种结构,读写器使用的APDU结构为命令APDU,C-APDU(Comm ...

  4. python自动化--mock、webservice及webdriver模拟手机浏览器

    一.mock实现 自定义一个类,用来模拟未完成部分的开发代码 class Say(): def say_hello(self): pass 自定义返回值 import unittest from un ...

  5. vue2.0路由(跳转和传参)经典介绍

    声明式 <router-link :to="...">编程式router.push(...) router.push('home')                 / ...

  6. 云服务IaaS,PaaS,SaaS

    IaaS:基础设施服务,Infrastructure-as-a-service PaaS:平台服务,Platform-as-a-service SaaS:软件服务,Software-as-a-serv ...

  7. Mac上简单常用Terminal命令

    方案1 SSH是一个非常伟大的工具,如果你要在互联网上远程连接到服务器,那么SSH无疑是最佳的候选.SSH是加密的,OpenSSH加密所有通信(包括密码),有效消除了窃听,连接劫持和其它攻击.本文将为 ...

  8. PHP 之QQ第三方登录

    一.下载QQ SDK 下载地址:http://wiki.open.qq.com/wiki/mobile/SDK 二.配置SDK 三.具体代码 login.html <!DOCTYPE html& ...

  9. CAD删除组(网页版)

    主要用到函数说明: _DMxDrawX::DeleteGroup 根据组名,删除组.详细说明如下: 参数 说明 BSTR pszName 组名 js代码实现如下: 1 2 3 4 5 6 7 8 9 ...

  10. A6. JVM 垃圾回收算法(GC 算法)

    [概述] 常见的垃圾回收算法有:标记-清除算法.复制算法.标记-整理算法.分代收集算法. [标记-清除算法] 标记-清除算法是最基础的收集算法,如同它的名字一样,算法分为 “标记” 和 “清除” 两个 ...