山东大学机器学习实验一

写在前面:我不确定明年峰哥哥会不会换实验(换的可能性不是很大,因为据老师说这么简单的实验已经不好找了xx),实验对于一个刚入门ML的小白来说可能会一头雾水。之前有位学长在CSDN上发布过实验的全部代码部分(我坦白我也抄了两个实验)。所以我这篇博客就不会在直接粘贴代码了(这样也很没有意义是伐。)

Linear Regression

实验的中文版解读可以参考这位学长的博客实验解读

我们首先的第一个任务是完成一个线性回归的模型构建。

我们拿到了数据集(x (i),y (i) ) 对应(身高,年龄)的这样一个元组。根据提示的用梯度下降的方式去训练这个线性回归模型。

对于线性回归模型,我们的函数表达式的为:

当然你不好理解的话也可以理解为:

不过这个要是不理解建议先去看看梯度下降相关的知识(所以本博客之后这种基础的数学问题就不再叙述了。)

所谓的梯度下降,是指一个函数求极值问题中,我们把函数的高低想象成一个山脉,我们要找这个山脉中最低的山谷位置,每次要沿着下降最快的方向去走一定的距离,下次在新的位置开始,再继续寻找这个下降最快的方向,再去走一定的距离。(这个距离我们称为步长,也就是该实验中我们要确定的参数,这个先记住之后再提。)

在该实验的具体问题中,我们用梯度下降找的最值问题其实不是的问题,我们的其实已经确定了(尽管我们还不确定θ的具体值),我们要考虑让这个曲线最优的去拟合我们的数据。所以为了评判这个合不合适的问题,我们又定义一个代价函数

其实仔细想想也能明白代价函数为啥这样定义,这算是一个数学建模的过程吧。

总之现在我们是确定了代价函数,这个代价函数的自变量是θ,我们要人=让这个代价函数最小,获得最小时θ的取值。这时候我们刚刚提到的梯度下降就排上用场了。
其实就可以理解为对这一组参数进行不断的迭代。没到一个点,就计算下下降最快的方向是什么,然后根据刚刚提到的步长,走到一个新的位置。(这个新的位置就是new_theta,新的θ值,在代价函数里就体现为一个新的坐标)

下面的两个问题就是:什么是下降最快的方向。当然这也是梯度下降的基础了

这个怎么来的那就去看相关博客吧。

步长alpha则是我们自己确定的值(其中实验最后一部分还让我们尝试不同的alpha去观察代价函数的变化过程。

最后,迭代终止的条件:我们可以观察迭代前后的代价函数的值,如果两次差值并不太大,我们就可以认为收敛了(因为步长的缘故,我们梯度下降往往找不到真正的最小值,而是会最后在极值点附近振动,这点自己想一想也可以明白) 当然,防止迭代次数过多,你也可以自己设一个最大迭代次数,不过这可能导致最后并不收敛。

这个实验的内容,最后也就是围绕着梯度下降线性回归,观察代价函数值的变化以及观察不同的学习率(步长)下代价函数的影响。最后手动调整比较优秀的学习率alpha的问题,其实就是看图的过程了(希望代价函数下降的不要太慢,因为步长过小,代价函数收敛太慢这样学习效率会很低,也不希望代价函数下降过快,因为我们刚刚说过找不到极值点最后振动的缘故,学习率太大了可能导致无法收敛。)

(最后,代码自己去写.jpg

你可能感兴趣的:(山东大学机器学习实验一)