|
本帖最后由 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% 左右
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|