资源描述:
《我一直觉得 svm 是个很有趣的东西》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、我一直觉得SVM是个很有趣的东西,不过也一直没办法(mostly冲堂)去听林智仁老师的Datamining跟SVM的课;后来看了一些网络上的文件跟听kcwu讲了一下libsvm的用法后,就想整理一下,算是对于并不需要知道完整SVM理论的人提供使用libsvm的入门。原始libsvm的README跟FAQ也是很好的文件,不过你可能要先对svm跟流程有点了解才看得懂(我在看时有这样的感觉);这篇入门就是为了从零开始的人而写的。后来还有一些人提供意见,所以在此要感谢:不过请记得底下可能有些说法不一定对,但是对于只是想用SVM的人来说我觉
2、得这样说明会比较易懂。这篇入门原则上是给会写基本程序的人看的,也是给我自己一个备忘,不用太多数学底子,也不用对SVM有任何先备知识。还看不懂的话有三个情形,一是我讲的不够清楚,二是你的常识不足,三是你是小白^^;我自己是以完全不懂的角度开始的,这篇入门也有不少一样不懂SVM的人看过、而且看完多半都有一定程度的理解,所以假设情况一不会发生,那如果不懂一定是后两个情况:P也所以,有问题别问我。SVM,SupportVectorMachine,简而言之它是个起源跟类神经网络有点像的东西,不过现今最常拿来就是做分类(classificat
3、ion)。也就是说,如果我有一堆已经分好类的东西(可是分类的依据是未知的!),那当收到新的东西时,SVM可以预测(predict)新的数据要分到哪一堆去。SVM,SupportVectorMachine,听起来是很神奇的事(如果你觉得不神奇,请重想一想这句话代表什么:分类的依据是未知的!,还是不神奇的话就请你写个程序解解看这个问题),也很像要AI之类的高等技巧...不过SVM基于统计学习理论可以在合理的时间内漂亮的解决这个问题。以图形化的例子来说明(bySVMToy),像假定我在空间中标了一堆用颜色分类的点,点的颜色就是他的类别,
4、位置就是他的数据,那SVM就可以找出区隔这些点的方程式,依此就可以分出一区区的区域;拿到新的点(数据)时,只要对照该位置在哪一区就可以(predict)找出他应该是哪一颜色(类别)了:当然SVM不是真的只有画图分区那么简单,不过看上面的例子应该可以了解SVM大概在作什么.要对SVM再多懂一点点,可以参考cjlin在datamining课的slides:pdforps。底下我试着在不用看那个slide的情况解释及使用libsvm。所以,我们可以把SVM当个黑盒子,数据丢进去让他处理然后我们再来用就好了.HowdoIgetSVM?林智
5、仁(cjlin)老师的libsvm当然是最完美的工具.Downloadlibsvm下载处:DownloadLocation:[url=http://www.csie.ntu.edu.tw/~cjlin/cgi-bin/libsvm.cgi?+http://www.csie.ntu.edu.tw/%7Ecjlin/libsvm+zip]libsvm.zip[/url]or[url=http://www.csie.ntu.edu.tw/~cjlin/cgi-bin/libsvm.cgi?+http://www.csie.ntu.edu
6、.tw/%7Ecjlin/libsvm+tar.gz]libsvm.tar.gz[/url]
.zip跟.tar.gz基本上是一样的,只是看你的OS;习惯上Windows用.zip比较方便(因为有WinZIP,不过我都用WinRAR),UNIX则是用.tar.gzTheprograms解释一下几个主要执行档的作用:(UNIX/Windows下檔名稍有不同,请用常识理解我在讲哪个)Train(训练)data.跑SVM被戏称为"开火车"也是由于这个程序名而来.train会接受特定格式的输入,产生一个"Model"檔.这个model你可
7、以想象成SVM的内部数据,因为predict要model才能predict,不能直接吃原始数据.想想也很合理,假定train本身是很耗时的动作,而train好可以以某种形式存起内部数据,那下次要predict时直接把那些内部数据load进来就快多了.svmpredict依照已经train好的model,再加上给定的输入(新值),输出predict(预测)新值所对应的类别(class).svmscaleRescaledata.因为原始数据可能范围过大或过小,svmscale可以先将数据重新scale(缩放)到适当范围.FileFor
8、mat档案格式要先交代一下.你可以参考libsvm里面附的一行一笔资料,如Onerecordperline,as:+11:0.7082:13:14:-0.3205:-0.1056:-1label或说是class,就是你要分类的种类,通常是一些整数。