线性回归模型代价函数的梯度向量

本文是《Hands-On Machine Learning with Scikit-Learn, Keras & TensorFlow》一书的一篇小笔记,旨在注释一下equation 4-4与equation 4-6的推导。

线性回归算法旨在使得模型在训练集上的均方差误差最小。假设训练集有m个样本,每个样本有n个特征。线性回归模型的训练算法就是要使得下式最小:

MSE(\theta )=\frac{1}{m} \sum_{i=1}^m (\sum_{j=0}^n \theta _{j}x_{j}^{(i)}-y^{(i)}  )^2

其中,x_j^{(i)}代表第i个样本的第j个特征,\theta_j代表第j个特征的参数,y^{(i)}代表第i个样本的值。注意这里j是从0到n。0代表的是bias term,它对应的特征值永远是1。如果把特征x^{(i)}与参数\theta都看成是列向量,这个式子就可以写成书本equation 4-3的样子:

MSE(\theta)=\frac{1}{m} \sum_{i=1}^m(\theta^Tx^{(i)}-y^{(i)})^2

其中,\theta^T表示转置矩阵。写成这种形式只是为了和书本对得上。事实上,写成下面的形式才真正有助于推导书本上的4-4式:

MSE(\theta)=\frac{1}{m} (\theta_j x_{ij}-y_i)(\theta_k x_{ik}-y_i)

上式我们采取一个规则:凡乘积项中重复的下标表示对此下标要求和。比如\theta_j x_{ij}表示要对j求和。另外,我们这里的x含义已经有所变化。在表示单个样本时,x是列向量,也就是每一个样本就是一列。但我们这里把全部样本现在一个矩阵x中,此时,每一行代表一个样本。这样做是为了与书本保持一致。

现在,我们将上式对\theta_j求导:

\frac{\partial}{\partial j} MSE(\theta)=\frac{2}{m}(\theta_kx_{ik}-y_i)x_{ij}

这实质上就是4-5式。现在我们要把它写成矩阵形式。为了写成矩阵形式,我们一定要把求和的下标“挨在一起”,也就是前一个矩阵的列下标对应后一个矩阵的行下标。因此:

\frac{\partial}{\partial j} MSE(\theta)=\frac{2}{m}(\theta_kx_{ik}-y_i)x_{ij}=\frac{2}{m}(\theta_kx^T_{ki}x_{ij}-y_jx_{ij})

于是:

\nabla_\theta MSE(\theta)=\frac{2}{m}(\theta^TX^TX-y^TX)

注意到这个是行向量,而我们最终需要的是列向量,因此要做个倒置:

\nabla_\theta MSE(\theta)=\frac{2}{m} X^T(X \theta-y)

这就是书本4-6式。现在,为了得到最优解,我们要求上式为零。于是:

X^TX \theta=X^Ty

\theta=(X^TX)^{-1}X^Ty

这就是线性回归算法的理论解,也是书本4-4式。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。