线性回归线性关系、非线性关系、常见函数导数、损失函数与优化算法、正规方程与单变量函数梯度下降、多变量函数梯度下降

news2024/11/17 23:57:07

一、线性回归概述

线性回归(Linear regression):是利用回归方程(函数)一个或多个自变量(特征值)和因变量(目标值)之间关系进行建模的一种分析方式

特点:只有一个自变量的情况称为单变量回归,多于一个自变量情况的叫做多元回归

 特征值与目标值之间建立了一个关系,这个关系可以理解为线性模型

二、线性回归的特征与目标的关系分析

线性回归当中主要有两种模型,一种是线性关系,另一种是非线性关系。在这里我们只能画一个平面更好去理解,所以都用单个特征或两个特征举例子

线性关系

单变量线性关系与多变量线性关系如下图

单特征与目标值的关系呈直线关系,或者两个特征与目标值呈现平面的关系

非线性关系回归方程可以理解为:y = w_{1}x_{1} + w_{2}x_{2}^{2} + w_{3}x_{3}^{2},如下

三、线性回归API

  • sklearn.linear_model.LinearRegression()
    • LinearRegression.coef_:回归系数

简单使用代码如下

from sklearn.linear_model import LinearRegression

x = [[80, 86], [82, 80], [85, 78], [90, 90], [86, 82], [82, 90], [78, 80], [92, 94]]   # [平时成绩,考试成绩]
y = [84.2, 80.6, 80.1, 90, 83.2, 87.6, 79.4, 93.4]   # 总成绩
estimator = LinearRegression()   # 实例化API
estimator.fit(x, y)   # 使用fit方法进行训练
print('系数是:', estimator.coef_)   # 平时成绩与考试成绩系数,即所占比例
print('预测值是:', estimator.predict([[90, 85]]))   # 预测总成绩
------------------------------------------------------------------
输出:
系数是: [0.3 0.7]
预测值是: [86.5]

四、常见函数导数

导数的四则运算

五、损失函数与优化算法

5.1 损失函数

总损失定义为

 即为各个预测值与真实值之差的平方和,其中

  • y_{i}为第i个训练样本的真实值
  • h(x_{i})为第i个训练样本特征值组合预测函数,即预测值
  • 损失函数又称最小二乘法

5.2 优化算法(优化减少总损失)

优化的目的:找到最小损失对应的W值

线性回归常用两种优化算法

1.正规方程

利用矩阵的逆、转置求解,X为特征值矩阵,y为目标值矩阵,将X、y带入后可直接求到最好的结果

缺点:只适合样本和特征较少的情况,当特征过多过复杂时,求解速度太慢并且得不到结果

正规方程的推导过程

把该损失函数转换成矩阵写法

\begin{aligned} J(\theta) & =\left(h_{w}\left(x_{1}\right)-y_{1}\right)^{2}+\left(h_{w}\left(x_{2}\right)-y_{2}\right)^{2}+\cdots+\left(h_{w}\left(x_{m}\right)-y_{m}\right)^{2} \\ & =\sum_{i=1}^{m}\left(h_{w}\left(x_{i}\right)-y_{i}\right)^{2} \\ & =(y-X w)^{2} \end{aligned}

其中y是真实值矩阵,X是特征值矩阵,w是权重矩阵

对其求解关于w的最小值,起止y,X 均已知二次函数直接求导,导数为零的位置,即为最小值

求导推导如下

\begin{aligned} 2(\mathrm{Xw}-\mathrm{y}) * \mathrm{X} & =0 \\ 2(\mathrm{Xw}-\mathrm{y}) *\left(X \mathrm{X}^{\mathrm{T}}\right) & =0 \mathrm{X}^{T} \\ 2(\mathrm{Xw}-\mathrm{y}) *\left(X \mathrm{X}^{\mathrm{T}}\right)\left(X \mathrm{X}^{\mathrm{T}}\right)^{-1} & =0 \mathrm{X}^{T}\left(\mathrm{XX}^{\mathrm{T}}\right)^{-1} \\ 2(\mathrm{Xw}-\mathrm{y}) & =0 \\ \mathrm{Xw} & =\mathrm{y} \\ \mathrm{X}^{T} X w & =X^{T} y \\ \left(\mathrm{X}^{T} X\right)^{-1}\left(\mathrm{X}^{T} X\right) * w & =\left(\mathrm{X}^{T} X\right)^{-1} * X^{T} y \\ w & =\left(\mathrm{X}^{T} X\right)^{-1} * X^{T} y \end{aligned}

以上推导过程中, X是一个m行n列的矩阵,并不能保证其有逆矩阵,通过右乘或左乘X^{T}可将其变成一个方阵,保证其有逆矩阵

2.梯度下降

以下山为例,以他当前的所处的位置为基准,寻找这个位置最陡峭的地方,然后朝着山的高度下降的地方走,每走一段距离,都反复采用同一个方法,最后就能成功的抵达山谷

梯度下降:一个可微分的函数代表一座山,函数的最小值就是山底,最快的下山的方式就是找到当前位置最陡峭的方向,然后沿着此方向向下走,对应到函数中,就是找到给定点的梯度 ,然后朝着梯度相反的方向,就能让函数值下降的最快,因为梯度的方向就是函数之变化最快的方向,重复利用这个方法,反复求取梯度,最后就能到达局部的最小值

  • 单变量的函数中:梯度其实就是函数的微分,代表着函数在某个给定点的切线的斜率
  • 多变量函数中:梯度是一个向量,向量有方向,梯度的方向就指出了函数在给定点的上升最快的方向
  • 梯度的方向是函数在给定点上升最快的方向,那么梯度的反方向就是函数在给定点下降最快的方向

单变量函数梯度下降

假设有一个单变量的函数:J(θ) = \theta^{2}

  • 函数的微分:J'(θ) = 2θ
  • 初始化,起点为: \theta ^{0} = 1
  • 学习率:α = 0.4

梯度下降的迭代计算过程如下

\begin{aligned} \theta^{0} & =1 \\ \theta^{1} & =\theta^{0}-\alpha * J^{\prime}\left(\theta^{0}\right) \\ & =1-0.4 * 2 \\ & =0.2 \\ \theta^{2} & =\theta^{1}-\alpha * J^{\prime}\left(\theta^{1}\right) \\ & =0.04 \\ \theta^{3} & =0.008 \\ \theta^{4} & =0.0016 \end{aligned}

多变量函数的梯度下降

假设有一个目标函数 :\mathrm{J}(\theta)=\theta_{1}^{2}+\theta_{2}^{2}

现在要通过梯度下降法计算这个函数的最小值,通过观察就能发现最小值其实就是 (0,0)点,现从梯度下降算法开始一步步计算到这个最小值,假设初始的起点为: \theta ^{0} = (1, 3)

初始的学习率为:α = 0.1

函数的梯度为\nabla J(\theta)=<2 \theta_{1}, 2 \theta_{2}>

进行多次迭代

 \begin{aligned} \Theta^{0} & =(1,3) \\ \Theta^{1} & =\Theta^{0}-\alpha \nabla J(\Theta) \\ & =(1,3)-0.1(2,6) \\ & =(0.8,2.4) \\ \Theta^{2} & =(0.8,2.4)-0.1(1.6,4.8) \\ & =(0.64,1.92) \\ \Theta^{3} & =(0.512,1.536) \\ \Theta^{4} & =(0.4096,1.2288000000000001) \\ \vdots & \\ \Theta^{10} & =(0.10737418240000003,0.32212254720000005) \\ \vdots & \\ \Theta^{50} & =\left(1.1417981541647683 \mathrm{e}^{-05}, 3.425394462494306 \mathrm{e}^{-05}\right) \\ \vdots & \\ \Theta^{100} & =\left(1.6296287810675902 \mathrm{e}^{-10}, 4.888886343202771 \mathrm{e}^{-10}\right) \end{aligned}

 单变量与多变量如图

梯度下降(Gradient Descent)公式

\theta_{i}=\theta_{i}-\alpha \frac{\partial}{\partial \theta_{i}} J(\theta)

α在梯度下降算法中被称作为学习率或者步长,意可以通过α来控制每一步走的距离,以保证不要步子跨的太大,错过了最低点,同时也要保证不要走的太慢

梯度前加一个负号,意味着朝着梯度相反的方向前进,梯度的方向实际就是函数在此点上升最快的方向,朝着下降最快的方向走,自然就是负的梯度的方向,故需要加上负号

梯度下降正规方程
需要选择学习率不需要
需要迭代求解一次运算得出
特征数量较大可以使用需要计算方程,时间复杂度高O(n^{3})

有了梯度下降这样一个优化算法,回归就有了"自动学习"的能力 

优化动态图如下  

选择

  • 小规模数据:LinearRegression(不能解决拟合问题)和岭回归
  • 大规模数据:SGDRegressor

学习导航:http://xqnav.top/

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

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

相关文章

机器学习笔记之受限玻尔兹曼机(五)基于含隐变量能量模型的对数似然梯度

机器学习笔记之受限玻尔兹曼机——基于含隐变量能量模型的对数似然梯度引言回顾&#xff1a;包含配分函数的概率分布受限玻尔兹曼机——场景构建对比散度基于含隐变量能量模型的对数似然梯度引言 上一节介绍了对比散度(Constractive Divergence)思想&#xff0c;本节将介绍基于…

制造型企业如何进行多项目管理?这篇文章说清楚了

受经济全球化与科技迅速发展的影响&#xff0c;我国很多企业早已进入了多项目管理模式。多项目管理是从企业整体出发&#xff0c;动态选择不具有类似性的项目&#xff0c;对企业所拥有的或可获得的生产要素和资源进行优化组合&#xff0c;有效、最优地分配企业资源&#xff0c;…

葡聚糖修饰金纳米颗粒(Dex-AuNps)|聚环氧氯丙烷二甲胺修饰多孔磁性葡聚糖微球

葡聚糖修饰金纳米颗粒(Dex-AuNps)|聚环氧氯丙烷二甲胺修饰多孔磁性葡聚糖微球 产品描述&#xff1a;通过特异性识别作用在表面等离子体共振传感器的金膜表面构建了伴刀豆球蛋白A/葡聚糖修饰金纳米颗粒自组装膜 中文名称&#xff1a;葡聚糖修饰金纳米颗粒 英文名称&#xff1…

CMAKE编译知识

1&#xff0c;Ubuntu安装了cmake之后&#xff0c;直接输入指令查看版本。cmake -version 我这里的版本为3.16.3 2&#xff0c;使用visual studio里面创建一个CMake项目是最快可以看到的。但是一般无法理解。所以我找了网上资料。根据网上所说和自己再试错下。初步了解了cmake…

[附源码]JAVA毕业设计微博网站(系统+LW)

[附源码]JAVA毕业设计微博网站&#xff08;系统LW&#xff09; 项目运行 环境项配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xf…

IAA游戏市场规模已达百亿,如何防范游戏安全问题?

近年来&#xff0c;移动休闲游戏市场发展速度迅猛&#xff0c;伽马数据发布的《2022年休闲游戏发展报告》称&#xff0c;2022年第一季度移动游戏下载量TOP200榜单中&#xff0c;休闲类游戏占比已达45%。 2022年第一季度下载量TOP200移动游戏占比情况丨数据来源伽马数据 相比IA…

MMCV学习——基础篇4(Hook)| 八千字:从设计模式到源码解读

MMCV学习——基础篇4&#xff08;Hook&#xff09; Hook 机制在MMCV的各个开源库中应用的十分广泛&#xff0c;它主要用于管理和扩展Runner的整个生命周期。通过Hook机制在Runner的各个生命周期节点调用自定义的函数&#xff0c;可以实现丰富的定制功能。 文章目录MMCV学习——…

【C语言航路】第八站:调试(第一幕)

前言 调试的这一站&#xff0c;对于市面上大部分的书籍都是缺失的&#xff0c;然而调试这个内容是非常重要的&#xff0c;尤其是在数据结构部分&#xff0c;将会频繁的使用&#xff0c;这也为我们后面讲解数据结构做一个铺垫。同时&#xff0c;在以后未来工作的时候&#xff0…

Generative Cooperative Learning for Unsupervised Video Anomaly Detection

介绍 在现实世界中&#xff0c;基于学习的异常检测任务极具挑战性&#xff0c;这主要是因为此类事件很少发生。由于这些事件的无约束性质&#xff0c;这一挑战进一步加剧。因此&#xff0c;获取足够的异常示例是相当麻烦的&#xff0c;而人们可以安全地假设&#xff0c;将永远…

Xcode9 无证书真机调试​

写在前面​ 公司分配了新的测试机,证书99台名额已满,所以上网找教程,学习了一下如何使用Xcode无证书进行真机调试。​ 一. 创建证书​ 1. 运行Xcode&#xff0c; Xcode–》Preference–》添加账号&#xff08;能在appstore下载的账号&#xff09;​ 2. 选中刚才添加的AppleID…

光华股份在深交所上市:市值突破51亿元,前三季度收入约10亿元

12月8日&#xff0c;浙江光华科技股份有限公司&#xff08;下称“光华股份”&#xff0c;SZ:001333&#xff09;在深圳证券交易所主板上市。本次上市&#xff0c;光华股份的发行价格27.76元/股&#xff0c;发行数量为3200万股&#xff0c;募资总额约为8.88亿元&#xff0c;扣除…

JDK19都出来了~是时候梳理清楚JDK的各个版本的特性了【JDK11特性讲解】

JDK各个版本特性讲解-JDK11特性 lecture&#xff1a;波哥 一、JAVA11 概述 2018年9月26日,Oracle官方发布JAVA11.这是JAVA大版本周期变化后的第一个长期支持版本,非常值得关注.最新发布的JAVA11将带来ZGC HttpClient等重要特性,一共17个需要我们关注的JEP,参考文档http://openj…

Docker_简介、优势、架构、常用命令

Docker简介 Docker是什么 Docker就是将环境在不消耗大量资源的情况下复制出一个一样的环境 一次镜像&#xff0c;处处运行 内核级虚拟化 基于GO语言实现的开源项目 解决运行环境和配置问题的软件容器 容器与虚拟机比较 虚拟机是模拟的整套操作系统&#xff0c;会有资源占用…

Unity Cg着色器开发教程

Unity Cg着色器开发教程 学习在 Unity 中对图形管道进行编程&#xff0c;以便为游戏对象创建独特的视觉表面 课程英文名&#xff1a;Shader Development from Scratch for Unity with Cg 此视频教程共2.0小时&#xff0c;中英双语字幕&#xff0c;画质清晰无水印&#xff0c…

代码随想录算法训练营第二天| 977.有序数组的平方, 209.长度最小的子数组, 59.螺旋矩阵II

代码随想录算法训练营第二天| 977.有序数组的平方&#xff0c; 209.长度最小的子数组&#xff0c; 59.螺旋矩阵II 题目链接: 977.有序数组的平方 给你一个按 非递减顺序 排序的整数数组 nums&#xff0c;返回 每个数字的平方 组成的新数组&#xff0c;要求也按 非递减顺序 排…

ASEMI整流桥KBU610和KBP210封装参数区别

编辑-Z 很多人在选型时容易把KBU和KBP给搞混&#xff0c;这两种封装是有区别的&#xff0c;下面是整流桥KBU610和KBP210封装参数区别。 整流桥KBU610参数&#xff1a; 型号&#xff1a;KBU610 封装&#xff1a;KBU-4 最大重复峰值反向电压&#xff08;VRRM&#xff09;&…

1557_AURIX_TC275_复位控制单元以及相关寄存器

全部学习汇总&#xff1a; GreyZhang/g_TC275: happy hacking for TC275! (github.com) 这是之前没看完的一张表&#xff0c;结合之前的一般看起来&#xff0c;大部分的模块还是支持重启机制的。 状态寄存器中可以读到上一次复位的触发原因&#xff0c;这个对于软件的一些状态判…

嵌入式分享合集118

一、模电--数电 晶体管 VS 二进制数 模电里面的二极管、三极管&#xff08;开关状态&#xff09;、晶闸管&#xff0c;分别对应数电的二进制数0和1。 放大器 VS 乘法/移位器 模电里的放大器就是把信号放大N倍&#xff0c;对应数电里面的乘法&#xff0c;当然如果乘的系数是2的…

C# SuperSocket 手把手教你入门 傻瓜教程---6(SuperSocket内置的命令行协议)

C# SuperSocket 手把手教你入门 傻瓜教程系列教程 C# SuperSocket 手把手教你入门 傻瓜教程---1&#xff08;服务器单向接收客户端发送数据&#xff09; C# SuperSocket 手把手教你入门 傻瓜教程---2&#xff08;服务器和客户端双向通信&#xff09; C# SuperSocket 手把手教…

No.1 初步认识Vue2.0

目录一、准备工作二、简单使用Vue2.1 初步使用Vue绑定2.2 Vue中数据绑定&#xff08;用于表单元素&#xff0c;即有value属性的元素&#xff09;2.2.1 单向数据绑定2.2.2 双向双向数据绑定2.2.3 数据绑定的简写2.3 Vue中el与data的两种书写方式2.3.1 el的写法——方式一2.3.2 e…