最小二乘法思想
Posted whitebear
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了最小二乘法思想相关的知识,希望对你有一定的参考价值。
最小二乘法主要用于函数拟合或函数极值,其思想主要是通过将理论值与预测值的距离的平方和达到最小。在机器学习,尤其是回归模型中,经常可以看到最小二乘法的身影。
最小二乘法的原理与要解决的问题
最小二乘法的形式如下式所示:
理论值是样本数据,预测值是拟合函数得到的预测值。目标函数就是机器学习中的损失函数。我们的目标就是得到使目标函数最小化时候的拟合函数的模型。
举个线性回归的例子,比如有m个只有一个特征的样本。
由于只有一个特征,假设采用的拟合函数为:
这样就有了一个特征,对应的拟合函数的两个参数( heta_0 和 heta_1x)需要求出
目标函数为:
用最小二乘法做什么那?使(J( heta_0, heta_1))最小,求出使(J( heta_0, heta_1))最小时的( heta_0 和 heta_1),那最小二乘法怎么才能使(J( heta_0, heta_1))最小呢?
最小二乘法的代数法解法
要使(J( heta_0, heta_1))最小,方法就是对( heta_0 和 heta_1)分别来求偏导数,令偏导数为0,得到一个关于( heta_0 和 heta_1)的二元方程组,求解这个方程组就可以得到( heta_0 和 heta_1)的值。
(J( heta_0, heta_1))对( heta_0)求导,得到如下方程:
(J( heta_0, heta_1))对( heta_1)求导,得到如下方程:
对公式(1)展开有如下表达;
令(vec x=sum_{i=1}^mfrac{x_i}{m},vec y=sum_{i=1}^mfrac{y_i}{m})
则公式(1)有如下表达:
将公式(3)代入(2)中有:
(sum_{i=1}^my_ix_i- heta_0sum_{i=1}^mx_i- heta_1sum_{i=1}^mx_i^2=0)
=>(sum_{i=1}^my_ix_i-(vec y - heta_1vec x)sum_{i=1}^mx_i- heta_1sum_{i=1}^mx_i^2=0)
=>( heta_1=frac{sum_{i=1}^my_i x_i - vec ysum_{i=1}^mx_i}{sum_{i=1}^mx_i^2-vec x sum_{i=1}^mx_i})
=>( heta_1=frac{sum_{i=1}^my_i x_i - vec ysum_{i=1}^mx_i - mvec yvec x +mvec yvec x}{sum_{i=1}^mx_i^2-2vec x sum_{i=1}^mx_i+vec xsum_{i=1}^mx_i})
=>( heta_1=frac{y_ix_i-vec yx_i-y_ivec x+vec yvec x}{sum_{i=1}^m(x_i^2-2vec xx_i+vec x^2)})
=>( heta_1=frac{(x_i-vec x)(y_i-vec y)}{sum_{i=1}^m(x_i-vec x)^2})
则( heta_0 也可根据 heta_0= vec y - heta_1vec x得到)
最小二乘法的矩阵法解法
假设函数(h_ heta(x_1,x_2,...,x_n)= heta_0x_0+ heta_1x_1+...+ heta_{n-1}x_{n-1})的矩阵表达为:
其中,假设函数(h_ heta(x))为m x 1的向量,( heta)为n x 1的向量,里面有n个代数法的模型参数。X为m x n维的矩阵,m代表样本的个数,n代表样本特征数
损失函数定义为(J( heta)=frac{1}{2}(X_ heta-Y)^T(X_ heta-Y))
其中Y是样本的输出向量,维度为m x 1,(frac{1}{2})主要是为求导后系数为1,方便计算
根据最小二乘法原理,对这个损失函数对( heta)向量求导取0,结果如下所示:
这里用到了链式求导法则以及两个矩阵求导的公式
公式1:(frac{partial}{partial x}(X^TX) = 2X,X为向量)
公式2:( abla x f(AX+B)=A^T abla_Yf,Y=AX+B,f(Y)为标量)
对上述求导等式整理可得:
两边同时左乘((X^TX)^{-1})可得:
最小二乘法的局限性和使用场景
从上面可以看出,最小二乘法适用简洁高效,比梯度下降这样的迭代法似乎方便很多。但是这里我们就聊聊最小二乘法的局限性。
- 第一、最小二乘法需要计算(X^TX)的逆矩阵,有时它的逆矩阵是不存在的,这样就不能直接只用最小二乘法了。此时以梯度下降法为代表的迭代法仍然可用。当然,我们也可以对样本数据进行整理,去除掉冗余特征,让(X^TX)的行列式不为0,然后继续使用
- 第二、当样本特征n非常da的时候,计算(X^TX)的逆矩阵是一个非常耗时的工作(n x n的矩阵求逆),甚至不可行。此时以梯度下降法为代表的迭代法仍然可用。那这个n到底多大就不适合最小二乘法呢?如果你没有很多的分布式大数据计算资源,建议超过10000个特征就用迭代法吧,或者通过主成分分析降低特征的维度后再用最小二乘法
- 第三、如果拟合函数不是线性的,这时无法使用最小二乘法,需要通过一些技巧转化为线性才能使用,此时梯度下降仍可使用
- 第四、特殊情况,当样本量m很少,小于特征数n的时候,这时拟合方程是欠定的,常用的优化方法都无法去拟合数据。当样本量m等于特征数n的时候,用方程组求解就可以了。当m大于n时,拟合方程是超定的,也就是我们常用与最小二乘法的场景了。
参考:https://www.cnblogs.com/pinard/p/5976811.html
以上是关于最小二乘法思想的主要内容,如果未能解决你的问题,请参考以下文章