逻辑回归

先前所讲的线性回归主要是一个预测问题,根据已知的数据去预测接下来的情况。线性回归中的房价的例子就很好地说明了这个问题。

然后在现实世界中,很多问题不是预测问题而是一个分类问题。

如邮件是否为垃圾邮件、金融交易是否正常,肿瘤是否是良性的。这新问题都是一个分类。

在分类问题中,结果一般是为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机器学习算法入门(九):逻辑回归的更多相关文章

  1. Andrew Ng机器学习算法入门(一):简介

    简介 最近在参加一个利用机器学习来解决安全问题的算法比赛,但是对机器学习的算法一直不了解,所以先了解一下机器学习相关的算法. Andrew Ng就是前段时间从百度离职的吴恩达.关于吴恩达是谁,相信程序 ...

  2. Andrew Ng机器学习算法入门(二):机器学习分类

    机器学习的定义 Arthur Samuel给出的定义,Field of Study that gives computers the ability to learn without being ex ...

  3. Andrew Ng机器学习算法入门(八):正规方程

    正规方程 在先学习正规方程之前,先来复习一下之前学过的常规的回归方程的解法. 假设存在如果的代价函数, ,解法也十分的简答. 但是有时候遇到的情况或许会变得相当的复杂. 的数,如果是按照常规的方式进行 ...

  4. Andrew Ng机器学习算法入门((七):特征选择和多项式回归

    特征选择 还是回归到房价的问题.在最开始的问题中,我们假设房价与房屋面积有关,那么最开始对房价预测的时候,回归方程可能如下所示: 其中frontage表示的房子的长,depth表示的是房子的宽. 但长 ...

  5. Andrew Ng机器学习算法入门(三):线性回归算法

    线性回归 线性回归,就是能够用一个直线较为精确地描述数据之间的关系.这样当出现新的数据的时候,就能够预测出一个简单的值. 线性回归中最常见的就是房价的问题.一直存在很多房屋面积和房价的数据,如下图所示 ...

  6. Andrew Ng机器学习算法入门(十):过拟合问题解决方法

    在使用机器学习对训练数据进行学习和分类的时候,会出现欠拟合和过拟合的问题.那么什么是欠拟合和过拟合问题呢?

  7. Andrew Ng机器学习算法入门((六):多变量线性回归方程求解

    多变量线性回归 之前讨论的都是单变量的情况.例如房价与房屋面积之前的关系,但是实际上,房价除了房屋面积之外,还要房间数,楼层等因素相关.那么此时就变成了一个多变量线性回归的问题.在实际问题中,多变量的 ...

  8. Andrew Ng机器学习算法入门(四):阶梯下降算法

    梯度降级算法简介 之前如果需要求出最佳的线性回归模型,就需要求出代价函数的最小值.在上一篇文章中,求解的问题比较简单,只有一个简单的参数.梯度降级算法就可以用来求出代价函数最小值. 梯度降级算法的在维 ...

  9. Andrew Ng机器学习算法入门((五):矩阵和向量

    矩阵定义 数学上,一个m×n的矩阵是一个由m行n列元素排列成的矩形阵列 使用Aij来获取矩阵中第i行j列的数据 向量的定义 向量就是n行1列的特殊矩阵 由于向量仅仅只有1行,那么通过一个变量i来指定获 ...

随机推荐

  1. python面试题总结

    Python语言特性 1. Python的函数参数传递 ​ 看两个如下例子,分析运行结果 #代码1 a = 1 def fun(a): a = 2 fun(a) print(a) #1 #代码2 a ...

  2. FreeBSD 镜像站问题 @2021

    主要问题在于官方无论如何也不开放 rsync 且不接受镜像站的官方二级镜像申请. 多次联系均无二次联系,如邮件列表,大概五次,其中三次回应,两次无回应.其主要回复内容为"深表歉意,但台湾地区 ...

  3. PHP配置 2. 日志相关配置

    例如,在disable_functions,定义禁用phpinfo函数, # vim /usr/local/php/etc/php.ini disable_functions=phpinfo,eval ...

  4. NET 5.0 Swagger API 自动生成MarkDown文档

    目录 1.SwaggerDoc引用 主要接口 接口实现 2.Startup配置 注册SwaggerDoc服务 注册Swagger服务 引用Swagger中间件 3.生成MarkDown 4.生成示例 ...

  5. POJ_2452 Sticks Problem 【ST表 + 二分】

    一.题目 Sticks Problem 二.分析 对于$i$和$j$,并没有很好的方法能同时将他们两找到最优值,所以考虑固定左端点$i$. 固定左端点后,根据题意,$a[i]$是最小值,那么现在的问题 ...

  6. 10 分钟轻松学会 Jackson 反序列化自动适配子类

    作者:丁仪 来源:https://chengxuzhixin.com/blog/post/Jackson-fan-xu-lie-hua-zi-dong-shi-pei-zi-lei.html json ...

  7. Git命令太多记不住?有了这个神器,从此告别输入命令行

    一 .SourceTree简介 SourceTree 是 Windows 和Mac OS X 下免费的 Git 和 Hg 客户端,拥有可视化界面,容易上手操作.同时它也是Mercurial和Subve ...

  8. [go-linq]-Go的.NET LINQ式查询方法

    关于我 我的博客|文章首发 开发者的福音,go也支持linq了 坑爹的集合 go在进行集合操作时,有很不舒服的地方,起初我真的是无力吐槽,又苦于找不到一个好的第三方库,只能每次写着重复代码.举个栗子 ...

  9. Java例题_26 请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续 判断第二个字母。

    1 /*26 [程序 26 求星期] 2 题目:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续 判断第二个字母. 3 程序分析:用情况语句比较好,如果第一个字母一样,则判断用情 ...

  10. java例题_01 不死神兔!

    1 /*1 [程序 1 不死神兔] 2 题目:古典问题:有一对兔子,从出生后第 3 个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子对数为多少? 3 程 ...