最小二乘法介绍

举报
Yan 发表于 2021/07/22 15:11:56 2021/07/22
【摘要】 最小二乘法是一种在误差估计、不确定度、系统辨识及预测、预报等数据处理诸多学科领域得到广泛应用的数学工具。最小二乘很简单,也在业界得到了广泛使用。但是对于最小二乘法和它的故事,也许很多人并不了解,今天给大家做一下分享。1801年,意大利天文学家朱赛普·皮亚齐发现了第一颗小行星谷神星。经过40天的跟踪观测后,由于谷神星运行至太阳背后,使得皮亚齐失去了谷神星的位置。随后全世界的科学家利用皮亚齐的观...

最小二乘法是一种在误差估计、不确定度、系统辨识及预测、预报等数据处理诸多学科领域得到广泛应用的数学工具。最小二乘很简单,也在业界得到了广泛使用。

但是对于最小二乘法和它的故事,也许很多人并不了解,今天给大家做一下分享。

1801年,意大利天文学家朱赛普·皮亚齐发现了第一颗小行星谷神星。经过40天的跟踪观测后,由于谷神星运行至太阳背后,使得皮亚齐失去了谷神星的位置。随后全世界的科学家利用皮亚齐的观测数据开始寻找谷神星,但是根据大多数人计算的结果来寻找谷神星都没有结果。

时年24岁的高斯也计算了谷神星的轨道。奥地利天文学家海因里希·奥伯斯根据高斯计算出来的轨道重新发现了谷神星。

高斯使用的最小二乘法的方法发表于1809年他的著作《天体运动论》中,而法国科学家勒让德于1806年独立发现“最小二乘法”,但因不为世人所知而默默无闻。

为了方便大家理解最小二乘法,给大家讲个故事。

假设身高是变量X,体重是变量Y,我们都知道身高与体重有比较直接的关系。生活经验告诉我们:一般身高比较高的人,体重也会比较大。但是这只是我们直观的感受,只是很粗略的定性的分析。

在数学世界里,我们大部分时候需要进行严格的定量计算:能不能根据一个人的身高,通过一个式子就能计算出他或者她的标准体重?

我们可以采样一批人的身高体重数据, ( x 1 , y 1 ) , ( x 2 , y 2 ) , , ( x n , y n ) (x_1,y_1),(x_2,y_2),\cdots,(x_n,y_n) ,其中x是身高,y是体重。

生活常识告诉我们:身高与体重是一个近似的线性关系,用最简单的数学语言来描述就是 y = β 0 + β 1 x y = \beta_0+\beta_1x
于是,接下来的任务就变成:怎么求出这个 β 0 \beta_0 β 1 \beta_1 呢?

为了计算 β 0 \beta_0 , β 1 \beta_1 的值,我们采取如下规则: β 0 \beta_0 , β 1 \beta_1 应该使计算出来的函数曲线与观察值的差的平方和最小。用数学公式描述就是:

Q = m i n i n ( y i e y i ) 2 Q =min \sum_i ^n (y_{ie} - y_i)^2

其中, y i e y_{ie} 表示根据 y = β 0 + β 1 x y=\beta_0 + \beta_1x 估算出来的值, y i y_i 是观察得到的真实值。

这样,样本的回归模型很容易得出:

Q = i n ( y i β 0 β 1 x ) 2 Q = \sum_i^n(y_i-\beta_0-\beta_1x)^2

现在需要确定 β 0 \beta_0 β 1 \beta_1 ,使cost function最小。
大家很容易想到,对该函数求导即可找到最小值:

Q β 0 = 2 i n ( y i β 0 β 1 x i ) ( 1 ) = 0 Q β 1 = 2 i n ( y i β 0 β 1 x i ) ( x i ) = 0 \frac{\partial Q}{\partial \beta_0} = 2\sum_i^n(y_i-\beta_0-\beta_1x_i)(-1) = 0 \\\\ \frac{\partial Q}{\partial \beta_1} = 2\sum_i^n(y_i-\beta_0-\beta_1x_i)(-x_i) = 0

将这两个方程整理后使用克莱姆法则,很容易求解得出:

β 0 = x i 2 y i x i x i y i n x i 2 ( x i ) 2 β 1 = n x i y i x i y i n x i 2 ( x i ) 2 \beta_0 = \frac{\sum x_i^2 \sum y_i - \sum x_i \sum x_i y_i }{n \sum x_i^2 - (\sum x_i)^2} \\\\ \beta_1 = \frac{n \sum x_i y_i - \sum x_i \sum y_i}{n \sum x_i^2 - (\sum x_i)^2}

根据这个公式,只需要将样本都带入就可以求解出相应的参数。

如果我们推广到更一般的情况,假如有更多的模型变量 x 1 , x 2 , , x m x^1,x^2,\cdots,x^m (注意: x 1 x_1 是指 一个样本, x 1 x^1 是指样本里的一个模型相关的变量),可以用线性函数表示如下:

y ( x 1 , , x m ; β 0 , , β m ) = β 0 + β 1 x 1 + + β m x m y(x^1,\cdots,x^m;\beta_0,\cdots,\beta_m) = \beta_0+\beta_1x^1 + \cdots + \beta_m x^m

对于n个样本来说,可以用如下线性方程组表示:

β 0 + β 1 x 1 1 + + β j x 1 j + + β m x 1 m = y 1 β 0 + β 1 x 2 1 + + β j x 2 j + + β m x 2 m = y 2 β 0 + β 1 x i 1 + + β j x i j + + β m x i m = y i β 0 + β 1 x n 1 + + β j x n j + + β m x n m = y n \beta_0 + \beta_1 x_1 ^1 + \cdots + \beta_j x_1 ^j + \cdots + \beta_m x_1^m = y_1 \\\\ \beta_0 + \beta_1 x_2 ^1 + \cdots + \beta_j x_2 ^j + \cdots + \beta_m x_2^m = y_2 \\\\ \cdots \\\\ \beta_0 + \beta_1 x_i ^1 + \cdots + \beta_j x_i ^j + \cdots + \beta_m x_i^m = y_i \\\\ \cdots \\\\ \beta_0 + \beta_1 x_n ^1 + \cdots + \beta_j x_n ^j + \cdots + \beta_m x_n^m = y_n

如果将样本矩阵 x i h x_i^h 记为矩阵A,将参数矩阵记为向量 β \beta ,真实值记为向量Y,上述线性方程组可以表示为:

[ 1 x 1 ( 1 ) x 1 ( m ) 1 x 2 ( 1 ) x 2 ( m ) 1 x n ( 1 ) x n ( m ) ] [ β 0 β 1 β m ] = [ y 1 y 2 y n ] \left [ \begin{matrix} 1 & x_1^{(1)} & \cdots & x_1^{(m)} \\\\ 1 & x_2^{(1)} & \cdots & x_2^{(m)} \\\\ \cdots & \cdots & \cdots & \cdots \\\\ 1 & x_n^{(1)} & \cdots & x_n^{(m)} \end{matrix} \right ] \cdot \left [ \begin{matrix} \beta_0 \\\\ \beta_1 \\\\ \cdots \\\\ \beta_m \end{matrix} \right ] = \left [ \begin{matrix} y_1 \\\\ y_2 \\\\ \cdots \\\\ y_n \end{matrix} \right ]

A β = Y A \beta = Y
对于最小二乘来说,最终的矩阵表达形式可以表示为:

m i n A β Y 2 min||A\beta - Y||_2

最后的最优解为:

β = ( A T A ) 1 A T Y \beta = (A^TA)^{-1}A^TY

2021华为云 AI 实战营(https://marketplace.huaweicloud.com/markets/ai/gallery_full_stack.html)
——华为云员工都在学的AI实战营,快来报名免费学习吧~

【版权声明】本文为华为云社区用户翻译文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容, 举报邮箱:cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

举报
请填写举报理由
0/200