【fishing-pan:https://blog.csdn.net/u013921430 转载请注明出处】

前言

   当我们有NNN组数据,希望能够用一个函数来拟合这组数据的分布情况时,首先想到的就是最小二乘法。最小二乘法是线性回归中最基础也是最常用模型,它也可以用来拟合高次多项式。

什么是最小二乘法

  那么,什么是最小二乘法呢?将我们手中已有的数据表示成一个集合,(为了简化模型,暂且只考虑输入属性只有xxx一个的情况)D={(x1;y1),(x2;y2),⋯ ,(xn;yn)}D=\left \{ (x_{1};y_{1}),(x_{2};y_{2}),\cdots ,(x_{n};y_{n}) \right \}D={(x1​;y1​),(x2​;y2​),⋯,(xn​;yn​)}
  首先假设最终得到的线性模型为;
y=ax+by=ax+by=ax+b

  如上图所示,绿色的线条为所求的回归模型,黑色点为实际样本输入数据,红色线段为实际值与模型预测值之间的欧氏距离,用以下公式表示;
ei=∥axi+b−yi∥e_{i}=\left \| ax_{i}+b-y_{i} \right \|ei​=∥axi​+b−yi​∥
  为了让最终所求的模型尽量准确地表现数据分布规律,我们需要让eie_{i}ei​的和尽可能的小,所以(a∗,b∗)(a^{*},b^{*})(a∗,b∗)在eie_{i}ei​的和取最小值时取得;
(a∗,b∗)=argmin(a,b)∑i=1n∥axi+b−yi∥(a^{*},b^{*})=\underset{(a,b)}{argmin}\sum_{i=1}^{n}\left \| ax_{i}+b-y_{i} \right \|(a∗,b∗)=(a,b)argmin​i=1∑n​∥axi​+b−yi​∥
   但是上述式子中的绝对值是不可导的,求解困难。因此采用均方误差来代替绝对值。
(a∗,b∗)=argmin(a,b)∑i=1n(axi+b−yi)2(a^{*},b^{*})=\underset{(a,b)}{argmin}\sum_{i=1}^{n} (ax_{i}+b-y_{i} )^{2}(a∗,b∗)=(a,b)argmin​i=1∑n​(axi​+b−yi​)2
  这种基于均方误差来进行模型求解的方法就叫最小二乘法,也叫最小平方法。

参数推导

  首先还是来看上面提到的最简单的情况。令;
E(a,b)=∑i=1n(axi+b−yi)2E(a,b)=\sum_{i=1}^{n} (ax_{i}+b-y_{i} )^{2}E(a,b)=i=1∑n​(axi​+b−yi​)2
  EEE是关于aaa与bbb的二次函数,只会有一个极值点。而很明显,让EEE取极大值的(a,b)(a,b)(a,b)出现在空间中无限远处的,是不存在的。所以当(a,b)(a,b)(a,b)让EEE取得极值时,EEE取得极小值,分别对aaa、bbb求偏导。
∂E∂a=2∑i=1n(axi+b−yi)xi=2(∑i=1naxi2+∑i=1nbxi−∑i=1nyixi)=2(∑i=1naxi2+b∗nxˉ−∑i=1nyixi)\begin{aligned} \frac{\partial E}{\partial a}&=2\sum_{i=1}^{n} (ax_{i}+b-y_{i} )x_{i}\\ &=2(\sum_{i=1}^{n} ax_{i}^{2}+\sum_{i=1}^{n}bx_{i}-\sum_{i=1}^{n}y_{i}x_{i})\\&=2(\sum_{i=1}^{n} ax_{i}^{2}+b*n\bar{x}-\sum_{i=1}^{n}y_{i}x_{i}) \end{aligned} ∂a∂E​​=2i=1∑n​(axi​+b−yi​)xi​=2(i=1∑n​axi2​+i=1∑n​bxi​−i=1∑n​yi​xi​)=2(i=1∑n​axi2​+b∗nxˉ−i=1∑n​yi​xi​)​
∂E∂b=2∑i=1n(axi+b−yi)=2(a∗nxˉ+nb−nyˉ)\frac{\partial E}{\partial b}=2\sum_{i=1}^{n} (ax_{i}+b-y_{i} )=2(a*n\bar{x}+nb-n\bar{y}) ∂b∂E​=2i=1∑n​(axi​+b−yi​)=2(a∗nxˉ+nb−nyˉ​)
  令;
∂E∂a=0,∂E∂b=0\frac{\partial E}{\partial a}=0,\frac{\partial E}{\partial b}=0∂a∂E​=0,∂b∂E​=0
  可得;
a=∑i=1nxiyi−nxˉyˉ∑i=1nxi2−nxˉ2a=\frac{\sum_{i=1}^{n}x_{i}y_{i}-n\bar{x}\bar{y}}{\sum_{i=1}^{n}x_{i}^{2}-n\bar{x}^{2}}a=∑i=1n​xi2​−nxˉ2∑i=1n​xi​yi​−nxˉyˉ​​
b=yˉ−axˉ=yˉ∑i=1nxi2−xˉ∑i=1nxiyi∑i=1nxi2−nxˉ2b=\bar{y}-a\bar{x}=\frac{\bar{y}\sum_{i=1}^{n}x_{i}^{2}-\bar{x}\sum_{i=1}^{n}x_{i}y_{i}}{\sum_{i=1}^{n}x_{i}^{2}-n\bar{x}^{2}} b=yˉ​−axˉ=∑i=1n​xi2​−nxˉ2yˉ​∑i=1n​xi2​−xˉ∑i=1n​xi​yi​​
  由于,
∑i=1n(xi−xˉ)(yi−yˉ)=∑i=1n(xiyi−xiyˉ−yixˉ+xˉyˉ)=∑i=1nxiyi−yˉ∑i=1nxi−xˉ∑i=1nyi+nxˉyˉ=∑i=1nxiyi−nxˉyˉ\begin{aligned} \sum_{i=1}^{n}(x_{i}-\bar{x})(y_{i}-\bar{y})&=\sum_{i=1}^{n}(x_{i}y_{i}-x_{i}\bar{y}-y_{i}\bar{x}+\bar{x}\bar{y})\\ &=\sum_{i=1}^{n}x_{i}y_{i}-\bar{y}\sum_{i=1}^{n}x_{i}-\bar{x}\sum_{i=1}^{n}y_{i}+n\bar{x}\bar{y}\\ &=\sum_{i=1}^{n}x_{i}y_{i}-n\bar{x}\bar{y} \end{aligned} i=1∑n​(xi​−xˉ)(yi​−yˉ​)​=i=1∑n​(xi​yi​−xi​yˉ​−yi​xˉ+xˉyˉ​)=i=1∑n​xi​yi​−yˉ​i=1∑n​xi​−xˉi=1∑n​yi​+nxˉyˉ​=i=1∑n​xi​yi​−nxˉyˉ​​
  同理,
∑i=1n(xi−xˉ)2=∑i=1nxi2−nxˉ2\sum_{i=1}^{n}(x_{i}-\bar{x})^{2}=\sum_{i=1}^{n}x_{i}^{2}-n\bar{x}^{2} i=1∑n​(xi​−xˉ)2=i=1∑n​xi2​−nxˉ2
  所以aaa还可以表示成,
a=∑i=1n(xi−xˉ)(yi−yˉ)∑i=1n(xi−xˉ)2a=\frac{\sum_{i=1}^{n}(x_{i}-\bar{x})(y_{i}-\bar{y})}{\sum_{i=1}^{n}(x_{i}-\bar{x})^{2}} a=∑i=1n​(xi​−xˉ)2∑i=1n​(xi​−xˉ)(yi​−yˉ​)​

多元线性回归

  上述的推导中输入属性数目为一,在一般的情况下,样本的属性会有多个,所以通过矩阵的形式将上述推导过程进行推广。假设数据集DDD中样本属性有ddd个;将第iii个样本可以表示成以下形式;
(xi1;xi2;⋯ ;xid;y)(x_{i}^{1};x_{i}^{2};\cdots ;x_{i}^{d};y)(xi1​;xi2​;⋯;xid​;y)
  用向量 xi{\textbf{x}}_{i}xi​表示 ddd 个属性,w{\textbf{w}}w表示参数的向量;
xi=(xi1;xi2;⋯ ;xid){\textbf{x}}_{i}=(x_{i}^{1};x_{i}^{2};\cdots ;x_{i}^{d})xi​=(xi1​;xi2​;⋯;xid​)
w=(w1;w2;⋯ ;wd){\textbf{w}}=(w_{1};w_{2};\cdots ;w_{d})w=(w1​;w2​;⋯;wd​)
  则回归模型可以表示成;
f(xi)=wTxi+bf({\textbf{x}}_{i})={\textbf{w}}^{T}{\textbf{x}}_{i}+bf(xi​)=wTxi​+b
  为了便于讨论,令
w^=(w;b)\hat{\textbf{w}}=({\textbf{w}};b)w^=(w;b)
  对应的将x{\textbf{x}}x也增加一项;
xi=(xi1;xi2;⋯ ;xid;1){\textbf{x}}_{i}=(x_{i}^{1};x_{i}^{2};\cdots ;x_{i}^{d};1)xi​=(xi1​;xi2​;⋯;xid​;1)
f(xi)=w^Txif({\textbf{x}}_{i})=\hat{\textbf{w}}^{T}{\textbf{x}}_{i}f(xi​)=w^Txi​
X=(x11x12⋯x1d1x21x22⋯x2d1⋮⋱⋱⋮⋮xn1xn2⋯xnd1)=(x1T1x2T1⋮⋮xnT1){\textbf{X}}=\begin{pmatrix} x_{1}^{1} & x_{1}^{2} & \cdots & x_{1}^{d} &1 \\ x_{2}^{1} & x_{2}^{2} & \cdots & x_{2}^{d} &1\\ \vdots & \ddots & \ddots &\vdots & \vdots \\ x_{n}^{1} & x_{n}^{2} & \cdots & x_{n}^{d} &1 \end{pmatrix}=\begin{pmatrix} {\textbf{x}}_{1}^{T} &1 \\ {\textbf{x}}_{2}^{T} &1 \\ \vdots &\vdots \\ {\textbf{x}}_{n}^{T} & 1 \end{pmatrix}X=⎝⎜⎜⎜⎛​x11​x21​⋮xn1​​x12​x22​⋱xn2​​⋯⋯⋱⋯​x1d​x2d​⋮xnd​​11⋮1​⎠⎟⎟⎟⎞​=⎝⎜⎜⎜⎛​x1T​x2T​⋮xnT​​11⋮1​⎠⎟⎟⎟⎞​
  同样地; y=(y1;y2;⋯ ;yn){\textbf{y}}=({y}_{1};{y}_{2};\cdots;{y}_{n})y=(y1​;y2​;⋯;yn​),那么与上面的类似,有;
w^∗=arg minw^(y−Xw^)T(y−Xw^)\hat{\textbf{w}}^{*}=\underset{\hat{\textbf{w}}}{arg\, min}({\textbf{y}}-{\textbf{X}}\hat{\textbf{w}})^{T}({\textbf{y}}-{\textbf{X}}\hat{\textbf{w}})w^∗=w^argmin​(y−Xw^)T(y−Xw^)
  令E=(y−Xw^)T(y−Xw^)E=({\textbf{y}}-{\textbf{X}}\hat{\textbf{w}})^{T}({\textbf{y}}-{\textbf{X}}\hat{\textbf{w}})E=(y−Xw^)T(y−Xw^);对w^\hat{\textbf{w}}w^求偏导数;
∂E∂w^=2XT(Xw^−y)\frac{\partial E}{\partial \hat{\textbf{w}}}=2{\textbf{X}}^{T}({\textbf{X}}\hat{\textbf{w}}-\textbf{y})∂w^∂E​=2XT(Xw^−y)
  最终所求
w^∗=(XTX)−1XTy\hat{\textbf{w}}^{*}=({\textbf{X}}^{T}{\textbf{X}})^{-1}{\textbf{X}}^{T}\textbf{y}w^∗=(XTX)−1XTy

继续推广延伸

  更一般的,可以将这种线性回归用于非线性函数的拟合;例如对于对数函数;
f(xi)=y=ln(wTxi+b)f({\textbf{x}}_{i})=y=ln({\textbf{w}}^{T}{\textbf{x}}_{i}+b)f(xi​)=y=ln(wTxi​+b)
  可以利用反函数,将其转换成h=ey=wTxi+bh=e^{y}={\textbf{w}}^{T}{\textbf{x}}_{i}+bh=ey=wTxi​+b;成为一个线性回归的问题,最终再转换成对数形式;

  甚至可以用最小二乘法拟合多项式曲线。
y=a0+a1x+a2x2+⋯+amxmy=a_{0}+a_{1}x+a_{2}x^{2}+\cdots +a_{m}x^{m}y=a0​+a1​x+a2​x2+⋯+am​xm
X=(x1mx1m−1⋯x111x2mx2m−1⋯x211⋮⋱⋱⋮⋮xnmxnm−1⋯xn11){\textbf{X}}=\begin{pmatrix} x_{1}^{m} & x_{1}^{m-1} & \cdots & x_{1}^{1} &1 \\ x_{2}^{m} & x_{2}^{m-1} & \cdots & x_{2}^{1} &1\\ \vdots & \ddots & \ddots &\vdots & \vdots \\ x_{n}^{m} & x_{n}^{m-1} & \cdots & x_{n}^{1} &1 \end{pmatrix}X=⎝⎜⎜⎜⎛​x1m​x2m​⋮xnm​​x1m−1​x2m−1​⋱xnm−1​​⋯⋯⋱⋯​x11​x21​⋮xn1​​11⋮1​⎠⎟⎟⎟⎞​
  此时上标mmm不再表示第mmm个属性,而是表示mmm次幂;在修改过X{\textbf{X}}X后,最终w^∗\hat{\textbf{w}}^{*}w^∗依然表示为;
w^∗=(XTX)−1XTy\hat{\textbf{w}}^{*}=({\textbf{X}}^{T}{\textbf{X}})^{-1}{\textbf{X}}^{T}\textbf{y}w^∗=(XTX)−1XTy

Matlab 实现高次多项式拟合

  用Matlab实现了最小二乘法一元高次多项式拟合;代码如下;

**%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%不用先生,2018.11.22,最小二乘法一元高次多项式拟合
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
clc;
clear all;
xi=[-1,0,2,3,4,5,8,9,10,15,20];
yi=[-2,-0.5,1.5,2.8,2.8,3.9,7.6,7.5,8,13,16.5];[~,n]=size(xi);
m=8;     %%最高8次多项式;
W=zeros(m+1,m);for i=1:mX=zeros(n,i+1);    %%创建一个n*+1的矩阵;for j=1:nfor s=1:i          X(j,s)=xi(j)^(i+1-s);   %%计算矩阵中每一个元素的值endX(j,i+1)=1;endXX=inv(X'*X)*X'*yi';  %%得到系数并赋值for j=1:i+1W(j,i)=XX(j);end
end%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%构造方程,画图
x=-5:0.01:25;
for i=1:my=W(1,i)*x.^i;for j=2:i+1y=y+W(j,i)*x.^(i-j+1);end   subplot(2,4,i);plot(xi,yi,'*');hold on;plot(x,y);hold off
end
suptitle('用1到8次多项式拟合')
**


  很明显,在高次多项式拟合时,曲线边缘出现了龙格现象。

参考

《机器学习》,周志华 著,清华大学出版社;

已完。。

【数学基础】最小二乘法相关推荐

  1. 数学基础(一)——最小二乘法

    最小二乘法(LS 算法) 是统计分析中最常用的逼近计算的一种算法,其交替计算结果使得最终结果尽可能地逼近真实结果. LS 算法是一种数学优化技术,也是一种机器学习常用算法.它通过最小化误差的平方和寻找 ...

  2. 数学基础知识总结 —— 13. 什么是回归分析常用的「最小二乘法」

    文章目录 「最小二乘法」的提出背景 从一个简单的例子开始 参考资料 「最小二乘法」的提出背景 最小二乘法通常归功于高斯(Carl Friedrich Gauss,1795),但最小二乘法是由阿德里安- ...

  3. matlab 最小一乘法,MATLAB实现最小二乘法

    转载自: https://blog.csdn.net/zengxiantao1994/article/details/70210662 文章仅为创作者的观点,可与转载者讨论 最小二乘法 最小二乘法(又 ...

  4. 斯坦福大学CS229数学基础(线性代数、概率论)中文翻译版.pdf

    本文是斯坦福大学CS 229机器学习课程的基础材料的中文翻译,个人认为是目前最好的人工智能的数学基础材料. Stanford cs229 manchine learning课程,是斯坦福大学近十年来最 ...

  5. 【数学基础】算法工程师必备的机器学习--线性模型(上)

    作者:华校专 作者信息: 华校专,曾任阿里巴巴资深算法工程师.智易科技首席算法研究员,现任腾讯高级研究员,<Python 大战机器学习>的作者. 编者按: 算法工程师必备系列更新啦!继上次 ...

  6. 【数学基础】正态分布为什么如此常见?

    文章目录: 1 生活中的正态分布 2 名字由来 3  剖析细节 4 有偏分布 每个人都相信它(正态分布):实验工作者认为它是一个数学定理,数学研究者认为它是一个经验公式.----加布里埃尔·李普曼 本 ...

  7. 首发:吴恩达的 CS229的数学基础(线性代数),有人把它做成了在线翻译版本!...

    本文是斯坦福大学 CS 229 机器学习课程的基础材料,是斯坦福各大人工智能课程的数学基础,本文为线性代数部分,原始文件下载[1] 原文作者:Zico Kolter,修改:Chuong Do, Ten ...

  8. 斯坦福CS229机器学习课程的数学基础(概率论)翻译完成

    Stanford cs229 manchine learning课程,相比于Coursera中的机器学习有更多的数学要求和公式的推导,课程全英文,基础材料部分还没有翻译.这个基础材料主要分为线性代数和 ...

  9. 斯坦福CS229机器学习课程的数学基础(线性代数)翻译完成

    Stanford cs229 manchine learning课程,相比于Coursera中的机器学习有更多的数学要求和公式的推导,课程全英文,基础材料部分还没有翻译.这个基础材料主要分为线性代数和 ...

最新文章

  1. eolinker开源版5_开源土豪沉金版空气质量检测仪AirWolf
  2. 探索推荐引擎内部的秘密,第 2 部分: 深入推荐引擎相关算法 - 协同过滤
  3. 在 Java 中应用设计模式 - Factory Method
  4. CodeForces 321A Ciel and Robot(数学模拟)
  5. CDH HUE集成MySQL
  6. c语言重新进入for循环,大佬们帮帮忙 帮我改改 怎样能在输入Y后 再次进行for循环...
  7. iOS Block全面分析
  8. java中怎么把数字打印在屏幕上_java中如何打印出蜗牛形状的数字
  9. Linux端BaiduPCS-Go使用方法
  10. uniapp小程序生成海报图
  11. java word书签_java和javascript获取word的 书签位置
  12. php处理头像,(头像处理)PHP把图片转换成圆形png
  13. 柳传志:我是任正非的知音
  14. PHP裂变红包源码,php版本微信裂变红包api详解
  15. 公关广告策略分析:如何结合广告的推力和公关的拉力
  16. 【※taskmgr.exe进程知识详解※电脑知识】
  17. 微信加拿大服务器,微信新功能,在加拿大也可以任意刷人民币了
  18. android隐私违规获取问题处理 及 Hook拦截处理记录 (VirtualXposted/epic等)及 android/iOS 多bundle加载方式修复方案
  19. 使用Itextsharp编辑PDF
  20. IOS去除文件后缀名

热门文章

  1. android中保存Bitmap图片到指定文件夹中的方法
  2. Hadoop---集群安装
  3. Exchange 2007 删除 某时间段 特定主题 的邮件
  4. Nginx限制连接数和下载速度
  5. Golang 实现tcp转发代理
  6. 搭建FastDFS分布式文件存储系统教程
  7. CSS那些不大不小的事
  8. VSCode瞎折腾记
  9. NodeJs 的安装及配置环境变量
  10. 【教程】Microsoft Wi-Fi Direct Virtual关闭方法