回归模型介绍

news2024/11/20 3:18:35

Datawhale开源学习,机器学习课程,项目地址:https://github.com/datawhalechina/leeml-notes

首先讲机器学习中的:回归,回归Regression可以做哪些东西呢?

  • 股票预测

输入为以往股票走势,预测未来走势

  • 自动驾驶车辆

输入为无人驾驶检测的路况信息,输出为方向盘角度

  • 推荐系统

输入为使用者A和商品B,输出为使用者A购买商品B的可能性

在这里插入图片描述

模型选择的步骤有三步:

  1. 模型假设(define a set of function),选择合适的模型,比如线性模型
  2. 模型评估(goodness of function),建立合适的损失函数,判断模型迭代时的收敛情况,可适当调整正则项
  3. 模型优化(pick the best function),通过梯度下降不断迭代,找到合适的解

那么以上这三步在之前的文章中也有提及,文章链接:🔗 机器学习介绍

模型假设

首先是模型假设,比如对于线性模型而言,可以根据特征多少来划分其为多少元的线性模型,如果只有一个特征 x c p x_{cp} xcp,那么线性模型可假设为 y = b + ω ∗ x c p y=b+\omega*x_{cp} y=b+ωxcp,所以 ω \omega ω b b b可以猜测很多模型:

在这里插入图片描述

当然实际应用中,由于特征数量不止一个,可能最终的结果和多个特征强相关,那么每个特征都有其相应的权重,就拿pokman中生物的cp值来说,其可能收到多个特征的影响,比如:物种类型、物种血量、物种的重量、物种的高度等等,那这时候就不仅只有一个 x c p x_{cp} xcp作为特征,特征有 x c p 、 x h p 、 x w e i g h t x_{cp}、x_{hp}、x_{weight} xcpxhpxweight等等,用线性模型表示就是: y = b + ∑ ω i x i y=b+\sum \omega_i x_i y=b+ωixi

  • x i x_i xi表示了各种特征: x c p 、 x h p 、 x w e i g h t x_{cp}、x_{hp}、x_{weight} xcpxhpxweight等等
  • w i w_i wi表示各类特征的权重: ω c p 、 ω h p 、 ω w e i g h t \omega_{cp}、\omega_{hp}、\omega_{weight} ωcpωhpωweight等等
  • b b b为偏移量

以上就是模型假设,有「单特征模型」和「多特征模型」两种大致分类,后面两个步骤的说明,我以单特征为例进行说明,一是为了简洁,而是为了方便理解。

模型评估

对于单特征模型而言,要评估其模型的好坏,要将「预测模型」和「真实值」进行比对,求其方差即可。所以若有一系列预测数值,只需要统计真实值 y n y^n yn和预测值 f ( x c p n ) f(x^n_{cp}) f(xcpn)之间的方差即可,方差就是所谓的损失函数loss,即: ( y n − f ( x c p n ) ) 2 (y^n-f(x^n_{cp}))^2 (ynf(xcpn))2

比如统计10组原始数据的和,和越小模型越好,写出损失函数的公式就是:
L ( f ) = ∑ n = 1 10 ( y n − f ( x c p n ) ) 2 = ∑ n = 1 10 ( y n − ( b + ω ∗ x c p n ) ) 2 L(f)=\sum\limits_{n=1}^{10}(y^n-f(x^n_{cp}))^2=\sum\limits_{n=1}^{10}(y^n-(b+\omega*x^n_{cp}))^2 L(f)=n=110(ynf(xcpn))2=n=110(yn(b+ωxcpn))2

损失函数Loss分别由w和b确定,映射到二维坐标轴上时,就生成了一系列等高线,图像如下:
在这里插入图片描述

  • 相同等高线的损失函数loss值是相同的
  • 图中每个点代表模型对应的 ω \omega ω b b b
  • 颜色越深loss越小,代表模型更优

最佳模型-梯度下降

我们知道loss的大小决定了「预测模型」和「真实值」之间的差距,差距越小说明预测的越精准,因此就将问题转换成了求loss极小值的问题,也就是说,找到使得loss取最小值的w和b即可,那么我们可以通过梯度下降的方式不断迭代w和b的值,使得loss function迭代并取得一个极小值(这里之所以不一定取得最小值,是因为梯度下降不断迭代的时候可能只能陷入到某个极小值解中,而无法跳出该解,除非给梯度下降增加学习率,让其以更大幅度的迭代跳出当前的极小值而进入下一个极小值中,总之梯度下降便于我们去寻找极小值,而无法直接寻找到最小值),比如对于下图中的loss,计算对w的迭代:
在这里插入图片描述

上面也说到了学习率,那么什么是学习率?学习率就是移动的步长,如上图的 η \eta η,接下来我们来说下梯度下降迭代步骤:

  • 步骤1:随机选取一个权重 ω 0 \omega^0 ω0(之所以随机选取,是因为迭代过程中会让 ω 0 \omega^0 ω0自动修正到周围的极小值上去)
  • 步骤2:计算微分,也就是当前的斜率,根据斜率来判断移动的方向
    • >0向右移动(增加 ω \omega ω
    • <0向左移动(减少 ω \omega ω
  • 步骤3:根据学习率移动

重复以上步骤2和步骤3,知道找到极小值,以上就是梯度下降的过程,只不过根据随机选取的 ω 0 \omega^0 ω0的不同,很可能不断迭代后得到不同的极小值,不一定是最终的最小值,如下图:
在这里插入图片描述

以上都只是在说单个模型参数 ω \omega ω,便于理解,接下来引入两个模型参数 ω \omega ω b b b,这个过程需要做偏微分,过程如下,分别对 ω \omega ω b b b求偏导:
在这里插入图片描述

在这里插入图片描述

在求偏导数并且不断迭代的过程中,最终的loss会渠道一个较小的结果,比如说对于下图而言,相同等高线代表相同的loss,越往中心,越接近极小值,那么这张图就是loss function在不断迭代时的一个行为轨迹,会按照等高线切线的发现方向前进,这就是「梯度下降」,即按照梯度的方向下降:
在这里插入图片描述

  • 每一条线围成的圈就是等高线,代表损失函数的值,颜色约深的区域代表的损失函数越小
  • 红色的箭头代表等高线的法线方向,也就是梯度下降的方向

那么以上就是梯度下降相关的知识,可以看到参数在迭代的过程中总是减去 η \eta η乘以对应参数关于loss的偏导数,根据其正负值进行迭代,那如果偏导数为0呢?或者趋近于0呢?又该如何解决?这也是梯度下降在当今现实世界中面临的挑战。

在这里插入图片描述

其实线性模型就是一个碗状模型,我们的目的就是找到最优解,但是往往由于很多模型的复杂性,导致在梯度下降的过程中,会出现偏导数为0或者趋近于0的情况,这样就会阻碍我们通过梯度下降去寻找最优解。


复杂模型与过拟合

通常在选取模型的时候,我们根据现有的已知数据去选择适合当下数据的模型,我们知道,若要让模型能够更加准确的预测更多的数据,变的「普世性」更强一些,那么我们需要更多的数据去建立更复杂的模型才行,所以往往随着数据量的增加,线性模型的局限性就出现了,通常一开始我们的做法是,将一元一次的线性模型变为一元二次的线性模型,甚至三次、四次等等,使得我们的线性模型能够进行更加复杂的表示,来拟合更多的数据,随着模型不断变的复杂,也确实让测试的loss变的越来越小,拟合的数据也越来越准确,但是「越来越准确」的前提是「只是基于当前已有数据进行的拟合」,那这就会引出一个问题,叫做「过拟合」。

什么是过拟合?为了能够拟合当下数据,而不断增加模型复杂度,使得模型为了「拟合」而「拟合」,反而丧失了模型的「普世性」,当加入一个新的数据时,该数据可能并不能被已有模型很好的预测到。

在这里插入图片描述

由上图可以得出结论就是,越简单的模型是越复杂的模型的一个子集,也就是复杂模型能够拟合出更多的信息,但是往往「过多的信息」反而会影响到真实的预测。接下来就是:如果出现过拟合,我们该如何解决这样的问题呢?主要方法有以下三点:

  1. 将多个模型合并起来,然后根据类似于数字电路中的电平信号,来选取合适的项,其他项权重制为0
  2. 引入更多的特征,也就是之前提到的,将「单特征」模型变为「多特征」模型
  3. 加入正则化,正则化的引入使得模型的拟合可以变的「曲折」或者「平滑」,这取决于正则项中 λ \lambda λ值的大小

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/10914.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

HTML标签(下)

一、表格标签 1. 表格的主要作用 表格主要用于显示、展示数据。可以让数据规整、有可读性、有条理。 2. 表格的基本语法 <table><tr><td>单元格内的文字</td>...</tr>... </table><table> </table>是用于定义表格的标签 …

nodejs+vue+elementui零食食品o2o商城系统

目 录 摘 要 1 Abstract 1 1 系统概述 4 1.1 概述 4 1.2课题意义 4 1.3 主要内容 4 2 系统开发环境 5 3 需求分析 7 3.1技术可行性&#xff1a;技术背景 7 3.2经济可行性 7 3.3操作可行性&#xff1a; 8 3.4系统设计规则 8 3.5…

对pure pursuit算法的理解和改进

算法实现 purepursuit的核心其实是一个曲率半径的几何计算。 (x, y)是转换到机器人坐标系上的路径点。L是lookahead distance。r是形成的圆弧半径。D是r和x之间的差值。 根据上面的图形&#xff0c;可以发现有下面的几何关系&#xff1a; 同时通过 y2D2r2y^2 D^2 r^2 y2D2r…

java项目-第134期ssm社团管理系统-java毕业设计

java项目-第134期ssm社团管理系统-毕业设计 【源码请到资源专栏下载】 今天分享的项目是《社团管理系统》 该项目分为前台和后台。主要分成两个角色&#xff1a;普通用户、管理员角色。 普通用户登录前台&#xff0c;看到社团官网发布的一些信息。 比如&#xff1a;首页、新闻…

如何在 .NET MAUI 中加载 json 文件?

引言: 按core传统方式添加 AddJsonFile(“appsettings.json”) 在windows平台和ssr工作正常,但是在 ios 和 android 无法用这种方式,因为资源生成方式不一样. 使用内置资源方式不够灵活而且 ios 平台会提示不能复制 json 文件到目录,于是进行了几天的研究,终于能正确使用了. 资…

1-STM32之GPIO点亮LED

我们在基础部分讲了有关GPIO的方面&#xff0c;从这章开始我们进入模块的讲解&#xff0c;从最开始的LED灯到各种传感器模块进行。专栏预计25个章节。后续可能会不定时的增加。 本专栏芯片为STM32F429 对于工程的移植和新建这里不做讲解&#xff0c;对工程建立不懂得&#xff0…

Vue3 - watch 侦听器(超详细使用教程)

前言 它之所以叫侦听器呢&#xff0c;是因为它可以侦听一个或多个响应式数据源&#xff0c;并在数据源变化时调用所给的回调函数。 大白话说呢&#xff0c;就是你传给 watch 侦听器一个响应式变量&#xff0c;然后当这个变量变化时&#xff0c;自动触发一个你定义的函数&#x…

超实用Word小技巧,常用但很少有人记得住

我们在日常工作中经常使用 Word 进行办公。以下常用Word提示可以为您的工作节省时间和精力&#xff0c;让我们来看看。 技巧一&#xff1a;如何纵向复制文本我们一般水平选择文本&#xff0c;你有没有想过垂直选择文本&#xff1f;先按住【Alt】键&#xff0c;然后拖动鼠标左键…

【Python百日进阶-WEB开发】Day179 - Django案例:11短信验证码

文章目录九、短信验证码9.1 短信验证码逻辑分析9.2 容联云通讯短信平台9.2.1 容联云通讯短信平台介绍9.2.2 容联云通讯短信SDK测试9.2.2.1 美多商城meiduo_mall.apps.verifications.libs中新建yuntongxun包&#xff0c;结构如下&#xff1a;9.2.2.2 ccp_sms.py代码9.2.2.3 CCPR…

一起来庆祝属于GISer的节日GIS DAY!

01 概述 作为一名GISer的你&#xff0c;有没有想过其实我们GISer也有自己的节日&#xff1f;这个节日便是GIS DAY&#xff0c;今年的GIS DAY恰在今天&#xff08;2022年11月16日&#xff09;。究竟什么是GIS DAY&#xff1f;这里为大家介绍一下这个节日。 02 什么是GIS DAY …

vue的移动端项目打包成手机的app软件apk格式

目录 前提准备&#xff1a; 1、vue项目npm run build打包成dist文件夹 2、注册hbuilderx账号&#xff0c;获取appid 步骤 一、创建h5app空模版 二、 将打包完成生成dist文件目录复制到新建的项目里 三、检测打包的index.html是否白屏 四、 配置manifest.js应用入口页面…

作为项目经理必须具备的能力

作为项目管理者&#xff0c;每天都要应对项目中的所有问题&#xff0c;安排任务&#xff0c;还要照顾下属的情绪。管理者应该怎么做。 1、计划制定 项目经理作为项目管理者&#xff0c;需要制定计划&#xff0c;合理化分配任务。 项目经理可以使用甘特图制定项目计划&#xf…

微服务feign接口声明的3种方式使用与分析

前言 feign调用方式是微服务调用最为广泛的使用方式&#xff0c;feign接口声明位置也是比较关键的一环。目前来说&#xff0c;feign的3种接口声明方式各自存在利弊&#xff0c;并不存在最优解决方案&#xff0c;只能根据需求去选择。本文中不作详细项目搭建过程&#xff0c;但…

做3D建模的女生多吗?揭露行业比列

有&#xff0c;但是不多&#xff0c;这是常态✅ 其实就像是IT领域的男女比例一样&#xff0c;但是也不是没有。更何况现在女孩子顶半边天&#xff0c;遇到领导是女生的也不少&#xff0c;未来的情况如何也不能完全的预估。 • ❤️事业是热爱做的事&#xff0c;工作是不得不做…

索引【MySQL】

1.1 概念 索引是一种特殊的文件&#xff0c;包含着对数据表里所有记录的引用指针。可以对表中的一列或多列创建索引&#xff0c; 并指定索引的类型&#xff0c;各类索引有各自的数据结构实现。 1.2 作用 数据库中的表、数据、索引之间的关系&#xff0c;类似于书架上的图书、…

简洁直观解释精确率、召回率、F1 值、ROC、AUC

混淆矩阵 当我们在做二分类预测时&#xff0c;把预测情况与实际情况的所有结果两两混合&#xff0c;结果就会出现以下4种情况&#xff0c;就组成了混淆矩阵。 P&#xff08;Positive&#xff09;&#xff1a;代表正样本N&#xff08;Negative&#xff09;&#xff1a;代表负样…

在vscode中开发sass教程:sass语法

sass官网&#xff1a;Sass世界上最成熟、稳定和强大的CSS扩展语言 | Sass中文网sass&#xff1a;世界上最成熟、最稳定、最强大的专业级css扩展语言&#xff01;sass是一个css的预编译工具&#xff0c;也就是能够更优雅的书写css&#xff1b;1、sass使用说明&#xff1a; 基于…

【毕业设计】后端实现——账单通过关键词简单分析收支

&#x1f308;据说&#xff0c;看我文章时 关注、点赞、收藏 的 帅哥美女们 心情都会不自觉的好起来。 前言&#xff1a; &#x1f9e1;作者简介&#xff1a;大家好我是 user_from_future &#xff0c;意思是 “ 来自未来的用户 ” &#xff0c;寓意着未来的自己一定很棒~ ✨个…

C++ STL中的set详解

前言 在学习csp题解的时候接触到这个数据结构&#xff0c;故在此记录一下其概念及应用。 基本概念 set的底层采用的是红黑树&#xff0c;所有元素都会根据元素的键值自动排序&#xff0c;方便管理元素&#xff0c;但不支持直接修改键值。 应用 头文件调用 #include <i…

python中is和==的区别,地址和重新复制后,地址变化

简单总结 现象描述&#xff1a;一、“编辑器“中和把赋值语句放在”同一行的cmd环境“中&#xff0c;相同值的不同变量会指向同一个地址 二、交互式/cmd环境中&#xff0c;若赋值相同值的变量在不同行输入&#xff0c;那么变量也会指向不同地址 三、程序编辑器的程序运行就相当…