矢量化梯度下降基础

时间:2014-06-21 02:58:32

标签: machine-learning octave vectorization gradient-descent

我在八度音程中实现了简单的梯度下降,但它不起作用。这是我正在使用的数据:

X = [1 2 3
     1 4 5
     1 6 7]

y = [10
     11
     12]

theta = [0
         0
         0]

alpha = 0.001 and itr = 50

这是我的梯度下降实现:

function theta = Gradient(X,y,theta,alpha,itr)
m= length(y)

for i = 1:itr,
    th1 = theta(1) - alpha * (1/m) * sum((X * theta - y) .* X(:, 1));
    th2 = theta(2) - alpha * (1/m) * sum((X * theta - y) .* X(:, 2));
    th3 = theta(3) - alpha * (1/m) * sum((X * theta - y) .* X(:, 3));

    theta(1) = th1;
    theta(2) = th2;
    theta(3) = th3;
end

问题是:

  • 它产生了我在theta * [1 2 3]中使用的θ的一些值,并期望输出接近大约10(来自y)。这是检验假设的正确方法吗? [h(x)= theta'* x]
  • 如何确定迭代次数?如果我给它1500次迭代,那么theta变得非常小(在e中)。
  • 如果我在X中使用两位数字,则theta会再次变小。即使使用< 5次迭代。

我很长时间以来一直在努力解决这些问题。无法自己解决。

抱歉格式不正确。

1 个答案:

答案 0 :(得分:0)

你的批量梯度下降实现对我来说似乎完全没问题。您能否更具体地了解您所面临的错误。话虽如此,对于你的问题,这是检验假设的正确方法吗? [h(x)= theta'* x]。 根据您的测试集的尺寸,您应该将其测试为h(x)= X * theta。 对于第二个问题,迭代次数取决于提供的数据集。要确定优化的迭代次数,您需要使用迭代次数绘制成本函数。随着迭代次数的增加,成本函数的值应该减少。通过这个,您可以决定需要多少次迭代。您还可以考虑,以0.001,0.003,0.01,0.03,0.1 ......的步长增加alpha值,以考虑最佳可能的alpha值。 对于您的第三个问题,我猜您是直接尝试对此问题中的数据进行建模。这个数据非常小,它只包含3个训练样例。您可能正在尝试实施线性回归算法。为此,您需要适当的训练集,其中包含足够的数据来训练您的模型。然后,您可以使用测试数据测试模型。 请参阅www.coursera.org上的Andrew Ng机器学习课程。您将在该课程中找到更多信息。

相关问题