机器学习和生物信息学实验室联盟

标题: 【求助】libsvm不平衡分类 [打印本页]

作者: fiona    时间: 2012-6-11 13:48
标题: 【求助】libsvm不平衡分类
使用libsvm分类(分为两类0/1),类别权重参数设置为"-W", "0.1 0.9" ,详细参数设置如下:

String[] options = {"-S", "0", "-K", "2", "-D", "3", "-G", "0.16", "-R", "0.0", "-W", "0.1 0.9", "-N", "0.5", "-M", "40.0", "-C", "1.0", "-E", "0.0010", "-P", "0.1"};

程序运行时,出现一个warning: class label 1 specified in weight is not found"

有没有人知道为什么会出现上述的警告? 求指教呀
作者: xmubingo    时间: 2012-6-11 14:03
本帖最后由 xmubingo 于 2012-6-11 14:07 编辑

你的权重是不是应该分开写

-wi weight : set the parameter C of class i to weight*C, for C-SVC (default 1)


svm-train的时候有个参数c和g。
你在指定wight的时候似乎需要参考之前设定的c值。
按照help说法,第i个类别的权重为weight*c。

w0 0.1 w1 0.9
权重为: 0.1*c 0.9*c
我没验证过,你试试

我们实验室有个不平衡分类的降噪采样法你可以参考
http://59.77.16.75/main/~zq/uns/index.htm
http://datamining.xmu.edu.cn/main/~qc/libDSCCBC.htm
作者: fiona    时间: 2012-6-11 14:21
xmubingo 发表于 2012-6-11 14:03
你的权重是不是应该分开写

如何权重分开写,就会出现“Zero Weights processed. Default weights will be used“ 这样的话,权重设置应该不成功,会使用默认的权重。
作者: xmubingo    时间: 2012-6-11 14:29
fiona 发表于 2012-6-11 14:21
如何权重分开写,就会出现“Zero Weights processed. Default weights will be used“ 这样的话,权重设置 ...
"svm-train -c 10 -w1 1 -w-1 5 data_file

  Train a classifier with penalty 10 = 1 * 10 for class 1 and penalty 50
  = 5 * 50 for class -1."

It seems libSVM doesn't recognize -W0 (or -W equivalently). In the above
example the arguments -W1 and -W-1 are used to assign weights to the
attributes 1 and -1 respectively. Maybe -1 corresponds to the target
class, but I think you have to run some tests on that or ask the libSVM
guys.


你先参考下他说的,我试试
作者: xmubingo    时间: 2012-6-11 14:36
本帖最后由 xmubingo 于 2012-6-11 14:37 编辑

我刚试了一下,网上这个说法可行。

你的训练文件里,如果是用0和1来区别两种类别,
那么参数就用-w0 0.1和-w1 0.9
如果是用-1和1来区别,
那么参数就用-w-1 0.1和-w1 0.9


还有,你的参数里有-k?貌似我的libsvm里没有这个参数
作者: fiona    时间: 2012-6-11 15:51
xmubingo 发表于 2012-6-11 14:36
我刚试了一下,网上这个说法可行。

你的训练文件里,如果是用0和1来区别两种类别,

我的做法跟你的一样,还是说使用默认的权重,参数-K应该跟-t是一样的吧。
LibSVM有版本什么的差别吗?
作者: xmubingo    时间: 2012-6-11 16:16
本帖最后由 xmubingo 于 2012-6-11 16:23 编辑
fiona 发表于 2012-6-11 15:51
我的做法跟你的一样,还是说使用默认的权重,参数-K应该跟-t是一样的吧。
LibSVM有版本什么的差别吗?


[attach]702[/attach]
[attach]705[/attach]
附件中是我用来做训练的训练文件和程序。

以下是我的svm输出信息:
(命令 F:\max_svm_parameter\libsvm\windows>svm-train -s 0 -t 2 -c 1.0 -g 0.16 -w0 0.1 w1 0.9 20.arff.libsvm )
[attach]703[/attach]

如果我label输入出错就会提示错误:
[attach]704[/attach]

建议你用的svm去官网下载:http://www.csie.ntu.edu.tw/~cjlin/libsvm/
你的参数很多都不需要设置。而且有参数和我的不一样。我不知道是不是你程序也和我的不一致。
作者: fiona    时间: 2012-6-11 16:39
Ok,好详细哈,谢啦




欢迎光临 机器学习和生物信息学实验室联盟 (http://123.57.240.48/) Powered by Discuz! X3.2