当前位置: 首页 > news >正文

回归算法优化过程推导

假设存在一个数据集,包含工资、年龄及贷款额度三个维度的数据。我们需要根据这个数据集进行建模,从而在给定工资和年龄的情况下,实现对贷款额度的预测。其中,工资和年龄是模型构建时的两个特征,额度是模型输出的目标值。

工资年龄额度
40002520000
80003070000
50002835000
75003350000
120004085000

我们可以根据数据集和相关需求进行公式建模:
y = θ 0 + θ 1 x 1 + θ 2 x 2 + ε = θ T x + ε y = {\theta }_{0} + {\theta }_{1}x_1 + {\theta }_{2}x_2 + \varepsilon = {\theta }^{T}x + \varepsilon y=θ0+θ1x1+θ2x2+ε=θTx+ε
其中, θ 0 \theta _0 θ0 为偏置项, θ 1 \theta _1 θ1 θ 2 \theta _2 θ2 为两个特征 x 1 x_1 x1 x 2 x_2 x2 的权重项, ε \varepsilon ε 为误差项; θ T \theta ^T θT 为一个行向量, x x x 为包含特征 x 1 x_1 x1 x 2 x_2 x2 的矩阵。

θ 1 x 1 + θ 2 x 2 {\theta }_{1}x_1 + {\theta }_{2}x_2 θ1x1+θ2x2 在三维空间中表示的平面会尽可能去拟合所有数据点(目标值),但是这个平面并不一定是拟合度最高的,也许该平面沿着 y y y 维度向上或向下平移一点距离所得到的新平面才是拟合度最高的,因此我们会在该拟合表达式中加上一个偏置项 θ 0 \theta _0 θ0

θ 0 + θ 1 x 1 + θ 2 x 2 {\theta }_{0} + {\theta }_{1}x_1 + {\theta }_{2}x_2 θ0+θ1x1+θ2x2 是给定 x 1 x_1 x1 x 2 x_2 x2 值时,对目标值的预测,预测值与真实值之间必然会存在一个误差,因此我们在该表达式中还需加上一个误差项 ε \varepsilon ε

在这里插入图片描述

对于一个样本而言,公式可以写成如下形式:
y ( i ) = θ T x ( i ) + ε ( i ) ⇒ ε ( i ) = y ( i ) − θ T x ( i ) y^{(i)} = {\theta }^{T}x^{(i)} + \varepsilon ^{(i)} \Rightarrow \varepsilon ^{(i)} = y^{(i)} - {\theta }^{T}x^{(i)} y(i)=θTx(i)+ε(i)ε(i)=y(i)θTx(i)
其中,每个样本的误差 ε ( i ) \varepsilon ^{(i)} ε(i) 都是独立同分布的,服从均值为 0 0 0 的高斯分布。

高斯分布的概率密度函数如下所示:
f ( x ) = 1 2 π σ ⋅ e − ( x − μ ) 2 2 σ 2 f(x) = \frac{1}{\sqrt{2\pi }\sigma }·{e}^{-\frac{{(x-\mu )}^{2}}{2{\sigma }^{2}}} f(x)=2π σ1e2σ2(xμ)2
把误差带入进去,可得到公式:
f ( ε ( i ) ) = 1 2 π σ ⋅ e − ( ε ( i ) ) 2 2 σ 2 = 1 2 π σ ⋅ e − ( y ( i ) − θ T x ( i ) ) 2 2 σ 2 f({\varepsilon }^{(i)}) = \frac{1}{\sqrt{2\pi }\sigma }·{e}^{-\frac{{({\varepsilon }^{(i)})}^{2}}{2{\sigma }^{2}}} = \frac{1}{\sqrt{2\pi }\sigma }·{e}^{-\frac{{(y^{(i)} - {\theta }^{T}x^{(i)})}^{2}}{2{\sigma }^{2}}} f(ε(i))=2π σ1e2σ2(ε(i))2=2π σ1e2σ2(y(i)θTx(i))2
该公式表示误差趋于 0 0 0 的概率,或者说预测值 θ T x ( i ) {\theta }^{T}x^{(i)} θTx(i) 趋近于真实值的概率,这个概率自然是越大越好。

在这里插入图片描述

我们的最终目的是要求出最合适的 θ 0 \theta _0 θ0 θ 1 \theta _1 θ1 θ 2 \theta _2 θ2,而似然函数是统计学中用于估计参数的一个函数。因此在给出观测数据的前提下,我们可以利用似然函数来推断出未知的参数值。

构建的似然函数如下所示:
L ( θ ) = ∏ i = 1 m 1 2 π σ ⋅ e − ( y ( i ) − θ T x ( i ) ) 2 2 σ 2 L(\theta ) = \displaystyle\prod_{i=1}^{m}\frac{1}{\sqrt{2\pi }\sigma }·{e}^{-\frac{{(y^{(i)} - {\theta }^{T}x^{(i)})}^{2}}{2{\sigma }^{2}}} L(θ)=i=1m2π σ1e2σ2(y(i)θTx(i))2
其中,在各个样本都符合独立同分布的情况下,联合概率密度就等于各样本概率密度的乘积,因此这里用了累乘。

想在乘法中求解出参数 θ \theta θ,也许是一个比较难的事,但如果能把乘法转换成加法,对于参数的求解可能就容易了许多。鉴于此,我们可以使用对数似然函数来进行参数的求解。

构建的对数似然函数如下所示:
l o g L ( θ ) = l o g ∏ i = 1 m 1 2 π σ ⋅ e − ( y ( i ) − θ T x ( i ) ) 2 2 σ 2 logL(\theta ) = log\displaystyle\prod_{i=1}^{m}\frac{1}{\sqrt{2\pi }\sigma }·{e}^{-\frac{{(y^{(i)} - {\theta }^{T}x^{(i)})}^{2}}{2{\sigma }^{2}}} logL(θ)=logi=1m2π σ1e2σ2(y(i)θTx(i))2
将上述公式进行展开化简:
l o g L ( θ ) = ∑ i = 1 m l o g 1 2 π σ ⋅ e − ( y ( i ) − θ T x ( i ) ) 2 2 σ 2 = m l o g 1 2 π σ + ∑ i = 1 m l o g e − ( y ( i ) − θ T x ( i ) ) 2 2 σ 2 = m l o g 1 2 π σ − 1 σ 2 ⋅ 1 2 ∑ i = 1 m ( y ( i ) − θ T x ( i ) ) 2 logL(\theta ) = \displaystyle\sum_{i=1}^{m}log\frac{1}{\sqrt{2\pi }\sigma }·{e}^{-\frac{{(y^{(i)} - {\theta }^{T}x^{(i)})}^{2}}{2{\sigma }^{2}}} \\= mlog\frac{1}{\sqrt{2\pi }\sigma } + \displaystyle\sum_{i=1}^{m}log{e}^{-\frac{{(y^{(i)} - {\theta }^{T}x^{(i)})}^{2}}{2{\sigma }^{2}}} \\= mlog\frac{1}{\sqrt{2\pi }\sigma } - \frac{1}{{\sigma }^{2}}·\frac{1}{2}\displaystyle\sum_{i=1}^{m}{(y^{(i)} - {\theta }^{T}x^{(i)})}^{2} logL(θ)=i=1mlog2π σ1e2σ2(y(i)θTx(i))2=mlog2π σ1+i=1mloge2σ2(y(i)θTx(i))2=mlog2π σ1σ2121i=1m(y(i)θTx(i))2
我们要让似然函数越大越好,因此上述公式等价于让下述目标函数的目标值越小越好:
J ( θ ) = 1 2 ∑ i = 1 m ( y ( i ) − θ T x ( i ) ) 2 J(\theta ) = \frac{1}{2}\displaystyle\sum_{i=1}^{m}{(y^{(i)} - {\theta }^{T}x^{(i)})}^{2} J(θ)=21i=1m(y(i)θTx(i))2
我们首先对上述目标函数进行展开:
J ( θ ) = 1 2 ( X θ − y ) T ( X θ − y ) = 1 2 ( θ T X T − y T ) ( X θ − y ) = 1 2 ( θ T X T X θ − θ T X T y − y T X θ + y T y ) = 1 2 ( 2 X T X θ − X T y − ( y T X ) T ) = X T X θ − X T y J(\theta ) = \frac{1}{2}{(X\theta - y)}^{T}(X\theta - y) \\ = \frac{1}{2}{(\theta ^TX^T - y^T)}(X\theta - y) \\ = \frac{1}{2}(\theta ^TX^TX\theta - \theta ^TX^Ty - y^TX\theta + y^Ty) \\ = \frac{1}{2}(2X^TX\theta - X^Ty - (y^TX)^T) \\ = X^TX\theta - X^Ty J(θ)=21(y)T(y)=21(θTXTyT)(y)=21(θTXTθTXTyyT+yTy)=21(2XTXTy(yTX)T)=XTXTy
根据展开的公式推出参数值:
θ = ( X T X ) − 1 X T y \theta = (X^TX)^{-1}X^Ty θ=(XTX)1XTy
通过这种方法可以进行参数值 θ \theta θ 的求解,但是在上式中, X T X X^TX XTX 不一定是可逆的,也就是说不一定能求解出参数值 θ \theta θ

鉴于上述问题,我们需要考虑使用其他方法来求解合适的 θ \theta θ,而机器学习就是非常好的方法。一个常规的思路是,我们喂给机器一堆数据,然后告诉它该用什么样的方式学习,并让它朝着这个方向去做(目标/损失函数),每一次学习一点,经过多次迭代优化后,最终收敛至一个稳定的状态。

在对目标函数进行求解时,通常会用到梯度下降法来进行优化。梯度下降是一种常用的优化算法,用于求解目标函数的最小值或最大值。它的基本思想是通过迭代的方式,沿着目标函数的负梯度方向逐步更新参数,以逐渐接近最优解。具体来说,对于一个可微的目标函数,我们希望找到使其取得最小值的参数。梯度下降通过以下步骤进行迭代更新:

  1. 初始化参数:选择初始参数值作为起点
  2. 计算梯度:计算目标函数关于参数的梯度(导数)
  3. 更新参数:将当前参数值沿着负梯度方向移动一小步,更新参数值
  4. 重复步骤 2 和步骤 3,直到满足停止条件(如达到最大迭代次数或梯度变化很小)

梯度方向指示了函数上升最快的方向,而负梯度方向则指示了函数下降最快的方向。因此,通过不断更新参数,梯度下降算法可以朝着函数取得最小值的方向逐渐迭代,最终接近或达到最优解。

梯度下降算法有多种变体,如批量梯度下降(Batch Gradient Descent)、随机梯度下降(Stochastic Gradient Descent)和小批量梯度下降(Mini-Batch Gradient Descent),它们在每次更新参数时所使用的样本数量不同。这些变体具有不同的优缺点,适用于不同的问题和数据集规模。

回到上面的问题,此时的目标/损失函数如下所示:
J ( θ ) = 1 2 m ∑ i = 1 m ( y i − θ T x i ) 2 J(\theta ) = \frac{1}{2m}\displaystyle\sum_{i=1}^{m}(y^i - \theta ^Tx^i)^2 J(θ)=2m1i=1m(yiθTxi)2
当使用批量梯度下降时,目标函数关于第 j j j 个参数的梯度可以写成如下形式:
δ J ( θ ) δ θ j = − 1 m ∑ i = 1 m ( y i − θ T x i ) x j i \frac{\delta J(\theta)}{\delta \theta _j} = -\frac{1}{m}\displaystyle\sum_{i=1}^{m}(y^i - \theta ^Tx^i){x}_{j}^{i} δθjδJ(θ)=m1i=1m(yiθTxi)xji
更新参数后,新的参数可以表示成如下形式:
θ j ′ = θ j + α ⋅ 1 m ∑ i = 1 m ( y i − θ T x i ) x j i {\theta }_{j}^{'} = \theta _j + \alpha · \frac{1}{m}\displaystyle\sum_{i=1}^{m}(y^i - \theta ^Tx^i){x}_{j}^{i} θj=θj+αm1i=1m(yiθTxi)xji
当使用随机梯度下降时,目标函数关于第 j j j 个参数的梯度可以写成如下形式:
δ J ( θ ) δ θ j = − ( y i − θ T x i ) x j i \frac{\delta J(\theta)}{\delta \theta _j} = -(y^i - \theta ^Tx^i){x}_{j}^{i} δθjδJ(θ)=(yiθTxi)xji
更新参数后,新的参数可以表示成如下形式:
θ j ′ = θ j + α ⋅ ( y i − θ T x i ) x j i {\theta }_{j}^{'} = \theta _j + \alpha · (y^i - \theta ^Tx^i){x}_{j}^{i} θj=θj+α(yiθTxi)xji
当使用小批量梯度下降时,目标函数关于第 j j j 个参数的梯度可以写成如下形式:
δ J ( θ ) δ θ j = 1 10 ∑ k = i i + 9 ( θ T x k − y k ) x j k \frac{\delta J(\theta)}{\delta \theta _j} = \frac{1}{10}\displaystyle\sum_{k=i}^{i+9}(\theta ^Tx^k - y^k){x}_{j}^{k} δθjδJ(θ)=101k=ii+9(θTxkyk)xjk
更新参数后,新的参数可以表示成如下形式:
θ j ′ = θ j − α ⋅ 1 10 ∑ k = i i + 9 ( θ T x k − y k ) x j k {\theta }_{j}^{'} = \theta _j - \alpha · \frac{1}{10}\displaystyle\sum_{k=i}^{i+9}(\theta ^Tx^k - y^k){x}_{j}^{k} θj=θjα101k=ii+9(θTxkyk)xjk
批量梯度下降容易得到最优解,但是由于每次都要考虑所有样本,因此速度很慢;随机梯度下降每次找一个样本,迭代速度快,但不一定每次都朝着收敛的方向前进(存在离群点、噪声点等干扰);小批量梯度下降比较实用,用的也比较多。

相关文章:

回归算法优化过程推导

假设存在一个数据集,包含工资、年龄及贷款额度三个维度的数据。我们需要根据这个数据集进行建模,从而在给定工资和年龄的情况下,实现对贷款额度的预测。其中,工资和年龄是模型构建时的两个特征,额度是模型输出的目标值…...

某高品质房产企业:借助NineData平台,统一数据库访问权限,保障业务安全

该企业是中国领先的优质房产品开发及生活综合服务供应商。在 2022 年取得了亮眼的业绩表现,销售额市场占有率跻身全国前五。业务涵盖房产开发、房产代建、城市更新、科技装修等多个领域。 2023 年,该企业和玖章算术(浙江)科技有限…...

Arduio开发STM32所面临的风险

据说micro_ros用到了arduino,然后用arduino搞stm32需要用到这个Arduino STM32的东西,然后这里申明了:这些代码没有经过严格测试,如果是向心脏起搏器,自动驾驶这样要求严格的的情况下,这个东西不能保证100%不发生问题&a…...

精准人脉引流软件的开发流程与涉及到的技术

一、精准人脉引流软件的开发流程 1. 确定需求:首先,我们需要明确软件的需求,包括目标用户、功能需求、性能需求等。这些需求将直接影响到软件的开发方向和最终效果。 2. 系统设计:根据需求,进行系统设计,…...

Mysql数据库 20.DCL数据控制语言

因这类SQL语言开发人员操作较少,主要是数据库管理员(DBA)使用,所以前文没有提及,这篇文章进行补充说明 DCL数据控制语言 用来管理数据库用户,控制数据库的访问权限 1.管理用户 1.1 查询用户 select * f…...

使用CMake交叉编译Arm Linux程序

下载安装aarch64-linux-gnu-gcc arm交叉编译工具链 apt-get install aarch64-linux-gnu-gccapt-get install aarch64-linux-gnu-gcc创建编译目录构建makefle 注意,工具链文件的指定一定要紧跟cmake命令之后,不能放到 … 后面构建arm架构cmake mkdir arm…...

训练日志——logging

目录 基础使用日志的6个级别打印日志修改打印级别 高级应用logging的组成记录器Loggers处理器Handlers过滤器Filterformatter格式创建关联打印日志 配置文件参考 基础使用 日志的6个级别 打印日志 import logginglogging.debug(调试日志) logging.info(消息日志) logging.war…...

尺度为什么是sigma?

我们先看中值滤波和均值滤波。 以前,我认为是一样的,没有区分过。 他们说,均值滤波有使图像模糊的效果。 中值滤波有使图像去椒盐的效果。为什么不同呢?试了一下,果然不同,然后追踪了一下定义。 12345&…...

迭代器模式

自定义 Counter 结构体类型,并实现迭代器。其他语言的场景,读取数据库行数据时,使用的就是迭代器。我们使用for语言遍历数组,也是一种迭代。 结构体对象实现 Iterator trait,创建自定义的迭代器,只需要实现…...

C++ 修饰符、存储类、运算符、循环、判断

一、C修饰符类型: C允许在char、int、double数据类型前放置修饰符。 数据类型修饰符: ◆ signed:表示变量可以存储负数。对于整型变量来说,signed 可以省略,因为整型变量默认为有符号类型。 ◆ unsigned&#xff1…...

2023 hnust 湖南科技大学 信息安全管理课程 期中考试 复习资料

前言 ※老师没画重点的补充内容★往年试卷中多次出现或老师提过的,很可能考该笔记是奔着及格线去的,不是奔着90由于没有听过课,部分知识点不一定全,答案不一定完全正确 题型 试卷有很多题是原题 判断题(PPT&#xff…...

N皇后问题解的个数

暴力递归 #include <stdio.h>int count0,a[15],flag; void queen(int,int); int main(){int n;scanf("%d",&n);queen(n,n);printf("%d",count); } void queen(int n,int n0){if(n<1){flag1;for(int i1;i<n0;i){for(int j1;j<n0;j){if(…...

php订单发起退款(余额和微信支付)

index.html <a class="btn btn-danger btn-change btn-tuikuan btn-disabled" href="javascript:;"><i class="fa fa-tuikuan"></i> 订单退款</a>-->order.js // 为表格绑定事件Table.api.bindevent(table);//退款…...

【SpringCloud】认识微服务、服务拆分以及远程调用

SpringCloud 1.认识微服务 1.1单体架构 单体架构&#xff1a;将业务的所有功能集中在一个项目中开发&#xff0c;打成一个包部署 单体架构的优缺点&#xff1a; 优点&#xff1a; 架构简单&#xff0c;部署成本低 缺点&#xff1a; 耦合度高&#xff08;维护困难&#x…...

Mysql基础操作(命令行)

文章目录 Mysql基础操作&#xff08;命令行&#xff09;背景创建数据库选择数据库查看所有表查看表结构向表插入数据插入第一条插入第二条插入第三条 查询表数据修改表数据删除表数据 Mysql基础操作&#xff08;命令行&#xff09; 背景 docker安装mysql8&#xff0c;映射本地…...

网站遇到DDOS攻击怎么办?

最近我的网站不幸又遇到了几乎是我见到过的最大一次 DDoS 攻击&#xff0c;并且几乎是没有反映的时间&#xff0c;直接接到腾讯云的短信通知“运营商封堵”&#xff0c;直接造成几个小时无法访问&#xff0c;解封后再次遭受到大流量 DDoS 攻击&#xff0c;再次被“腾讯云平台封…...

中间件渗透测试-Server2131(解析+环境)

B-10&#xff1a;中间件渗透测试 需要环境的加qq 任务环境说明&#xff1a; 服务器场景&#xff1a;Server2131&#xff08;关闭链接&#xff09; 服务器场景操作系统&#xff1a;Linux Flag值格式&#xff1a;Flag&#xff5b;Xxxx123&#xff5d;&#xff0c;括…...

探究Kafka原理-2.Kafka基本命令实操

&#x1f44f;作者简介&#xff1a;大家好&#xff0c;我是爱吃芝士的土豆倪&#xff0c;24届校招生Java选手&#xff0c;很高兴认识大家&#x1f4d5;系列专栏&#xff1a;Spring源码、JUC源码、Kafka原理&#x1f525;如果感觉博主的文章还不错的话&#xff0c;请&#x1f44…...

Linux网卡没有eth0显示ens33原因以及解决办法

原因 首先说明一下eth0 与 ens33的关系&#xff1a; 目前的主流网卡为使用以太网络协定所开发出来的以太网卡&#xff08;Ethernet),因此我们Linux就称呼这种网络接口为ethN(N为数字)。 举个栗子&#xff1a;就是说主机上面有一张以太网卡&#xff0c;因此主机的网络接口就是…...

1.前端--基本概念【2023.11.25】

1.网站与网页 网站是网页集合。 网页是网站中的一“页”&#xff0c;通常是 HTML 格式的文件&#xff0c;它要通过浏览器来阅读。 2.Web的构成 主要包括结构&#xff08;Structure&#xff09; 、表现&#xff08;Presentation&#xff09;和行为&#xff08;Behavior&#xff…...

Leetcode 3576. Transform Array to All Equal Elements

Leetcode 3576. Transform Array to All Equal Elements 1. 解题思路2. 代码实现 题目链接&#xff1a;3576. Transform Array to All Equal Elements 1. 解题思路 这一题思路上就是分别考察一下是否能将其转化为全1或者全-1数组即可。 至于每一种情况是否可以达到&#xf…...

工业安全零事故的智能守护者:一体化AI智能安防平台

前言&#xff1a; 通过AI视觉技术&#xff0c;为船厂提供全面的安全监控解决方案&#xff0c;涵盖交通违规检测、起重机轨道安全、非法入侵检测、盗窃防范、安全规范执行监控等多个方面&#xff0c;能够实现对应负责人反馈机制&#xff0c;并最终实现数据的统计报表。提升船厂…...

【力扣数据库知识手册笔记】索引

索引 索引的优缺点 优点1. 通过创建唯一性索引&#xff0c;可以保证数据库表中每一行数据的唯一性。2. 可以加快数据的检索速度&#xff08;创建索引的主要原因&#xff09;。3. 可以加速表和表之间的连接&#xff0c;实现数据的参考完整性。4. 可以在查询过程中&#xff0c;…...

srs linux

下载编译运行 git clone https:///ossrs/srs.git ./configure --h265on make 编译完成后即可启动SRS # 启动 ./objs/srs -c conf/srs.conf # 查看日志 tail -n 30 -f ./objs/srs.log 开放端口 默认RTMP接收推流端口是1935&#xff0c;SRS管理页面端口是8080&#xff0c;可…...

论文浅尝 | 基于判别指令微调生成式大语言模型的知识图谱补全方法(ISWC2024)

笔记整理&#xff1a;刘治强&#xff0c;浙江大学硕士生&#xff0c;研究方向为知识图谱表示学习&#xff0c;大语言模型 论文链接&#xff1a;http://arxiv.org/abs/2407.16127 发表会议&#xff1a;ISWC 2024 1. 动机 传统的知识图谱补全&#xff08;KGC&#xff09;模型通过…...

SpringTask-03.入门案例

一.入门案例 启动类&#xff1a; package com.sky;import lombok.extern.slf4j.Slf4j; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cache.annotation.EnableCach…...

用机器学习破解新能源领域的“弃风”难题

音乐发烧友深有体会&#xff0c;玩音乐的本质就是玩电网。火电声音偏暖&#xff0c;水电偏冷&#xff0c;风电偏空旷。至于太阳能发的电&#xff0c;则略显朦胧和单薄。 不知你是否有感觉&#xff0c;近两年家里的音响声音越来越冷&#xff0c;听起来越来越单薄&#xff1f; —…...

关于uniapp展示PDF的解决方案

在 UniApp 的 H5 环境中使用 pdf-vue3 组件可以实现完整的 PDF 预览功能。以下是详细实现步骤和注意事项&#xff1a; 一、安装依赖 安装 pdf-vue3 和 PDF.js 核心库&#xff1a; npm install pdf-vue3 pdfjs-dist二、基本使用示例 <template><view class"con…...

Rust 开发环境搭建

环境搭建 1、开发工具RustRover 或者vs code 2、Cygwin64 安装 https://cygwin.com/install.html 在工具终端执行&#xff1a; rustup toolchain install stable-x86_64-pc-windows-gnu rustup default stable-x86_64-pc-windows-gnu ​ 2、Hello World fn main() { println…...

论文阅读:Matting by Generation

今天介绍一篇关于 matting 抠图的文章&#xff0c;抠图也算是计算机视觉里面非常经典的一个任务了。从早期的经典算法到如今的深度学习算法&#xff0c;已经有很多的工作和这个任务相关。这两年 diffusion 模型很火&#xff0c;大家又开始用 diffusion 模型做各种 CV 任务了&am…...