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

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

下面就开始第一章: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的线性组合且参数尽可能最优。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值