回归——数学公式推导全过程

文章目录

一、案例引入

二、如何求出正确参数

1. 最速下降法

1)多项式回归

2)多重回归

2. 随机梯度下降法


一、案例引入

以Web广告和点击量的关系为例来学习回归,假设投入的广告费和点击量呈现下图对应关系。

思考:如果花了200元的广告费,广告的点击量会是多少呢?

机器学习就是从给出的数据(训练数据)中进行学习,当你提供未知数据(200广告费)后,给出预测值(500左右点击量)。

实现原理:把图想象为函数,只要知道通过图中各点的函数的形式,就能根据广告费得知点击量。

定义一次函数的表达式        "西塔0,西塔1"  我们称之为参数,也就是一次函数的斜率和截距。

将训练数据中的广告费代入fθ(x),把得到的点击量与训练数据中的点击量相比较,然后找出使二者的差最小的θ。

假设有n个训练数据,那么它们的误差之和可以用这样的表达式表示。这个表达式称为目标函数,E(θ)的E是误差的英语单词Error的首字母。

对每个训练数据的误差取平方之后,全部相加,然后乘以1/2。这么做是为了找到使E(θ)的值最小
的θ。这样的问题称为最优化问题。(取平方是为了让误差值都大于0,最后乘以1/2是为了让后面计算微分更方便而加上去的)

二、如何求出正确参数

1. 最速下降法

比如有一个表达式为的二次函数,它的最小值是g(x)=0,出现在 x =1时。

将g(x)展开后取微分:

增减表如下所示:

比如在x=3这一点,为了使g(x)的值变小,我们需要向左移动 x,也就是必须减小x

如果是在另一侧的x=−1这一点,为了使g(x)的值变小,我们需要向右移动x,也就是必须增加x

只要向与导数的符号相反的方向移动x,g(x)就会自然而然地沿着最小值的方向前进了

用表达式展示出来:        这种方法称为最速下降法或梯度下降法

(A:=B这种写法,它的意思是通过B来定义A。)

η读作“伊塔”,称为学习率的正的常数。根据学习率的大小, 到达最小值的更新次数也会发生变化。换种说法就是收敛速度会不同。

假设η=0.1,从x=3开始

 x := 3−0.1×(2×3−2) =3 −0.4=2.6
 x := 2.6−0.1×(2×2.6−2)=2.6−0.3=2.3
 x := 2.3−0.1×(2×2.3−2)=2.3−0.2=2.1
 x := 2.1−0.1×(2×2.1−2)=2.1−0.2=1.9

而当η较小时,移动量也变小,更新次数就会增加,值也会不断朝着收敛的方向而去。

回过头来看一下上面案例中的目标函数E(θ)

这个目标函数和刚才例子中的g(x)同样是开口向上的形状,所以刚才推导的过程也同样适用于它。不过这个目标函数中包含fθ(x),从表达式(一次函数)中又可以看出,fθ(x)拥有θ0和 θ1两个参数。也就是说这个目标函数是拥有θ0和θ1的双变量函数,所以不能用普通的微分,而要用偏微分。如此一来,更新表达式就是这样的。

E(θ)中有fθ(x),而fθ(x)中又有θ0,所以使用复合函数的微分

     然后再像这样阶梯性地进行微分    

      

左侧最后一行,常数与1/2相抵消了,这就是一开始为什么乘以1/2。

最后得到对θ0求导的表达式:

   

同样对θ1求导得出:

所以参数θ0和θ1的表达式是这样:

根据这个表达式来更新θ0 和θ1,找到正确的fθ(x),然后输入任意的广告费,就可以得到相应的点击量。这样我们就能根据广告费预测点击量了。

1)多项式回归

对于一开始在图中的数据点来说,其实曲线比直线拟合得更好。

把fθ(x)定义为二次函数,就能用它来表示这条曲线了

或者用更大次数的表达式也可以。这样就能表示更复杂的曲线了

对于要解决的问题,在找出最合适的表达式之前,需要不断地去尝试,虽然次数越大拟合得越好,但难免也会出现过拟合的问题。

回到刚才二次函数,最终的参数更新表达式是这样的:

像这样增加函数中多项式的次数,然后再使用函数的分析方法被称为多项式回归。

2)多重回归

之前只是根据广告费来预测点击量,实际生活中决定点击量的除了广告费之外,还有广告的展示位置和广告版面的大小等多个要素。

为了让问题尽可能地简单,我们只考虑广告版面的大小,设广告费为x1、广告栏的宽为x2、广告栏的高为x3,那么fθ可以 表示如下:

在分别求目标函数对θ0,··· ,θ3的偏微分,然后更新参数之前,我们先试着简化表达式的写法。

把参数θ和变量x看作向量:

把θ转置之后,计算它与x相乘的结果,也就是:

之前用多项式表示的fθ,可以像这样用向量来表:

还是设u=E(θ)、v =fθ(x),为了一般化,对第j个参数θj偏微分的表达式

       

    

那么第j个参数的更新表达式就是这样:

像这样包含了多个变量的回归称为多重回归

2. 随机梯度下降法

在引入随机梯度下降法之前,我们先来看下最速下降法的一些缺点:

1. 计算量大、计算时间长

当训练数据很多的时候,最速下降法要对所有的训练数据都重复进行计算。

2. 容易陷入局部最优解

给出稍微复杂一点形状的函数

用最速下降法来找函数的最小值时,必须先要决定从哪个x开始找起。之前用g(x)说明的时候是从x=3或者x=−1开始的。选用随机数作为初始值的情况比较多。不过这样每次初始值都会变,进而导致陷入局部最优解的问题

假设这张图中标记的位置就是初始值,从这个点开始找,可以求出最小值

把下图所示作为初始值位置,没计算完就会停止。这就是陷入局部最优解。

最速下降法的参数更新表达式:

这个表达式使用了所有训练数据的误差,而在随机梯度下降法中会随机选择一个训练数据,并使用它来更新参数。这个表达式中的k就是被随机选中的数据索引。

最速下降法更新1次参数的时间,随机梯度下降法可以更新n次。此外,随机梯度下降法由于训练数据是随机选择的,更新参数时使用的又是选择数据时的梯度,所以不容易陷入目标函数的局部最优解

此外还有随机选择m个训练数据来更新参数的做法,设随机选择m个训练数据的索引的集合为K,那么我们这样来更新参数:

假设训练数据有100个,那么在m=10时,创建一个有10个随机数的索引的集合,例如K={61, 53, 59, 16, 30, 21, 85, 31, 51, 10}。这种做法被称为小批量(mini-batch)梯度下降法。

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

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

相关文章

微服务中的服务发现

微服务中的服务发现 什么是服务发现 服务发现是微服务架构中的关键机制,用于确定各个微服务的地址。例如,在一个 API Server 服务中,我们可能需要调用 User 服务来处理用户注册、登录和信息查询,也可能需要 Product 服务来获取商…

C#与西门子PLC的六大通信库

C#与西门子PLC的六大通信库: 一、S7.NET S7.NET是一款开源的S7协议通信库,支持西门子S7通信。 二、Sharp7 Sharp7与S7.NET一样,是一款.NET版本的S7通信库。 三、Snap7 Snap7是一个开源的C通信库,支持西门子S7通信。 四、Prodave P…

IOS接入微信方法

导入SDK 和配置 SDK 的不做介绍; 1 在IOS 开发者中心 Identifiers 打开‘Associated Domains’ 2 建立一个文件(不带后缀的)apple-app-site-association, teamid在 IOS 开发者中心的会员找,appid在 xcode里面找 {"applin…

DHCPv6 Stateless Vs Stateful Vs Stateless Stateful

DHCPv6常见配置模式 在 IPv6 网络中,DHCPv6 的 Stateless(无状态)、Stateful(有状态) 和 Stateless + Stateful(混合模式) 是三种常见的配置模式。它们的主要区别在于客户端如何获取 IPv6 地址和其他网络配置信息(如 DNS 服务器)。 Stateless(无状态)模式 Statele…

HTTPS协议—加密算法和中间攻击人的博弈

活动发起人小虚竹 想对你说: 这是一个以写作博客为目的的创作活动,旨在鼓励大学生博主们挖掘自己的创作潜能,展现自己的写作才华。如果你是一位热爱写作的、想要展现自己创作才华的小伙伴,那么,快来参加吧&#xff01…

Java替换jar包中class文件

在更新java应用版本的运维工作中,由于一些原因,开发没办法给到完整的jar包,这个时候,就可以只将修改后的某个Java类的class文件替换掉原来iar包中的class文件,重新启动服务即可: 1、将jar包和将要替换的cl…

【UI设计】一些好用的免费图标素材网站

阿里巴巴矢量图标库https://www.iconfont.cn/国内最大的矢量图标库之一,拥有 800 万 图标资源。特色功能包括团队协作、多端适配、定制化编辑等,适合企业级项目、电商设计、中文产品开发等场景。IconParkhttps://iconpark.oceanengine.com/home字节跳动…

【10】高效存储MongoDB的用法

目录 一、什么是MongoDB 二、准备工作 (1)安装MongoDB ​(2)安装pymongo库 三、连接MongoDB 四、指定数据库 五、指定集合 六、插入数据 (1) insert 方法 (2)insert_one(…

MATLAB+Arduino利用板上的按键控制板上Led灯

几年不使用,之前的知识都忘掉了。需要逐步捡起来。 1 熟悉按键的使用 2熟悉灯的控制 1 电路 我们将通过 MATLAB 的 Arduino 支持包与 Arduino 板通信,读取按键状态并控制 LED 灯的亮灭。 按键:连接到 Arduino 的数字引脚(例如…

《深度学习》——YOLOv3详解

文章目录 YOLOv3简介YOLOv3核心原理YOLOv3改进YOLOv3网络结构 YOLOv3简介 YOLOv3(You Only Look Once, version 3)是一种先进的实时目标检测算法,由 Joseph Redmon 和 Ali Farhadi 开发。它在目标检测领域表现出色,具有速度快、精…

【项目设计】网页版五子棋

文章目录 一、项目介绍1.项目简介2.开发环境3.核心技术4.开发阶段 二、Centos-7.6环境搭建1.安装wget工具2.更换软件源(yum源)3.安装scl工具4.安装epel软件源5.安装lrzsz传输工具6.安装高版本gcc/g编译器7.安装gdb调试器8.安装git9.安装cmake10.安装boost库11.安装Jsoncpp库12.…

在coze工作流中将数据回写到飞书表格

在coze工作流中将数据回写到飞书表格

并查集(竞赛)

一、模型建立 本质就是一个数组,数组的下标对应节点的编号,数组的值对应对应编号的节点的父节点。规定根节点的父节点是自己。 规定三个集合的根节点分别是1 4 6 二、并查集操作并实现 并查集主要操作:查找一个节点的父节点,判…

Leetcode 刷题笔记1 图论part04

leetcode 110 字符串接龙 def judge(s1, s2):count 0for i in range(len(s1)):if s1[i] ! s2[i]:count 1return count 1if __name__ __main__:n int(input())begin_str, end_str map(str, input().split())if begin_str end_str:print(0)exit()strlist []for _ in ran…

从扩展黎曼泽塔函数构造物质和时空的结构-7

有了先前关于电荷之间吸引和排斥关系的频率分析图,我们可以按照类似的方法,对磁场做一样的分析,即分析磁体同极相斥,异极相吸的本质。 我们知道上图得以成立的原因在于磁感线,如下图所示的排布方式, 磁体的…

AI比人脑更强,因为被植入思维模型【18】万物系统思维模型

把事物看成链,看成网,看成生态。 定义 万物系统思维模型是一种将宇宙万物视为一个相互关联、相互作用的整体系统的思维方式。它强调从系统的角度去认识、分析和解决问题,认为系统中的各个要素之间存在着复杂的相互关系,这些关系不…

Qt-Q_ENUM宏和QMetaEnum类

Q_ENUM是一个宏定义,它的作用是将一个枚举类型注册到元对象系统,从而能够通过QMetaEnum类获得一些关于enum类型的一些信息,例如获取enum类型的名称字符串,enum值和字符串互相转换,enum类型保存在QVariant中&#xff0c…

MongoDB 配合python使用的入门教程

MongoDB 入门教程 1. 安装 MongoDB 首先,你需要在你的机器上安装MongoDB。你可以从 MongoDB官网 下载并安装 Community 版本。安装完成后,启动MongoDB服务。 # 在Linux/Mac上启动MongoDB mongod# 在Windows上,你可以通过Windows服务启动Mo…

【云馨AI-大模型】大模型的开发和应用中,Python、PyTorch和vLLM关系概括

说明 1. Python 定位:基础编程语言。作用:Python 是大模型生态系统的核心语言,几乎所有深度学习框架(如 PyTorch、TensorFlow)和工具链(如 vLLM)都通过 Python 接口提供服务。特点&#xff1a…

西门子200smart之modbus_TCP(做主站与第三方设备)通讯

西门子200smart做MODBUS_TCP主站通讯,只有一个指令。设置相关参数即可完成读写操作。整 个过程非常复杂,操作非常严谨。此次,我们使用汇川EASY系列PLC做从站,完成演示。关于汇川案例的演示,详见汇川EASY系列之以太网通讯(MODBUS_TCP做从站)-CSDN博客 关于主站和从站的介…