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

news2025/3/28 15:37:46

文章目录

一、案例引入

二、如何求出正确参数

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.coloradmin.cn/o/2320969.html

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

相关文章

Redisson分布式锁(超时释放及锁续期)

🍓 简介:java系列技术分享(👉持续更新中…🔥) 🍓 初衷:一起学习、一起进步、坚持不懈 🍓 如果文章内容有误与您的想法不一致,欢迎大家在评论区指正🙏 🍓 希望这篇文章对你有所帮助,欢…

音视频学习(三十):fmp4

FMP4(Fragmented MP4)是 MP4(MPEG-4 Part 14)的扩展版本,它支持流式传输,并被广泛应用于DASH(Dynamic Adaptive Streaming over HTTP)和HLS(HTTP Live Streaming&#xf…

Java安全-类的动态加载

类的加载过程 先在方法区找class信息,有的话直接调用,没有的话则使用类加载器加载到方法区(静态成员放在静态区,非静态成功放在非静态区),静态代码块在类加载时自动执行代码,非静态的不执行;先父类后子类,…

内存取证之windows-Volatility 3

一,Volatility 3下载 1.安装Volatility 3。 要求:python3.7以上的版本,我的是3,11,这里不说python的安装方法 使用 pip 安装 Volatility 3: pip install volatility3 安装完成后,验证安装: v…

fastapi+playwright爬取google搜索1-3页的关键词返回json

1,playwright无头 2,代理池随机获取代理ip 3,随机浏览行为,随机页面滚动 4,启用stealth模式 5,随机延时搜索 from fastapi import FastAPI, HTTPException from fastapi.responses import JSONResponse import asyncio from concurrent.futures import ThreadPool…

阿里云对象存储教程

搜“对象存储->免费试用” 选择你的心仪产品,我使用的是第一个 创建后获得三个实例: 点击右上角自己的账号可以进入到AccessKey管理界面 回到对象存储控制台创建Bucket实例 在以下文件中替换自己Bucket的信息即可美美使用~ package com.kitty.blog…

【Node.js入门笔记10---http 模块】

Node.js入门笔记10 Node.js---http 模块一、核心功能0.学习http的前提1. 创建 HTTP 服务器2. 处理请求和响应 二、进阶用法1. 路由管理2. 处理 POST 请求3. 中间件模式 三、常见场景四、错误处理与安全五、对比 http 与 Express六、工具库推荐: Node.js—http 模块 …

实验11 机器学习-贝叶斯分类器

实验11 机器学习-贝叶斯分类器 一、实验目的 (1)理解并熟悉贝叶斯分类器的思想和原理; (2)熟悉贝叶斯分类器的数学推导过程; (3)能运用贝叶斯分类器解决实际问题并体会算法的效果&a…

OpenHarmony子系统开发 - 电池管理(二)

OpenHarmony子系统开发 - 电池管理(二) 五、充电限流限压定制开发指导 概述 简介 OpenHarmony默认提供了充电限流限压的特性。在对终端设备进行充电时,由于环境影响,可能会导致电池温度过高,因此需要对充电电流或电…

hive 数据简介

Hive介绍 1)Hive简介 Hive是基于Hadoop的一个数据仓库工具,用于结构化数据的查询、分析和汇总。Hive提供类SQL查询功能,它将SQL转换为MapReduce程序。 Hive不支持OLTP,Hive无法提供实时查询。 2)Hive在大数据生态环境…

Win32桌面编程:ACLUI.DLL,EditSecurity(IntPtr hwndOwner, ISecurityInformation psi)

在Windows编程中,我们通常需要借助通用对话框的力量,今天我们就聊一下“安全属性表”通用对话框的使用心得。 当我们调用EditSecurity函数时: 1.EditSecurity将调用ISecurityInformation中的GetObjectInformation函数 在编写 ISecurityInf…

数据分析异步进阶:aiohttp与Asyncio性能提升

一、时间轴呈现方案进程 2023-04-01:需求确认 确定目标:使用aiohttp与Asyncio提升采集性能,目标采集今日头条网站的新闻数据(标题、内容、时间等)。同时要求在程序中加入代理IP、Cookie和UserAgent的设置,…

《AI大模型趣味实战 》第8集:多端适配 个人新闻头条 基于大模型和RSS聚合打造个人新闻电台(Flask WEB版) 2

《AI大模型趣味实战 》第8集:多端适配 个人新闻头条 基于大模型和RSS聚合打造个人新闻电台(Flask WEB版) 2 摘要 本文末尾介绍了如何实现新闻智能体的方法。在信息爆炸的时代,如何高效获取和筛选感兴趣的新闻内容成为一个现实问题。本文将带领读者通过P…

低配电脑畅玩《怪物猎人:荒野》,ToDesk云电脑优化从30帧到144帧?

《怪物猎人:荒野(Monster Hunter Wilds)》自2025年正式发售以来已取得相当亮眼的成绩,仅用三天时间便轻松突破800万销量,目前顺利蝉联周榜冠军;凭借着开放世界的宏大场景和丰富的狩猎玩法,该游戏…

【js逆向入门】图灵爬虫练习平台 第九题

地址:aHR0cHM6Ly9zdHUudHVsaW5ncHl0b24uY24vcHJvYmxlbS1kZXRhaWwvOS8 f12进入了debugger,右击选择一律不在此处暂停, 点击继续执行 查看请求信息 查看载荷,2个加密参数,m和tt 查看启动器,打上断点 进来 往…

NET6 WebApi第5讲:中间件(源码理解,俄罗斯套娃怎么来的?);Web 服务器 (Nginx / IIS / Kestrel)、WSL、SSL/TSL

一、NET6的启动流程 区别: .NET6 WebApi第1讲:VSCode开发.NET项目、区别.NET5框架【两个框架启动流程详解】_vscode webapi-CSDN博客 2、WebApplicationBuilder:是NET6引入的一个类,是建造者模式的典型应用 1>建造者模式的…

Nginx及前端部署全流程:初始化配置到生产环境部署(附Nginx常用命令)

nginx&前端从初始化配置到部署(xshell) 前言下载nginx前端打包与创建具体文件夹路径配置nginx.nginx.conf文件配置项内容 配置nginx.service文件配置项内容 启动nginx常用nginx命令 前言 目标:在xshell中部署前端包。 第一步&#xff1a…

python 实现一个简单的window 任务管理器

import tkinter as tk from tkinter import ttk import psutil# 运行此代码前,请确保已经安装了 psutil 库,可以使用 pip install psutil 进行安装。 # 由于获取进程信息可能会受到权限限制,某些进程的信息可能无法获取,代码中已经…

【xiaozhi赎回之路-2:语音可以自己配置就是用GPT本地API】

固件作用 打通了网络和硬件的沟通 修改固件实现【改变连接到小智服务器的】 回答逻辑LLM自定义 自定义了Coze(比较高级,自定义程度比较高,包括知识库,虚拟脚色-恋人-雅思老师-娃娃玩具{可能需要使用显卡对开源模型进行微调-产…

WX小程序

下载 package com.sky.utils;import com.alibaba.fastjson.JSONObject; import org.apache.http.NameValuePair; import org.apache.http.client.config.RequestConfig; import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.client.methods.Cl…