机器学习-笔记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);app


完成起来难度不大,但第一次交没过,缘由是我本身修改了alpha的值,致使虽然答案正确可是过程变化趋势不正确,后修改过之。后面针对多features的拟合其实和这个能够用同一套代码,就随便贴贴吧。机器学习


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


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;wordpress

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

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

不得不感叹线性代数的简便性啊
这是gradientDescent中的主要代码部分,由于要simultaneously decrease theta,因此得用临时数组存起来,固然之前也长干这事,并无什么难度ui


下面是效果图

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

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