您的位置:首页 > 其它

linear regression (依据斯坦福大学网上机器学习视频)

2017-09-01 10:00 295 查看
因为这个暑假利用一些时间看了斯坦福大学的机器学习的公开课,当时基本上都是看视频,没有心思去做课后题和编程实验,一个月过后觉得还是多练习一下才可以更好的巩固。

下面就开始第一章:linear regression,我基本上按照网络课程给的编程实验说,顺便回顾一下基本知识。

(1)只有一个变量的linear regression

之前的博客有提到用正规化方程去解的,这里选择用梯度下降法来,这个方法更快一些,而且具有一定的推广性。

首先为了说明我们拟合直线的好坏程度,自然的引入cost function:





当然这里用的是最常见的cost function,这个函数自变量是theta,对于单变量来说,theta是一个具有两个元素的向量,一个表示截距,一个为斜率,m是训练样本个数为固定值。

好了,下面介绍batch gradient descent alogrithm 也就是每次利用所有样本完成一次计算的梯度下降法:



(依旧是截图,,,,,,,)

当然这个是上面的cost function对theta求导得来的,也就是原来的值减去了一个比较小的,当然是朝着cost function减少的方向去减的(这个可以通过二次函数图像简单说明)。a是学习速率,也就是一部分决定了你要减少多少。

有了这些公式,就可以利用数据进行计算了,首先在给定theta和样本数据的情况下编写代码计算cost function (比较简单,就不写了)

然后开始迭代,在每一次的迭代中都要利用所有的样本数据计算新的theta值,当然你可以把每一次迭代中得到的theta带入到cost function中看看是不是在减少(网上给的程序是利用matlab的surf和contour来画的。)

(1)多变量 linear regression

首先由于变量之间的数据大小差异可能比较大,这样导致其梯度变化比较剧烈(因为有的方向可能为100,有的因为本身数据很小,可能只有1),因此要利用梯度下降法要进行归一化。

也就是每一个特征下的数据减去他们的均值后除以标准差,当然也有别的方法。

然后就是计算cost function和梯度,方法和上面一样,只不过是多了维度而已。

当然这里我们也可以用之前说过的normal equation 正规化方程来解,此时就不需要进行数据归一化了。



当然采用正规化方程与梯度下降法得到的结果是不同的,一方面是因为梯度下降法本身具有一定的波动,其可能在某个极值点附近波动;另外正规化方程要求X矩阵的列是满秩的(也就是任意两个特征的数据不具有线性相关性),一般情况下可能并不满足,当然这样并不影响计算,毕竟矩阵的逆运算可以推广到左逆与右逆。

好了,以上就是利用数据进行linear regression的情况,总结来说就是已知一堆数据,我们采用线性拟合的方法,通过梯度下降法或者正规化方程求解出最优的拟合参数,使得y可以表示成x的线性组合且参数尽可能最优。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  机器学习
相关文章推荐