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

机器学习中【回归算法】详解关注微信公众号【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上吴恩达《机器学习》第三周课程

 

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 混沌皇帝系统_时滞系统ppt

    混沌皇帝系统_时滞系统ppt时滞混沌系统时滞混沌系统即具有混沌运动的时滞系统。时滞系统是系统中一处或几处的信号传递有时间延迟的系统。所谓混沌是指具有以下特点的一类现象:由确定性产生;具有有界性;具有非周期性;初始条件具有极端敏感性。时滞系统在工程中.许多动力系统可由状态变量随时间演化的微分方程来描述。随着混沌研究的不断深入,研究人员发现相当一部分动力系统的状态变量之间存在时间滞后现象,即系统的演化趋势不仅与系统当前的状态相关,而且还与过去某一时刻或若干时刻的状态有关。于是将这类动力学系统通称为时滞动力学系统。时滞动力学系统已

    2022年10月1日
    2
  • thinkphp开发微信公众号时,验证基本配置提示请求url超时

    thinkphp开发微信公众号时,验证基本配置提示请求url超时

    2021年9月24日
    55
  • TP-admin即基于ThinkPHP5拿来即用高性能后台管理系统

    TP-admin即基于ThinkPHP5拿来即用高性能后台管理系统

    2021年10月24日
    47
  • opencv3编程入门_java基础与入门教程

    opencv3编程入门_java基础与入门教程——韦访 201810111、概述想学习图像处理,不管是机器学习也好,深度学习也好,不会点OpenCV好像有点说不过去吧?所以,现在开始OpenCV的学习。2、读写图片先从图片的读写开始,opencv读取图片的函数是imread,默认情况下,imread函数返回BGR格式的图像,可以用imwrite函数将数据写到本地。下面的代码会将JPG图片转成PNG。import…

    2022年10月3日
    2
  • python字典详解_python需要学哪些

    python字典详解_python需要学哪些字典字典的key和value一一对应的,字典是可变的,也是有序的(python3.6版本开始字典有序),可迭代的增加元素当key不存在时,直接赋值a={"status"

    2022年8月6日
    6
  • 【Oracle VM VirtualBox安装SteamOS 教程】

    【Oracle VM VirtualBox安装SteamOS 教程】OracleVMVirt 安装 SteamOS 教程准备工作准备 iso 安装准备工作 UltraISO 软件 SteamOS 安装包 OracleVMVirt 准备 iso 下载 SteamOS 安装包官网下载的是 zip 包 需要将其转为 iso 包我已经准备好了链接 https pan baidu com s 1frHJdo4PQB9 提取码 xsps 如果需要最新版 只需要在官网下载最新的 zip 解压 再用 UltraISO 打开 SteamOS iso 替换掉里

    2025年10月9日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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