Logistic回归模型

1. 模型简介:

线性回归往往并不能很好地解决分类问题,所以我们引出Logistic回归算法,算法的输出值或者说预测值一直介于0和1,虽然算法的名字有“回归”二字,但实际上Logistic回归是一种分类算法(classification y = 0 or 1)。

Logistic回归模型:

课堂记录(函数图像):

函数h(x)的输出值,我们把它看做,对于一个输入值x,y = 1的概率估计。比如说肿瘤分类的例子,我们有一个特征向量x,似的h(x)的输出为0.7,我们的假设将这样解释:这个具有特征向量x的患者,患有恶性肿瘤(y=1)的概率为0.7。

 

进一步理解假设函数:

如上推导过程由y = 0/y = 1,的结论出发,转化成为对的取值范围要求。下面引入一个简单的例子,并介绍决策边界的概念。

决策边界:

在上图例中,我们假设已经拟合出参数,满足时, ,我们将图中标为绿色的这条直线称为决策边界,这条直线上的点满足。【注:决策边界是假设函数的属性,决定于其参数,不是数据集的属性。只要给定了假设函数参数,决策边界(形状)就确定了。】

在logistic回归中,应用更复杂的假设函数,我们就可能得到具有更复杂形状的决策边界。

2. 如何拟合Logistic回归(假设函数参数):

具体来说,我要来定义用来拟合参数的代价函数,这便是监督学习问题中Logistic回归模型的拟合问题。

我们有一个训练集,里面有m个训练样本,每个训练样本用n+1维的特征向量表示,特征。由于是一个分类问题,所以具有这样的特征:所有的标签y不是0就是1。

对于这个代价函数Cost的理解是这样的,它是在输出的预测值是时,而实际标签是y的情况下,我们希望学习算法付出的代价。由于在Logistic回归中我们的假设函数是非线性的,所以我们得到的代价函数可能会是一个非凸函数,如左边的图像,很显然如果我们对这样的使用梯度下降法是无法保证得到全局最优的。因此我们需要找到一种新的Cost函数形式,使我们得到右侧的凸函数图像,以便使用我们比较好的算法如梯度下降算法。

凸优化问题:

y = 1的情况

我们对函数的左右两端(0,1)进行分析可知此代价函数合理(y = 1时,如果,将会获得巨大的代价;如果,则预测正确,代价为0)。

y = 0的情况

同理我们可对其合理性进行分析。

我们可以将代价函数优化后写成如下更加紧凑的等价形式:

课堂记录:

Conclusion:

有了代价函数,我们要寻找使其最小的一组参数 。Logistic回归整体思路如下:

3. 梯度下降过程:

尽管蓝色框中更新参数的规则看起来和线性回归的梯度下降参数更新规则基本相同,但实际上由于假设的定义发生变化,它和线性回归中的梯度下降实际上是完全不同的。同时,在实现的过程中记得要注意特征缩放带来的优化效果。

4. 高级优化:

实际上完全有可能成功使用这些算法并应用于许多不同的学习问题,而不需要真正理解这些算法的内循环在做什么。同时除非你的研究方向即数值计算,否则都不推荐自己实现这些算法去应用,因为它们比梯度下降要复杂得多。

下面以一个例子解释这些高级算法如何应用。

我们实现一个代价函数costFounction(theta),它返回两个参数,其中jVal是我们要计算的代价函数,gradient是一个n*1维向量,其值与偏导数项一一对应。运行这个costFounction函数,完成以上两部分值的计算后,我们就可以调用高级的优化函数,这个函数叫fminunc(in Octave 表示无约束最小化函数)。(首先需要设置一些options:此处设置梯度目标参数为“on”、100次迭代)@costFunction指向我们刚定义的costFunction函数的指针,如果你调用它,就会使用高级优化算法其中的一个,当然你可以把它当做是梯度下降,只不过它能自动选择学习速率(注:此处使用fminunc时)。

实现代码:

有了这些高级优化的概念,并将它们很好的应用于较大规模的机器学习问题。我们就能将Logistic回归和线性回归模型应用于解决更多的学习问题。

5. 多类别分类问题:

其实我们也可以将二元分类问题的思想用在多分类问题中,称为一对多的思想。

如上图左侧是我们解决二元分类问题的过程。一对多分类的思想如下图:

我们拟合出三个分类器,每一个分类器都针对其中一种情况进行训练,最终我们训练了逻辑回归的分类器,预测i类别y=i的概率。最后为了做出预测,我们对每个分类器输入一个x,最后取h最大的类别。

机器学习笔记(三)Logistic回归模型的更多相关文章

  1. 吴恩达机器学习笔记 —— 7 Logistic回归

    http://www.cnblogs.com/xing901022/p/9332529.html 本章主要讲解了逻辑回归相关的问题,比如什么是分类?逻辑回归如何定义损失函数?逻辑回归如何求最优解?如何 ...

  2. 机器学习笔记(四)Logistic回归模型实现

     一.Logistic回归实现 (一)特征值较少的情况 1. 实验数据 吴恩达<机器学习>第二课时作业提供数据1.判断一个学生能否被一个大学录取,给出的数据集为学生两门课的成绩和是否被录取 ...

  3. 机器学习实战(Machine Learning in Action)学习笔记————05.Logistic回归

    机器学习实战(Machine Learning in Action)学习笔记————05.Logistic回归 关键字:Logistic回归.python.源码解析.测试作者:米仓山下时间:2018- ...

  4. 机器学习实战读书笔记(五)Logistic回归

    Logistic回归的一般过程 1.收集数据:采用任意方法收集 2.准备数据:由于需要进行距离计算,因此要求数据类型为数值型.另外,结构化数据格式则最佳 3.分析数据:采用任意方法对数据进行分析 4. ...

  5. 机器学习(4)之Logistic回归

    机器学习(4)之Logistic回归 1. 算法推导 与之前学过的梯度下降等不同,Logistic回归是一类分类问题,而前者是回归问题.回归问题中,尝试预测的变量y是连续的变量,而在分类问题中,y是一 ...

  6. 机器学习之线性回归---logistic回归---softmax回归

    在本节中,我们介绍Softmax回归模型,该模型是logistic回归模型在多分类问题上的推广,在多分类问题中,类标签 可以取两个以上的值. Softmax回归模型对于诸如MNIST手写数字分类等问题 ...

  7. 如何在R语言中使用Logistic回归模型

    在日常学习或工作中经常会使用线性回归模型对某一事物进行预测,例如预测房价.身高.GDP.学生成绩等,发现这些被预测的变量都属于连续型变量.然而有些情况下,被预测变量可能是二元变量,即成功或失败.流失或 ...

  8. SPSS数据分析—多分类Logistic回归模型

    前面我们说过二分类Logistic回归模型,但分类变量并不只是二分类一种,还有多分类,本次我们介绍当因变量为多分类时的Logistic回归模型. 多分类Logistic回归模型又分为有序多分类Logi ...

  9. logistic回归模型

    一.模型简介 线性回归默认因变量为连续变量,而实际分析中,有时候会遇到因变量为分类变量的情况,例如阴性阳性.性别.血型等.此时如果还使用前面介绍的线性回归模型进行拟合的话,会出现问题,以二分类变量为例 ...

随机推荐

  1. Mybatis映射文件中#取值时指定参数相关规则

    Mybatis映射文件中#取值时指定参数相关规则 在#{}中,除了需要的数值外,还可以规定参数的一些其他规则. 例如:javaType,jdbcType,mode(存储过程),numericScale ...

  2. js循环中使用async/await踩过的坑

    最近写koa的时候遇见需要在循环中使用async/await的情况,当然第一反应就是直接上forEach,然后就直接翻车了... 直接上代码: function handleSql(val) { re ...

  3. 在IIS中如何配置SSL(https)

    1.打开IIS管理界面>“服务器证书”>“创建自签名证书”>输入名称>点“完成” 2.在“网站”上右键“添加网站”,在“绑定”的“类型”中选择“Https”,在“SSL证书&q ...

  4. 4 - BFS & Topological Algorithm

    615. Course Schedule https://www.lintcode.com/problem/course-schedule/description?_from=ladder&& ...

  5. LNMP的搭建

    一.下载安装MySQL 1.1:下载地址:https://dev.mysql.com/downloads/mysql/ 1.2:安装后 1.2.1:解压:tar -xf mysql-8.0.15-li ...

  6. ES9新内容概括

    本文主要介绍ES2018 新出的一些特性 1.异步迭代 允许 async/await 与 for-of 一起使用,以串行的方式运行异步操作,达到异步函数的迭代效果. async function pr ...

  7. 简易OA漫谈之工作流设计(四,怎么支持会签)

    会签:就是一个步骤要所有人都审批完成才能完成. 上一步提交到会签步骤时,该步骤的每个人都能收到一条待办任务, 会签审批人每次提交时都检查该步骤所有会签人是否已经审批,如果全部审批就产生下一手任务. 演 ...

  8. redis常用命令使用集

    redis集群:https://www.cnblogs.com/PatrickLiu/p/8435214.html Redis命令总结 1.基于内存的key-value数据库 2.基于c语言编写的,可 ...

  9. js for in循环遍历对象,获取key:value值

    var testObj = { 'a':'111', 'b':'222', 'c':'333', 'd':'444'}for(var i in testObj){ console.log(i); // ...

  10. Chromedriver executable needs to be in path 解决办法

    执行webdriver.Chrome()时报错:Chromedriver executable needs to be in path. 原因可能是为有安装Chromedriver 可能是Chrome ...