简述

前面说到了线性回归,我们需要找到代价函数最小的相应参数。这里介绍一种寻找的方法,梯度下降法。

按字面意思理解,就是顺着斜坡一路向下,最终找到最低点。

再具体一点说,就是通过求导求斜率,按照函数梯度以一定的步进不断迭代,最终到达最小值点。

迭代公式

为步进,在这里称为学习速率。

向量化公式

推导过程

其中

故向量化公式为

Octave/MATLAB 代码实现

function [theta] = gradientDescent(X, y, theta, alpha, num_iters)
	m = length(y);
	for iter = 1:num_iters
		theta = theta - alpha / m * (X' * (X * theta - y));
	end
end

注意事项

学习速率的选择应适当:

为便于向量化表示,向量第一列默认为全1。此时相当于与1相乘。