现在采用svm方法进行图像标注实验时,采用的词汇集合中,有些单词出现的图片数很少,甚至比特征维度还小。这种情况下,不管是用logistic regression 或者non-linear svm都无法得到好性能的分类器。 相当于方程数小于方程未知数的自由度,方程无精确解。
这种情况就是分类中常遇到的unbalance data。 对于这种问题,一般有以下解决方法:
(1)采用libsvm中自带的-wi选项,为正负样本分配不同的惩罚因子,具体可以参考libsvm对train函数的解释。
livsvm FAQ中是这样解释的:
Yes, there is a -wi options. For example, if you use: My data are unbalanced. Could libsvm handle such proble
> svm-train -s 0 -c 10 -w1 1 -w-1 5 data_file
the penalty for class "-1" is larger. Note that this -w option is for C-SVC only.
另外,有人也提出过这个建议建议你可以采用两个方法解决:第一种是采用支持向量数据描述的方法,第二种采用支持向量机,但是我们要在惩罚因子C上做文章,SVM默认的是所有样本的惩罚因子都相同,这样的话,对于数据偏斜的问题就很麻烦,可以给样本数据少的那类更大的惩罚因子,表示我们重视这部分样本,不