最小二乘法

大部分的最小二乘法公式推导,都是使用的 代价函数偏导 的方式来求得的,在这里首先展示如何通过代价函数求偏导的方式得到最小二乘公式,再展示李扬老师讲解的如何由向量到子空间的距离得来最小二乘法公式。

代价函数与最小二乘法

假设我们的拟合结果为:

h θ ( x ) = ∑ i = 0 n θ i x i = θ 0 + θ 1 x 1 + ⋯ + θ n x n h_{\theta}(x)=\sum_{i=0}^{n} \theta_{i} x_{i}=\theta_{0}+\theta_{1} x_{1}+\cdots+\theta_{n} x_{n} hθ​(x)=i=0∑n​θi​xi​=θ0​+θ1​x1​+⋯+θn​xn​

则平方损失函数为:

J ( θ ) = ∑ j = 1 m ( h θ ( x ( j ) ) − y ( j ) ) 2 = ∑ j = 1 m ( ∑ i = 0 n θ i x i ( j ) − y ( j ) ) 2 J(\theta)=\sum_{j=1}^{m}\left(h_{\theta}\left(x^{(j)}\right)-y^{(j)}\right)^{2}=\sum_{j=1}^{m}\left(\sum_{i=0}^{n} \theta_{i} x_{i}^{(j)}-y^{(j)}\right)^{2} J(θ)=j=1∑m​(hθ​(x(j))−y(j))2=j=1∑m​(i=0∑n​θi​xi(j)​−y(j))2

其中 x ( j ) , y ( j ) x^{(j)},y^{(j)} x(j),y(j)为一组数据点, x ( j ) x^{(j)} x(j)是长度为 n + 1 n+1 n+1的向量, y ( j ) y^{(j)} y(j)是数值,而 x i → \overrightarrow{x_i} xi​ ​我们定义为长为 m m m的向量,这在之后会被用到,注意这里为了追求整齐性,我们直接定义 x 0 x_0 x0​衡为常数1:
x ( j ) = ( 1 , x 1 ( j ) , … , x n ( j ) ) x i → = ( x i ( 1 ) , x i ( 2 ) , … , x i ( m ) ) \begin{aligned} &x^{(j)}=\left(1, x_{1}^{(j)}, \ldots, x_{n}^{(j)} \right)\\ &\overrightarrow{x_{i}}=\left(x_{i}^{(1)}, x_{i}^{(2)}, \ldots, x_{i}^{(m)}\right) \end{aligned} ​x(j)=(1,x1(j)​,…,xn(j)​)xi​ ​=(xi(1)​,xi(2)​,…,xi(m)​)​

平方损失函数的形式只有极小值,没有极大值,我们要使代价函数最小,我们要找到其极值点,即偏导均为0的点,代价函数对于各参数偏导如下:

∂ J ( θ ) θ i = 2 ∑ j = 1 m ( h θ ( x ( j ) ) − y ( j ) ) x i ( j ) , i = 0 , 1 , 2 , . . . n \frac{\partial J(\theta)}{\theta_{i}}=2 \sum_{j=1}^{m}\left(h_{\theta}\left(x^{(j)}\right)-y^{(j)}\right) x_i^{(j)},i=0,1,2,...n θi​∂J(θ)​=2j=1∑m​(hθ​(x(j))−y(j))xi(j)​,i=0,1,2,...n
令偏导为0得:
∑ j = 1 m ( h θ ( x ( j ) ) − y ( j ) ) x i ( j ) = 0 , i = 0 , 1 , 2 , . . . , n ⇒ ∑ j = 1 m ( h θ ( x ( j ) ) x i ( j ) ) = ∑ j = 1 m ( y ( j ) x i ( j ) ) , i = 0 , 1 , 2 , . . . , n \begin{aligned} &\sum_{j=1}^{m}\left(h_{\theta}\left(x^{(j)}\right)-y^{(j)}\right) x_i^{(j)}=0,i=0,1,2,...,n \\ \Rightarrow &\sum_{j=1}^{m}\left(h_{\theta}\left(x^{(j)}\right)x_i^{(j)}\right)=\sum_{j=1}^{m}\left(y^{(j)}x_i^{(j)}\right),i=0,1,2,...,n \end{aligned} ⇒​j=1∑m​(hθ​(x(j))−y(j))xi(j)​=0,i=0,1,2,...,nj=1∑m​(hθ​(x(j))xi(j)​)=j=1∑m​(y(j)xi(j)​),i=0,1,2,...,n​

实际上若是令:

X = [ − ( x ( 1 ) ) − − ( x ( 2 ) ) − ⋮ − ( x ( m ) ) − ] Y = [ y ( 1 ) y ( 2 ) ⋮ y ( m ) ] θ = [ θ 0 θ 1 ⋮ θ n ] X=\left[\begin{array}{c} -\left(x^{(1)}\right)- \\ -\left(x^{(2)}\right)- \\ \vdots \\ -\left(x^{(m)}\right)- \end{array}\right] \quad Y=\left[\begin{array}{c} y^{(1)} \\ y^{(2)} \\ \vdots \\ y^{(m)} \end{array}\right] \quad \theta=\left[\begin{array}{c} \theta_0 \\ \theta_1\\ \vdots \\ \theta_n \end{array}\right] X=⎣⎢⎢⎢⎡​−(x(1))−−(x(2))−⋮−(x(m))−​⎦⎥⎥⎥⎤​Y=⎣⎢⎢⎢⎡​y(1)y(2)⋮y(m)​⎦⎥⎥⎥⎤​θ=⎣⎢⎢⎢⎡​θ0​θ1​⋮θn​​⎦⎥⎥⎥⎤​
为了尽量写的清晰明了,在这里对比一下 X X X与 X ′ X^{\prime} X′:
X = [ − ( x ( 1 ) ) − − ( x ( 2 ) ) − ⋮ − ( x ( m ) ) − ] X ′ = [ − ( x 0 → ) − − ( x 1 → ) − ⋮ − ( x n → ) − ] X=\left[\begin{array}{c} -\left(x^{(1)}\right)- \\ -\left(x^{(2)}\right)- \\ \vdots \\ -\left(x^{(m)}\right)- \end{array}\right] \quad X^{\prime}=\left[\begin{array}{c} -\left(\overrightarrow{x_0}\right)- \\ -\left(\overrightarrow{x_1}\right)- \\ \vdots \\ -\left(\overrightarrow{x_n}\right)- \end{array}\right] X=⎣⎢⎢⎢⎡​−(x(1))−−(x(2))−⋮−(x(m))−​⎦⎥⎥⎥⎤​X′=⎣⎢⎢⎢⎢⎢⎢⎡​−(x0​ ​)−−(x1​ ​)−⋮−(xn​ ​)−​⎦⎥⎥⎥⎥⎥⎥⎤​
则有:
∑ j = 1 m ( h θ ( x ( j ) ) x i ( j ) ) = ∑ j = 1 m ( y ( j ) x i ( j ) ) , i = 0 , 1 , 2 , . . . , n ⇒ x i → X θ = x i → Y , i = 0 , 1 , 2 , . . . , n ⇒ X ′ X θ = X ′ Y ⇒ θ = ( X ′ X ) − 1 X ′ Y \begin{aligned} \sum_{j=1}^{m}\left(h_{\theta}\left(x^{(j)}\right)x_i^{(j)}\right)&=\sum_{j=1}^{m}\left(y^{(j)}x_i^{(j)}\right),i=0,1,2,...,n \\ \Rightarrow \overrightarrow{x_i}X\theta&=\overrightarrow{x_i}Y,i=0,1,2,...,n \\ \Rightarrow X^{\prime}X\theta&=X^{\prime}Y \\ \Rightarrow \theta&=(X^{\prime}X)^{-1}X^{\prime}Y \end{aligned} j=1∑m​(hθ​(x(j))xi(j)​)⇒xi​ ​Xθ⇒X′Xθ⇒θ​=j=1∑m​(y(j)xi(j)​),i=0,1,2,...,n=xi​ ​Y,i=0,1,2,...,n=X′Y=(X′X)−1X′Y​

向量到子空间的距离与最小二乘法

注意,为了迎合(线代/高代)的习惯,以下内容推导过程依旧使用常用的 A X = b AX=b AX=b符号,但在最后使用时,为了对多项式函数或多元函数各变量进行对应,将其修改为 X θ = Y X\theta=Y Xθ=Y的符号体系,请大家注意对应。

实数域上的线性方程组 A s × n X n × 1 = b s × 1 A_{s \times n}X_{n\times1}=b_{s\times1} As×n​Xn×1​=bs×1​大部分情况下 s > n s>n s>n无解,现在想找一个 X 0 X_0 X0​使得 ∣ A X 0 − b ∣ \left|A X_{0}-b\right| ∣AX0​−b∣最小,这就是所谓的最小二乘法。

∣ A X 0 − b ∣ 最小  ⟺ 对于任意的  X 都有  ∣ A X 0 − b ∣ ≤ ∣ A X − b ∣ ⟺ A X 0 + b ⊥ U 其中  U = { A X ∣ X ∈ R n } = L ( α 1 , ⋯ , α n ) ⟺ A X 0 − b ⊥ α i ( i = 1 , 2 , ⋯ , n ) ⟺ ( α 1 ′ ⋮ α n ′ ) ( A X 0 − b ) = 0 ( i = 1 , 2 , ⋯ , n ) ⟺ A ′ ( A X 0 − b ) = 0 ⟺ A ′ A X 0 = A ′ b . \begin{aligned} \left|A X_{0}-b\right| \text { 最小 } & \Longleftrightarrow \text { 对于任意的 } X \text { 都有 }\left|A X_{0}-b\right| \leq|A X-b| \\ & \Longleftrightarrow A X_{0}+b \perp U \text { 其中 } U=\left\{A X \mid X \in \mathbb{R}^{n}\right\}=L\left(\alpha_{1}, \cdots, \alpha_{n}\right) \\ & \Longleftrightarrow A X_{0}-b \perp \alpha_{i}(i=1,2, \cdots, n) \\ & \Longleftrightarrow\left(\begin{array}{c} \alpha_{1}^{\prime} \\ \vdots \\ \alpha_{n}^{\prime} \end{array}\right)\left(A X_{0}-b\right)=0(i=1,2, \cdots, n) \\ & \Longleftrightarrow A^{\prime}\left(A X_{0}-b\right)=0 \\ & \Longleftrightarrow A^{\prime} A X_{0}=A^{\prime} b . \end{aligned} ∣AX0​−b∣ 最小 ​⟺ 对于任意的 X 都有 ∣AX0​−b∣≤∣AX−b∣⟺AX0​+b⊥U 其中 U={AX∣X∈Rn}=L(α1​,⋯,αn​)⟺AX0​−b⊥αi​(i=1,2,⋯,n)⟺⎝⎜⎛​α1′​⋮αn′​​⎠⎟⎞​(AX0​−b)=0(i=1,2,⋯,n)⟺A′(AX0​−b)=0⟺A′AX0​=A′b.​

若最小的 X 0 X_0 X0​存在,则一定满足 A ′ A X 0 = A ′ b A^{\prime} A X_{0}=A^{\prime} b A′AX0​=A′b形式,现证明该方程组一定有解,原因是:

r ( A ′ A , A ′ b ) = r ( A ′ ( A , b ) ) ≤ r ( A ′ ) = r ( A ) . r\left(A^{\prime} A, A^{\prime} b\right)=r\left(A^{\prime}(A, b)\right) \leq r\left(A^{\prime}\right)=r(A) . r(A′A,A′b)=r(A′(A,b))≤r(A′)=r(A).

同时 r ( A ′ A , A ′ b ) ≥ r ( A ′ A ) = r ( A ) r\left(A^{\prime} A, A^{\prime} b\right) \geq r\left(A^{\prime} A\right)=r(A) r(A′A,A′b)≥r(A′A)=r(A),这就说明:

r ( A ′ A , A ′ b ) = r ( A ) = r ( A ′ A ) . r\left(A^{\prime} A, A^{\prime} b\right)=r(A)=r\left(A^{\prime} A\right) . r(A′A,A′b)=r(A)=r(A′A).

因此要求解让 ∣ X θ − Y ∣ \left|X \theta-Y\right| ∣Xθ−Y∣取最小值的 θ \theta θ 只需求解 ( X ′ X ) − 1 X ′ Y (X^{\prime}X)^{-1}X^{\prime}Y (X′X)−1X′Y 。

最小二乘法与多项式拟合

以下展示自己编写最小二乘法拟合多项式与MATLAB自带函数 polyfit 拟合多项式的参数对比,注意,为了和MATLAB自带函数保持一致, θ \theta θ 向量变为第一个参数为 θ n \theta_n θn​ ,最后一个参数为 θ 0 \theta_0 θ0​ , X X X 矩阵也做了相应的调整:

% 最小二乘法多项式拟合% 原三次函数+随机噪声
f=@(x)x.^3+6.*x.^2-2.*x+4+(rand(size(x))-.5).*20;% 构造原始数据
x=-5:.1:5;
y=f(x);% 自己写一个最小二乘
n=3;% 最高次数为三次
X=(x').^(n:-1:0);
theta1=((X'*X)\X'*y')';% MATLAB自带多项式拟合
theta2=polyfit(x,y,n);% 输出对比
disp(theta1)
disp(theta2)% 一个小技巧,下面的写法能够快速将
% 参数向量变成有关x的多项式匿名函数
func=matlabFunction(poly2sym(theta1));

theta1=
0.9686 6.0178 -1.8845 4.3362
theta2=
0.9686 6.0178 -1.8845 4.3362

多项式拟合结果绘图:

% 绘图部分% 保持坐标区域不刷新并添加网格
ax=gca;hold(ax,'on');grid(ax,'on');% 绘制原数据点和拟合结果
plot(x,y,'o','MarkerFaceColor',[94,142,179]./255);
plot(x,func(x),'Color',[0,64,115]./255,'LineWidth',2);% 修饰一下
ax.FontName='cambria';
ax.LineWidth=1.5;
ax.GridLineStyle='--';
ax.XColor=[1,1,1].*.3;
ax.YColor=[1,1,1].*.3;
ax.ZColor=[1,1,1].*.3;

最小二乘法与多元线性回归

以下展示自己编写最小二乘法进行多元线性回归与MATLAB自带函数 regress 进行多元线性回归的参数对比:

% 最小二乘法多元线性回归% 原二元函数+随机噪声
f=@(x1,x2) 3.*x1+4.*x2+5+(rand(size(x1))-.5).*10;% 构造原始数据
[x1,x2]=meshgrid(-5:.5:5,-5:.5:5);
y=f(x1,x2);% 自己写一个最小二乘
X=[x1(:),x2(:),ones(size(x1(:)))];
theta1=((X'*X)\X'*y(:));% MATLAB多元线性回归
theta2=regress(y(:),X);% 输出对比
disp(theta1)
disp(theta2)% 构造拟合结果的二元匿名函数
func=matlabFunction([sym('x1'),sym('x2'),1]*theta1);

theta1=
2.9285 4.0688 4.7520
theta2=
2.9285 4.0688 4.7520

多元线性回归结果绘图:

% 绘图部分% 保持坐标区域不刷新并添加网格
ax=gca;hold(ax,'on');grid(ax,'on');% 绘制原数据点和拟合结果
mesh(x1,x2,func(x1,x2),'FaceColor','flat','FaceAlpha',.8)
scatter3(x1(:),x2(:),y(:),20,'filled')% 修饰一下
ax.FontName='cambria';
ax.LineWidth=1.5;
ax.GridLineStyle='--';
ax.XColor=[1,1,1].*.3;
ax.YColor=[1,1,1].*.3;
ax.ZColor=[1,1,1].*.3;
view(30,20)


MATLAB | 最小二乘法的两种解读相关推荐

  1. Matlab中的两种除法

    Matlab中的两种除法 matlab中的向量运算,试比较: >>a=[1,1,1] a = 1     1     1 >> b=[2,2,2] b = 2     2    ...

  2. 100A有源电力滤波器(APF)MATLAB仿真,两种谐波补偿模式:全阶补偿和选阶补偿

    100A有源电力滤波器(APF)MATLAB仿真,两种谐波补偿模式:全阶补偿和选阶补偿,matlab版本V2011,基于LCL滤波器的I型三电平拓扑仿真模型,三相四线制,软件锁相环,C语言编程提取谐波 ...

  3. 普通最小二乘法的两种推导方法

    对于一个简单的线性回归模型,其形式为 其中是因变量,是自变量,表示出了之外其他可能影响的因素.我们要用这个模型来寻找在其他因素不变的情况下,对的影响大小,也就是说,在的情况下 这个线性公式表明不管的初 ...

  4. mse均方误差计算公式_PCA的两种解读:方差最大与均方误差最小的推导

    这张图片很关键,来自统计学习方法的PCA插图 又要考试了,推导一下方差最大化与均方差最小化,老师上课讲了一些均方差最小化,推导的过程很详细不过自己没有记下来,复习的时候再推一遍加深印象.感谢 @耳东陈 ...

  5. 两种解读,生活的意义和方法

    <大学之道>原文和翻译   [原文] 大学之道(1),在明明德(2),在亲民(3),在止于至善. 知止(4)而后有定:定而后能静:静而后能安:安而后能虑:虑而后能得(5). 物有本末,事有 ...

  6. MATLAB图像的两种模糊模式

    下面为大家介绍一下如何利用inline和blkproc函数对图像进行模糊度采集和显示,具体步骤如下: 1.首先打开MATLAB,在其主界面的编辑器中写入下列代码: B=imread('tire.tif ...

  7. Matlab多重积分的两种实现【从六重积分到一百重积分】

    问题 今天被问了一个问题: μ=∫∫∫∫∫∫f(x1,x2,x3,x4,x5,x6)dx1dx2dx3dx4dx5dx6σ2=∫∫∫∫∫∫[f(x1,x2,x3,x4,x5,x6)−μ]2dx1dx2 ...

  8. python泰勒公式法求正弦函数_正弦函数两种泰勒展开式的比较

    正弦函数两种泰勒展开式的比较 张文华,汲守峰 [摘 要]摘要:讨论了正弦函数在两种不同情况下的泰勒公式展开式,并利用余项比较两种展开式 在近似计算中误差的大小区别,解释了正弦函数展开式中经常展开偶数项 ...

  9. 两种方法对经典最小二乘法的改进

    一.经典最小二乘法 ①经典最小二乘法原理介绍 最小二乘法的原理实质比较简单,本质的目的是要确定如下建立的一元线性回归模型的两个回归参数 a 1 a_1 a1​和 b 1 b_1 b1​: y = a ...

最新文章

  1. jw player flash网页播放器 参数说明以及应用配置
  2. 导出Excle java
  3. idea spring helloworld
  4. python去除特殊字符_python去除BOM头\ufeff等特殊字符
  5. Tomcat 下 Memcached 集群与 Terracotta 集群比较
  6. HadoopSourceAnalyse --- Nodemanager Container request handler
  7. 软件工程 speedsnail 第二次冲刺1次
  8. Javascript--cookie创建与查看
  9. .plist 中各个key的含义
  10. Windows下secureCRT、putty使用秘钥登录Linux
  11. 学习笔记(26):玩转Python-Python3基础入门-案例-快递价格计算器(1)
  12. 手把手教学endnote设置毕业论文参考文献格式(特别完整)
  13. 腾讯云 python sdk_腾讯云CDN python SDK
  14. IDEA中Tomcat在控制台乱码问题以及IDEA编码设置UTF-8
  15. jquery项目实战——爱创课堂专业前端培训
  16. Android 整合高德地图SDK实现 地图预览,定位,模拟导航
  17. seo主导下的内容建设
  18. java subject类_RxJava 常见误区(一):过度使用 Subject
  19. 电视剧植入式广告的植入方式有哪些
  20. 微信小程序尺寸单位及其组件说明

热门文章

  1. 零基础编程——块语言编程游戏攻略之画图篇
  2. 谈谈C语言编译器对比于IDE的选择性区别
  3. 桌面虚拟化计算机教室,为什么越来越多学校多媒体计算机教室实施桌面虚拟化终端学生机教学方案?...
  4. 数据结构课设之家谱管理系统
  5. 杰理AC692N---蓝牙测试盒的使用
  6. 深度学习入门~激活函数③
  7. 夺命雷公狗TP3.2.3商城的搭建开篇1
  8. 110个精选计算机毕业设计项目,助你制作出色的程序,一定要试试
  9. “应聘、户口、档案、合同法”经验交流
  10. 手动开上O2优化(c++)