渐变下降更新规则:
将此值用于此规则:
x = [10 20 三十 40 50 60 70 80 90 100] y = [4 7 8 4 五 6 7 五 3 4]
使用0.07的学习速率进行两次迭代后,输出 经过三次迭代后,theta是: 所以看来theta在第二次迭代后变得更大,这表明学习率太大了。 所以我设置: iterations = 300;
alpha = 0.000007; theta现在是: 这些theta值是否允许我绘制一条直线数据,如果是这样的话?我刚刚开始尝试了解渐变下降,所以请指出我逻辑中的任何错误。 来源: 更新: 因此,每个x值的乘积乘以theta绘制一条直线: 更新2: 这与线性回归模型有何关系: 由于模型还输出预测值?-73.396
-5150.803
1.9763e+04
1.3833e+06
0.0038504
0.0713561
x = [10
20
30
40
50
60
70
80
90
100]
y = [4
7
8
4
5
6
7
5
3
4]
m = length(y)
x = [ones(m , 1) , x]
theta = zeros(2, 1);
iterations = 300;
alpha = 0.000007;
for iter = 1:iterations
theta = theta - ((1/m) * ((x * theta) - y)' * x)' * alpha;
theta
end
plot(x, y, 'o');
ylabel('Response Time')
xlabel('Time since 0')
plot(x(:,2), x*theta, '-')
答案 0 :(得分:3)
是的,你应该能够画一条直线。在回归中,梯度下降是一种用于最小化线性回归模型的成本(误差)函数的算法。您可以使用渐变作为曲目来移动到成本函数的最小值,学习速率决定了您沿着路径行进的速度。走得太快,你可能会通过全球最低限度。达到所需的最小值后,将这些θ值插入模型中以获得估计的模型。在一维情况下,这是一条直线。
查看this article,它可以很好地介绍渐变下降。