【原创】算法分享(7)最小二乘法

Ordinary Least Square 最小二乘法

提到最小二乘法要先提到拟合,拟合Fitting是数值分析的基础工具之一,在二维平面上分为直线拟合和曲线拟合,直线拟合找到一条直线尽可能穿过所有的点,注意这里是尽可能,因为只要超过2个点,就有可能发生直线不能精确穿过所有点的情况,这时确定直线的原则有很多种,最小二乘法就是其中的一种,当直线不能穿过点时产生误差(点和直线的距离),最小二乘法就是让所有点的误差的平方和最小;

最小二乘法(又称最小平方法)是一种数学优化技术。它通过最小化误差的平方和寻找数据的最佳函数匹配。利用最小二乘法可以简便地求得未知的数据,并使得这些求得的数据与实际数据之间误差的平方和为最小。

直线拟合(线性回归)过程如下图:

来看标准定义:

对给定数据点集合  ,在取定的函数类  中,求  ,使误差的平方和  最小,  。从几何意义上讲,就是寻求与给定点集 的距离平方和为最小的曲线y=p(x)。函数p(x)称为拟合函数或最小二乘解,求拟合函数p(x)的方法称为曲线拟合的最小二乘法。

假设直线方程为

则误差为

其中di表示(xi, yi)点的误差

所有误差的平方和为

这是一个2次函数,2次函数曲线如图:

2次函数中D的最小值位于导数等于0的点,所以计算D对a和b的两个偏导数为0即可得到两个关于a和b的方程,

最终计算得出a和b的计算公式为:

公式推导过程详见 https://www.cnblogs.com/paiandlu/p/7843236.html

原文地址:https://www.cnblogs.com/barneywill/p/10217349.html

时间: 2024-10-09 12:24:21

【原创】算法分享(7)最小二乘法的相关文章

【原创】算法分享(4)Cardinality Estimate 基数计数概率算法

读过<编程珠玑>(<Programming Pearls>)的人应该还对开篇的Case记忆犹新,大概的场景是: 作者的一位在电话公司工作的朋友想要统计一段时间内不同的电话号码的个数,电话号码的数量很大,当时的内存很小,所以不能把所有的电话号码全部放到内存来去重统计,他的朋友很苦恼. 作者聪明的想到了用bit数组来解决问题,每个电话号码可以映射为bit数组的index,bit数组初始状态所有位为0,所有电话号码逐一处理:将bit数组对应位置为1,处理完之后统计bit数组中有多少个1即

算法------回归之最小二乘法

线性回归是指,试图学得一个线性模型以尽可能准确的预测实值输出标记. 最小二乘法:基于均方误差最小化来进行模型求解的方法. 通过变成实现最小二乘法(可能不是最简化的,有待提高编程能力) /* * 这是一个最小二乘法的一个线性回归问题 */ class LinearRegression { double a; double b; int n; public LinearRegression(double[] arrx, double[] arry) { // TODO Auto-generated

【原创-算法-实现】异步HTTP请求操作

一.说明 1) 这个类 是我 在真实项目中,优化解决真实问题 时,不参考第三方代码,完全由自己查阅MSDN官方文档 , 完成的一个真实生产环境中使用的功能类 2) 读者在使用此类时,请尊重原创,在代码中加上原创注释://  Author -- Meng.NET (cnblogs.com)  ,同时欢迎 二次改进.二次创作 以共同进步 3) 此代码以[面向对象].[C#闭包].[异步回调].[超时].[等待].[自动重试]方式实现及完成,且可以配置扩展 二.代码 废话不多说,上干货,代码如下: 1

程序员训练机器学习 SVM算法分享

http://www.csdn.net/article/2012-12-28/2813275-Support-Vector-Machine 摘要:支持向量机(SVM)已经成为一种非常受欢迎的算法.本文主要阐述了SVM是如何进行工作的,同时也给出了使用Python Scikits库的几个示例.SVM作为一种训练机器学习的算法,可以用于解决分类和回归问题,还使用了kernel trick技术进行数据的转换,再根据转换信息在可能的输出之中找到一个最优的边界. [CSDN报道]支持向量机(Support

【原创经验分享】JQuery(Ajax)调用WCF服务

最近在学习这个WCF,由于刚开始学 不久,发现网上的一些WCF教程都比较简单,感觉功能跟WebService没什么特别大的区别,但是看网上的介绍,就说WCF比WebService牛逼多少多少,反正我刚开始入门,就没觉得多大区别啦,这次写的东西跟WebService一样,我们写了一个WCF,那当然就是要用的,要用的话,当然不能只能在.NET平台下用了,必须跨平台呀,所以,Ajax能调用,这个基本的要求就必须要实现的了,所以,本次经验分享就是写JQuery的Ajax调用WCF的服务了.   一.新建

算法精解:最小二乘法C实现

计量经济学研究的直接目的是确定总体回归函数Yi=B1+B2Xi+ui,然而能够得到的只是来自总体的若干样本的观测值,要用样本信息建立的样本回归函数尽可能"接近"地去估计总体回归函数.为此,可以以从不同的角度去确定建立样本回归函数的准则,也就有了估计回归模型参数的多种方法. 最小二乘估计法用来确定函数y(x) = b1x + b0 中b1和b0的估计值. y(x)是n个点(x0,y0) , ... (Xn-1 , Yn-1)的最佳拟合线. b1 = (n * sigma(Xi * Yi)

[原创] 算法之递归(3)- 链表操作

算法之递归(3)- 链表操作 递归(2)尝试了一个单链表的遍历,同时又分析了如何添加自己的操作,是在递归调用之前,还是在递归调用之后. 今天,打算将问题深入一下,即添加相应的操作在递归的过程中. (免责声明:下面的解法纯属娱乐 ,另外,示例代码未经编译和调试,许多想法未经实践验证.) 查找链表当中倒数第N个节点. 解法一 逐层递归,遍历到最后一个节点,并从返回的节点一次向后递归,遍历N次,找到倒数第N个节点. private LNode targetNode = null; private LN

[原创] 算法之递归(2)- 链表遍历

算法之递归(2)- 链表遍历 在递归(1)中,简单的介绍了递归的思想,并且通过一个例子简单阐述了递归是如何工作的,并且递归的实现是以线性结构来表示的.之所以用线性的,是因为其易于理解:如果使用树结构,将加大对问题的难度,不利于初学者理解递归的思想. 为什么用递归 关 于为什么用递归,我个人的理解是递归不要违背算法的初衷,即期待传入xxx值,加工后返回xxx值.不要为了递归而递归,容易造成对函数语义的奇异.另 外,通过递归,可以让代码更加整洁,短小,精湛,优美.当然,还会存在一定程度的性能损耗:不

[原创] 算法之递归(1)

算法之递归(1) 最近事情太多了,很少有时间可以完全静下来认真研究一些东西:每当专注的写代码的时候,总是被其他事情打断.还好,礼拜天来了,总算可以抽出一些时间了J <代码之美>第一章有一个关于模式匹配的问题,即根据正则表达式在相应的文本中找到匹配的值,找到返回1,没找到返回0.撇开具体的实现,里面优美的递归调用倒是深深地吸引了我.于是,我开始重新思考递归,毕竟有些细节之前的思考还不够到位. 什么是递归 我的印象中的递归是函数调用自身来完成预先定义的操作.当然,实际涉及的内容更多,比如退出递归的