1.简单的例子 最小二乘
现在大家都越来越重视自己的身体健康。现代人最常见的亚健康问题就是肥胖,本博主身体棒棒哒,唯一困扰本博主的健康问题就是超重。(好吧,承认自己是个死胖子就完了)
假设身高是变量X,体重是变量Y,我们都知道身高与体重有比较直接的关系。生活经验告诉我们:一般身高比较高的人,体重也会比较大。但是这只是我们直观的感受,只是很粗略的定性的分析。在数学世界里,我们大部分时候需要进行严格的定量计算:能不能根据一个人的身高,通过一个式子就能计算出他或者她的标准体重?
接下来,我们肯定会找一堆人进行采用(请允许我把各位当成一个样本)。采样的数据,自然就是各位的身高与体重。(为了方便计算与说明,请允许我只对男生采样)经过采样以后,我们肯定会得到一堆数据(x1,y1),(x2,y2),⋯,(xn,yn),其中x是身高,y是体重。
得到这堆数据以后,接下来肯定是要处理这堆数据了。生活常识告诉我们:身高与体重是一个近似的线性关系,用最简单的数学语言来描述就是y=β0+β1xy=β0+β1x。于是,接下来的任务就变成了:怎么根据我们现在得到的采样数据,求出这个β0β0与β1
β1呢?这个时候,就轮到最小二乘法发飙显示威力了。
2. cost function
在讲最小二乘的详情之前,首先明确两点:1.我们假设在测量系统中不存在有系统误差,只存在有纯偶然误差。比如体重计或者身高计本身有问题,测量出来的数据都偏大或者都偏小,这种误差是绝对不存在的。(或者说这不能叫误差,这叫错误)2.误差是符合正态分布的,因此最后误差的均值为0(这一点很重要)
明确了上面两点以后,重点来了:为了计算β0β0,β1β1的值,我们采取如下规则:β0β0,β1β1应该使计算出来的函数曲线与观察值的差的平方和最小。用数学公式描述就是:
其中, yieyie 表示根据 y=β0+β1x 估算出来的值, yi 是观察得到的真实值。
可能有很多同学就会不服了,凭什么要用差的平方和最小勒?用差的绝对值不行么?不要骗我们好不好?
本博主不敢骗大家,为了让大家相信,特意找了一种本博主认为比较靠谱的解释:
我们假设直线对于坐标 Xi 给出的预测 f(Xi) 是最靠谱的预测,所有纵坐标偏离 f(Xi) 的那些数据点都含有噪音,是噪音使得它们偏离了完美的一条直线,一个合理的假设就是偏离路线越远的概率越小,具体小多少,可以用一个正态分布曲线来模拟,这个分布曲线以直线对 Xi 给出的预测 f(Xi) 为中心,实际纵坐标为 Yi 的点 (Xi, Yi) 发生的概率就正比于 EXP[-(ΔYi)^2]。(EXP(..) 代表以常数 e 为底的多少次方)。
所以我们在前面的两点里提到,假设误差的分布要为一个正态分布,原因就在这里了。
另外说一点我自己的理解:从数学处理的角度来说,绝对值的数学处理过程,比平方和的处理要复杂很多。搞过机器学习的同学都知道,L1正则就是绝对值的方式,而L2正则是平方和的形式。L1能产生稀疏的特征,这对大规模的机器学习灰常灰常重要。但是L1的求解过程,实在是太过蛋疼。所以即使L1能产生稀疏特征,不到万不得已,我们也还是宁可用L2正则,因为L2正则计算起来方便得多。。。
3.最小二乘法的求解
明确了前面的cost function以后,后面的优化求解过程反倒变得so easy了。
样本的回归模型很容易得出:
现在需要确定 β0β0 、 β1β1 ,使cost function最小。学过高数的同志们都清楚,求导就OK。对于这种形式的函数求导,so easy,so happy…
将这两个方程稍微整理一下,使用克莱姆法则,很容易求解得出:
因为求和符号比较多,省略了上标与下标。
根据这个公式,就可以求解出相应的参数。
对应上面的身高体重关系的例子,我们只需要将采样得到的数据,一一代入即可求解。
4.矩阵的表达形式
如果我们推广到更一般的情况,假如有更多的模型变量x1,x2,⋯,xmx1,x2,⋯,xm(注意:x1x1是指 一个样本,x1x1是指样本里的一个模型相关的变量),可以用线性函数表示如下:
对于n个样本来说,可以用如下线性方程组表示:
如果将样本矩阵xhixih记为矩阵A,将参数矩阵记为向量ββ,真实值记为向量Y,上述线性方程组可以表示为:
即 Aβ=YAβ=Y
对于最小二乘来说,最终的矩阵表达形式可以表示为:
最后的最优解为: