机器学习-笔记4

开学第一周,感受很累,课程进展不大,下午有点空,抽时间完成了exercise 3,上来作作笔记
 
可能个人笔记会比较频繁吧,由于没有具体的课本,并且有些重要的东西确实须要记下来,不然很容易忘,今天quiz就没全对。。
 
主要是regularization 的一个应用和neural Network的一点东西
 
exercise 3主要是手写数字的识别算法,很基础,但很神奇,仅仅靠lineral regression就能够作到如此高的识别率
 
固然第二部分也用neural Network浅实现了这个应用(即给出的参数是由老师准备的,具体的求参可能会在下一个exercise给出)
 
仍是先说说exercise吧
 
大概就是给出了相似下图的手写数字的训练数据,而后用很单纯的线性回归算法进行识别,效果惊人(图示为100个样例,实际有5000个之多)
 
 
下面是核心代码
 
//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的表达式)
向量化以后。。
还有Octave的一些代码,真是灵活得吐血,还有python也是,学得有些郁闷(python2和python3不兼容这是最郁闷的)
randperm(m)  生成1-m的乱序向量
reshape(X(curr_ex,  , example_height, example_width)  从新调整矩阵的行数、列数、维数
p_w_picpathsc(A)   将矩阵A中的元素数值按大小转化为不一样颜色,实际上是用来展现图片的(样例的每一个数字是20*20大小的图片)
[p,lp]=max(A, [], 2);p是A每行最大值组成的集合,lp是最大值标号组成的集合,若是换成max(A)就是每列
theta(:)  will return a column vector theta.
 大概就是这么多吧,好累。。。。。。
相关文章
相关标签/搜索