Ng机器学习第二课复习

   从小学到高中,在学校学习老师过一段时间都会带领我们复习前一段学过的知识,而且现在随着自己年龄越来越大记忆力也越来越差,并且自己也不是什么天才,所以经常复习学过的东西觉得越来越有必要了。个人认为学习有个牛人老师带领并且能有几个一起讨论并学习的伙伴才是最佳的学习环境,但是苦在自己并不是学计算机出身,就谈不上会有个牛导和一群学计算机的小伙伴,所以希望能和有缘的网友一起学习和进步,更希望如果自己有错误能被及时的指出,这是我们普通人进步的重要方法。

看到在网易公开课里还有人问课程讲义在哪里下载,这个是网站:http://cs229.stanford.edu/materials.html    里面有讲义和各种资料,讲义里的内容写的比较详细,几乎是老师上课说过的原话。

第二课  线性回归的梯度下降(第一课只是介绍了机器学习的大概2008年的,几乎没什么干货)。
这节课讲的内容是在监督学下的算法(supervised learning)。好吧,什么是监

督学习,我看了一下资料:每个数据点被标记或者与一个类别或者感兴趣的值相关联。拿本节课预测房价的例子来说,房价与被标记的数据点也就是特征(卧室数目等)相关联了起来,所以这就是个监督学习。我的理解就是你的特征值就是数据点有标签并且相互之间有个确定的结构关系,各个标签数据通过这个特定的结构关系得到一个你所感兴趣的值(比如房价),这就是监督学习。
1、线性回归(linear regression)。
(1)什么是线性回归?
到目前为止我学到了第7课,基本上是围绕两个问题解决的,回归问题和分类为题(regression and classification)。那么什么是回归问题,从输出结果来看,你得到的是你感兴趣的数字,这就是回归,从字面上来理解也就是当你用大量的数据训练你的模型之后,最后你的模型会回到一个预测误差比较小的你所感兴趣的值,这几是回归。
好了本课的一个式子就来了, 预测房价。(这里先不讨论分类问题,这节课还没讲)
设定预测房价为这里写图片描述
其中h(x)就是房价的预测价格(hypothesis),就是最后通过训练之后,回归后你得到的可靠的预测值。theta0,theta1,theta2是参数,x1,x2分别代表房间面积和卧室数目(就是你感兴趣的标签值)。这个式子还是比较好理解的。但是其中有个问题不知道大家想没想过,为什么各个theta乘以的是各个x的一次幂二部是x的两次幂,三次幂、六次幂等等。对了这里插一句,Ng在课上讲的theta还有个别名叫weights,就是权重,根据这个意思理解公式就好理解多了,预测房价和各个特征值(面积,卧室数目)之间的关系,如果房价和面积关系大不就是面积乘以的那个参数也就是theta1就大点,反之就小点呗,因此各个参数theta也叫做权重。好了回到刚才的问题为什么各个权重(theta)乘以的只是x的一次幂?其实这个问题在后面的课程(过拟合,欠拟合)会讲到,这里只是为了理解简单所以假设各个权重theta乘以的是x的一次幂,但是实际情况可能并非如此。下面用房价和面积(不考虑其他特征值)的图表示一下(只是假设,用的是讲义里的图):
这里写图片描述 这里写图片描述这里写图片描述
如果大部分实际的数据如上左图(其中的小蓝点)所示,那么你用一个直线模型(右侧图形,也就是参数乘以x的一次幂)去预测房价误差当然会有点大。当然如果x次幂过高的话就会出现过拟合的情况(overfitting,也就是说你不是在预测房价,而是去查找房价,误差虽然小,但是并不是我们想要的预测误差小,如第三个图所示)。以上就是关于第一个式子的理解和看法。
(2)梯度下降
第二个式子为这里写图片描述
这个式子大家应该都不陌生,打眼一看理解起来就是误差函数。那么问题又来了,我们用他来干嘛?也就是这个式子在我们的线性回归中有个怎么样的应用呢?好了,既然上面的式子是误差函数,那么当然我们希望的是误差越小越好了,要不然怎么用来进行预测呢?对了,顺便说一句,x和y的上标是第几组数据,举个例子x上标1(120,3),y上标1(200),x1中第一个元素是居住面积,第二个元素是房间个数,y1中对应的是价格(实际的,真实样本,这里不是假设的)。好了,回到刚才的问题,既然我们希望误差越小越好,最好是零,当然这不太可能,那么关键问题就来了,怎么通过真实的样本数据,来训练我们的假设模型(也就是参数theta0、1、2),来使得误差函数最小呢?这就引出这节课一个比较重要的算法:梯度下降法(gradient descent).来看看这个式子是怎么定义的:
这里写图片描述
好了,这个式子该怎么理解呢?第一个theta j代表的是本次thetaj应该得到的值,也就是说用后面的式子来代替(训练)我们应该得到的thetaj参数。大家导数的定义还没忘吧,用中学的理解来说就是斜率,那么这个式子就是用得到的thetaj 减去a(阿拉法)乘以那个导数(theta你需要初始化一些值,a代表的是步长,当你越来越接近j的最小值是a应该越来越小,要不然你会跳过收敛区域,从而反复在最小值左右徘徊)。这么说好像还不是那么清晰,我用一个网上找来的图片展示一下(盗的图啊,不是自己画的):
这里写图片描述

这个图简单明了多了吧,theta1是你的初始值,这有点类似于牛顿法(后面几节课里的)。

好了,然后Ng又说为了方便起见给出这么几个Notation(表达式):这里写图片描述
,然后J的偏导数就有了个新的写法了呗:这里写图片描述
向量中每一个元素都对应一个偏导。然后他又介绍了矩阵的迹(trace,就是个矩阵各个对角元素的和)和其与偏导数之间的一些关系式(挺好证明的,并且挺有用的,都是在讲义里面直接截得公式):
这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

这里注意一个式子(讲义里的)这里写图片描述
这个式子在你用matlab画图时候特别有用。

根据上面矩阵迹的性质和上面的式子然后我们来求这里写图片描述,(直接用讲义里的过程贴出来):
这里写图片描述
(最好自己证一遍,不难)然后把最后一个结果设置为0向量。求出theta:这里写图片描述
。上面过程都不难,但是这里有个小问题,为什么把结果设置为0向量?高书中大家求最值的方法还记得吧,求一阶导数(可导的情况下哈)为0的变量值,就是最值。所以这里就设置为零向量。但是事实都是这样吗?其实并不是,这里我们用梯度算法求最小值得时候,我们是有另外一个条件的,所有数据是属于一个凸集,如果你得训练数据属于一个凹集,你用梯度下降法所求得的最小值有可能只是个局部最小值(也就是极小值),并不是最小值,那么凸集是个啥?这也是我才搞明白的,这个问题也要写好久,将在复习第七课的时候再谈。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值