A-01 最小二乘法

更新、更全的《机器学习》的更新网站,更有python、go、数据结构与算法、爬虫、人工智能教学等着你:http://www.javashuo.com/article/p-vozphyqp-cm.htmlpython

最小二乘法

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

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

假设线性回归的假设函数为
\[ \begin{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_i\quad(i=1,2,\cdots,n)\)而言,假设函数是非线性的,可是针对某一个\(\omega_i\)的话,因为变量只剩下一个\(\omega_i\),假设函数就是线性的,既可使用最小二乘法求解。数据结构

经过线性回归的假设函数既能够获得目标函数为
\[ \begin{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\)函数

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

最小二乘法矩阵法比代数法简单很多。咱们把代数法中线性回归的假设函数能够写成
\[ h_\omega(X) = X\omega \]
其中\(h_\omega(X)\)\(m*1\)维的向量,\(X\)\(m*n\)维的矩阵,\(\omega\)\(n*1\)维的向量,\(m\)为样本数,\(n\)为特征数。学习

经过上述矩阵形式的假设函数能够获得矩阵形式的目标函数为
\[ J(\omega)={\frac{1}{2}}(X\omega-Y)^T(X\omega-Y) \]
其中\({\frac{1}{2}}\)只是为了方便计算。优化

目标函数对\(\omega\)求导取0,能够得
\[ \nabla_\omega{J(\omega)} = X^T(X\omega-Y) =0 \]
上述求偏导使用了矩阵求导链式法则和两个矩阵求导的公式
\[ \begin{align} & \nabla_X(X^TX) = 2X \\ & \nabla_Xf(AX+B) = A^T\nabla_{AX+B}f \end{align} \]
经过对上述式子整理可得
\[ \begin{align} & X^TX\omega=X^TX\quad{两边同时乘}(X^TX)^{-1} \\ & \omega = (X^TX)^{-1}X^TY \end{align} \]
经过上述的化简能够直接对向量\(\omega\)求导,而不须要对\(\omega\)中的每个元素求偏导。网站

3、最小二乘法优缺点

3.1 优势

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

3.2 缺点

  1. 最小二乘法须要计算\(X^TX\)的逆矩阵,可能\(X^TX\)没有逆矩阵(通常须要考虑使用其余的优化算法,或者从新处理数据让\(X^TX\)有逆矩阵)
  2. 当特征数\(n\)很是大的时候,\(X^TX\)的计算量很是大(使用随机梯度降低法或使用降维算法下降特征维度)
  3. 最小二乘法只有拟合函数为线性的时候才可使用(想办法经过某些机巧让拟合函数转化为线性的)
相关文章
相关标签/搜索