目录

1 功能

2 公式推导

3 抽象

4 总结


1 功能

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

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

2 公式推导

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

设  为估计值,那么误差  的表达式就是:

误差的平方  可以写成:

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

根据上式可得:

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

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

我们现在手上有大把的  ,如何估计出  和  呢?

首先构造误差的平方  

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

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

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

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

  1. 找到需要拟合的函数    
  2. 构造误差平方和   
  3. 求出拟合函数中各参数的偏导,并使之为0,然后求解等式即可得到参数的最小二乘估计值。

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

3 抽象

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

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

写成矩阵形式:

我们的数据是大量的,一共有m组且m>n(m=n时直接求解),我们将其写成矩阵形式:

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

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

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

将误差平方和函数展开:

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

即可得到:

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

4 总结

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

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


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

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

  1. 【数据结构与算法】常用算法

    五大常用算法 分治 动态规划 最优子结构 边界 状态转移函数 爬楼梯问题: 4. 最优子结构 F(10)的最优子结构为F(9)和F(8) 5. 边界 F(1) = 1 F(2) = 2 6. 状态转移 ...

  2. 03--STL算法(常用算法)

    一:常用的查找算法 (一)adjacent_find():邻接查找 在iterator对标识元素范围内,查找一对相邻重复元素,找到则返回指向这对元素的第一个元素的迭代器.否则返回past-the-en ...

  3. java常见的算法_Java常用算法总结(转)

    交换排序 冒泡排序 将最后一个元素与倒数第二个元素对比,如果最后一个元素比倒数第二个小,则交换两个元素的位置,再用倒数第二个元素与倒数第三个元数对比,直到比到第一个元素,这样经过第一趟排序后得到第一个 ...

  4. [回溯算法] 五大常用算法之回溯法

    算法入门6:回溯法 一. 回溯法 – 深度优先搜素 1. 简单概述 回溯法思路的简单描述是:把问题的解空间转化成了图或者树的结构表示,然后使用深度优先搜索策略进行遍历,遍历的过程中记录和寻找所有可行解 ...

  5. 几何常用算法与判断线段相交【转】

    下面这个函数在我写的计算几何库函数里面有,那个库可以在http://algorithm.126.com/的资源中心   -   代码角   找到. 算法简单说明: 首先判断以两条线段为对角线的矩形是否 ...

  6. (转)五大常用算法:分治、动态规划、贪心、回溯和分支界定

    分治算法 一.基本概念 在计算机科学中,分治法是一种很重要的算法.字面上的解释是"分而治之",就是把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题-- ...

  7. AI之NLP:自然语言处理技术简介(是什么/学什么/怎么用)、常用算法、经典案例之详细攻略(建议收藏)

    AI之NLP:自然语言处理技术简介(是什么/学什么/怎么用).常用算法.经典案例之详细攻略(建议收藏) 目录 NLP是什么? 1.NLP前置技术解析 2.python中NLP技术相关库 3.NLP案例 ...

  8. AI之NLP:自然语言处理技术简介(是什么/学什么/怎么用)、常用算法、经典案例之详细攻略(建议收藏)daiding

    AI之NLP:自然语言处理技术简介(是什么/学什么/怎么用).常用算法.经典案例之详细攻略(建议收藏) 目录 NLP是什么? 1.NLP前置技术解析 2.python中NLP技术相关库 3.NLP案例 ...

  9. JAVA工程师常用算法_算法工程师必须要知道的8种常用算法思想

    算法思想有很多,业界公认的常用算法思想有8种,分别是枚举.递推.递归.分治.贪心.试探法.动态迭代和模拟.当然8种只是一个大概的划分,是一个"仁者见仁.智者见智"的问题. 1.1 ...

最新文章

  1. 提供前进、后退功能及其他JAVASCRIPT速成秘诀
  2. 音频编辑软件_Audacity2.12版
  3. 基于卷积神经网络的人脸认证(判断两个人脸是否是一个人)
  4. 赠送 12 本 《C++ 服务器开发精髓》
  5. Xcode6中如何对scrollview进行自动布局(autolayout)
  6. VS2019 禁止Web项目停止调试后自动关闭浏览器(在浏览器窗口关闭时停止调试程序,在调试停止时关闭浏览器)
  7. MySQL数据库主从同步的3种一致性方案实现,及优劣比较
  8. Android 内存优化测试(转)
  9. Script:Diagnostic Resource Manager
  10. Java8 in action(1) 通过行为参数化传递代码--lambda代替策略模式
  11. 记一次消息总线的打造 - McKay - 博客园
  12. 【转】为VS2005安装STLport
  13. 计算机建表格,电脑文档怎么做表格
  14. 网络出现异常(只能上QQ不能上网页)
  15. java大鱼吃小鱼实验报告摘要_java 大鱼吃小鱼游戏总结
  16. 计算机视觉-语义分割论文总结
  17. J2EE工作流管理系统jBPM详解(二)
  18. 【软考三】软设下午题第一大题--数据流图(做题)
  19. python实现树莓派监控_树莓派上安装pyaudio 及 对声音实时监控
  20. Android 深入Http(4)从OkHttp源码来看Http,音视频开发工程师前景

热门文章

  1. 如何在Mac iPhone和iPad上清除Safari缓存?
  2. 搭建个人博客网站 -- vue初学者学习总结
  3. p9plus android 8,华为P9 Plus和mate8哪个好?华为P9 Plus和mate8详细对比评测
  4. POSIX 文件能力:分配根用户的能力
  5. html正则表达式 小数点后两位,java的正则表达式的小数点后两位小数
  6. 短视频搜索优化:抖音搜索用户的行为分析
  7. idea 一些小插件【持续更新】
  8. 360私有化预计8月中旬完成:换汇时间表曝光
  9. java垃圾回收(一)——什么是垃圾
  10. Shader Graph2-使用PS生成正确的法线贴图