机器学习和生物信息学实验室联盟
标题:
PCVMs--使用方法(分类器)
[打印本页]
作者:
guojiasheng
时间:
2016-3-11 17:35
标题:
PCVMs--使用方法(分类器)
本帖最后由 guojiasheng 于 2016-3-12 11:17 编辑
Probabilistic Classification Vector Machine (PCVM):
大概说明一下这个东西,我也没怎么研究过,不过要有拿来主义的精神,会用就好!
具体大家可以到这个网站查看:
https://www.techfak.uni-bielefeld.de/~fschleif/software.xhtml
1. 我粗略的拜读了这文章。下面简要说明,有错大家不要见怪~~~
1)PCVMs类似SVM,model的function,看最下方图片:
因此参数里面也有个kernel
2)PCVMs 通过对function的参数w引入Gaussian prior 使得PCVMs可以输出分类的概率。
SVM通过最大间隔化进行分类,现在也有方法使得svm的binary的output可以转变成概率输出,但是这个概率输出不是很可靠(作者这么说)
3)SVM需要通过交叉验证去最优化参数,比如C g这些参数,随着训练数据的变大,会很耗时。PCVMs不用。
其他的大家自己看论文去吧~
2. 数据格式说明:
数据的格式是cvs的,具体如下:
88,67,21,11,11,0.5,1
92,54,22,20,7,0.5,1
90,60,25,19,5,0.5,1
89,52,13,24,15,0.5,1
82,62,17,17,15,0.5,1
90,64,61,32,13,0.5,1
复制代码
其中最后一列是类别标签,其实就是把arff最上面的那些熟悉值说明去掉即可。
3. usage:
有两个版本: windows 和 linux(需要安装一些环境,比如boost,libtool等一些,然后自己编译)
命令参数:
--cv true (进行交叉验证)
--k-fold(5,10折这样的)
--kernel 1 (这是kernel的选择,1 代表elm-kernel ,默认是linear的)
--data (文件路径,这个只能是cvs格式的,把arff文件的上面属性说明去掉就好)
1)windows下:
我下的上面网站链接的:PCVM windows binaries (including libaries)
1.交叉验证:
使用cmd进入目录
命令: PCVM.exe --cv true --k-fold 10 --kernel 1 --data D://bupa.cvs
2.train model
命令: PCVM.exe --model D://model.txt --kernel 1 --data D://bupa.cvs
模型的那些参数会保存在model.txt里面
3.predict
PCVM.exe --model D://model.txt --kernel 1 --data D://bupa.cvs --predict ture
当然还有其他的命令,大家可以自己看论文。
2)linux下:
我下的是上面网站链接的: Probabilistic Classification Vector Machine (PCVM): PCVM in C++
类似,就是编译可能会麻烦点,需要安装boost,armadillo,libtool等。大家可以试试,编译不过的可以找我~~
注意:编译后可执行文件在pcvm-bin目录下
Examples (all in pcvm_bin/)
1) Classify vectorial iris data in data/ using defaults (linear kernel, 500 cycles)
./pcvm
2) Same as 1) but with a crossvalidation (10 fold)
./pcvm --cv true
3) Same as 2) but with a 5 fold crossvalidation
./pcvm --cv true --k-fold 5
4) Same as 1) but with an elm-kernel instead of a linear one
./pcvm --kernel 1
5) Same as 4) but with storing the model result in test1.txt
./pcvm --kernel 1 --model test1.txt
6) Same as 1) but with a user defined dataset
./pcvm --data data/randn_n_2c.csv
7) Same as 5) but by classifying the given data against the specified model
(make sure that the model fits to the provided data)
./pcvm --kernel 1 --model test1.txt --data data/randn_n_2c.csv --predict true
8) Generate a model for a user defined kernel (the input data must have a special format - see above)
store the model in test1.txt and apply a 10-fold crossvalidation
./pcvm --cv true --model test1.txt --kernel 2 --data data/iris_kernel_small.csv
9) Classify new data against the model obtain in 8 (not the difference in the --data argument)
./pcvm --cv true --model test1.txt --kernel 2 --data data/iris_kernel_small_test.csv --predict true
10) Generate an iris classification model based on a nystroem approximated matrix (here with 10 landmarks) and store the model in test1.model
./pcvm --data data/iris_lin_ny.csv --kernel 2 --nystroem true --model test1.model
11) Match against the model obtained in 10)
./pcvm --data data/iris_lin_ny_test.csv --kernel 2 --nystroem true --model test1.model --predict true
复制代码
实验结果:
用了bupa.arff进行了10则交叉验证 : 效果和lib3c差不多,比rf稍微好些。
ACC:
PCVM: :72.2%
LIBD3C: 72.4
RF:70% 左右
欢迎光临 机器学习和生物信息学实验室联盟 (http://123.57.240.48/)
Powered by Discuz! X3.2