最小二乘法详解(线性拟合与非线性拟合)
监督学习中,如果预测的变量是离散的,我们称其为分类(如决策树,支持向量机等),如果预测的变量是连续的,我们称其为回归。回归分析中,如果只包括一个自变量和一个因变量,且二者的关系可用一条直线近似表示,这种回归分析称为一元线性回归分析。如果回归分析中包括两个或两个以上的自变量,且因变量和自变量之间是线性关系,则称为多元线性回归分析。对于二维空间线性是一条直线;对于三维空间线性是一个平面,对于多维空间线性是一个超平面.
对于一元线性回归模型,参数估计采用最小二乘法:
最小二乘法(又称最小平方法)是一种数学优化技术。它通过最小化误差的平方和寻找数据的最佳函数匹配。利用最小二乘法可以简便地求得未知的数据,并使得这些求得的数据与实际数据之间误差的平方和为最小。最小二乘法还可用于曲线拟合。
曲线拟合分为线性拟合与非线性拟合,其他一些优化问题也可通过最小化能量或最大化熵用最小二乘法来表达。
详见链接http://baike.baidu.com/link?url=nLYEuRNDwD1-CmOYfPYtV61lNbqGXeTe97Tpr4juj3sY0lsWDETsqOKMKM7H9JR7V72DocfTY6WFxDq_hig2zq
http://blog.csdn.net/qll125596718/article/details/8248249,含最小二乘实现代码c++
非线性拟合
讲解[a,Jm]=lsqcurvefit(fun,a0,x,y)(最好举例)各个符号的意思
非线性曲线拟合是已知输入向量xdata和输出向量ydata,并且知道输入与输出的函数关系为ydata=F(x, xdata),但不知道系数向量x。今进行曲线拟合,求x使得输出的如下最小二乘表达式成立:
min Σ(F(x,xdatai)-ydatai)^2
函数 lsqcurvefit
格式 x = lsqcurvefit(fun,x0,xdata,ydata)
x = lsqcurvefit(fun,x0,xdata,ydata,lb,ub)
x = lsqcurvefit(fun,x0,xdata,ydata,lb,ub,options)
[x,resnorm] = lsqcurvefit(…)
[x,resnorm,residual] = lsqcurvefit(…)
[x,resnorm,residual,exitflag] = lsqcurvefit(…)
[x,resnorm,residual,exitflag,output] = lsqcurvefit(…)
[x,resnorm,residual,exitflag,output,lambda] = lsqcurvefit(…)
[x,resnorm,residual,exitflag,output,lambda,jacobian] =lsqcurvefit(…)
参数说明:
x0为初始解向量;xdata,ydata为满足关系ydata=F(x, xdata)的数据;
lb、ub为解向量的下界和上界lb≤x≤ub,若没有指定界,则lb=[ ],ub=[ ];
options为指定的优化参数;
fun为待拟合函数,计算x处拟合函数值,其定义为 function F = myfun(x,xdata)
resnorm=sum ((fun(x,xdata)-ydata).^2),即在x处残差的平方和;
residual=fun(x,xdata)-ydata,即在x处的残差;
exitflag为终止迭代的条件;
output为输出的优化信息;
lambda为解x处的Lagrange乘子;
jacobian为解x处拟合函数fun的jacobian矩阵。
例 求解如下最小二乘非线性拟合问题
已知输入向量xdata和输出向量ydata,且长度都是n,待拟合函数的表达式为
ydata(i)=x(1)-xdata(i)^2+x(2)-sin(xdata(i))+x(3)-xdata^3
即目标函数为min Σ(F(x,xdata(i))-ydata(i))^2
其中:F(x,xdata) = x(1)*xdata^2 + x(2)*sin(xdata) + x(3)*xdata^3
初始解向量为x0=[0.3, 0.4, 0.1],即表达式的 个参数[x(1),x(2),x(3)]。
解:先建立拟合函数文件,并保存为myfun.m
function F = myfun(x,xdata)
F = x(1)*xdata.^2 + x(2)*sin(xdata) + x(3)*xdata.^3;
然后给出数据xdata和ydata
>>xdata = [3.6 7.7 9.3 4.1 8.6 2.8 1.3 7.9 10.0 5.4];
>>ydata = [16.5 150.6 263.1 24.7 208.5 9.9 2.7 163.9 325.0 54.3];
>>x0 = [10, 10, 10]; %初始估计值
>>[x,resnorm] = lsqcurvefit(@myfun,x0,xdata,ydata)
结果为:
Optimization terminated successfully:
Relative function value changing by less than OPTIONS.TolFun
x = 0.2269 0.3385 0.3021
=>即解出的系数最优估计值
resnorm = 6.2950
=>在x解值处的目标最小二乘表达式值。即所谓残差。
残差是指观测值与预测值(拟合值)之间的差,即是实际观察值与回归估计值的差。
参考链接:http://zhidao.baidu.com/link?url=LTDMKaclYQT14clDdzKlGmvZ-w8NBFda0B5L8SsNpqFspugKJAK_jO66CcPe3pTfcD1bOmJnMJBSbDXxti2z6q
最小二乘法详解(线性拟合与非线性拟合)相关推荐
- 一文详解线性最小二乘与非线性最小二乘
一文详解线性最小二乘与非线性最小二乘 一.最小二乘法的引出 二.线性最小二乘法 1.线性最小二乘的描述 2.线性最小二乘特殊情况的求解 3.线性最小二乘一般情况的求解 三.非线性最小二乘法 1.非线性 ...
- 详解线性结构和非线性结构
一.线性结构 1.线性结构作为最常用的数据结构,其特点是数据元素之间存在一对一的线性关系. 2.线性结构有两种不同的存储结构,即顺序存储结构和链式存储结构.顺序存储的线性表称为顺序表,顺序表中的存储元 ...
- c++ 显示三维散点图_【无机纳米材料科研制图——OriginLab 0209】Origin散点图线性拟合与非线性拟合...
此篇,我们来分享对于散点图的线性拟合和非线性拟合. 一.线性拟合 1)绘制散点图. 如下图所示,我们随意编了一组数据,框选X.Y两列之后,点击Plot-->Symbol-->Scatter ...
- 详解线性反馈移位寄存器(LFSR)
转载于(九)详解线性反馈移位寄存器(LFSR) 文章目录 LFSR的由来 LFSR具体内容 对LFSR的密钥流攻击 延伸 书籍推荐 LFSR的由来 1. 移位寄存器: 移位寄存器(ShiftRegis ...
- Java 使用 Apache commons-math3 线性拟合、非线性拟合实例(带效果图)
Java 使用 CommonsMath3 的线性和非线性拟合实例,带效果图 例子查看 GitHub Gitee 在线查看 运行src/main/java/org/wfw/chart/Main.java ...
- matlab线性拟合和非线性拟合,matlab多元非线性拟合
希望虫友能给与帮助 采用多元非线性回归: data.txt 168.7 202.9 145.9 12.1 142.0 206.4 ...
- python实现线性回归之最小二乘法,最小二乘法详解
线性回归是确定两种及两种以上变量的相互依赖关系.在数据分析中,线性回归是最简单且最有效的分析方法.举个简单的例子,某商品的利润在售价为2元.5元.10元时分别为4元.10元.20元,我们很容易得出商品 ...
- matlab中三维非线性拟合,matlab非线性拟合与绘制三维曲面
建议用1stOpt,使用简单,不用猜初值,拟合效果非常强.下面是由1stOpt得出的结果,应该是唯一最优解.如果用其它软件,估计花费时间不少还不一定能得到最优解. 均方差(RMSE): 2.88773 ...
- 异方差性和加权最小二乘法详解
加权最小二乘是对原模型进行加权,是该模型成为 一个新的不存在异方差性的模型,然后对该新模型使用普通最小二乘法估计其参数进行优化. 异方差性的解释:随机误差的方差不全相等.异方差性是相对于同方差而言的, ...
最新文章
- Kali Linux 2020.1修改系统语言
- python里面temp是啥-请问Python里temp是什么意思?
- CV之NS之VGG16:基于预训练模型VGG16训练COCO的train2014数据集实现训练《神奈川冲浪里》风格配置yml文件
- 今日题解------uvalive 2689
- 数据结构与算法面试题80道(35)
- python核心理念_《Python核心技术第二版》笔记
- iview admin npm install报错_安装laravel-admin拓展执行数据迁移报错处理
- UIImagePickerController PAD /IPHONE 上注意事项
- 158 行 Python 代码,复现 DeepMind 递归神经网络 DRAW!
- 邮箱服务器端口以及各大型邮箱smtp服务器及端口收集
- Recommended Django Project Layout
- 尺寸链计算-尺寸公差分析-的国产化之路
- pcs增加mysql资源_pcs命令配置示例
- 数据库是如何通过索引定位数据,索引的原理讲解
- php h5 调用摄像头_利用html5调用本地摄像头拍照上传图片
- 快速排序 php内存超限,数据结构与算法设计
- 初玩scrapy:爬取淘票票(1)
- 1.0 BS结构软件类型介绍
- 电子--软件--电子(嵌入式)--学习之路断得漫长
- 2003邮件服务器维护,Windows 2003邮件服务器配置指南
热门文章
- 怎么看tomcat连接的哪个mysql_如何验证tomcat和mysql连接成功呢
- Linux—MySQL安装配置详解
- SCOM 常识概念—与其他SC产品集成
- java jsonobject date_如何将Json Passed Date Value分配给Java Date Object
- 《Java Web开发入门很简单》学习笔记
- 探究 Linux 内核 dts 设备树定义文件
- 基于GDAL实现的PCA变换(主成分分析)
- 14个非常棒的 JavaScript 游戏开发框架推荐
- druid mysql 配置优化_数据库连接池优化配置(druid,dbcp,c3p0)
- 熟悉JDK8新特性,“Lambda表达式与函数式接口”