【数学建模】最小二乘回归+Java代码实现

article/2025/10/7 13:08:44

文章目录

  • 一、最小二乘法的历史
  • 二、最小二乘法的原理
  • 三、最小二乘法的公式
  • 四、Java代码实现最小二乘法
  • 五、输出预测结果


一、最小二乘法的历史

1801年,意大利天文学家朱赛普·皮亚齐发现了第一颗小行星谷神星。经过40天的跟踪观测后,由于谷神星运行至太阳背后,使得皮亚齐失去了谷神星的位置。随后全世界的科学家利用皮亚齐的观测数据开始寻找谷神星,但是根据大多数人计算的结果来寻找谷神星都没有结果。

只有时年24岁的高斯所计算的谷神星的轨道,被奥地利天文学家海因里希·奥尔伯斯的观测所证实,使天文界从此可以预测到谷神星的精确位置。同样的方法也产生了哈雷彗星等很多天文学成果。

高斯使用的方法就是最小二乘法,该方法发表于1809年他的著作《天体运动论》中 。其实法国科学家勒让德于1806年独立发明“最小二乘法”,但因不为世人所知而默默无闻 。1829年,高斯提供了最小二乘法的优化效果强于其他方法的证明 。


二、最小二乘法的原理

最小二乘法的形式如下式:

标函数 = ∑ ( 观测值  − 理论值  ) 2 =\sum(\text { 观测值 }-\text { 理论值 })^{2} =( 观测值  理论值 )2

观测值就是我们的多组样本,理论值就是我们的假设拟合函数。目标函数也就是在机器学习中常说 的损失函数,我们的目标是得到使目标函数最小化时候的拟合函数的模型。举一个最简单的线性回 归的简单例子,比如我们有 m m m 个只有一个特征的样本: ( x i , y i ) ( i = 1 , 2 , 3 … , m ) \left(x_{i}, y_{i}\right)(i=1,2,3 \ldots, m) (xi,yi)(i=1,2,3,m)
样本采用一般的 h θ ( x ) h_{\theta}(x) hθ(x) n n n 次的多项式拟合,

h θ ( x ) = θ 0 + θ 1 x + θ 2 x 2 + … θ n x n , θ ( θ 0 , θ 1 , θ 2 , … , θ n ) h_{\theta}(x)=\theta_{0}+\theta_{1} x+\theta_{2} x^{2}+\ldots \theta_{n} x^{n}, \theta\left(\theta_{0}, \theta_{1}, \theta_{2}, \ldots, \theta_{n}\right) hθ(x)=θ0+θ1x+θ2x2+θnxn,θ(θ0,θ1,θ2,,θn) 为参数

最小二乘法就是要找到一组 θ ( θ 0 , θ 1 , θ 2 , … , θ n ) \theta\left(\theta_{0}, \theta_{1}, \theta_{2}, \ldots, \theta_{n}\right) θ(θ0,θ1,θ2,,θn) 使得 ∑ i = 1 n ( h θ ( x i ) − y i ) 2 \sum_{i=1}^{n}\left(h_{\theta}\left(x_{i}\right)-y_{i}\right)^{2} i=1n(hθ(xi)yi)2 (残差平方和)

最小,即,求 min ⁡ ∑ i = 1 n ( h θ ( x i ) − y i ) 2 \min \sum_{i=1}^{n}\left(h_{\theta}\left(x_{i}\right)-y_{i}\right)^{2} mini=1n(hθ(xi)yi)2

在这里插入图片描述


三、最小二乘法的公式

设拟合直线的公式为 y = k ∙ x + b y=k \bullet x+b y=kx+b

其中: 拟合直线的斜率为: k = x y − n x ˉ ∙ y ˉ x 2 − n ( x ˉ ) 2 k=\frac{x y-n \bar{x} \bullet \bar{y}}{x^{2}-n(\bar{x})^{2}} k=x2n(xˉ)2xynxˉyˉ;

计算出斜率后,根据 ( x ˉ , y ˉ ) (\bar{x}, \bar{y}) (xˉ,yˉ) 和已 经确定的斜率 k r \mathrm{k}_{r} kr 利用待定系数法求出截距 b \mathrm{b} b


四、Java代码实现最小二乘法

/*
**  Create by: WSKHDate:2022-01-08Time:19:38
*/
public class LeastSquaresRegression {double[] xData;double[] yData;public static void main(String[] args) {double[] xData = new double[]{1, 2, 3, 4,5,6,7,8,9,10,11,12};double[] yData = new double[]{4200,4300,4000,4400,5000,4700,5300,4900,5400,5700,6300,6000};double[] preX = {13,14,15,16,17,18,19,20,21,22,23,24};new LeastSquaresRegression(xData, yData).predict(preX);}public void predict(double[] preX) {// 计算nint n = xData.length;System.out.println("n = " + n);// 计算x,y,xy,x²的总和double totalX = 0d;double totalY = 0d;double totalXY = 0d;double totalX2 = 0d;for (int i = 0; i < xData.length; i++) {totalX += xData[i];totalY += yData[i];totalXY += xData[i] * yData[i];totalX2 += xData[i] * xData[i];}System.out.println("totalX = " + totalX);System.out.println("totalY = " + totalY);System.out.println("totalXY = " + totalXY);System.out.println("totalX2 = " + totalX2);// 计算x均值double meanX = totalX / n;System.out.println("meanX = " + meanX);// 计算y均值double meanY = totalY / n;System.out.println("meanY = " + meanY);// 计算斜率bdouble b = (totalXY - n * meanX * meanY) / (totalX2 - n * meanX * meanX);System.out.println("b = " + b);// 计算截距adouble a = meanY - b * meanX;System.out.println("a = " + a);// 线性方程System.out.printf("线性方程为: y = %.2f + %.2fx\n", a, b);// 预测for (double x : preX) {System.out.printf("x 为%.2f时,预测y值为:%.2f\n", x, a+b*x);}}public LeastSquaresRegression(double[] xData, double[] yData) {this.xData = xData;this.yData = yData;}
}

五、输出预测结果

n = 12
totalX = 78.0
totalY = 60200.0
totalXY = 418800.0
totalX2 = 650.0
meanX = 6.5
meanY = 5016.666666666667
b = 192.30769230769232
a = 3766.666666666667
线性方程为: y = 3766.67 + 192.31x
x 为13.00时,预测y值为:6266.67
x 为14.00时,预测y值为:6458.97
x 为15.00时,预测y值为:6651.28
x 为16.00时,预测y值为:6843.59
x 为17.00时,预测y值为:7035.90
x 为18.00时,预测y值为:7228.21
x 为19.00时,预测y值为:7420.51
x 为20.00时,预测y值为:7612.82
x 为21.00时,预测y值为:7805.13
x 为22.00时,预测y值为:7997.44
x 为23.00时,预测y值为:8189.74
x 为24.00时,预测y值为:8382.05

http://chatgpt.dhexx.cn/article/RxMffqYX.shtml

相关文章

【计量模型整理】偏最小二乘回归 PLS

partial least square PLS 原理与MLS、PCR、MRA比较适用情况数学推导与软件实现参考文献 原理 在影响因变量的大量的因素中&#xff0c;会存在隐形的影响因素但却具有很强的解释力&#xff0c;PLS的基本思想是提取这些隐性因素去代表尽可能多的变量来解释因变量。因而PLS也被称…

MATLAB中的偏最小二乘回归(PLSR)和主成分回归(PCR)

通过Matlab示例来解释偏最小二乘的原理 此示例显示如何在matlab中应用偏最小二乘回归&#xff08;PLSR&#xff09;和主成分回归&#xff08;PCR&#xff09;&#xff0c;并讨论这两种方法的有效性。 当存在大量预测变量时&#xff0c;PLSR和PCR都是对因变量建模的方法&#…

数学建模之偏最小二乘回归分析

EverydayOneCat 💯💯! 知识点 1.偏最小二乘回归介绍 偏最小二乘回归(PLS-Partial Least Squares)是一种新型的多元统计数据分析方法,是一种多因变量对多自变量的回归建模方法,是对最小二乘方法的推广。 优点: 1)提供了一种多因变量对多自变量的回归建模方法; 2)…

傻瓜攻略(十二)——MATLAB实现偏最小二乘回归PLS

这一定是一篇真正的傻瓜攻略&#xff0c;原理为根&#xff0c;算法为骨&#xff0c;应用为肉&#xff0c;傻瓜为皮。 本文主要介绍偏最小二乘回归的基本实现&#xff0c;主要内容基于司守奎《数学建模算法与应用》第11章&#xff0c;在其基础上进行优化。 偏最小二乘回归分析 …

R语言 偏最小二乘回归PLS代码

导入数据集&#xff0c;标准化变量 library(pls) #读取数据赋值 df read.csv("soil.csv") y scale(df$soil.som) #标准化 x scale(df[,2:50]) #标准化 soil.plsr plsr(y~x,validation "CV") #使用交叉验证确定主成分 summary(soil.plsr) plot(RMS…

MATLAB数值分析学习笔记:线性最小二乘回归

目录 问题引入 数学描述 数学实现 最大似然原理&#xff08;The Principle of Maximum Likelihood&#xff09; 代码实现 问题求解&#xff1a; 非线性关系的线性化 问题求解 代码实现 结果 内置函数 示例&#xff08;求解“问题引入”&#xff09; 练习题&#xff…

R语言实现偏最小二乘回归法 partial least squares (PLS)回归

偏最小二乘回归是一种回归形式 。 当使用pls时&#xff0c;新的线性组合有助于解释模型中的自变量和因变量。 最近我们被客户要求撰写关于偏最小二乘回归的研究报告&#xff0c;包括一些图形和统计输出。 在本文中&#xff0c;我们将使用pls预测“收入”。 library(Ecdat…

偏最小二乘回归 Matlab

什么是偏最小二乘回归&#xff1f; 偏最小二乘回归&#xff08;英语&#xff1a;Partial least squares regression&#xff0c; PLS回归&#xff09;是一种统计学方法&#xff0c;与主成分回归有关系&#xff0c;但不是寻找响应变量和自变量之间最大方差超平面&#xff0c;而…

偏最小二乘回归预测(MATLAB源码)

偏最小二乘回归&#xff08;英语&#xff1a;Partial least squares regression&#xff0c; PLS回归&#xff09;是一种统计学方法&#xff0c;与主成分分析有关系&#xff0c;但不是寻找响应变量和自变量之间最大方差的超平面&#xff0c;而是通过投影分别将预测变量和观测变…

MATLAB-偏最小二乘回归分析

偏最小二乘回归提供一种多对多线性回归建模的方法,特别当两组变量的个数很多,且都存在多重相关性,而观测数据的数量(样本量)又较少时,用偏最小二乘回归建立的模型具有传统的经典回归分析等方法所没有的优点。 偏最小二乘回归分析在建模过程中集中了主成分分析,典…

MATLAB实现偏最小二乘回归PLS

这一定是一篇真正的傻瓜攻略&#xff0c;原理为根&#xff0c;算法为骨&#xff0c;应用为肉&#xff0c;傻瓜为皮。 本文主要介绍偏最小二乘回归的基本实现&#xff0c;主要内容基于司守奎《数学建模算法与应用》第11章&#xff0c;在其基础上进行优化。 偏最小二乘回归分析 …

第10章 最小二乘线性回归分析

目录 10.1简单线性回归分析 1.描述性统计分析 2.对数据进行相关性分析 3.对数据进行回归分析的结果 4.变量的方差-协方差矩阵 5.对变量系数的假设检验结果 6.对因变量的拟合值的预测 7.回归分析得到残差序列 案例延伸 1.在回归方程中不包含常数项 2.限定参与回归的样…

普通最小二乘(OLS)回归

口译: (Interpreting:) OLS (Ordinary Least Squared) Regression is the most simple linear regression model also known as the base model for Linear Regression. While it is a simple model, in Machine learning it is not given much weightage. OLS is one such mo…

最小二乘法:求回归直线方程

最小二乘法&#xff1a;使离差平方和 &#xff08;i1~n&#xff09; ∑&#xff08;yi-yi&#xff09; 最小的方法 结论&#xff1a;设回归方程为ybxa;解得 回归直线方程&#xff1a;在一组具有相关关系的变量与数据的&#xff08;x&#xff0c;y&#xff09;间&#xff0…

最小二乘回归

最小二乘法&#xff08;Least squares又称最小平方法&#xff09;是一种数学优化技术。它通过最小化误差的平方和寻找数据的最佳函数匹配。利用最小二乘法可以简便地求得未知的数据&#xff0c;并使得这些求得的数据与实际数据之间误差的平方和为最小。最小二乘法还可用于曲线拟…

离线安装IE 11

转自&#xff1a;http://blog.sina.com.cn/s/blog_711ab1b10102wzq1.html 1、在D盘下&#xff0c;新建文件夹&#xff0c;取名为“ie”。 2、将官网下载的IE11离线包放到此文件夹中。 3、为了后续步骤方便&#xff0c;可以将离线包重命名为IE11.exe。 4、打开cmd窗口&#xff0…

Microsoft Edge离线安装包下载

#Microsoft Edge 现已准备就绪 下一版 Microsoft Edge 已准备好进行企业评估。 立即下载离线安装程序、查看管理策略并尝试 Internet Explorer 模式。 下载链接

安装IE11提示“Internet Explorer在安装前需要更新”

在Windows 7上安装IE11浏览器时&#xff0c;发现如下报错提示&#xff1a; 此问题一般会出现在未安装过更新的windows系统上&#xff0c;一般可以通过系统更新安装补丁的方式来解决&#xff0c;但是系统自带的更新会按照发布顺序将所有微软发布的补丁都安装上&#xff0c;耗费…

安装ie11提示计算机安装了更新的版本,离线安装IE11浏览器提示quot;获取更新quot;解决方法 - 191路由网...

原标题&#xff1a;"Win7系统离线安装IE11浏览器提示"获取更新"如何解决&#xff1f;"相关电脑问题教程分享。 - 来源:网络投稿。  Win7系统离线安装IE11时出现提示“获取更新”如何解决&#xff1f;IE11浏览器是目前IE浏览器已知最高的版本&#xff0c;…

electron离线安装

公司因为安全原因&#xff0c;导致连不上npm的镜像&#xff0c;查找了资料&#xff0c;终于找到一种离线安装 electron 全局开发环境的方法&#xff0c;分享并记录一下: ps: 如果能用淘宝镜像&#xff0c;直接设置npm config set ELECTRON_MIRROR https://npm.taobao.org/mirr…