机器学习-笔记2

 上一篇笔记其实是在看过网易公开课上的课程后写的,程序甚至数据等等都是自己在没有什么资料的情况下编出来的,现在转战coursera.org平台,同样的老师,几乎同样的课程,但毫无疑问coursera上的用户体验好多了,包括一个课程需要的quiz,exercise,wiki甚至一个小型的bbs,上面能发现来自世界各地的与你一起学习的人,建了一个QQ群,就汇集了来自许多地方的中国人,甚至包括来自HK,台湾,USA,UK的华人,感觉很新鲜。

 

秉着认真的态度,我有重新学习了看过的课程,许多之前不明白的地方引刃而解,系统地完成了第一个program exercise,感觉很有收获,顾作笔记2.
exercise主要还是对liner regression 的代码化,但代码,怎么说,因为是按照给出的格式写的,所以更加规范化了。
ex1主要是对针对一元一次函数的拟合,主要需要完成的函数包括


plotData(X, y);
computeCost(X, y, theta);
gradientDescent(X, y, theta, alpha, iterations);


完成起来难度不大,但第一次交没过,原因是我自己修改了alpha的值,导致虽然答案正确但是过程变化趋势不正确,后修改过之。后面针对多features的拟合其实和这个可以用同一套代码,就随便贴贴吧。


J =(X*theta-y)’*(X*theta-y)/2/m; 这是computeCost中的主要代码,因为文档建议Octave尽量不要用枚举,随意我采用了矩阵的方式。


theta_temp=theta;
for j=1:size(X,2)
for i=1:m
theta_temp(j)=theta_temp(j)+alpha/m*(y(i)-X(i,:)*theta)*X(i,j);
end
end
theta=theta_temp;

补注:在这之前没看V号课程视频,所以这里还是有些复杂,最后我全部把它矩阵化了,结果一句就足够了:

theta=theta-alpha/m*X’*(X*theta-y);

不得不感叹线性代数的简便性啊
这是gradientDescent中的主要代码部分,因为要simultaneously decrease theta,所以得用临时数组存起来,当然以前也长干这事,并没有什么难度


下面是效果图

最后还实践了Normal Equations,主要就是一个公式的应用

不得不说Normal Equations确实要快很多,但是正如课上讲到的,以后将会有许多机器学习算法不能用到它。个人感觉matlab上的拟合就是用的Normal Equations来实现的。
总的来说,exercise的难度不大,但却是我第一次提交exercise,想在也算熟悉了coursera上的流程了。有些贪多报了三门课,准备以后再学Model Thinking,怕实在吃不消,我会坚持下去吗,当然,我会坚持下去。

本文出自 “DarkScope从这里开始(..” 博客,请务必保留此出处http://darkscope.blog.51cto.com/4254649/989042

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值