机器学习中【回归算法】详解

机器学习中【回归算法】详解关注微信公众号【Microstrong】,我写过四年Android代码,了解前端、熟悉后台,现在研究方向是机器学习、深度学习!一起来学习,一起来进步,一起来交流吧!本文同步更新在我的微信公众号里,地址:https://mp.weixin.qq.com/s?__biz=MzI5NDMzMjY1MA==&mid=2247483935&idx=1&sn=5e1c55c76…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

关注微信公众号【Microstrong】,我写过四年Android代码,了解前端、熟悉后台,现在研究方向是机器学习、深度学习!一起来学习,一起来进步,一起来交流吧!

机器学习中【回归算法】详解

本文同步更新在我的微信公众号里,地址:https://mp.weixin.qq.com/s?__biz=MzI5NDMzMjY1MA==&mid=2247483935&idx=1&sn=5e1c55c764ae3443734b3d6d13a110e9&chksm=ec65339adb12ba8ceb875f2dffd29723d975a61ab9af127b4e00e708f177da4abe4ff2e88a96#rd

 

回归问题:主要用于预测数值型数据,典型的回归例子:数据拟合曲线。

 

一、线性回归

 

(1)线性回归的定义:

 

线性回归需要一个线性模型,属于监督学习,因此方法和监督学习应该是一样的,先给定一个训练集,根据这个训练集学习出一个线性函数,然后测试这个函数是否足够拟合训练集数据,然后挑选出最好的线性函数。

需要注意两点:

A.因为是线性回归,所以学习到的函数为线性函数,即直线函数;

B.因为是单变量,因此只有一个x;(这里我们只讨论单变量线性回归)

 

(2)单变量线性回归模型

 

我们能够给出单变量线性回归模型:

 

机器学习中【回归算法】详解

 

这里,X为特征,h(x)为hypothesis。

举个例子:

我们想要根据房子的大小,预测房子的价格,给定如下数据集:

 

机器学习中【回归算法】详解

我们根据以上的数据集画在图上,如下图所示:

 

机器学习中【回归算法】详解

我们需要根据这些点拟合出一条直线,使得costFunction最小。拟合出的直线大概如下图所示:

 

 

机器学习中【回归算法】详解

从上面的过程中,我们肯定有一个疑问,怎么样能够看出线性函数拟合的好不好呢?

答案是我们需要使用到Cost Function(代价函数),代价函数越小,说明我们线性回归的越好,和训练数据拟合的越好。(有关代价函数还请读者自行学习)

 

二、逻辑回归(Logistic Regression)

 

 

逻辑回归虽然名字中有“回归”,但实际却是一种分类学习方法,它将数据拟合到一个logit函数或者是logistic函数中,从而能够完成对事件发生的概率进行预测。

 

 (1)逻辑回归出现的背景:

 

线性回归能对连续值结果进行预测,而现实生活中常见的另一类问题是分类问题。最简单的情况是:是与否的二分类问题。比如说:医生需要需要判断病人是否患癌症,银行要判断一个人的信用程度是否达到可以给他发信用卡的程度,邮件收件箱要自动对邮件分类为正常邮件和垃圾邮件等等。

 

当然,我们最直接的想法是,既然能够用线性回归预测出连续值的结果,那根据结果设定一个阈值应该可以结果分类问题。事实上,对于很标准的情况,确定是可以的,这里我们套用Andrew Ng老师的课件中的例子,下图中X为数据点肿瘤的大小,Y为观测结果是否是恶性肿瘤。通过构建线性回归模型,如机器学习中【回归算法】详解所示,构建线性回归模型后,我们设定一个阈值0.5,预测机器学习中【回归算法】详解>=0.5的这些点为恶性肿瘤,而机器学习中【回归算法】详解<0.5为良性肿瘤。下图是我们构建的一个线性回归模型,可以很好的把恶性肿瘤和良性肿瘤分隔开。

机器学习中【回归算法】详解

 

 

但是在很多实际的情况下,我们需要学习的分类数据并没有这么准确,比如说上面这个肿瘤的例子,如果突然有一个噪点数据出现,如下图所示:

 

机器学习中【回归算法】详解

那我们的线性逻辑回归模型,就不那么适用了并且你设定的阈值0.5也就失效了,如下图所示。而在现实生活分类问题的数据中,会比例子中的这个更为复杂,这个时候我们借助线性回归和阈值的方式,已经很难完成一个表现良好的分类器了。

 

机器学习中【回归算法】详解

 

在这样的场景下,逻辑回归就诞生了。它的核心思想是,如果线性回归的结果输出是一个连续值,而值的范围是无法限定的,那么我们有没有办法把这个结果映射为可以帮助我们判断的结果呢。而如果输出的结果是(0,1)的一个概率值,那么这个问题就能很清楚的解决了。

 

(2)逻辑回归基本的知识点:

 

 

Logistic回归虽然名字里带“回归”,但是它实际上是一种分类方法,主要用于两分类问题(即输出只有两种,分别代表两个类别),所以利用了Logistic函数(或称为Sigmoid函数),函数形式为:

 

机器学习中【回归算法】详解

 

我们来画出sigmoid函数图像,如下图所示:

 

机器学习中【回归算法】详解

 从函数图上可以看出,函数y=g(z)在z=0的时候取值为1/2,而随着z逐渐变小,函数值趋于0,z逐渐变大的同时函数值逐渐趋于1,而这正是一个概率的范围。所以我们定义线性回归的预测函数为Y=WTX,那么逻辑回归的输出Y= g(WTX),其中y=g(z)函数正是上述sigmoid函数(或者简单叫做S形函数)。这就是逻辑回归中的预测输出函数。

 

有了预测输出函数,我们考虑一下,为什么逻辑回归就能做到分类问题?其实是逻辑回归根据我们的样本点获得这些数据的判定边界。那什么是判定边界呢?你可以简单理解为是用以对不同类别的数据分割的边界,边界的两旁应该是不同类别的数据。我们在二维直角坐标系中,来看看具体的判定边界是什么样子:

可能是这个样子:

 

机器学习中【回归算法】详解

还可能是这个样子:

机器学习中【回归算法】详解

或者是这个样子:

机器学习中【回归算法】详解

 

我们来思考一个问题:逻辑回归是如何根据样本点获得这些判定边界呢?

根据sigmoid函数,我们发现:

当g(z)≥0.5时, z≥0;对于机器学习中【回归算法】详解=g(θTX)≥0.5, 则θTX≥0, 此时意味着预估y=1;

反之,当预测y = 0时,θTX<0;所以我们认为θTX=0是一个决策边界,当它大于0或小于0时,逻辑回归模型分别预测不同的分类结果。

 

先看第一个例子

机器学习中【回归算法】详解,其中θ0 ,θ1 ,θ2分别取-3, 1, 1。则当−3+X1+X2≥0时, y = 1; 则X1+X2=3是一个决策边界,图形表示如下,刚好把图上的两类点区分开来:

机器学习中【回归算法】详解

上边的例子是一个线性的决策边界,当hθ(x)更复杂的时候,我们可以得到非线性的决策边界,例如:

 

机器学习中【回归算法】详解

这时当x12+x22≥1时,我们判定y=1,这时的决策边界是一个圆形,如下图所示:

 

机器学习中【回归算法】详解

 

所以我们发现,理论上说,只要我们的机器学习中【回归算法】详解设计足够合理,准确的说是g(θTX)中θTX足够复杂,我们能在不同的情形下,拟合出不同的判定边界,从而把不同的样本点分隔开来。

判定边界详细介绍和项目实践例子:

线性判定Python实践例子  地址:http://blog.csdn.net/program_developer/article/details/79163466

非线性判定边界Python实践例子 地址:http://blog.csdn.net/program_developer/article/details/79190616 

 

(3)逻辑回归的代价函数机器学习中【回归算法】详解

 

对于线性边界的情况,边界形式如下:

 

机器学习中【回归算法】详解

构造预测函数为:

机器学习中【回归算法】详解

函数机器学习中【回归算法】详解的值有特殊的含义,它表示结果取1的概率,因此对于输入x分类结果为类别1和类别0的概率分别为:

 

机器学习中【回归算法】详解

下面我们根据(1)式,推导出我们的代价函数机器学习中【回归算法】详解

(1)式综合起来可以写成:

 

机器学习中【回归算法】详解

然后取似然函数为:

机器学习中【回归算法】详解

因为机器学习中【回归算法】详解机器学习中【回归算法】详解在同一θ处取得极值,因此我们接着取对数似然函数为:

 

机器学习中【回归算法】详解

交叉熵代价函数(cross-entropy)

最大似然估计就是求使机器学习中【回归算法】详解取最大值时的θ,其实这里可以使用梯度上升法求解,求得的θ就是要求的最佳参数。但是,在Andrew Ng的课程中将机器学习中【回归算法】详解取为下式,即:

 

机器学习中【回归算法】详解

因为乘了一个负的系数-1/m,所以取机器学习中【回归算法】详解最小值时的θ为要求的最佳参数。

 

我们在来看看,梯度下降法求的最小值θ更新过程:

 

机器学习中【回归算法】详解

 

最终θ更新过程可以写成:

 

机器学习中【回归算法】详解

补充知识点: 

机器学习中【回归算法】详解

三、总结

至此,我们把机器学习中的回归算法知识点进行了一个总结。我们再来总结一下线性回归和逻辑回归的区别和联系:

(1)Linear Regression: 输出一个标量 wx+b,这个值是连续值,所以可以用来处理回归问题。

(2)Logistic Regression:把上面的 wx+b 通过 sigmoid函数映射到(0,1)上,并划分一个阈值,大于阈值的分为一类,小于等于分为另一类,可以用来处理二分类问题。

(3)更进一步:对于N分类问题,则是先得到N组w值不同的 wx+b,然后归一化,比如用 softmax函数,最后变成N个类上的概率,可以处理多分类问题。

Reference:

http://blog.csdn.net/han_xiaoyang/article/details/49123419

http://blog.csdn.net/pakko/article/details/37878837

分类与回归区别是什么? -穆文的回答 – 知乎

https://www.zhihu.com/question/21329754/answer/151216012

coursera上吴恩达《机器学习》第三周课程

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/171759.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • python 京东签到在哪里_python 使用selenium登陆京东签到哪京豆

    python 京东签到在哪里_python 使用selenium登陆京东签到哪京豆[Python]纯文本查看复制代码#coding:utf8fromseleniumimportwebdriverimporttimedefsign_up():url=r’https://passport.jd.com/new/login.aspx?ReturnUrl=http%3A%2F%2Fvip.jd.com%2F’dr=webdriver.Firefox()#dr=…

  • 什么是Java语言(学习一门语言首选了解这们语言)

    什么是Java语言(学习一门语言首选了解这们语言)学习一门语言首先要对他有一定的了解。否则就会失去最基本的东西。一、什么是Java通俗将就是计算机语言的最新版本,计算机经历了C语言、C++语言、以及C+±-语言。这里的C+±-语言就是Java语言。Java语言是C语言的第三个计算机语言革命,C++语言是对C语言不足处的改进,的一门语言。而Java语言是面对C++语言的不做又一步的改进。为最大的革进新颖,决定不叫C+±-而后一些过程,最终叫Java。Java与C语言以及C++语言相比的优势其又跨平台性、可移植性。二、sunjdk众所周知,java

  • method什么意思_method的值有哪些

    method什么意思_method的值有哪些这个报错只有IDEA会有问题,在eclipse并不会出现这个问题。有哪位前辈可以帮我指点迷津吗?publicclassServletDemo02extendsHttpServlet{privatestaticfinallongserialVersionUID=1L;publicvoiddoPost(HttpServletRequestrequest,HttpServl…

  • jQuery的目标

    jQuery的开篇声明里有一段非常重要的话:jQuery是为了改变javascript的编码方式而设计的。从这段话可以看出jQuery本身并不是UI组件库或其他的一般AJAX类库。jQuery改变ja

    2021年12月24日
  • linux下安装node&npm

    linux下安装node&npm#下载最新版nodewgethttps://nodejs.org/dist/v16.14.0/node-v16.14.0-linux-x64.tar.xz#解压tar-xvfnode-v16.14.0-linux-x64.tar.xz#配置软连接,使全局都可以使用node命令sudoln-s/opt/node-v16.14.0-linux-x64/bin/node/usr/bin/nodesudoln-s/opt/node-v16.14.0-linux-x64/bin/

  • nested exception is java.lang.NoClassDefFoundError: org/codehaus/jettison/json/JSONObject异常的解决办法

    nested exception is java.lang.NoClassDefFoundError: org/codehaus/jettison/json/JSONObject异常的解决办法nestedexceptionisjava.lang.NoClassDefFoundError:org/codehaus/jettison/json/JSONObject异常的解决办法

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号