SVM支持向量机中PCA函数的使用注意事项

来源:互联网 发布:python客户端接口登录 编辑:程序博客网 时间:2024/05/22 12:01

使用SVM做一个图片分类器,主要使用的技术是,各种特征提取方法加上PCA主成分提取,最后用SVM进行图片分类处理。

特征提取这个东西还是比较简单的,前人做的工作很多,源代码也不少。主要采用的不变距、HOG、SIFT、LBP、信息熵、tamura纹理特征、面积和欧拉数等。主要从两个大的角度研究。一个是纹理特征,还有一个就是几何特征。总的来说,就是各种特征叠加然后到了整个分类器,慢慢调整最终达到比较的结果。调的这个过程需要耐心和记录。每变一个参数,运行一遍,最后都要记录下最终的结果。方便日后进行比对。

PCA主成分分析,我跌了个跟头,先说一下PCA的作用吧。PCA说白了就是提取主成分的。为什么要提取主成分呢,由于之前提取的特征量特别大,你不可能把所有特征都拿来算一下。如果你有超级计算机作支撑,当我没说。而且你之前提取的特征应该是比较大的一部分是没有作用的,甚至会有噪声,因此你需要提取有用的特征,进而有利于接下来的支持向量机的分类。好了,说了这个多PCA是个什么东东,我就来讲讲,我是咋掉坑的。这个坑是这样的,我把得到的特征矩阵,直接放进了PCA的计算函数princomp函数,然后发现怎么更改特征矩阵都不行,测试集一直都是20%的准确率,训练集的准确率倒还比较好90%以上的准确率。怎么着都不行。而且当时还是用的我的小笔记本跑的程序,跑一次笔记本风扇呜呜转,电脑各种发热,可心疼死我了。

后来我想不行啊,这样下去啥进展没啊。跑程序一天跑了没几次。后来果断换了教研室台式机,虽然台式机也不咋地,但是耐操啊。现在一天跑十次不在话下。也就是在台式机上各种跑程序的过程中慢慢摸索出了一下道道。之前princomp函数的参数是有问题的,不能直接放入特征矩阵,应该先转置一下特征矩阵,然后再转置一下score(提取得到的特征)得到的才是最终的结果。虽然现在的结果也不是很好,但是好歹可以达到50%以上的准确率。

最后再说一下SVM吧,这个东西,在网上都有现成的工具箱,我用的libsvm。比较好用四五行就可以搭起来。但是问题就是你需要调的参数问题。我在这个地方也遇到了不少问题,好多大神都建议直接自己撸代码,自己搭一个svm,但是本人还是才疏学浅,采用的是

《MATLAB神经网络30个案例分析》这本书里面的教程,总体来说很不错,比较详细,有具体的实例教程。看这本书上手很快。但是这里面有个小坑。可以看我之前的吐槽博客。

机器学习这个东西,其实入门不算太难,但是你想真正深入原理,甚至自己看机器学习论文徒手撸一个学习机器还是比较难的。共勉!