Andrew Ng机器学习课程笔记

第一周

1.单变量线性回归(Linear Regression with One Variable)

1.1模型表示

单变量线性回归

单变量线性回归,这样子看上去可能不太熟悉,但如果改成y=kx+b,这样看上去是不是很熟悉。没错,这就是我们从初中(还是小学,我忘了,哈哈)就开始学的一元一次函数,而我们要求的就是斜率k和截距b。

1.2代价函数(Cost Function)

代价函数就是为了就是找到目的函数的最优解。
因为在一个训练集中,有无数个模型(一元一次函数),我们需要找到最拟合这个训练集的一个函数,所以就引入了代价函数,用来找到那个最好的模型。

代价函数

上述是平方误差代价函数,这也是常用到的代价函数,它通过目的函数跟各个实际值的误差平方建立新的函数。为了使这个值不受个别极端数据影响而产生巨大波动,采用类似方差再取二分之一的方式来减小个别数据的影响。
我们选择的参数(θ1和θ0)决定了我们得到的直线相对于我们的训练集的准确程度,模型所预测的值与训练集中实际值之间的差距(下图蓝线)就是建模误差。

我们的目标便是选择出可以使得建模误差的平方和能够最小的模型参数。
根据以上公式多次计算可得到代价函数的图像

可以看到该代价函数的确有最小值,这里恰好是横坐标为1的时候。

如果有更多参数,就会更为复杂,两个参数的时候就已经是三维图像了:

1.3梯度下降(Gradient Descent)

梯度下降是一个用来求函数最小值的算法,我们将使用梯度下降算法来求出代价函数J(θ0,θ1) 的最小值。
个人理解,代价函数是分析模型与实际训练集之间的误差,而梯度下降算法的作用,就是找出那个误差最小的代价函数。

首先来看看梯度下降的一个直观的解释。比如我们在一座大山上的某处位置,由于我们不知道怎么下山,于是决定走一步算一步,也就是在每走到一个位置的时候,求解当前位置的梯度,沿着梯度的负方向,也就是当前最陡峭的位置向下走一步,然后继续求解当前位置梯度,向这一步所在位置沿着最陡峭最易下山的位置走一步。这样一步步的走下去,一直走到觉得我们已经到了山脚。当然这样走下去,有可能我们不能走到山脚,而是到了某一个局部的山峰低处。
从上面的解释可以看出,梯度下降不一定能够找到全局的最优解,有可能是一个局部最优解。当然,如果损失函数是凸函数,梯度下降法得到的解就一定是全局最优解。

批量梯度下降(batch gradient descent)算法的公式为:

其中∂是学习率,它决定了我们沿着能让代价函数下降程度最大的方向迈出的步子有多大。
注意:∂不能太小也不能太大。太小的话,下降速度会很慢;太大的话,会导致无法收敛,甚至发散。
除了有批量梯度下降,还有随机梯度下降和小批量梯度下降。
区别
批量梯度下降:在更新参数时使用所有的样本来进行更新。
随机梯度下降:仅仅选取一个样本来更新。
小批量梯度下降:结合了两者的优点,对于m个样本,我们采用x个样本来迭代。
具体的可以参考博客。
练习题的代码可以参考GitHub。
课程的视频可以在网易云看。
顺便分享一个我觉得对机器学习有用的网站,嘻嘻嘻:http://www.apachecn.org/classification/。


你可能感兴趣的:(Andrew Ng机器学习课程笔记)