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

再谈最小平方问题

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

把每个训练样本放在矩阵一行,可以得到一个(m imes n) 设计矩阵(X) (design matrix) ,即

[X=left[ egin{array}{c}{ -left(x^{(1)} ight)^{T}-} \ {-left(x^{(2)} ight)^{T}-} \ {vdots} \ {-left(x^{(m)} ight)^{T}-} end{array} ight] ]

$vec{y} $ 是一个$m $ 维的列向量,包含对应的标签,

[vec{y}=left[egin{array}{c}{y^{(1)}} \ {vdots} \ {y^{(m)}}end{array} ight] ]

因此,有,

[egin{aligned} X heta-vec{y} &= left[egin{array}{c}{left(x^{(1)} ight)^{T} heta} \ {vdots} \ {left(x^{(m)} ight)^{T} heta}end{array} ight]-left[egin{array}{c}{y^{(1)}} \ {vdots} \ {y^{(m)}}end{array} ight] \ &=left[egin{array}{c}{h_{ heta}left(x^{(1)} ight)-y^{(1)}} \ {vdots} \ {h_{ heta}left(x^{(m)} ight)-y^{(m)}}end{array} ight] end{aligned} ]

我们先把均方误差损失函数(J( heta)=frac{1}{2} sum_{i=1}^{m}left(h_{ heta}left(x^{(i)} ight)-y^{(i)} ight)^{2}) 表达成向量的形式,有,

[egin{aligned} frac{1}{2}(X heta-vec{y})^{T}(X heta-vec{y}) &=frac{1}{2} sum_{i=1}^{m}left(h_{ heta}left(x^{(i)} ight)-y^{(i)} ight)^{2} \ &= J( heta) end{aligned} ]

可以看到这个损失函数其实是关于向量参数( heta) 的矩阵函数。利用之前矩阵求导的两条性质,

[egin{equation} egin{aligned} abla_{A^{T}} f(A) &=left( abla_{A} f(A) ight)^{T} \ abla_{A} operatorname{tr}A B A^{T} C &=C A B+C^{T} A B^{T} \ end{aligned} end{equation} ]

我们可以有,

[egin{equation} egin{aligned} abla_{A^{T}} operatorname{tr}A B A^{T} C &= B^{T}A^{T}C^{T}+BA^{T}C \ end{aligned}end{equation} ]

接下来对损失函数关于参数向量( heta) 求导我们有,

[egin{aligned} abla_{ heta} J( heta) &= abla_{ heta} frac{1}{2}(X heta-vec{y})^{T}(X heta-vec{y}) \ &=frac{1}{2} abla_{ heta}left( heta^{T} X^{T} X heta- heta^{T} X^{T} vec{y}-vec{y}^{T} X heta+vec{y}^{T} vec{y} ight) \ &=frac{1}{2} abla_{ heta} operatorname{tr}left( heta^{T} X^{T} X heta- heta^{T} X^{T} vec{y}-vec{y}^{T} X heta+vec{y}^{T} vec{y} ight) \ &=frac{1}{2} abla_{ heta}left(operatorname{tr} heta^{T} (X^{T} X) heta I-2 operatorname{tr} vec{y}^{T} X heta ight) \ &=frac{1}{2}left(X^{T} X heta+X^{T} X heta-2 X^{T} vec{y} ight) \ &=X^{T} X heta-X^{T} vec{y} end{aligned} ]

第三个等式用到一个标量的迹就是它本身。第五个等式前半部分用到了上面的性质$ abla_{A^{T}} operatorname{tr}A B A^{T} C = B{T}A{T}C{T}+BA{T}C $ ,而后半部分用到$ abla_{A}operatorname{tr}A B =B^{T} $ 。

我们令这个导数等于零,就得到正规方程(normal equations),

[egin{equation}egin{aligned} X^{T} X heta=X^{T} vec{y} end{aligned}end{equation} ]

最后可以得到参数的闭式解,

[egin{equation}egin{aligned} heta=(X^{T} X)^{-1}X^{T} vec{y} end{aligned}end{equation} ]

打完,收工。

img

原文地址:https://www.cnblogs.com/qizhien/p/11572305.html