机器学习之线性回归

2023-11-15

什么是线性回归

线性回归利⽤回归⽅程(函数)对⼀个或多个⾃变量(特征值)和因变量(⽬标值)之间
关系进⾏建模的⼀种分析⽅式。一般只有一个特征值的称之为单变量回归,多个特征值的称之为多变量回归。

线性回归

线性回归可以分为两类:线性关系和非线性关系。

  1. 线性关系
    线性关系是指特征值和目标值之间的关系呈现多元一次关系,例如一个特征值时,则特征值和目标值呈现直线性关系;两个特征值时,则特征值和目标值呈现平面关系。
    在这里插入图片描述
  2. 非线性关系
    非线性关系指特征值和目标值之间的关系呈多元二次以上关系,即关系无法用直线来表达,需要用直线才能贴合。
    在这里插入图片描述

损失函数

由算法得出的线性回归方程有会多种,那么模型是怎么选出最有的回归方程呢,那么让回归方程的值与实际值的误差最小,就是最好的回归方程,这就我们优化回归方程的函数:损失函数。
损失函数:预测的所有数值与实际数值之间差的平方的总和,又叫做最小二乘法,数学定义如下:
在这里插入图片描述
那么我们怎么求模型中的各个系数w,使得损失函数最小?在线性回归中常用到两种方法:

  1. 正规方程法
  2. 梯度下降法

1. 正规方程(LinearRegression)

正规方程法就是数学中的求方程的未知数,将特征值、目标值和未知数w列出方程组,求解方程组,即可得到系数w,如下图的方程组。当特征值和w较少时,比较容易算出,但特征过多过于复杂时,则求解起来很麻烦,甚至求解不出答案。例如样本量较多时,更多采用梯度下降法。特征之间存在多重共线性问题时,需要使用岭回归(Ridge Regression)。
正规方程法公式如下:
在这里插入图片描述
X为特征矩阵,y为目标矩阵。
在这里插入图片描述
在这里插入图片描述

2.梯度下降法(SGDRegressor)

在求解回归方程时往往没有最优解,经常采用迭代的方法,不断沿着函数梯度的反方向更新参数,直到损失函数最小化。
梯度下降法的过程如下:
a. 随机初始化模型参数,并计算当前参数下损失函数的地图,即当前点的斜率;
b. 沿着参数朝着梯度的反方向进行一定的步长调整,使得损失函数下降;
c. 重复a和b的过程,直到损失函数达到最小值,或者设定迭代次数的限制。
梯度下降法的公式如下:
在这里插入图片描述
α在梯度下降算法中被称作为学习率或者步⻓,意味着我们可以通过α来控制每⼀步⾛的距离,控制参数不要⾛太快,错过了使损失函数取最⼩值的点。同时也要保证不要⾛的太慢,导致太阳下⼭了,还没有⾛到⼭下。所以α的选择在梯度下降法中往往是很重要的!α不能太⼤也不能太⼩,太⼩的话,可能导致迟迟⾛不到最低点,太⼤的话,会导致错过最低点!
在这里插入图片描述
梯度下降法分类:

  • 全梯度下降算法(Full gradient descent) FGD
    • 要在所有数据集上计算梯度,所以下降速度慢;
    • 无法在线更新模型,即运行过程中无法增加样本
  • 随机梯度下降算法(Stochastic gradient descent)SGD
    • 计算单个样本的梯度,速度更快;
    • 由于只使用一个样本,容易陷入局部最优解
  • ⼩批量梯度下降算法(Mini-batch gradient descent)
    • 随机抽取一个小批量样本集,然后再采用FGD
    • batch_size = 1为SGD,batch_size=n为FGD,一般设为2的幂次方
  • 随机平均梯度下降算法(Stochastic average gradient descent)
    • 内存中为每个样本维护一个旧梯度,随机选择i个样本来更新该梯度,其他梯度保持不变,然后求得所有梯度的平均值
    • n设置为1时,为SGD

两种方法对比

在这里插入图片描述
那么什么时候用正规方程法,什么时候用梯度下降法呢?

  1. 是否存在逆矩阵:从正规方程的公式可以得知,要先计算逆矩阵,有可能它的逆矩阵不存在,这就需要我们去除冗余特征值,让其逆矩阵不为0。而梯度下降法可以使用;
  2. 特征值数据量是否大:特征值数据大于10000时,建议采用梯度下降法。正规方程法计算量较大,难以计算,当然可以用主成分分析降低特征的维度,再使用正规方程法计算;
  3. 拟合函数是否为线性:不是线性无法使用正规方程法,梯度下降法还是可以使用;
  4. 以下几种情况特殊处理:
    • 特征值数据较少,无法拟合;
    • 特征值数量与样本量一致时,正规方程法可以解决;

所以线性回归的算法选择总结如下:

  • 小数据规模:
    • 正规方程:
    • 岭回归:特征之间多重共线性
  • 大规模数据:
    • 梯度下降法

线性回归API

  • 正规方程法:
    sklearn.linear_model.LinearRegression(fit_intercept=True)
    • 参数:
      • fit_intercept:是否计算偏置
    • 属性:
      • LinearRegression.coef_:回归系数
      • LinearRegression.intercept_:偏置
  • 梯度下降法:
    sklearn.linear_model.SGDRegressor(max_iter = 1000, loss=“squared_loss”, fit_intercept=True, learning_rate
    =‘invscaling’, eta0=0.01)
    • 参数:
      • loss:损失类型
      • max_iter用来指定神经网络的最大迭代次数,默认值为1000
      • fit_intercept:是否计算偏置
      • learning_rate:学习率填充
        • ‘constant’: eta = eta0
        • ‘optimal’: eta = 1.0 / (alpha * (t + t0)) [default]
        • ‘invscaling’: eta = eta0 / pow(t, power_t) power_t=0.25:存在⽗类当中
        • eta0:初始学习率或者步长,对于学习速率α,可以先选择0.001,然后按10倍来进行调整。
    • 属性:
      • SGDRegressor.coef_:回归系数
      • SGDRegressor.intercept_:偏置

线性回归性能评估

均⽅误差(Mean Squared Error, MSE)评价线性回归模型的好坏,公式如下:
在这里插入图片描述
对应API:

  • sklearn.metrics.mean_squared_error(y_true, y_pred)
    • 均⽅误差回归损失
    • y_true:真实值
    • y_pred:预测值
    • return:浮点数结果

线性回归应用

回归分析主要用于分析自变量和因变量的影响关系,也可以分析自变量对因变量的影响因素。它的主要应⽤场景是进⾏预测和控制例如计划制定、KPI制定、⽬标制定等。

优点

回归分析的优点是数据模式和结果便于理解,如线性回归⽤y=ax+b的形式表达,在解释和理
解⾃变量与因变量关系式相对容易;在基于函数公式的业务应⽤中,可以直接使⽤代⼊法求
解,因此应⽤起来⽐较容易。

缺点

回归分析的缺点是只能分析少量变量之间的相互关系,⽆法处理海量变量间的相互作⽤关系,
尤其是变量共同因素对因变量的影响程度。

回归分析实际落地场景举例

回归分析的结果,着重于不同X对于Y影响的对⽐,直接预测Y的场景较少。以在各种媒体上投放的⼴告对最终销售所产⽣的效果研究为例:

  • 公司投入很多的营销渠道:传统大众媒体、直销媒体和数字媒体,通过线性回归能够回答不同渠道之间的销量影响;并且调整每个渠道之间的投入营销,从而获取最大收益;并且在哪个渠道的广告效果最好。
  • 销售量=营销变量+误差因素;回归分析并不能直接得出营销变量和销售量的关系,但能够分析出营销变量里的影响因素大小。

回归分析的结果,着重于不同X对于Y影响的对⽐,直接预测Y的场景较少。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

机器学习之线性回归 的相关文章

随机推荐

  • vue里使用$router.push打开新窗口,以及跳转时需要注意的问题

    因为需求中希望从新建页跳转到详情页 而且希望新建页还不会被清空 最后确定修改页面为点击详情打开一个新窗口显示详情页 在vue中使用 this router push name detail id id 默认是替代本窗口 如果想新开一个窗口
  • 多行fieldname字段的内容串联起来,用逗号分隔

    SELECT UserId RoleName stuff SELECT RoleName FROM temp AS t WHERE t UserId temp UserId FOR xml path 1 1 into temp1 FROM
  • 2022第十三届蓝桥杯省赛B组Python

    本来蓝桥杯是 5 道填空题 5 道编程题 但是这一届突然变成了 2 道填空题和 8 道编程题 文章目录 试题 A 排列字母 试题 B 寻找整数 试题 C 纸张尺寸 试题 D 数位排序 试题 E 蜂巢 试题 F 消除游戏 试题 G 全排列的价
  • 第三篇 制作数据集

    文章目录 摘要 1 选择主题 2 制作数据集 2 1 视频截取 2 1 通过搜索 3 统一名字和格式 3 1 统一名字 3 2 统一图片格式 4 制作测试集 5 关于数据集的一些面试问题 5 1 别不平衡产生原因 5 2 如何解决类别不平衡
  • 解决 ASP.NET 编辑错误"CS0006: 未能找到元数据文件C:\WINDOWS\assembly\GAC_32\System.EnterpriseServices\2.0.0.0__b03f5...

    问题背景 公司最近给我配置了一台新Windows 7旗舰版的电脑 这几天一直在迁移文件 因为新电脑上安装Sqlserver r2失败 解决方法是要安装一个800 MB的安装包 由于最近手上事情比较多也就没有解决这个事情 直接使用VS默认的S
  • 2023-5-26第二十六天

    tone语气 风格 气氛 indent缩排 instruct讲授 指导 指示 命令 motif主题 主旨 interpret翻译 说明 理解 interrupt distraction消遣 分散注意力的事 complicated复杂的 难懂
  • 完美解决微信小程序van-field left-icon自定义图片

    实现效果
  • 可以ping通但是xshell连不上_金万维宽带通动态域名解析在客户端解析不对,怎么办?...

    今天上午 咱们有一个使用金万维宽带通动态域名解析服务的用户反馈 直接Ping金万维动态域名解析服务的域名 发现Ping到的IP和实际的动态公网IP不一致 具体如图 通过上图 客户反馈 宽带通软件上的IP和路由器WAN口IP是一样的 但是Pi
  • python入门--抓取网页文字

    要抓取网页文字 我们需要使用Python的一个库 叫做requests 这个库可以帮助我们向网站发送请求 获取网站的内容 下面是一个简单的示例代码 用于抓取一个网页的文字 import requests import re import o
  • 车联网总结

    一句话 根据车联网产业技术创新战略联盟的定义 车联网是以车内网 车际网和车载移动互联网为基础 按照约定的通信协议和数据交互标准 在车 X X 车 路 行人及互联网等 之间 进行无线通讯和信息交换的大系统网络 是能够实现智能化交通管理 智能动
  • linux下删除asm磁盘,Linux平台下Oracle ASM磁盘组添加磁盘

    以下为Linux平台下Oracle ASM磁盘组添加磁盘的主要操作 多路进软件使用的是HDS的 一 操作系统设置 1 从存储映射磁盘到服务器 然后重启 扫描磁盘 opt D bin dlnkmgr view lu 2 扫描到新的磁盘后 两个
  • 递归递归递归

    function DG htmlDom n n for var i 0 i lt htmlDom length i var navSubmenu htmlDom i nav submenu var item htmlDom i if nav
  • 2023年Java面试题_Mongodb

    Index Mongodb 1 基本概念 1 1 文档 1 2 集合 1 3 数据类型 1 4 id 和 ObjectId 2 基本操作 3 索引介绍 4 应用场景 4 1 MySQL VS MongoDB 4 2 应用场景 4 3 压测结
  • MySQL——关系型数据库管理系统

    目录 01 数据库 02 SQL 结构化查询语言 关于SQL语句的分类 03 MySQL常用命令 1 退出mysql exit 2 查看mysql中有哪些数据库 3 选择使用某个数据库 4 创建数据库 5 查看某个数据库下有哪些表 6 查看
  • 操作系统读书笔记- 01 x86系统架构概览.md-html

    x86系统架构概览 真看不懂了 今天就写这些吧 2 0 处理器工作模式 一般来讲 x86 64处理器具有5种工作模式 实模式 Real address Mode 处理器以16位8086的方式工作 只能以简单的段地址 偏移地址方式进行寻址 地
  • 在Javascript中怎样判断用户按下的是回车键?

  • 本地chrome,访问(超链接跳转)本地文件解决方案

    问题和背景描述 1 用html php写了一个脚本 先从数据库中获取pdf文件的路径 然后将这个路径映射成一个html中的超链接 但是我在浏览器中点击这个超链接 死活跳转不了 2 经过多方调查 和搜索 最终找到了问题的原因 chrome中有
  • Java加密算法有几种?

    前言 编程中常见的加密算法有以下几种 你都知道是哪些吗 它们在不同场景中分别有应用 除信息摘要算法外 其它加密方式都会需要密钥 密钥 密钥 key 又常称金钥 是指某个用来完成加密 解密 完整性验证等密码学应用的秘密信息 密钥分类 加解密中
  • centos7更换和升级JDK版本

    卸载 查询是否安装 jdk rpm qa grep jdk rpm qa grep java 卸载安装的 jdk yum y remove java yum 查询支持的版本 可以先更新一下 yum 源 以便支持最新版本 yum y upda
  • 机器学习之线性回归

    什么是线性回归 线性回归利 回归 程 函数 对 个或多个 变量 特征值 和因变量 标值 之间 关系进 建模的 种分析 式 一般只有一个特征值的称之为单变量回归 多个特征值的称之为多变量回归 线性回归 线性回归可以分为两类 线性关系和非线性关