最小二乘法(又称最小平方法)是一种数学优化技术。它通过最小化误差的平方和寻找数据的最佳函数匹配。利用最小二乘法可以简便地求得未知的数据,并使得这些求得的数据与实际数据之间误差的平方和为最小。最小二乘法还可用于曲线拟合。其他一些优化问题也可通过最小化能量或最大化熵用最小二乘法来表达。
基本公式
考虑超定方程组(超定指方程个数大于未知量个数):

其中m代表有m个等式,n代表有n个未知数β,m>n ;将其进行向量化后为:Xβ=y



显然该方程组一般而言没有解,所以为了选取最合适的β让该等式"尽量成立",引入残差平方和函数S


方法
以最简单的一元线性模型来解释最小二乘法。什么是一元线性模型呢?监督学习中,如果预测的变量是离散的,我们称其为分类(如决策树,支持向量机等),如果预测的变量是连续的,我们称其为回归。回归分析中,如果只包括一个自变量和一个因变量,且二者的关系可用一条直线近似表示,这种回归分析称为一元线性回归分析。如果回归分析中包括两个或两个以上的自变量,且因变量和自变量之间是线性关系,则称为多元线性回归分析。对于二维空间线性是一条直线;对于三维空间线性是一个平面,对于多维空间线性是一个超平面。

对于一元线性回归模型, 假设从总体中获取了n组观察值(X1,Y1),(X2,Y2), …,(Xn,Yn)。对于平面中的这n个点,可以使用无数条曲线来拟合。要求样本回归函数尽可能好地拟合这组值。综合起来看,这条直线处于样本数据的中心位置最合理。 选择最佳拟合曲线的标准可以确定为:使总的拟合误差(即总残差)达到最小。有以下三个标准可以选择:
(1)用“残差和最小”确定直线位置是一个途径。但很快发现计算“残差和”存在相互抵消的问题。
(2)用“残差绝对值和最小”确定直线位置也是一个途径。但绝对值的计算比较麻烦。
(3)最小二乘法的原则是以“残差平方和最小”确定直线位置。用最小二乘法除了计算比较方便外,得到的估计量还具有优良特性。这种方法对异常值非常敏感。
最常用的是普通最小二乘法( Ordinary Least Square,OLS):所选择的回归模型应该使所有观察值的残差平方和达到最小。(Q为残差平方和)- 即采用平方损失函数。

样本回归模型:(其中ei为样本(Xi,Yi)的误差)

平方损失函数:

则通过Q最小确定这条直线,即确定β0和β1,把它们看作是Q的函数,就变成了一个求极值的问题,可以通过求导数得到。求Q对两个待估参数的偏导数:

根据数学知识我们知道,函数的极值点为偏导为0的点。
解得:
这就是最小二乘法的解法,就是求得平方损失函数的极值点。

梯度下降法(英语:Gradient descent)是一个一阶最优化算法。 要使用梯度下降法找到一个函数的局部极小值,必须向函数上当前点对应梯度(或者是近似梯度)的反方向的规定步长距离点进行迭代搜索。
我们给出线性回归的损失函数,为了方便,不带正则项:

其中

具体的梯度下降流程:
第一步:先随便假设一组θ,你要是喜欢可以全部取0
第二步循环迭代:
第一次迭代:

第二次迭代:


第x次迭代:…
第三步,满足要求,循环结束,得到θ
最小二乘法跟梯度下降法都是通过求导来求损失函数的最小值,那它们有什么异同?
相同:
1.本质相同:两种方法都是在给定已知数据(independent & dependent variables)的前提下对dependent variables算出出一个一般性的估值函数。然后对给定新数据的dependent variables进行估算。
2.目标相同:都是在已知数据的框架内,使得估算值与实际值的总平方差尽量更小(事实上未必一定要使用平方),估算值与实际值的总平方差的公式为:


不同:
1.实现方法和结果不同:最小二乘法是直接对Δ求导找出全局最小,是非迭代法。而梯度下降法是一种迭代法,先给定一个β,然后向Δ下降最快的方向调整β,在若干次迭代之后找到局部最小。梯度下降法的缺点是到最小点的时候收敛速度变慢,并且对初始点的选择极为敏感,其改进大多是在这两方面下功夫。
牛顿法
牛顿法是一种在实数域和复数域上近似求解方程的方法。方法使用函数f (x)的泰勒级数的前面几项来寻找方程f(x)=0的根。牛顿法最大的特点就在于它的收敛速度很快。
用牛顿迭代法解非线性方程,是把非线性方程f(x)=0线性化的一种近似方法。把f(x)在点x0的某邻域内展开成泰勒级数

取其线性部分(即泰勒展开的前两项),并令其等于0,即

以此作为非线性方程f(x)=0的近似方程,若

则其解为

得到牛顿迭代法的一个迭代关系式:

已经证明,如果是连续的,并且待求的零点是孤立的,那么在零点周围存在一个区域,只要初始值位于这个邻近区域内,那么牛顿法必定收敛。 并且,如果不为0, 那么牛顿法将具有平方收敛的性能. 粗略的说,这意味着每迭代一次,牛顿法结果的有效数字将增加一倍。

高斯牛顿法
高斯一牛顿迭代法(Gauss-Newton iteration method)是非线性回归模型中求回归参数进行最小二乘的一种迭代方法,该法使用泰勒级数展开式去近似地代替非线性回归模型,然后通过多次迭代,多次修正回归系数,使回归系数不断逼近非线性回归模型的最佳回归系数,最后使原模型的残差平方和达到最小。其直观思想是先选取一个参数向量的参数值β,若函数ft(Xt,β)在β0附近有连续二阶偏导数,则在β0的邻域内可近似地将ft(Xt,β)看作是线性,因而可近似地用线性最小二乘法求解
高斯-牛顿法的一般步骤如下所示
(1) 初始值的选择。其方法有三种:
一是根据以往的经验选定初始值;
二是用分段法求出初始值;
三是对于可线性化的非线性回归模型,通过线性变换,然后施行最小平方法求出初始值
(2)泰勒级数展开式。设非线性回归模型为




最小二乘法C++实现

/*
最小二乘法C++实现
参数1为输入文件
输入 : x
输出: 预测的y
*/
#include<iostream>
#include<fstream>
#include<vector>
using namespace std;
class LeastSquare{double a, b;
public:LeastSquare(const vector<double>& x, const vector<double>& y){double t1=0, t2=0, t3=0, t4=0;for(int i=0; i<x.size(); ++i){t1 += x[i]*x[i];t2 += x[i];t3 += x[i]*y[i];t4 += y[i];}a = (t3*x.size() - t2*t4) / (t1*x.size() - t2*t2);  // 求得β1 b = (t1*t4 - t2*t3) / (t1*x.size() - t2*t2);        // 求得β2}double getY(const double x) const{return a*x + b;}void print() const{cout<<"y = "<<a<<"x + "<<b<<"\n";}};int main(int argc, char *argv[])
{if(argc != 2){cout<<"Usage: DataFile.txt"<<endl;return -1;}else{vector<double> x;ifstream in(argv[1]);for(double d; in>>d; )x.push_back(d);int sz = x.size();vector<double> y(x.begin()+sz/2, x.end());x.resize(sz/2);LeastSquare ls(x, y);ls.print();cout<<"Input x:\n";double x0;while(cin>>x0){cout<<"y = "<<ls.getY(x0)<<endl;cout<<"Input x:\n";}}
}

参考:
百度百科
https://www.cnblogs.com/iamccme/archive/2013/05/15/3080737.html
https://baijiahao.baidu.com/s?id=1639202882632470513&wfr=spider&for=pc

最小均方误差的推导+最小二乘法、梯度下降法、牛顿法、高斯牛顿法相关推荐

  1. 牛顿法、梯度下降法、高斯牛顿法、Levenberg-Marquardt算法

    何为梯度? 一般解释: f(x)在x0的梯度:就是f(x)变化最快的方向 举个例子,f()是一座山,站在半山腰, 往x方向走1米,高度上升0.4米,也就是说x方向上的偏导是 0.4 往y方向走1米,高 ...

  2. 人工智能必备数学知识· 学习笔记 ·001【线性回归,最小二乘法梯度下降法】

    注:笔记 来自课程 人工智能必备数学知识 Tips①:只是记录从这个课程学到的东西,不是推广.没有安利 Tips②:本笔记主要目的是为了方便自己遗忘查阅,或过于冗长.或有所缺省.或杂乱无章,见谅 Ti ...

  3. 牛顿法、梯度下降法与拟牛顿法

    牛顿法.梯度下降法与拟牛顿法 0 引言 1 关于泰勒展开式 1.1 原理 1.2 例子 2 牛顿法 2.1 x 为一维 2.2 x 为多维 3 梯度下降法 4 拟牛顿法 4.1 拟牛顿条件 4.2 D ...

  4. 最优化方法总结——梯度下降法、最速下降法、牛顿法、高斯牛顿法、LM法、拟牛顿法

    目录 1 最优化方法的结构 2 常用最优化方法对比分析 3 相关计算公式 1 最优化方法的结构 最优化问题的一般形式为: 其中为决策变量,是目标函数,为约束集或可行域.特别地,如果,则最优化问题成为无 ...

  5. 最小均方误差和最小二乘法的关系

    均方误差等于方差加上偏差的平方,当估计量无偏时,均方误差等于方差.所以,当满足最小二乘法条件且估计量是无偏估计量,那么求最小均方误差等价于最小二乘法. 均方误差可以看作是加权的最小二乘法,其中的权值表 ...

  6. 机器学习:用梯度下降法实现线性回归

    之前在 机器学习算法数学基础之 -- 线性代数篇 中,总结过求解线性回归的两种方法: 最小二乘法 梯度下降法 这篇文章重点总结一下梯度下降法中的一些细节和需要注意的地方. 梯度下降法是什么 假设有一个 ...

  7. 逻辑回归梯度下降法详解

    引言 逻辑回归常用于预测疾病发生的概率,例如因变量是是否恶性肿瘤,自变量是肿瘤的大小.位置.硬度.患者性别.年龄.职业等等(很多文章里举了这个例子,但现代医学发达,可以通过病理检查,即获取标本放到显微 ...

  8. python迭代算法_Python实现简单的梯度下降法

    Python 实现简单的梯度下降法 机器学习算法常常可以归结为求解一个最优化问题,而梯度下降法就是求解最优化问题的一个方法. 梯度下降法(gradient descent)或最速下降法(steepes ...

  9. python梯度下降法实现线性回归_梯度下降法的python代码实现(多元线性回归)

    梯度下降法的python代码实现(多元线性回归最小化损失函数) 1.梯度下降法主要用来最小化损失函数,是一种比较常用的最优化方法,其具体包含了以下两种不同的方式:批量梯度下降法(沿着梯度变化最快的方向 ...

最新文章

  1. 面试官:private修饰的方法可以通过反射访问,那么private的意义是什么?
  2. asp.net core上使用redis探索(1)
  3. micropython 模块_MicroPython添加Module(一)
  4. 2017第17周五当前困境思考2
  5. 苹果浏览器移动端click事件延迟300ms的原因以及解决办法
  6. python服务器查看文件更改记录,Python记录到同一文件,不同用户
  7. 多重循环控制之打印金字塔
  8. 出现次数超过一半的数(信息学奥赛一本通-T1186)
  9. 大学生计算机基础清考试卷,天大《计算机网络基础》4月毕业清考作业考核试题模板.doc...
  10. c语言程序设计授课进度安排表,C语言程序设计教学大纲、教学计划进度简表
  11. 静态变量和实例变量的区别。
  12. JQuery EasyUI DataGrid
  13. VB6 TCP通讯服务端、客户端源码
  14. GREAT-UPD 开源软件使用笔记
  15. CCF小白刷题之路---201809-1 卖菜(C/C++ 100分)
  16. st58服务器装系统,微pe硬盘安装系统教程
  17. 太强了!!!GNN + PLM→CIKM'22最佳论文
  18. 超详细,从零开始搭建阿里云服务器(centos7)第一章 远程连接
  19. SPSS Modeler使用之与数据库建立ODBC连接
  20. html时显示当前时间的时钟,javascript实现页面的实时时钟显示示例

热门文章

  1. 一些Qt第三方语言绑定库
  2. 消费升级背景下零食行业发展报告_休闲零食行业深度报告:万亿市场,亟待千亿龙头出现...
  3. JAVA 方法重载和方法覆写的区别(有代码)
  4. 现在请你编写一个程序来帮助老王模拟苹果分级的操作吧
  5. day06 Debug基础练习
  6. 在等GPT-5多模态?试试Genmo!Adobe AI首轮内测报告;ChatGPT三条使用哲学与实践;论文追更与阅读神器 | ShowMeAI日报
  7. 燃气蒸汽发生器点不着火,不在一筹莫展
  8. curl命令行发送POST/GET请求
  9. Hackrf One模拟GPS信号—手记
  10. 一种用于加密流分类的多模态深度学习框架A Novel Multimodal Deep Learning Framework for Encrypted Traffic Classification论文