机器学习入门笔记(二):监督学习之线性回归和梯度下降


  1. 回归问题
    线性回归算法属于监督学习的一种,主要用于模型为连续函数的数值预测。过程总得来说就是初步建模后,通过训练集合确定模型参数,得到最终预测函数,此时输入自变量即可得到预测值。
  • 一个比较实际的例子:房价的预测ZE$3WDMMTQ89Q58BUB5MT

    将以上数据放在坐标系里,得到以下的关系图:

    DB1YH%XD}DQ0FG`I6G_$A5

    我们做这样的定义:

    $m = 训练样本的数目(统计的房屋的总数)$
    $x = 输入变量/特征(房间的大小)$
    $y = 输出变量/目标变量 (房间的价格)$
    $(x,y) – 单个训练样本$
    $h(x):假设函数$
    $J:损失函数$
    $n:自变量个数,即特征值数量$
    $m:训练集数据条数$
    $α:学习速率,即梯度下降时的步长$

    有了以上定义,在监督学习中,我们会这样做:

    OG7CWPM@12I5S73G2JBN4

大致解释下这个过程,我们将m个样本数据的训练集合提供给学习算法,训练之后学习算法会生成一个输出函数h,最后我们就可以通过对h输入对应的x得到相应的输出y1,即:假设函数h将输入x映射到输出y1,得到如下一个线性函数:

$$
y_1 = h(x) = h_θ(x)=θ_0 x_0+ θ_1x_1
$$

这就是一个假设函数h对给定特征x花费的预测,当我们给定房间的大小就可以计算出对应房价的多少。其中θ我们可以理解为:学习算法的参数(也就是权重或者模型的参数值),我个人理解就像是线性方程的系数,通过利用训练集合学习和选择得到合适的实数值,这也就是训练集合的意义所在。

但是通常许多线性回归问题需要多个输入特征x,就像房价的高低受影响的因素很多,不仅仅只有房间的大小,还有地理位置,房间的个数等等很多其他的特征x(i).那么我们就可以作如下的定义:
$$
x_1 = size ; x_2 = rooms;x_3=location;x_i=…
$$
假设存在n个特征x,将所有的特征带入假设函数h计算就可以得到:
$$
h(x) = θ0 + θ_1x_1 + θ_2x_2+…+θ_ix_i
$$

我们将得到的线性表达式简化:
$$
h(x) = \sum{i=0}^{n} θ_ix_i= θ^T x
$$

怎么得到这个θ参数的值呢?这也是学习算法+训练数据需要得到的结果。

$y_1=h_θ(x)$得到的y1是我们预测的价格,实际的价格为我们表中的数据y,为了让预测的更接近实际的价格,转化为数学表达式就是$(h_θ(x)-y)^2$,两者的平方差越小,说明预测得越准确。因此我们可以得到如下的公式:
$$
J(θ)=\frac12\sum_{i=1}^{m} (h_θ(x^i)-y^i)^2
$$
我们需要做的就是找到这个参数θ使得J(θ)的值取得最小,这里前面的1/2只是为了后面求导计算时方便而特地加上的,其中的J我们称作cost function(损失函数),它有什么用呢?用来对假设的函数进行评价,cost function值越小的函数,说明拟合训练数据拟合的越好,也就是上面说的预测得越准确。以上就是线性回归的内容,我个人理解就像是数学建模一样,将实际的问题转化为数学模型。如何高效准确求得最佳的θ的值就是学习算法的工作了。

2.求解算法之梯度下降。

在机器学习算法中,通常将线性回归和梯度下降放在一起.首先我们来看看梯度下降的一个直观的解释:比如我们在一座大山上的某处位置,由于我们不知道怎么下山,我们站在某个山坡上,往四周看,从最陡峭的方向向下走一小步,这样能够下降的最快。然后继续求解当前位置梯度,又向这一步所在位置沿着最陡峭最易下山的位置走一步。这样一步步的走下去,一直走到觉得我们已经到了山的最低点。当然这样走下去,有可能我们不能走到山脚,而是到了某一个局部的山峰低处。

12

为了让我们的假设函数更好的拟合实际情况,我们使用最小二乘法(LMS)建立了以上的损失函数,然后将训练集数据代入,最后想办法让该函数的所有结果尽可能小。

怎么让其值尽可能小呢?方法就是求该损失函数J对θ的偏导数,不断修正各θ的值,直到收敛。

具体算法的推导过程我不做记录,网上有很多.这里我直接给出修正θ值的公式:

  • 批量梯度下降法(Batch Gradient Descent)

$$
\theta_i = \theta_i – \alpha\sum\limits_{j=0}^{m}(h_\theta(x_0^{j}, x_1^{j}, …x_n^{j}) – y_j)x_i^{j}
$$

  • 随机梯度下降法(增量梯度下降)

$$
\theta_i = \theta_i – \alpha (h_\theta(x_0^{j}, x_1^{j}, …x_n^{j}) – y_j)x_i^{j}
$$

随机梯度下降法和批量梯度下降法是两个极端,批量梯度下降采用所有数据来进行一次梯度下降,而另一个是用一个样本来进行一次梯度下降。自然各自的优缺点都非常突出。对于训练速度来说,随机梯度下降法由于每次仅仅采用一个样本来迭代,训练速度很快,而批量梯度下降法在样本量很大的时候,训练速度不能让人满意。对于准确度来说,随机梯度下降法用于仅仅用一个样本决定梯度方向,导致解很有可能不是最优。对于收敛速度来说,由于随机梯度下降法一次迭代一个样本,导致迭代方向变化很大,不能很快的收敛到局部最优解。

所有当训练集数据较小的时候可以选择批量梯度下降法,训练集数据量大的时候选择随机梯度下降法。

理论知识过完了,下面就是编程实现了,明天用python试下实际应用。

机器学习入门笔记(二):监督学习之线性回归和梯度下降》有1个想法

发表评论

电子邮件地址不会被公开。 必填项已用*标注