回归——数学公式推导全过程
文章目录
一、案例引入
二、如何求出正确参数
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)梯度下降法。
相关文章:
回归——数学公式推导全过程
文章目录 一、案例引入 二、如何求出正确参数 1. 最速下降法 1)多项式回归 2)多重回归 2. 随机梯度下降法 一、案例引入 以Web广告和点击量的关系为例来学习回归,假设投入的广告费和点击量呈现下图对应关系。 思考:如果花了…...
线程池详解:在SpringBoot中的最佳实践
线程池详解:在SpringBoot中的最佳实践 引言 在Java并发编程中,线程池是一种非常重要的资源管理工具,它允许我们在应用程序中有效地管理和重用线程,从而提高性能并降低资源消耗。特别是在SpringBoot等企业级应用中,正…...
.NET开源的智能体相关项目推荐
一、AntSK 由AIDotNet团队开发的人工智能知识库与智能体框架,支持多模型集成和离线部署能力。 核心能力: • 支持OpenAI、Azure OpenAI、星火、阿里灵积等主流大模型,以及20余种国产数据库(如达梦) • 内置语义内核&a…...
spring-security原理与应用系列:ignoredRequests
目录 WebSecurityConfig 何时调用 configure(WebSecurity) AbstractConfiguredSecurityBuilder 如何赋值ignoredRequests 紧接上一篇文章,这一篇我们来看看核心过滤器FilterChainProxy的构造参数对象ignoredRequests是如何被赋值的? 点击WebSecurity…...
(windows)conda虚拟环境下open-webui安装与启动
一、创建conda环境 重点强调下,如果用python pip安装,一定要选择python3.11系列版本,我选的3.11.9。 如果你的版本不是这个系列,将会出现一些未知的问题。 conda create -n open-webui python3.11 -y如下就创建好了 二、安装o…...
CentOS系统下安装tesseract-ocr5.x版本
CentOS系统下安装tesseract-ocr5.x版本 安装依赖包: yum update -y yum install autoconf automake libtool libjpeg-devel libpng-devel libtiff-devel zlib-devel yum install automake libtool bzip2 -y手动编译安装GCC(因系统默认安装的GCC版本比较…...
第五周日志-伪协议(3)
常见读取源码的file,php://filter和各种编码 还有执行php的 php://input和各种编码,data 在进行文件包含之前,先定位一下 Flag 文件的位置(这里可以使用工具扫) or直接访问 /flag.php 文件,结果返回为空&…...
飞牛NAS本地部署小雅Alist结合内网穿透实现跨地域远程在线访问观影
文章目录 前言1. VMware安装飞牛云(fnOS)1.1 打开VMware创建虚拟机1.3 初始化系统 2. 飞牛云搭建小雅Alist3. 公网远程访问小雅Alist3.1 安装Cpolar内网穿透3.2 创建远程连接公网地址 4. 固定Alist小雅公网地址 前言 嘿,小伙伴们,…...
十七天-Numpy 学习笔记
Numpy 学习笔记 Numpy 作为 Python 中用于进行科学计算的核心库,提供了高性能的多维数组对象,以及大量用于数组操作的工具。下面围绕 “常量”“数据类型”“时间日期和时间增量” 三个方面,梳理 Numpy 中基本的数据概念和数组创建相关知识。…...
浅谈WebSocket-FLV
FLV是一种视频数据封装格式,这种封装被标准通信协议HTTP-FLV和RTMP协议应用。 而WebSocket-FLV是一种非标的FLV封装数据从后端发送到前端的一种方式。 在WebSocket的url请求中,包含了需要请求设备的视频相关信息,在视频数据到达时,…...
milvus-use教程 python
简介 项目地址:milvus-use: milvus-use教程 python 需求描述 参考vanna项目,获取数据库元数据和问题sql对,存入Milvus向量数据库,之后进行检索,返回相似的数据库表和问题对。本项目采用的嵌入模型为m3e-large。该该…...
Python列表生成式
Python 的 列表生成式(List Comprehension) 是一种简洁高效的创建列表的方式,可以用一行代码替代多行循环逻辑。 传统的循环的写法 # 循环遍历列表中的每个元素,并将其平方后添加到新的列表中 original [0, 1, 2, 3, 4] squares…...
MATLAB绘图配色包说明
本栏目将分享MATLAB数据分析图表,该贴讲述配色包的使用 将配色包colormap_nclCM文件夹添加到路径close all(尽量不要删),使用map colormap(nclCM(309))时会多出来一张空白图片。配色资源来自slandarer;找不到合适颜色…...
Cursor异常问题全解析-无限使用
title: Cursor异常问题全解析无限使用 tags: cursor categories:aiai编程 mathjax: true description: Cursor异常问题全解析与解决方案大全 abbrlink: 64908bd0 date: 2025-03-19 14:48:32 🤖 Assistant 🚨 Cursor异常问题全解析与解决方案大全 &…...
Ubuntu系统保姆级Paperless-ngx部署指南:零基础实现文档云端化管理
文章目录 前言1.关于Paperless-ngx2.Docker部署3.简单使用paperless4.安装cpolar内网穿透5. 配置公网地址6. 配置固定公网地址总结 前言 在当今快节奏的办公环境中,文档管理成为了一个不可忽视的问题。想象一下这样的场景:你需要一份重要的合同…...
资本运营:基于Python实现的资本运作模拟
基于Python实现的一个简单的资本运营框架; 企业生命周期演示:观察初创→成长→上市→并购全流程 行业对比分析:不同行业的财务特征和估值差异 资本运作策略:体验IPO定价、投资决策、并购整合等操作 市场动态观察ÿ…...
每日总结3.27
蓝桥刷题 1. 团建 (树dfs) #include <bits/stdc.h> using namespace std; const int N200005; int a[N],b[N]; int ans; map<int,vector<int>>m1,m2; void dfs(int x,int y,int count) { if(a[x]!b[y]) {return;} ansmax(ans,c…...
3-2RYU控制器应用程序开发(一)
图1 SDN框架 通过利用Ryu框架的丰富功能以及RYU应用程序开发中的事件驱动(装饰器)的编程模型,我们能够开发符合需求的SDN控制器应用程序。通过开发的RYU控制器可以实现各种网络策略控制和管理功能。在SDN软件定义网络编程中,RYU应…...
算法250327题目
1114: 4006 AB问题 题目描述 给定两个整数A和B,其表示形式是:从个位开始,每三位数用逗号,隔开。 现在请计算AB的结果,并以正常形式输出。 输入 输入包含多组数据,每组数据占一行,由两个整数A和B组成&am…...
数据结构:汉诺塔问题的递归求解和分析
递归方法求解该类问题,是一种简单的思维方法,通常比使用迭代方法更简单。但是,递归方法也有劣势。此处以典型的汉诺塔问题(Tower of Hanoi)为例给予说明。 汉诺塔是根据一个传说形成的数学问题,最早是由法国…...
编辑器检视器面板简单扩展2+编辑器检视器面板深度扩展1
枚举检视器面板显示 代码: public enum Profession {Warrior0,Wizard } public Profession Pro; //在类中声明 小齿轮增加回调函数 点击控制台输出: 代码: [ContextMenu("输出攻防比")]public void PrintADProportion(){Debug…...
二分查找模板--从题目中讲解三大二分模板
二分查找的特点:最恶心、细节最多、最容易写出死循环的算法 目录 1.朴素的二分模板 1.1题目链接:704.二分查找 1.2题目描述: 1.3算法流程: 1.4算法代码: 1.5朴素二分模板: 2.查找左,右边界的二分模板…...
EF Core 执行原生SQL语句
文章目录 前言一、执行查询(返回数据)1) 使用 FromSqlRaw或 FromSqlInterpolated 方法,适用于 DbSet<T>,返回实体集合。2)结合 LINQ 查询3)执行任意原生SQL查询语句(使用ADO.N…...
HiveChat:提升团队协作效率的AI聊天应用
什么是 HiveChat ? HiveChat 作为一款专为中小团队设计的 AI 聊天应用,支持 Deepseek、Open AI、Claude、Gemini 等模型。管理员一人配置,全团队轻松使用各种 AI 模型。凭借其强大的功能和便捷的操作,有望成为团队沟通协作的得力助…...
python中的继承
目录 一、继承 单继承 多继承 方法的重写 一、继承 在Python中,继承是面向对象编程中的重要概念,它允许一个类(子类)继承另一个类(父类)的属性和方法。子类可以继承父类的属性和方法,并且可…...
Vulnhub靶场FALL靶机通关攻略
1.打开靶机和kali 2.扫描靶机ip 靶机ip为192.168159.158 3.访问下网站 翻阅一下 可能存在后门 网站根目录下可能有线索 4.爆破目录 ir -u http://192.168.159.158 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -x .php,.bak,.txt,.sh,.ht…...
Java基础概念汇总
JavaEE Java基础概念面试题详解1. Java的特点是什么?2. Java和C的区别有哪些?3. 什么是JDK、JRE和JVM?它们之间有什么关系?4. Java是编译型语言还是解释型语言?5. Java如何实现跨平台? 数据类型与变量面试题…...
【服务端】使用conda虚拟环境部署Django项目
写在开头 为了与客户端的Deep search配合,需要整一个后台管理来保存和管理deep search的数据资料。选择前端框架Vue-Vben-Admin Django后台服务来实现这个项目。 废话结束,从零开始。。。。 一、环境搭建 1. 安装 Anaconda 下载 Anaconda࿱…...
基于Pycatia的智能孔特征识别技术:无参模型圆心自动化提取方案
引言 本文介绍了一种基于Pycatia二次开发的无参数模型孔特征识别技术,通过拓扑分析与几何特征检测双验证机制,实现圆形孔边线的精准识别及圆心坐标自动化生成。该方案可有效解决逆向工程、质量检测等场景下非参数化模型的孔位分析难题,提升三…...
cpu 比较低,load 比较高怎么解决
当系统出现 CPU 使用率低但 Load Average(系统负载)高 的情况时,通常意味着系统资源瓶颈不在 CPU,而可能出现在其他环节(如 I/O 等待、锁竞争、大量进程排队等)。以下是排查和解决问题的详细步骤: 一、理解 Load Average 的含义 Linux 系统的 Load Average 表示 单位时…...
qt QQuaternion详解
1. 概述 QQuaternion 是 Qt 中用于表示三维空间中旋转的四元数类。它包含一个标量部分和一个三维向量部分,可以用来表示旋转操作。四元数在计算机图形学中广泛用于平滑的旋转和插值。 2. 重要方法 默认构造函数 QQuaternion::QQuaternion(); // 构造单位四元数 (1…...
伊利工业旅游4.0,近距离感受高品质的魅力
3月24日,在2025年第112届全国糖酒会(简称春糖)前夕,伊利集团“可感知高品质探寻荟”活动在成都召开,记者走进伊利在西南地区最大的乳制品生产基地—邛崃工厂,零距离见证液态奶、酸奶、冷饮等乳制品的诞生&a…...
前端面经分享(25/03/26)
北京一家做AI解决方案的公司,技术一面,15k-20k,要求3-5年 你们React项目里路由模式用的什么React里class组件和function组件都用过吗常用Hook,解释一下他们的作用useEffect第二个参数填空数组和不填有什么区别React组件通信的常用…...
unity实现图片查看器有限制的移动缩放功能
需求 unity实现键盘wasd键控制图片的移动,图片长度未超出屏幕不能移动,宽度未超出屏幕不能移动。jk键控制图片的缩放,缩放有限制 using UnityEngine;public class ImageController : MonoBehaviour {[Header("移动设置")]public f…...
STM32基础教程——输入捕获模式测量PWM频率
目录 前言 技术实现 原理图 连线图 代码实现 内容要点 PWM基本结构 开启外设时钟 配置GPIO端口 配置时基单元 初始化输出比较单元 输出比较通道重映射 输入捕获功能初始化 计算捕获PWM的频率 实验结果 问题记录 前言 IC(Input Capture)输…...
【redis】集群 如何搭建集群详解
文章目录 集群搭建1. 创建目录和配置2. 编写 docker-compose.yml完整配置文件 3. 启动容器4. 构建集群超时 集群搭建 基于 docker 在我们云服务器上搭建出一个 redis 集群出来 当前节点,主要是因为我们只有一个云服务器,搞分布式系统,就比较…...
Linux应用:线程基础
线程介绍 进程是程序在操作系统里的一次执行过程,是系统进行资源分配和调度的基本单位;而线程是进程中的一个执行单元,是 CPU 调度和分派的基本单位。一个进程可以包含多个线程,这些线程共享进程的资源,如内存空间、文…...
力扣HOT100之普通数组:238. 除自身以外数组的乘积
这道题不能使用除法,我第一时间想到用前缀表和后缀表来解决,假设数组nums的长度为n,我们直接定义前缀表pre和后缀表suf,其中pre[i] pre[i - 1] * nums[i - 1] nums[0] * nums[1] * ... * nums[i - 1] ,而suf[j] suf…...
PHP回调后门小总结
目录 1.call_user_func 函数说明 蚁剑连接 2.数组操作造成的单参数回调后门 array_filter 函数说明 蚁剑连接 array_map 函数说明 蚁剑连接 3.二参数回调函数 uasort 函数说明 uksort array_reduce array_udiff 蚁剑连接 4.三参数的回调后门 array_walk 函数说…...
《深度剖析SQL数据类型转换:隐式与显式的奥秘》
在SQL的世界里,数据类型转换是一个基础且关键的操作,它贯穿于数据库开发、管理与数据分析的各个环节。数据类型转换分为隐式转换和显式转换,二者各有特点与应用场景,深刻理解它们对于编写高效、稳定的SQL代码至关重要。 一、数据…...
通过TIM+DMA Burst 实现STM32输出变频且不同脉冲数量的PWM波形
Burst介绍: DMA控制器可以生成单次传输或增量突发传输,传输的节拍数为4、8或16。 为了确保数据一致性,构成突发传输的每组传输都是不可分割的:AHB传输被锁定,AHB总线矩阵的仲裁器在突发传输序列期间不会撤销DMA主设备…...
多线程 --- 多线程编程
在写代码的时候,可以使用多进程进行并发编程(在Java中,不太推荐,很多很多关于进程相关的API,在Java标准库中,都没有提供),也可以使用多线程进行并发编程(系统提供了多线程…...
利用新一代雷达传感器增强ADAS系统的检测和计算(TI文档)
摘要 德州仪器 (TI) 的新一代雷达传感器AWR2E44P和AWR2944P推动了TI的ADAS雷达产品系列发展,专注于提 高性能以满足严格的 NCAP(新车评估计划)和 FMVSS(联邦机动车辆安全标准)自动驾驶和安全法规。这些雷 达器件为 AWR…...
前端工程化开篇
前端发展史梳理: 最早的html,css,js是前端三剑客,足以实现所有的前端开发任务,但是呢,一个简单的前端交互效果可能就需要一大堆的代码去实现。 后来呢,有了前端库jQuery,他可以使前…...
Android 问真八字-v2.1.7[看八字APP]
Android 问真八字 链接:https://pan.xunlei.com/s/VOMMuCVQRQrM2vRsHj14SsO0A1?pwdavzw# Android 问真八字-v2.1.7[看八字APP]...
go - grpc入门
前期准备 工具安装及使用 grpc开发 编写proto文件 proto文件是符合Protocol Buffers语言规范的数据交换协议文件,就像以前WebService定义服务时使用的XML文件。现在一般都是用proto3了,这里创建一个名为 hello.proto 的文件,放到项目的pr…...
Linux操作系统配置本地yum源和定时任务
操作系统环境:CentOS 7.2 本地yum源配置 1.挂载镜像 mount /dev/cdrom /mnt/cdrom 2.备份原yum配置 mv /etc/yum.repos.d /etc/yum.repos.d.bak 3.创建本地yum源配置文件 mkdir /etc/yum.repos.d vi /etc/yum.repos.d/CentOS-local.repo 添加内容: #本…...
【活动回顾】StarRocks Singapore Meetup #2 @Shopee
3 月 13 日,StarRocks 社区在新加坡成功举办了第二场 Meetup 活动,主题为“Empowering Customer-Facing Analytics”。本次活动在 Shopee 新加坡办公室举行,吸引了来自 Shopee、Grab 和 Pinterest 的专家讲师以及 50 多位参会者。大家围绕电商…...
优选算法——双指针专题
本章先分享关于优选算法的双指针的思路: 主要是以题目来展示常见使用双指针的思路。 ps: 双指针做法:不要被表面所迷惑,它其实是通过用一个数组的下标来充当指针 数组分两块:是⾮常常⻅的⼀种题型,主要就是根据⼀种…...
深度解析:TOML、XML、YAML及其他配置/数据格式对比
深度解析:TOML、XML、YAML及其他配置/数据格式对比 在软件开发和系统配置中,选择合适的配置或数据格式至关重要。本文将对比 TOML、XML、YAML 等常见格式,梳理它们的核心特性、适用场景及区别,并扩展介绍其他类似格式,…...