逻辑回归

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

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

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

在分类问题中,结果一般是为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. 漏洞复现-Flask-SSTI服务端模板注入

      0x00 实验环境 攻击机:Win 10 0x01 影响版本 Python利用的一些静态框架 0x02 漏洞复现 (1)实验环境:docker运行的vulhub漏洞环境 首先,可直接访问到页面的显 ...

  2. 确保某个BeanDefinitionRegistryPostProcessor Bean被最后执行的几种实现方式

    目录 一.事出有因 二.解决方案困境 三.柳暗花明,终级解决方案 第一种实现方案 第二种实现方案 第三种实现方案 四.引发的思考 一.事出有因 ​ 最近有一个场景,因同一个项目中不同JAR包依赖同一个 ...

  3. 题解 洛谷P1990 覆盖墙壁

    DP康复训练题 原题:洛谷P1990 核心:递推/DP 题源应该是铺地砖,所以采用一摸一样的思路,只是有两种不同的方块 我们先用最最简单的方式尝试一下枚举当最后一行被填满的情况: 1.如果我们只用第一 ...

  4. P1036_选数(JAVA语言)

    题目描述 已知 n 个整数x1​,x2​,-,xn​,以及1个整数k(k<n).从n个整数中任选k个整数相加,可分别得到一系列的和.例如当n=4,k=3,4个整数分别为3,7,12,19时,可得 ...

  5. 攻防世界 reverse easy_Maze

    easy_Maze 从题目可得知是简单的迷宫问题 int __cdecl main(int argc, const char **argv, const char **envp) { __int64 ...

  6. SpringBoot学习笔记(四)

    本文主要介绍:SpringBoot开发中如何自定义starter 1.什么是starter Starter可以理解为一个可拔插式的插件,提供一系列便利的依赖描述符,您可以获得所需的所有Spring和相 ...

  7. 使用 Android Studio 的日志工具 Log

    •Log简介 Android中的日志工具类是Log,这个类中提供了5个方法来供我们打印日志: 1. $Log.v()$ 用于打印那些最为琐碎的,意义最小的日志信息 对应级别 verbose,是 And ...

  8. PAT (Basic Level) Practice (中文)1070 结绳 (25 分) 凌宸1642

    PAT (Basic Level) Practice (中文)1070 结绳 (25 分) 凌宸1642 题目描述 给定一段一段的绳子,你需要把它们串成一条绳.每次串连的时候,是把两段绳子对折,再如下 ...

  9. 第17 章 : 深入理解 etcd:etcd 性能优化实践

    深入理解 etcd:etcd 性能优化实践 本文将主要分享以下五方面的内容: etcd 前节课程回顾复习: 理解 etcd 性能: etcd 性能优化 -server 端: etcd 性能优化 -cl ...

  10. [BFS]最小转弯问题

    最小转弯问题 Description 给出一张地图,这张地图被分为 n×m(n,m<=100)个方块,任何一个方块不是平地就是高山.平地可以通过,高山则不能.现在你处在地图的(x1,y1)这块平 ...