A-01 最小二乘法


更新、更全的《机器学习》的更新网站,更有python、go、数据结构与算法、爬虫、人工智能教学等着你:https://www.cnblogs.com/nickchen121/p/11686958.html

最小二乘法

最小二乘法,可以理解为最小平方和,即误差的最小平方和,在线性回归中,(误差=真实值-预测值)。最小二乘法的核心思想就是——通过最小化误差的平方和,使得拟合对象无限接近目标对象,最小二乘法一般解决线性问题。

一、最小二乘法——代数法

假设线性回归的假设函数为

[egin{align} h_omega(x_0,x_1,cdots,x_n) & = omega_0x_0+omega_1x_1+cdots+omega_nx_n \ & = sum_{i=0}^n omega_ix_i end{align} ]

其中(n-1)是特征数。如果针对所有的(omega_iquad(i=1,2,cdots,n))而言,假设函数是非线性的,但是针对某一个(omega_i)的话,由于变量只剩下一个(omega_i),假设函数就是线性的,既可以使用最小二乘法求解。

通过线性回归的假设函数既可以得到目标函数为

[egin{align} J(omega_0,omega_1,cdots,omega_n) & = sum_{j=1}^m (h_omega(x^{(j)})-y^{(j)})^2 \ & = sum_{j=1}^m(sum_{i=0}^n omega_ix_i^{(j)} - y^{(j)})^2 end{align} ]

其中(m)为样本数。

利用目标函数分别对(omega_i)求偏导,并且令导数为0,即

[sum_{j=1}^m sum_{i=0}^n (omega_ix_i^{(j)} - y^{(j)})x_i^{(j)} = 0 ]

通过求解上式,可以得到(n+1)元一次方程组,通过求解这个方程组就可以的得到所有的(omega_i)

二、最小二乘法——矩阵法

最小二乘法矩阵法比代数法简单不少。我们把代数法中线性回归的假设函数可以写成

[h_omega(X) = Xomega ]

其中(h_omega(X))(m*1)维的向量,(X)(m*n)维的矩阵,(omega)(n*1)维的向量,(m)为样本数,(n)为特征数。

通过上述矩阵形式的假设函数可以得到矩阵形式的目标函数为

[J(omega)={frac{1}{2}}(Xomega-Y)^T(Xomega-Y) ]

其中({frac{1}{2}})只是为了方便计算。

目标函数对(omega)求导取0,可以得

[ abla_omega{J(omega)} = X^T(Xomega-Y) =0 ]

上述求偏导使用了矩阵求导链式法则和两个矩阵求导的公式

[egin{align} & abla_X(X^TX) = 2X \ & abla_Xf(AX+B) = A^T abla_{AX+B}f end{align} ]

通过对上述式子整理可得

[egin{align} & X^TXomega=X^TXquad{两边同时乘}(X^TX)^{-1} \ & omega = (X^TX)^{-1}X^TY end{align} ]

通过上述的化简可以直接对向量(omega)求导,而不需要对(omega)中的每一个元素求偏导。

三、最小二乘法优缺点

3.1 优点

  1. 简洁高效,比梯度下降法方便

3.2 缺点

  1. 最小二乘法需要计算(X^TX)的逆矩阵,可能(X^TX)没有逆矩阵(一般需要考虑使用其他的优化算法,或者重新处理数据让(X^TX)有逆矩阵)
  2. 当特征数(n)非常大的时候,(X^TX)的计算量非常大(使用随机梯度下降法或使用降维算法降低特征维度)
  3. 最小二乘法只有拟合函数为线性的时候才可以使用(想办法通过某些机巧让拟合函数转化为线性的)
原文地址:https://www.cnblogs.com/nickchen121/p/11686757.html