最近一直在看机器学习的东西,看了好些论文,但奈何基础实在太差,有很多东西都不懂。所以就看各种算法。虽然当然看完觉得理解了,但一段时间过去又忘的差不多,无奈之举,希望通过博客来加深自己对基础知识的理解和掌握。这次总结也是通过各种博客和材料收集得到的,所以只能说是转载。如果其中有什么错误,请大家务必指出来,大家互相学习。
最小二乘法其实就是一种拟合的方法。对于拟合二字,在我刚接触的时候总是感觉非常高深莫测,其实这些类似的概念我们在高中、大学都接触过,只是当时年少轻狂,学完就扔。言归正传,为简单起见,我们先假设我们有多组给定的一维数据(xi,yi),i=1,...,n,我们想通过这些数据求得输入xi和输出yi之间的关系,那么我们就想到了初中学到的y=ax+b,我们把给定的(xi,yi)代入,就可以求得a和b,再把a和b重新代入上式就可以得到输入x和y的关系。当然,我们必须给定一个判断标准,下面就用数学的方式来说明。
yi计=a*xi+b (1),
其中yi计是通过右式计算得到的输出,那么我们肯定是希望我们得到的∑(yi计-yi)^2最小,也就是min∑(yi计-yi)^2,那么我们就可以将式(1)代入得到
min∑(a*xi+b-yi)^2 (2),
对a和b求导就可以得到式(2)的最小值(很显然这是一个凸优化函数,所以其极值就是全局最小值)
(1)首先对a求导可得
2∑(a*xi+b-yi)*xi=0 (3)
(2)然后对b求导可得
2∑(a*xi+b-yi)=0(4)
从何得到n*b+a*∑xi=∑yi (5)
a∑xi^2+b∑xi=∑yixi (6)
化简得到 b=(∑yi-a*∑xi)/n;
a∑xi^2+((∑yi-a*∑xi)/n)∑xi=∑yixi → a=(n∑xiyi-∑xi∑yi)/(n∑xi^2-(∑xi)^2)