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来指定获 ...
随机推荐
- 爬虫必知必会(3)_requests模块高级
一.爬虫爬取失败的几个原因 1.在短时间内向网站发起了一个高频的请求 解决办法:使用代理 2.连接池(http)中的资源被耗尽 解决办法:立即将请求断开:Connection:close 3.高清图片 ...
- sqlmap在https下的一种错误 - ssl连接失败
在昨天与师傅的交流中师傅考了我一个问题,在用sqlmap跑的时候遇到ssl爆红该怎么办,因为在实战中并没有遇到过这种情况,所以今天补一下知识. 首先查询了ssl的概念,通俗来说,如果一个网站没有安装s ...
- CCPC-2020 黑龙江省赛——Let’s Get Married
题意:~~ 思路:题目给出的数字太少了,我们多写几个,就会发现每层最左边的值等于1.2*k(k+1) ,k代表层数,找规律发现如果一个点的坐标为2.(x,y)且|a|+|b|=k,id<=2*k ...
- pip软件包管理工具介绍及基本使用
pip软件包管理工具介绍及基本使用 一分耕耘,一分收获,要收获得好,必须耕耘得好.-- 徐特立 一.pip软件包管理工具介绍: 定义:pip是Python包管理工具 作用:对Python包的查找.下载 ...
- webgoat白盒审计+漏洞测试
前言 小白,记录,有问题可以交流 乖乖放上参考链接: https://www.freebuf.com/column/221947.html https://www.sec-un.org/java代码审 ...
- 彻底搞清Flink中的Window
窗口 在流处理应用中,数据是连续不断的,因此我们不可能等到所有数据都到了才开始处理.当然我们可以每来一个消息就处理一次,但是有时我们需要做一些聚合类的处理,例如:在过去的1分钟内有多少用户点击了我们的 ...
- Docker遇到的异常和注意点
Docker遇到的异常和注意点 整理一些使用docker的时候,遇到的问题和解决办法 遇到的一些异常和解决方法 删除镜像时出现: Error response from daemon: conflic ...
- 全网最详细的Linux命令系列-ls命令
Linux开始必须要会的命令当属ls,在日常工作中用到ls命令时的频率是很多的,作为一个初学者,可能我只会或者顶多ls -l两种用法.但是ls其实是一个非常实用的指令,ls命令就是list的缩写,ls ...
- 【oracle学习笔记01】oracle architecture —— Memory Strucrure
附图3: granule_size for each components 附图4:
- 2020 OO 第二单元总结
只要跑得够快即使从头关到尾你也喜欢吗? 一.设计策略 1.1 总体策略概述 在多线程的协同和同步控制方面,我三次作业都是采用生产者/消费者模式(还憨憨地在内部分了customer.producer.t ...