逻辑回归算法是分类算法,虽然这个算法的名字中出现了“回归”,但逻辑回归算法实际上是一种分类算法,我们将它作为分类算法使用。。

分类问题:对于每个样本,判断它属于N个类中的那个类或哪几个类。通常我们判定一个样本,若我们预测它的确属于这个类的可能性大于50%,则认为它属于这个类。当然具体选择50%还是70%还是其他要看具体情况,这里先默认50%。

线性回归的局限性在分类问题的例子中变得不可靠:这是一个用来预测肿瘤是否呈阴性的模型,当一个肿瘤的尺寸大于一个数,我们就认为这个肿瘤呈阴性。我们现在新增了一个数据,结果导致整个模型的参数变化很大。如下图,在新加入最右侧数据后,50%的分水岭右移了不止一点点。而根据常识这个数据本应对我们的预测没有什么影响。

对此类问题引入新模型:

对于g(z)=1/(1+e^(-z))这个模型,对国内读过高中的学生都能看懂都想得出它的函数图像,当z>0时g大于0.5,z<0时g小于0.5,z=0时g=0.5。我们以此判定样本属于一个类的几率。现在上图这个模型就是g(theta.T X)(“.T”代表转置矩阵),即我们需要找到参数区分出50%这一边界。

对于下图的数据,我们只需使用一条直线分出0.5的交界处即可。



而对于下面的数据,我们觉得得使用曲线来适应才能分割y=0与y=1的区域。h(x)如图所示,最终得到一个类似圆形的形状。



对于更复杂的形状,我们可以使用更为复杂的模型。

不过以上的分类问题只有两个类(叫做二元分类问题),只需回答一个数据属于A还是B即可。后面还有复杂些的多类别分类,后面会讲,先仅仅分析叫做二元分类。

1.二元分类问题的代价函数

对于线性回归模型,我们定义的代价函数是所有模型误差的平方和。理论上来说,我们

也可以对逻辑回归模型沿用这个定义,但是问题在于,当我们将h(x)

带入到线性回归模型适用的代价函数中时,我们得到的代价函数将是一个非凸函数(non-convex function)。



这意味着我们的代价函数有许多局部最小值,这将影响梯度下降算法寻找全局最小值(是的即将讲的新模型能够确保找到全局最小值,因为它是凸函数(convex),只有一个极小值,那就是最小值。具体下面讲)。

于是重新定义逻辑回归的代价函数:

其中

简化上式得:

Cost带入J最终得到的代价函数:

h(x)与 Cost(h(x),y)之间的关系如下图所示:

这样构建的Cost(h θ (x),y)函数的特点是:当实际的y=1且 h也为1时误差为0,当y=1但h不为1时误差随着h的变小而变大;当实际的y=0且h也为0时代价为0,当y=0但h不为0时误差随着h的变大而变大。

2.对二元分类问题使用梯度下降

知道了代价函数然后像对线性回归一样使用梯度下降算法:

求导后得到:



(原视频少了1/m!我用红色补上了。)

于是乎我们惊奇的发现,这个式子的样子和之前用在线性回归的一样!而他们的J(θ)显然是不一样的。那么,线性回归和逻辑回归是同一个算法吗?

显然不是,要知道,我们是对x求导,而不是对h(x)求导,而两者的h(x)完全不同,所以求导的过程中要展开h(x)对x进行求导,所以结果其实是完全不同的。只不过这两个求导结果刚好可以重新用h(x)包装起来表示。所以逻辑函数的梯度下降,跟线性回归的梯度下降实际上是两个完全不同的东西。

特征缩放

与线性回归一样的是,别忘记特征缩放。这很重要,特征缩放后可以更快地到达最优解,并防止反复的震荡。具体不再展开讲了。

梯度下降必能找到该代价函数的全局最小值

In this video, we will define the cost function for a single train example. The topic of convexity analysis is now beyond the scope of this course, but it is possible to show that with a particular choice of cost function, this will give a convex optimization problem. Overall cost function j of theta will be convex and local optima free.

在这个视频中,我们定义了单训练样本的代价函数,凸性分析的内容是超出这门课的范围的,但是可以证明我们所选的代价值函数会给我们一个凸优化问题。代价函数 J(θ)会是一个凸函数,并且没有局部最优值。

吴恩达老师的视频这里说了这个新的代价函数是凸函数,所以使用梯度下降一定能达到全局最小值。证明我也暂时不管它了。

3.多类别分类(Multiclass Classification)

上面讲了二元分类问题的计算方法,但是如果问题有很多个类,要你预测样本属于这么多类里的哪一个,要怎么做呢?通常我们使用“一对余”方法。

“一对余”方法:将“n类别问题”转换成“n个二元分类问题”。

比如现在有3个类ABC要划分,我们对每个类单独进行分析。比如对于类B,把所有数据划分成两类,属于B的(正样本)和不属于B的(负样本),我们不需要知道它是属于A还是C的,只需知道它不是B即可。于是对于每个类都变成了一个二元问题,一共3个二元问题。我们要做的就是训练这三个分类器。当预测一个新数据的分类时,我们选择3个h(x)里值最高的那个。

4.最小化代价函数的其他算法

一些梯度下降算法之外的选择:除了梯度下降算法以外,还有一些常被用来令代价函数最小的算法,这些算法更加复杂和优越,而且通常不需要人工选择学习率,通常比梯度下降算法要更加快速。这些算法有:共轭梯度(Conjugate Gradient),局部优化法(Broyden fletchergoldfarb shann,BFGS,或叫变尺度法)和有限内存局部优化法(L-BFGS,或叫限制变尺度法)。虽然我暂时不打算看,但Mark一下。

[笔记]机器学习(Machine Learning) - 02.逻辑回归(Logistic Regression)的更多相关文章

  1. Coursera公开课笔记: 斯坦福大学机器学习第六课“逻辑回归(Logistic Regression)” 清晰讲解logistic-good!!!!!!

    原文:http://52opencourse.com/125/coursera%E5%85%AC%E5%BC%80%E8%AF%BE%E7%AC%94%E8%AE%B0-%E6%96%AF%E5%9D ...

  2. 机器学习(四)--------逻辑回归(Logistic Regression)

    逻辑回归(Logistic Regression) 线性回归用来预测,逻辑回归用来分类. 线性回归是拟合函数,逻辑回归是预测函数 逻辑回归就是分类. 分类问题用线性方程是不行的   线性方程拟合的是连 ...

  3. 【机器学习】Octave 实现逻辑回归 Logistic Regression

    ex2data1.txt ex2data2.txt 本次算法的背景是,假如你是一个大学的管理者,你需要根据学生之前的成绩(两门科目)来预测该学生是否能进入该大学. 根据题意,我们不难分辨出这是一种二分 ...

  4. 机器学习 (三) 逻辑回归 Logistic Regression

    文章内容均来自斯坦福大学的Andrew Ng教授讲解的Machine Learning课程,本文是针对该课程的个人学习笔记,如有疏漏,请以原课程所讲述内容为准.感谢博主Rachel Zhang 的个人 ...

  5. 机器学习总结之逻辑回归Logistic Regression

    机器学习总结之逻辑回归Logistic Regression 逻辑回归logistic regression,虽然名字是回归,但是实际上它是处理分类问题的算法.简单的说回归问题和分类问题如下: 回归问 ...

  6. 机器学习入门11 - 逻辑回归 (Logistic Regression)

    原文链接:https://developers.google.com/machine-learning/crash-course/logistic-regression/ 逻辑回归会生成一个介于 0 ...

  7. ML 逻辑回归 Logistic Regression

    逻辑回归 Logistic Regression 1 分类 Classification 首先我们来看看使用线性回归来解决分类会出现的问题.下图中,我们加入了一个训练集,产生的新的假设函数使得我们进行 ...

  8. 机器学习方法(五):逻辑回归Logistic Regression,Softmax Regression

    欢迎转载,转载请注明:本文出自Bin的专栏blog.csdn.net/xbinworld. 技术交流QQ群:433250724,欢迎对算法.技术.应用感兴趣的同学加入. 前面介绍过线性回归的基本知识, ...

  9. 逻辑回归(Logistic Regression)详解,公式推导及代码实现

    逻辑回归(Logistic Regression) 什么是逻辑回归: 逻辑回归(Logistic Regression)是一种基于概率的模式识别算法,虽然名字中带"回归",但实际上 ...

随机推荐

  1. HANA CDS与ABAP CDS

    如果你在网络或者SCN上面搜索CDS,即SAP的Core Data Services,你会很容易地找到类似“Core Data Services(CDS)是一个在SAP HANA中用于定义和消费富语义 ...

  2. 【WCF】错误处理(三):错误协定

    最近折腾换电脑的事,博客就更新慢了点.好,不废话,直入正题. 前面老周介绍过,SOAP消息中的错误信息是用一个 Fault 元素来包装的,前面老周也讲了其中的 FaultCode 元素,即可以对错误信 ...

  3. 测试开发Python培训:模拟登录新浪微博-技术篇

    测试开发Python培训:模拟登录新浪微博-技术篇   一般一个初学者项目的起点就是登陆功能的自动化,而面临的项目不同实现的技术难度是不一样的,poptest在做测试开发培训中更加关注技术难点,掌握技 ...

  4. Oracle的基本学习(三)—函数

    一.字符函数   1.大小写控制函数 --lower:使字母变为小写-- --upper:使字母变为大写-- --initcap:使字符的第一个字母变为大写-- select lower('ABC') ...

  5. C#对文件操作(基本的读写以及压缩和解压)

    主要是针对单个文件进行读写操作和压缩操作:用到的主要C#类有FileStream.FileInfo.StreamWrite.StreamRead.GZipStream. 字符数组和字节数组的转换: ] ...

  6. axure 动态面板制作图片轮播 (01图片轮播)

    利用Axure的动态面板组件制作图片轮播: 首先现在操作区添加一个动态面板组件: 鼠标放在动态面板上,右键单击选择面板状态管理,给动态面板设置名称并添加两条状态然后点击确定. 双击动态面板,然后双击s ...

  7. 写出稳定的Modbus代码之点滴经验

    1.引言 Modbus是工业领域重要的协议,物理层有常见的RS485双绞线和TCP,所以又常说Modbus 485开发和Modbus TCP开发. 前者就是串口通信,比较简单.后者涉及到网络协议,复杂 ...

  8. png、jpg、gif三种图片格式的区别

    png.jpg.gif三种图片格式的区别   2014-06-17 为什么想整理这方面的类容,我觉得就像油画家要了解他的颜料和画布.雕塑家要了解他的石材一样,作为网页设计师也应该对图片格式的特性有一定 ...

  9. xxxxxxxxxxxxxx

    一.Linux命令的分类 1.内部命令:属于Shell解释器的一部分 2.外部命令:独立于Shell解释器之外的程序 3.type命令,查看命令是外部命令还是内部命令: [root@www ~]# t ...

  10. nodeName,nodeValue,nodeType,typeof 的区别

        nodeName 属性含有某个节点的名称.  元素节点的 nodeName 是标签名称  属性节点的 nodeName 是属性名称  文本节点的 nodeName 永远是 #text  文档节 ...