模型表示(Model Representation)
- 在监督学习中有一个数据集,我们把它称之为训练集(Training Set)。
- h(x)在这里表示hypothesis,这是机器学习的术语,不用太在意名称。
代价函数(Cost Function)
- 代价函数使我们用来评估h(x)准确度的一个函数,
- 代价函数也叫平方误差函数,或者叫做平方误差代价函数,前面除以2的原因是为了后面梯度下降的计算时更方便。代价函数反应的是拟合的函数与原始数据的差异程度。
梯度下降(Gradient Descent)
- 梯度下降的特点是,不同的初始点可能会得到不同的局部最优解。
- 梯度下降就是通过求导,数学上是做该点的切线,然后沿着切线的方向下降,是学习速率,学习速率过大可能会导致不收敛,学习速率过小的话可能会导致收敛速度很慢。
更新参数的时候是同步更新的,应为下图左边所示,右图是一种错误的更新方法,因为先更新,在更新。
一个参数的梯度下降
下图是关于一个参数的代价函数梯度下降时的具体说明,因为梯度下降时,它的步伐会越来越小,因此我们使用一个固定的学习速率也能使它达到收敛。
线性回归的梯度下降
下面是线性回归梯度下降的公式表示:
下面是求导的具体表达式:
我们把每次更新参数时都使用所有样本进行计算的过程叫做Batch gradient descent。
一般的线性回归的代价函数是只有一个全局最优解的,我们把它叫做凸函数,下图是一个凸函数的等高图,图中的线表示的就是从一个初始化的点经过梯度下降之后到达最优点的过程。
matlab代码实现:
theta_temp = theta
theta(1) = theta(1) - alpha/ m * sum((X * theta_temp - y) .* X(:,1));
theta(2) = theta(2) - alpha/ m * sum((X * theta_temp - y) .* X(:,2));