机器学习-笔记4

时间:2021-10-16 18:33:11
开学第一周,感觉很累,课程进展不大,下午有点空,抽时间完成了exercise 3,上来做做笔记   可能我的笔记会比较频繁吧,因为没有具体的课本,而且有些重要的东西确实需要记下来,否则很容易忘,今天quiz就没全对。。   主要是regularization 的一个应用和neural Network的一点东西   exercise 3主要是手写数字的识别算法,很基础,但很神奇,仅仅靠lineral regression就可以做到如此高的识别率   当然第二部分也用neural Network浅实现了这个应用(即给出的参数是由老师准备的,具体的求参可能会在下一个exercise给出)   还是先说说exercise吧   大概就是给出了类似下图的手写数字的训练数据,然后用很单纯的线性回归算法进行识别,效果惊人(图示为100个样例,实际有5000个之多) 机器学习-笔记4     下面是核心代码   //oneVsAll.m   for k=1:num_labels initial_theta = zeros(n + 1, 1); options = optimset('GradObj', 'on', 'MaxIter', 50);  [theta] = fmincg (@(t)(lrCostFunction(t, X, (y == k), lambda)), ...                  initial_theta, options); all_theta(k,:)=theta(:); end //lrCostFunction.m h = sigmoid(X*theta);   grad=(h-y)'*X/m; theta_temp = theta; theta_temp (1)=0; J = sum(-y'*log(h)-(1.-y)'*log(1.-h))/m+lambda/2/m*theta_temp'*theta_temp; grad =grad.+lambda/m*theta_temp'; //predictOneVsAll.m temp=sigmoid((X*all_theta')); [p,lp]=max(temp, [], 2); p=lp; 其实和上一个exercise差不了多少,只是目标从0,1变成了数字0-9,因此会加上一个loop来操作,为什么说很奇怪呢 因为按照pdf的说法,用该样例训练出来的hypothesis 识别率为94.9%,(用来识别的目标也是这个样例) 但我得到的比他的高。。。。。。。我也不知道哪里有问题,但。。。确实很高,即使是用4000个数据来预测后面的1000个数据,识别率也高达88% 二用neural network得到的hypothesis 得到的识别率达到了97.5%,让人不得不感叹一句数学的强大(应该考虑到这还不是应用级别的算法,据群里讨论说有些识别已经做到99.7几了) 下面是比较正规的笔记: (neural network的表达式) 机器学习-笔记4 向量化之后。。 机器学习-笔记4 还有Octave的一些代码,真是灵活得吐血,还有python也是,学得有些郁闷(python2和python3不兼容这是最郁闷的) randperm(m)  生成1-m的乱序向量 reshape(X(curr_ex,  , example_height, example_width)  重新调整矩阵的行数、列数、维数 imagesc(A)   将矩阵A中的元素数值按大小转化为不同颜色,其实是用来展示图片的(样例的每个数字是20*20大小的图片) [p,lp]=max(A, [], 2);p是A每行最大值组成的集合,lp是最大值标号组成的集合,如果换成max(A)就是每列 theta(:)  will return a column vector theta.  大概就是这么多吧,好累。。。。。。

 

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