线性回归-梯度下降随机更新-停止准则和更新规则-机器学习



我的数据集有m个特征和n个数据点。设w为一个向量(待估计)。我尝试用随机更新方法实现梯度下降。我的最小函数是least mean square

更新算法如下所示:

for i = 1 ... n data:
    for t = 1 ... m features:
         w_t = w_t - alpha * (<w>.<x_i> - <y_i>) * x_t

其中<x>m特征的原始向量,<y>为真标签的列向量,alpha为常量。

我的问题:

  • 现在根据wiki,我不需要遍历所有的数据点,当误差足够小时我可以停止。这是真的吗?

  • 我不明白这里应该是什么停止标准。如果有人能帮上忙,那就太好了。

  • 这个公式-我在for loop中使用-它是正确的吗?我相信(<w>.<x_i> - <y_i>) * x_t就是我的∆Q(w)

现在根据wiki,我不需要遍历所有的数据点,当误差足够小时我可以停止。这是真的吗?

当你有一个非常大的训练集,并且遍历所有数据点是如此昂贵时,这尤其正确。然后,在K次随机更新后(即处理K个训练样例后)检查收敛准则。虽然这是可能的,但用一个小的训练集来做这件事没有多大意义。人们做的另一件事是随机化训练样本的处理顺序,以避免在原始数据中有太多相关的样本,这可能导致"假"收敛。

我不明白这里的停止标准应该是什么。如果有人能帮上忙,那就太好了。

有几个选项。我建议尽可能多地尝试,并根据经验结果做出决定。

    训练数据的目标函数
  1. 差值小于阈值。
  2. 差异的目标函数的持有数据(即。开发数据(验证数据)小于阈值。保留样本不应包括任何用于训练(即随机更新)的样本,也不应包括用于评估的测试集中的任何样本。
  3. 参数w的总绝对差值小于某个阈值。
  4. 在上面的1、2和3的
  5. 中,您可以指定一个百分比,而不是指定一个阈值。例如,一个合理的停止准则是当|squared_error(w) - squared_error(previous_w)| <0.01 * squared_error(previous_w) $$。
  6. 有时候,我们并不关心是否有最优参数。我们只是想改进我们最初拥有的参数。在这种情况下,无论目标函数是否收敛,在训练数据上预设若干次迭代后停止是合理的。

这个公式-我在for循环中使用-它是正确的吗?我相信(w。x_i - y_i) * x_t是我的∆Q(w)。

它应该是2 * (w.s x_i - y_i) * x_t但这不是什么大问题,因为你要乘以学习率alpha

最新更新