最近翻Peter Harrington的《机器学习实战》,看到Logistic回归那一章有点小的疑问。

作者在简单介绍Logistic回归的原理后,立即给出了梯度上升算法的code:从算法到代码跳跃的幅度有点大,作者本人也说了,这里略去了一个简单的数学推导。

那么其实这个过程在Andrew Ng的机器学习公开课里也有讲到。现在回忆起来,大二看Andrew的视频的时候心里是有这么一个疙瘩(Andrew也是跳过了一步推导)

这里就来讲一下作者略去了怎样的数学推导,以及,怎么推导。

在此之前,先回顾一下Logistic回归。

Logistic回归

  基本原理:《实战》这本书上是这么讲的,“回归”就是用一条直线对一堆数据点进行拟合,这个拟合过程就称为“回归”。利用Logistic回归进行分类的主要思想是,根据现有数据对分类边界线建立回归公式,以此进行分类。

  以Andrew公开课的例子说明:

  圆(蓝色)和叉(红色)是两类数据点,我们需要找到一个决策边界将其划分开,如图所示的边界形式显然是线性的形式,如图中所描述的:

  我们记为:

  这里,括号里的就是决策边界的表达式,我们找一个函数g,将表达式结果作为输入,生成一个预测函数hθ(x).这里我们使用Sigmoid函数

  从而:

  然而有时候,决策边界用一维直线无法区分,也就是这里的θ参数个数是变数,比如下面这堆数据

  这是一种非线性的决策边界。

  可以看到这里,将x1,x2参数全部平方处理,找得一个圆形边界。

  

公式推导

  讲到这里,我们可以把边界形式做如下推广:

  

  边界的最后一项是向量相乘的形式,即:

  将其输入到sigmoid函数去判断其所属类别,就有了我们的预测函数,记为:

  根据sigmoid图像,这个预测函数输出值大于0.5,那么代表x(数据点)所属类别为1,否则是0(对于二分类问题)。

  但是别忘了我们的最初的目标,这里的θ向量未知。我们的目的是:

    确定θ的参数值,使得我们这个决策边界能更好地划分数据集。

  这个过程,在Andrew的课程里,被略过了,他直接给出了cost函数和J(θ)函数,然后通过梯度下降求得最优的θ参数。其中,J(θ)函数是这样的:

  利用上面的公式以及梯度下降算法,我们就能求出θ的值。也就能求出最能拟合数据的决策边界。

  接下来就要讲讲这个公式是怎么被推导出来的。

  我们先来看看现在我们已经知道什么:

      1、一堆数据点+它们的类别(2类)

      2、它们的概率分布hθ(x):虽然目前θ仍然是未知参数

  我们的目标是求出未知参数,使得每个样本数据点属于它当前所标记的类别的概率最大。

  于是就引出了Fisher的极大似然估计

  这里就不讲极大似然估计的具体概念和公式推导了,不过还是用个例子来形象的说明极大似然估计的作用吧:

        一个猎人和一个学生一起走在山路上,突然从山间跑出一只兔子,啪一声枪响,兔子倒地而亡。问:谁最有可能杀死了兔子?

  答案显而易见:猎人。那么这里,猎人就是那个参数θ。极大似然估计的目标就是预测出待估参数,使得样本事件发生的概率最大。

  对于上述例子,用极大似然估计的思想来说明其中的几个重要信息:

样本事件 兔子被枪杀
待估参数 射死了兔子的人(记为θ:θ属于{猎人,学生})

  极大似然估计就是找出最有可能杀死兔子的人。

  同样,对于本实验的一堆数据点,我们对应着看:

样本事件 每个样本数据点属于他自己的label  
待估参数 决策边界参数向量θ

        P.S.虽然样本里的每条数据都表明了数据点本身的类别,但是使用极大似然估计的时候,你并不知道样本本身所属的类别,样本数据自带的类别标签是你估计好坏的一个评价标准。换句话说,数据点全体就是一个样本事件

  接下来就是估计所需要的数学推导了。

  对于一个连续性的分布,我们需要它的概率密度函数,在本例中,其实就是那个sigmoid函数(取值范围0-1刚好表示的是发生概率),我们重新写在这里:

  把这两个式子写在一起:

  可以验证一下,当y=1或者y=0的时候,上式分别满足上上式。对每个样本数据点,满足上式,所以对于群体,我们接下来继续。

  根据极大似然估计的求解步骤,取似然函数:

    

  要求L(θ)的最大值对应的θ参数。其中m是样本数据点的个数

  连乘不容易求解,同时又容易造成下溢出。这里由于x和ln(x)单调性相同,两边取对数

  这个就是Andrew给的那个J(θ)了,唯一的区别就是,Andrew在前面乘了一个负系数,使得这里求最大值变成了最小值,从而可以使用梯度下降算法。

  不过其实用本式也可以完成任务,只是用的算法就变成梯度上升了,其实没有区别。

结语

  这里安利一下《机器学习实战》这本书,真的蛮不错的,实践性很强,既入门了ML,又锻炼了动手能力。

  

    

  

    

  

Logistic回归Cost函数和J(θ)的推导----Andrew Ng【machine learning】公开课的更多相关文章

  1. Logistic回归Cost函数和J(θ)的推导(二)----梯度下降算法求解最小值

    前言 在上一篇随笔里,我们讲了Logistic回归cost函数的推导过程.接下来的算法求解使用如下的cost函数形式: 简单回顾一下几个变量的含义: 表1 cost函数解释 x(i) 每个样本数据点在 ...

  2. Andrew Ng Machine Learning 专题【Logistic Regression & Regularization】

    此文是斯坦福大学,机器学习界 superstar - Andrew Ng 所开设的 Coursera 课程:Machine Learning 的课程笔记. 力求简洁,仅代表本人观点,不足之处希望大家探 ...

  3. Logistic 回归(sigmoid函数,手机的评价,梯度上升,批处理梯度,随机梯度,从疝气病症预测病马的死亡率

    (手机的颜色,大小,用户体验来加权统计总体的值)极大似然估计MLE 1.Logistic回归 Logistic regression (逻辑回归),是一种分类方法,用于二分类问题(即输出只有两种).如 ...

  4. 局部加权回归、欠拟合、过拟合 - Andrew Ng机器学习公开课笔记1.3

    本文主要解说局部加权(线性)回归.在解说局部加权线性回归之前,先解说两个概念:欠拟合.过拟合.由此引出局部加权线性回归算法. 欠拟合.过拟合 例如以下图中三个拟合模型.第一个是一个线性模型.对训练数据 ...

  5. Logistic回归计算过程的推导

    https://blog.csdn.net/ligang_csdn/article/details/53838743 https://blog.csdn.net/weixin_30014549/art ...

  6. Logistic回归总结

    原文:http://blog.csdn.net/dongtingzhizi/article/details/15962797  Logistic回归总结 作者:洞庭之子 微博:洞庭之子-Bing (2 ...

  7. <转>Logistic回归总结

    转自http://blog.csdn.net/dongtingzhizi/article/details/15962797 当我第一遍看完台大的机器学习的视频的时候,我以为我理解了逻辑回归,可后来越看 ...

  8. 转载-Logistic回归总结

     Logistic回归总结 作者:洞庭之子 微博:洞庭之子-Bing (2013年11月) 1.引言 看了Stanford的Andrew Ng老师的机器学习公开课中关于Logistic Regress ...

  9. 【机器学习实战】第5章 Logistic回归

    第5章 Logistic回归 Logistic 回归 概述 Logistic 回归虽然名字叫回归,但是它是用来做分类的.其主要思想是: 根据现有数据对分类边界线建立回归公式,以此进行分类. 须知概念 ...

随机推荐

  1. git GUI设置长期记住密码

    git config --global credential.helper store

  2. 主机WiFi时,vmware ubuntu 桥接上网

    1.在vmwared软件主页的编辑->虚拟网络编辑器中,桥接模式,选择桥接至电脑的无线网卡(在主机上查询) 2.虚拟机设置中,选择桥接模式 3.ubuntu 桌面右上方edit connecti ...

  3. Tomcat7 目录详解

    1.bin:该目录下存放的是二进制可执行文件,如果是安装版,那么这个目录下会有两个exe文件:tomcat6.exe.tomcat6w.exe,前者是在控制台下启动Tomcat,后者是弹出UGI窗口启 ...

  4. mysql 函数介绍

    含义 一组预先编译好的SQL语句集合,可以理解成批处理语句 提高代码的重用性 简化操作 减少了编译次数并且减少了和数据库服务器的连接次数, 提高了效率 区别 : 存储过程:可以有0个返回,也可以有多个 ...

  5. 爬取qq号

    import reimport urllib.requestimport osimport jsonimport sslfrom collections import deque #把爬去的数据保存到 ...

  6. js如何实现重载

    所谓重载,就是一组相同的函数名,有不同个数的参数,在使用时调用一个函数名,传入不同参数,根据你的参数个数,来决定使用不同的函数!但是我们知道js中是没有重载的,因为后定义的函数会覆盖前面的同名函数,但 ...

  7. 探索未知种族之osg类生物---渲染遍历之裁剪三

    前言 在osgUtil::CullVisitor,我们发现apply函数的重载中,有CullVisitor::apply(Group& node),CullVisitor::apply(Swi ...

  8. log4j.properties配置与将异常输出到Log日志文件实例

    将异常输出到 log日志文件 实际项目中的使用: <dependencies> <dependency> <groupId>org.slf4j</groupI ...

  9. 32. pt-visual-explain

    mysql -e "explain select name from db01.t01 where code>1" |pt-visual-explain echo " ...

  10. Mad Libs游戏

    一. 简单的输入输出 输入代码 name1=input('请输入姓名:') name2=input('请输入一个句子:') name3=input('请输入一个地点:') name4=input('请 ...