Andrew Ng机器学习算法入门(九):逻辑回归
逻辑回归
先前所讲的线性回归主要是一个预测问题,根据已知的数据去预测接下来的情况。线性回归中的房价的例子就很好地说明了这个问题。
然后在现实世界中,很多问题不是预测问题而是一个分类问题。
如邮件是否为垃圾邮件、金融交易是否正常,肿瘤是否是良性的。这新问题都是一个分类。
在分类问题中,结果一般是为0和1,0称为负样本或者是负类,如良性肿瘤。1称为正样本或者是正类,如恶性肿瘤。
那么是否能够使用线性回归的方式来解决分类问题呢?如下是一个辨别肿瘤是良性还是恶性的例子。
可以看到,貌似线性回归是可以解决分类问题的。
但是如果是下面这个情况,
当多了一个数据之后,发现线性回归就存在很明显的偏差。但是这个数据是完全无意义的干扰数据,线性回归为了拟合数据,导致最后的分类出错。在线性回归中还存一个很严重的问题就是,在分类问题中最终的结果只有0和1,但是在线性回归中会出现小于1和大于0的结果。
总之,线性回归是不适合处理分类问题的,线性回归问题就可以考虑使用逻辑回归来解决了。
PS:逻辑回归的叫法是历史原因,和回归并没有什么关系。
逻辑回归表示
逻辑回归的表示用下面的一张图来进行说明
其中:
x,表示的是特征向量
g,代表逻辑函数(Logistic function)是一个常用的曲线函数(Sigmoid function),表达式为:
函数的图像就如上图所示。
h,表示的就是逻辑回归,带入到函数g中,最终得到的表达式就是
函数h表示的就是当输入特征X时,根据输入的特征计算输出变量Y=1的可能性。假设h(x)=0.7,表示的就是患有恶性肿瘤的概率为0.7
判定边界(Decision Boundary)
判定边界能够让我们更好地理解逻辑回归的函数在进行分类中的意义。
上图就是逻辑回归的函数表示以及图像。
在逻辑回归中,我们预测如果 当h>=0.5时,y=1;当h<0.5时,y=0。
当y=1时,要求h>=0.5,意味着g(z)>=0.5,那么就表示z>0,最后就得到了θtX>=0;同理,当y=0时,最后得到θtX<0。
下面就以一个例子来说明问题
其中的theta的参数分别为-3,1,1
存在如上图所示的数据以及表示函数,如果要预测y=1的概率,最后得到的表达式为:
那么最后得到的方程在坐标轴显示的如下:
其中的方程就是一个判定边界,通过这条线就可以分辨出正样本和负样本了。
除了这种线性的判定边界之外,还有一些其他形状的判定边界,如圆形。
除了这种线性的判定边界之外,还有一些其他形状的判定边界,如圆形。
逻辑回归中的代价函数
在将逻辑回归中的代价函数之前,先来回顾一下之前讲过的在线性回归中的代价函数。
上面就是之前讲过的线性回归中的代价函数,这个代价函数在线性回归中能够很好地使用,但是在逻辑回归中却会出现问题,因为将逻辑回归的表达式带入到h函数中得到的是一个非凸函数的图像,那么就会存在多个局部最优解,无法像凸函数一样得到全局最优解。示例如下。
那么在逻辑回归中就需要重新定义代价函数了
逻辑回归中的代价函数为:
其中
最后得到的函数h和Cost函数之前的关系如下:
构建一个这样的函数的好处是在于,当y=1时,h=1,如果h不为1时误差随着h的变小而增大;同样,当y=0时,h=0,如果h不为0时误差随着h的变大而增大。
代价函数中的梯度下降
在上一节中的逻辑回归中的代价函数中给出了代价函数的定义,最后可以简化为:
最终的求解问题就是要求回归函数的值最小,那么同样可以使用在线性回归中所用到的梯度函数。
上图就是逻辑回归的梯度求解过程,虽然看起来和线性回归相似,但实则是完全不同的。在线性回归中,h函数为theta的转置与X的乘积,但是在逻辑回归中则不是。这样就导致了两者在运算方面和优化方面是完全不同的。但是在运行梯度下降算法之前,进行特征缩放依旧是非常重要的。
高级优化
优化算法除了讲到的梯度下降算法之外,还有一些叫做共轭梯度下降算法(BFGS,L-BFGS)。使用这些共轭梯度下降算法的好处在于,不需要手动地选择学习率a,这些算法会自行尝试选择a;比梯度下降算法运算更快。
一般情况下,在常见的机器学习算法库中都带有这些算法,不需要程序员手动实现这些算法。
多类别分类问题
现实世界中除了二元的分类问题还有多元的分类问题,如对天气的分类,是晴天、多云、小雨等等天气。
多元分类问题与二元分类问题的区别如下:
多元分类的思路与二元分类问题的解决思路是类似的。可以将多元问题变为两元问题,具体如下:
这样n元的分类问题,就会进行n次的机器学习的分类算法。对每一次的分类结果即为h(x)。那么经过n此分类之后,最后得到的结果为:
那么当输入新的训练集或者是变量X,只需要按照上面的思路进行分类,其中的h(x)的最大值就是对应的最后的分类结果。
为了能到远方,脚下的每一步都不能少
Andrew Ng机器学习算法入门(九):逻辑回归的更多相关文章
- Andrew Ng机器学习算法入门(一):简介
简介 最近在参加一个利用机器学习来解决安全问题的算法比赛,但是对机器学习的算法一直不了解,所以先了解一下机器学习相关的算法. Andrew Ng就是前段时间从百度离职的吴恩达.关于吴恩达是谁,相信程序 ...
- Andrew Ng机器学习算法入门(二):机器学习分类
机器学习的定义 Arthur Samuel给出的定义,Field of Study that gives computers the ability to learn without being ex ...
- Andrew Ng机器学习算法入门(八):正规方程
正规方程 在先学习正规方程之前,先来复习一下之前学过的常规的回归方程的解法. 假设存在如果的代价函数, ,解法也十分的简答. 但是有时候遇到的情况或许会变得相当的复杂. 的数,如果是按照常规的方式进行 ...
- Andrew Ng机器学习算法入门((七):特征选择和多项式回归
特征选择 还是回归到房价的问题.在最开始的问题中,我们假设房价与房屋面积有关,那么最开始对房价预测的时候,回归方程可能如下所示: 其中frontage表示的房子的长,depth表示的是房子的宽. 但长 ...
- Andrew Ng机器学习算法入门(三):线性回归算法
线性回归 线性回归,就是能够用一个直线较为精确地描述数据之间的关系.这样当出现新的数据的时候,就能够预测出一个简单的值. 线性回归中最常见的就是房价的问题.一直存在很多房屋面积和房价的数据,如下图所示 ...
- Andrew Ng机器学习算法入门(十):过拟合问题解决方法
在使用机器学习对训练数据进行学习和分类的时候,会出现欠拟合和过拟合的问题.那么什么是欠拟合和过拟合问题呢?
- Andrew Ng机器学习算法入门((六):多变量线性回归方程求解
多变量线性回归 之前讨论的都是单变量的情况.例如房价与房屋面积之前的关系,但是实际上,房价除了房屋面积之外,还要房间数,楼层等因素相关.那么此时就变成了一个多变量线性回归的问题.在实际问题中,多变量的 ...
- Andrew Ng机器学习算法入门(四):阶梯下降算法
梯度降级算法简介 之前如果需要求出最佳的线性回归模型,就需要求出代价函数的最小值.在上一篇文章中,求解的问题比较简单,只有一个简单的参数.梯度降级算法就可以用来求出代价函数最小值. 梯度降级算法的在维 ...
- Andrew Ng机器学习算法入门((五):矩阵和向量
矩阵定义 数学上,一个m×n的矩阵是一个由m行n列元素排列成的矩形阵列 使用Aij来获取矩阵中第i行j列的数据 向量的定义 向量就是n行1列的特殊矩阵 由于向量仅仅只有1行,那么通过一个变量i来指定获 ...
随机推荐
- RabbitMQ简介、安装、基本特性API--Java测试
新的阅读体验地址:http://www.zhouhong.icu/post/141 本篇文章所有的代码:https://github.com/Tom-shushu/Distributed-system ...
- 开源大屏工具 DataGear 的使用
记录一款好用的大屏工具,DataGear,官方标记为"开源免费的数据可视化分析平台". 其支持的数据集可以为SQL或HTTP API等,SQL支持MySQL等关系型数据库及Hive ...
- WPF 基础 - Binding 的 数据更新提醒
WPF 作为一个专门的展示层技术,让程序员专注于逻辑层,让展示层永远处于逻辑层的从属地位: 这主要因为有 DataBinding 和配套的 Dependency Property 和 DataTemp ...
- Go语言学习笔记——在本地建立一个官网查看
命令行内运行 godoc -http=:8080 运行完成后打开浏览器输入网址:http://localhost:8080能看到一个和官网一模一样的网站,然后查看帮助文档
- Go语言学习 学习资料汇总
从进入实验室以来,一直听小溪师兄说Go语言,但是第一学期的课很多,一直没有时间学习,现在终于空出来时间学习,按照我的学习习惯,我一般分为三步走 学习一门语言首先要知道学会了能干什么, 然后再把网上的资 ...
- python之Click的简单应用
一.介绍 Click是一个Python包,用于以可组合的方式创建漂亮的命令行界面,只需要很少的代码.这是"命令行界面创建工具包".它具有高度可配置性,但具有开箱即用的合理默认值. ...
- SpringMVC请求映射handler源码解读
请求映射源码 首先看一张请求完整流转图(这里感谢博客园上这位大神的图,博客地址我忘记了): 前台发送给后台的访问请求是如何找到对应的控制器映射并执行后续的后台操作呢,其核心为DispatcherSer ...
- MyBatis、Spring、SpringMVC 源码下载地址
MyBatis.Spring.SpringMVC 源码下载地址 github mybatis https://github.com/fengyu415/MyBatis-Learn.git spring ...
- 如何提高Web应用系统的性能?
随着互联网信息技术的发展,人们逐渐开始习惯在网络上交友.购物.学习.娱乐.工作,甚至是找工作.因此市场对网站的响应速度也提出了新的要求,提高Web应用系统的性能成为急需解决的关键问题.本文将会给出一些 ...
- Tomcat详解系列(2) - 理解Tomcat架构设计
Tomcat - 理解Tomcat架构设计 前文我们已经介绍了一个简单的Servlet容器是如何设计出来,我们就可以开始正式学习Tomcat了,在学习开始,我们有必要站在高点去看看Tomcat的架构设 ...