机器学习入门(四)之----线性回归(正规方程)

再谈最小平方问题

有了矩阵求导工具后,我们可以寻找最小化损失函数的参数值的闭式解(closed-form solution)。首先我们先把这个损失函数表达成向量的形式。

把每个训练样本放在矩阵一行,可以得到一个\(m \times n\) 设计矩阵\(X\) (design matrix) ,即
\[ X=\left[ \begin{array}{c}{ -\left(x^{(1)}\right)^{T}-} \\ {-\left(x^{(2)}\right)^{T}-} \\ {\vdots} \\ {-\left(x^{(m)}\right)^{T}-} \end{array} \right] \]
$\vec{y} $ 是一个$m $ 维的列向量,包含对应的标签,
\[ \vec{y}=\left[\begin{array}{c}{y^{(1)}} \\ {\vdots} \\ {y^{(m)}}\end{array}\right] \]
因此,有,
\[ \begin{aligned} X \theta-\vec{y} &= \left[\begin{array}{c}{\left(x^{(1)}\right)^{T} \theta} \\ {\vdots} \\ {\left(x^{(m)}\right)^{T} \theta}\end{array}\right]-\left[\begin{array}{c}{y^{(1)}} \\ {\vdots} \\ {y^{(m)}}\end{array}\right] \\ &=\left[\begin{array}{c}{h_{\theta}\left(x^{(1)}\right)-y^{(1)}} \\ {\vdots} \\ {h_{\theta}\left(x^{(m)}\right)-y^{(m)}}\end{array}\right] \end{aligned} \]
首先我们先把均方误差损失函数\(J(\theta)=\frac{1}{2} \sum_{i=1}^{m}\left(h_{\theta}\left(x^{(i)}\right)-y^{(i)}\right)^{2}\) 表达成向量的形式,有,
\[ \begin{aligned} \frac{1}{2}(X \theta-\vec{y})^{T}(X \theta-\vec{y}) &=\frac{1}{2} \sum_{i=1}^{m}\left(h_{\theta}\left(x^{(i)}\right)-y^{(i)}\right)^{2} \\ &= J(\theta) \end{aligned} \]
可以看到这个损失函数其实是关于向量参数\(\theta\) 的矩阵函数。利用之前矩阵求导的两条性质,
\[ \begin{equation} \begin{aligned} \nabla_{A^{T}} f(A) &=\left(\nabla_{A} f(A)\right)^{T} \\ \nabla_{A} \operatorname{tr}A B A^{T} C &=C A B+C^{T} A B^{T} \\ \end{aligned} \end{equation} \]
我们可以有,
\[ \begin{equation} \begin{aligned} \nabla_{A^{T}} \operatorname{tr}A B A^{T} C &= B^{T}A^{T}C^{T}+BA^{T}C \\ \end{aligned}\end{equation} \]
接下来损失函数对参数向量\(\theta\) 求导我们有,
\[ \begin{aligned} \nabla_{\theta} J(\theta) &=\nabla_{\theta} \frac{1}{2}(X \theta-\vec{y})^{T}(X \theta-\vec{y}) \\ &=\frac{1}{2} \nabla_{\theta}\left(\theta^{T} X^{T} X \theta-\theta^{T} X^{T} \vec{y}-\vec{y}^{T} X \theta+\vec{y}^{T} \vec{y}\right) \\ &=\frac{1}{2} \nabla_{\theta} \operatorname{tr}\left(\theta^{T} X^{T} X \theta-\theta^{T} X^{T} \vec{y}-\vec{y}^{T} X \theta+\vec{y}^{T} \vec{y}\right) \\ &=\frac{1}{2} \nabla_{\theta}\left(\operatorname{tr} \theta^{T} (X^{T} X) \theta I-2 \operatorname{tr} \vec{y}^{T} X \theta\right) \\ &=\frac{1}{2}\left(X^{T} X \theta+X^{T} X \theta-2 X^{T} \vec{y}\right) \\ &=X^{T} X \theta-X^{T} \vec{y} \end{aligned} \]
第三个等式用到一个标量,它的迹就是它本身。第五个等式前半部分,用到了上面的性质,后半部分用到$\nabla_{A}\operatorname{tr}A B =B^{T} $ 。

我们令这个导数等于零,就得到正规方程,
\[ \begin{equation}\begin{aligned} X^{T} X \theta=X^{T} \vec{y} \end{aligned}\end{equation} \]
最后可以得到参数的闭式解,
\[ \begin{equation}\begin{aligned} \theta=(X^{T} X)^{-1}X^{T} \vec{y} \end{aligned}\end{equation} \]
打完,收工。

img

猜你喜欢

转载自www.cnblogs.com/qizhien/p/11572305.html