机器学习算法(一):线性回归算法

线性回归算法学习器如下,其中n为特征数目, $x_{0}=1$

$h_{\theta}(x)=\sum\limits_{i=0}^{n}(\theta_{i}x_{i})$

求$\theta$最优解使得该学习器对样本的训练偏差最小,其中m为样本数目

$\min\limits_{\theta} J(\theta)=\frac{1}{2}\sum\limits_{j=1}^{m}(h_{\theta}(x^{(j)})-y^{(j)})^{2}$

解法一: 迭代梯度下降算法

使用梯度下降算法迭代更新$\theta$

$\theta_{i} := \theta_{i} - \alpha\frac{\partial}{\partial\theta_{i}}J(\theta)$

$\theta_{i} := \theta_{i} - \alpha\sum\limits_{j=1}^{m}(h_{\theta}(x^{(j)})-y^{(j)})*x_{i}^{j}$

这是标准的梯度下降算法,缺点是每一次迭代都需要用到所有样本。

下面为梯度下降算法的一个简化

for j = 1 to m

  对所有i:$\theta_{i} := \theta_{i} - \alpha(h_{\theta}(x^{(j)})-y^{(j)})*x_{i}^{j}$

扫描二维码关注公众号,回复: 1547408 查看本文章

每次加入一个样本,来更新所有参数,这个算法可以用于大量样本的训练,缺点自然是每次迭代并不是真正的梯度下降。

解法二: 矩阵运算求解

另一种方式是通过矩阵运算直接算出$\theta$

$\min\limits_{\theta} J(\theta)=\frac{1}{2}(X\theta-Y)^{T}X\theta-Y)$

目标变为求解$\theta$使得梯度为0:$\nabla_{\theta}J(\theta) = \vec 0$

通过矩阵运算推导得出

$\nabla_{\theta}J(\theta) = X^{T}X\theta-X^{T}Y = \vec 0$

$\theta=(X^{T}X)^{-1}X^{T}Y$

猜你喜欢

转载自www.cnblogs.com/learninglife/p/9159587.html