【工程师学算法】工程常用算法(一)—— 最小二乘法

2023-05-16

目录

1 功能

2 公式推导

3 抽象

4 总结


1 功能

        最小二乘法是基于大量带有误差的数据估计真值的算法。首先要注意,使用这个算法,首先要满足一个条件:大量,如果测量数据和要估计的真值形成一对一的关系,那显然估计是毫无意义的。测量数据必须相对于带估计的数值是“冗余”的。举个例子,你用直尺测量绳子的长度,只量一次,那么你测多少就是多少,只有你测试次数的足够多,获得的数据才可以用最小二乘法估计真值。

        最小二乘法,为什么叫“最小二乘”?实际上,“二乘”的意思就是“平方”,也即是“最小平方法”。什么的最小平方呢,当然是误差的最小平方啦。

 

2 公式推导

我们从最简单的说起:量长度,我们对一个绳子的长度测了好几次,第i次的长度计为

设 \LARGE \widehat{x} 为估计值,那么误差 \LARGE e 的表达式就是:

误差的平方 \LARGE D 可以写成:

 要让误差的平方 \LARGE D 最小,也就是求这个函数的最小极值,求导就行:

根据上式可得:

一看这公式,恍然大悟,原来就是取平均值啊。真没想到求算术平均竟然也是最小二乘法的应用呢!

上面是找的是长度,说白了是在找  \LARGE f(x)=a (a为常数) ,下面来说一个复杂的:

我们现在手上有大把的 \LARGE (x_{i},y_{i}) ,如何估计出 \LARGE a 和 \LARGE b 呢?

首先构造误差的平方 \LARGE D 

这次有俩参数,要求偏导为0:

由D对b的偏导分析得到:

由D对a的偏导分析得到:

 

现在大家应该知道最小二乘法的套路了:

  1. 找到需要拟合的函数    \large f(x)
  2. 构造误差平方和   \large D=\sum [f(x_{i})-y_{i}]^2
  3. 求出拟合函数中各参数的偏导,并使之为0,然后求解等式即可得到参数的最小二乘估计值。

理解了基本原理,我们就可以开始用于各种工程项目中的参数估计和函数拟合啦.

 

3 抽象

        一个优秀的工程师不能只满足会用,我们不妨在做进一步思考:如何把最小二乘写成矩阵形式以适应高阶参数估计呢?当写出了最小二乘法的矩阵形式,是不是意味着我们在线性区域实现了“一招鲜,吃遍天”?

        首先掏出一个多元线性函数:

        写成矩阵形式:

我们的数据是大量的\large (x_{1},x_{2},……,x_{n},y)_{i}\LARGE (x_{1},x_{2},...,x_{n},y)_{i},一共有m组且m>n(m=n时直接求解),我们将其写成矩阵形式:

现在矩阵X的尺寸为m*(n+1),矩阵Y的尺寸为m*1,我们是要使用最小二乘法求出公式中的系数矩阵

我们将误差平方和函数使用矩阵形式表达可得:

为了将其化简,我们先复习一下和转置相关的矩阵公式:

将误差平方和函数展开:

接下来就是对其求偏导并使之等于0矩阵:

即可得到:

 

以上这种写法有些别扭,因为我设置X矩阵为列向量,A矩阵为行向量了,按照书本上主流的写法,X矩阵为行向量,A矩阵为列向量,则公式应写为:

4 总结

        以上就是对最小二乘的介绍。本文只给出了线性回归的一般公式,在遇到非线性函数的拟合时,理论仍然可以使用这种方法做拟合,但是需要对公式做一些变形,这其中有很多tricks,比如对数据进行预处理,使得样本呈线性关系。

       综上所述,最小二乘法是一种在拥有充足(冗余)的样本时,对所期望的公式拟合进而得到准确参数的方法。


下一章,我们介绍:卡尔曼滤波

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【工程师学算法】工程常用算法(一)—— 最小二乘法 的相关文章

随机推荐

  • docker问题集锦

    1 http server gave HTTP response to HTTPS client sudo vim etc docker daemon json 添加 insecure registries ip 端口 sudo servi
  • 利用opencv边缘提取矩形框集合覆盖的图像

    contourArea因为以边缘像素中心为边长计算 xff0c 所以面积会小于实际面积opencv python xff1a https docs opencv org 4 x d3 d05 tutorial py table of con
  • opencv中常用的C++轮廓函数

    提取轮廓 std vector lt std vectorcv Point gt contours cv Mat image 61 cv imread 34 34 只检索最外面的轮廓且用端点代替直线段 xff08 水平 xff0c 竖直 对
  • cmake中PROJECT_SOURCE_DIR的遐思

    PROJECT SOURCE DIR为包含PROJECT 的最近一个CMakeLists txt文件所在的文件夹 如以下文件结构 xff1a test 43 build 43 include 43 lib 43 src 43 main cp
  • curl 查看HTTP 响应头信息

    1 curl I 查看HTTP 响应头信息 curl I 34 http www taobao com 34 HTTP 1 1 200 OK HTTP协议 HTTP 返回码 Server Tengine Date Fri 01 Nov 20
  • cmake(7):find_package命令详解

    1 说明 cmake的find package命令对于构建软件提供了极大的便利 xff0c 虽然知道怎么使用已经能解决大部分问题 xff0c 但是cmake支持哪些包 xff1f 为什么它能找到需要的包 xff1f 如果是自己编写的库 xf
  • 关于磁力计和加速度计的融合以及坐标系的对准

    1 关于磁力计的校准 xff0c 我用了简单的方式 xff0c 也就是拿着磁力计360度旋转 xff0c 找到最大最小值 xff0c 然后求得中心点 网上一堆的 2 就是磁力计和加速度计的摆放问题 由于我当时的摆放和加速度计只有Y轴相同 x
  • 基于Keil工具链搭建CMake编译环境

    建立CMake运行环境 搭建基于Keil工具链的CMake环境 xff0c 需要安装下列工具 xff1a CMake xff0c Keil MDK和make xff08 或者Ninja xff09 在安装完成下列工具后 xff0c 将上述工
  • ASN.1编码格式介绍

    ASN 1 我是如何接触到ASN 1的 xff1f 是在查看ECC椭圆曲线签名算法ECDSA的go源代码的时候 xff0c 发现其是使用ASN 1编码格式的 ASN 1抽象语法标记 xff08 Abstract Syntax Notatio
  • CMakeLists完整解析(二)

    CMakeLists完整解析 xff08 二 xff09 这篇我们详细讲解一下CMakeLists txt文件的编写 一 常用命令 1 指定cmake最小版本 cmake minimum required VERSION 3 24 这行命令
  • 基于ROS机器人的3D物体识别与三维重建(二) Kinect2相机标定与点云获取

    Kinect2相机标定与点云数据获取 1 介绍2 相机成像模型2 1 针孔相机模型与畸变修正2 2 RGB D相机测量原理 3 Kinect2相机标定3 1 张正友相机标定法3 2 kinect2配置安装与标定配准 4 点云数据获取4 1
  • 【Simscape】用Simscape实现三维物理仿真(五)——双闭环倒立摆控制系统

    仿真文件下载 xff1a https download csdn net download ReadAir 12234567 1 理论分析 在上一章 Simscape 用Simscape实现三维物理仿真 xff08 四 xff09 用PID
  • 【Simscape】用Simscape实现三维物理仿真(六)——四旋翼定点悬停控制

    仿真文件下载 xff1a https download csdn net download ReadAir 12518107 xff08 如果没有下载积分 xff0c 可以在评论留邮箱 xff0c 我定期发送 xff09 上一篇博客是 xf
  • 【四两拨千斤】一块八的芯片如何挽救一百多块的电路板——论数电的重要性

    本文记叙了我经历的一件趣事 xff0c 有别于以往的教程类博文 xff0c 这篇文章我将按照事情的发展经过叙述 xff0c 大家可以跟随本文体验一把笔者所经历的跌宕起伏 xff0c 同时感谢教我数电的王老师 xff08 一位难得的好老师 x
  • 【空心杯四旋翼TinyLeaf】传感器入门

    传感器是飞行器的 眼睛耳朵 xff0c 有了传感器 xff0c 才可以根据控制律对被控对象进行闭环控制 各种各样的传感器 xff0c 满足了飞行器各式各样的控制需求 目录 1 姿态传感器 加速度计 陀螺仪 磁力计 2 距离传感器 超声波测距
  • linux查看线程栈大小

    https www cnblogs com luosongchao p 3680312 html
  • 【嵌入式开发问题汇总】硬件篇

    此文是我很久之前的一个计划 xff0c 目的是让大家可以在别人的错误中有所收获 写下我和实验室小伙伴以及一些网友遇到的问题和分析 大家可以遇到问题也可以在博文下留言 当然 xff0c 本人能力有限 xff0c 错漏之处请直接提出 希望这篇博
  • 【嵌入式开发问题汇总】程序篇

    此文是我很久之前的一个计划 xff0c 目的是让大家可以在别人的错误中有所收获 xff08 最新更新日期 xff1a 2020 07 17 xff09 写下我和实验室小伙伴以及一些网友遇到的问题和分析 大家可以遇到问题也可以在博文下留言 当
  • 自动化与我——记本科四年的得与失

    每到毕业 xff0c 必然要感叹一下时光流转 xff0c 匆匆向前 疫情也不曾冲淡这种感慨 四年的大学生活改变了我很多 xff0c 有收获也有教训 但终归是让我满意的 我觉得有必要在这里写下一些文字来安放这段记忆 那年高考 xff0c 我比
  • 【工程师学算法】工程常用算法(一)—— 最小二乘法

    目录 1 功能 2 公式推导 3 抽象 4 总结 1 功能 最小二乘法是基于大量带有误差的数据估计真值的算法 首先要注意 xff0c 使用这个算法 xff0c 首先要满足一个条件 xff1a 大量 xff0c 如果测量数据和要估计的真值形成