我正在尝试使用SVM进行新闻文章分类。
我创建了一个表格,将特征(文档中找到的独特词汇)作为行。我创建了与这些特征映射的权重向量。即如果文章中包含特征向量表中的某个词,则该位置标记为1
,否则标记为0
。
例如:生成的训练样本…
1 1:1 2:1 3:1 4:1 5:1 6:1 7:1 8:1 9:1 10:1 11:1 12:1 13:1 14:1 15:1 16:1 17:1 18:1 19:1 20:1 21:1 22:1 23:1 24:1 25:1 26:1 27:1 28:1 29:1 30:1
由于这是第一篇文档,所有特征都存在。
我使用1
和0
作为类别标签。
我使用svm.Net进行分类。
我手动分类了300
个权重向量作为训练数据,生成的模型将所有向量都作为支持向量,这显然是过拟合了。
我的总特征(特征向量数据库表中的独特词汇/行数
)是7610
。
原因可能是什么?
由于这种过拟合,我的项目现在状况非常糟糕。它将所有可用的文章都分类为正面文章。
在LibSVM的二元分类中,对类别标签有任何限制吗?
我使用0
和1
而不是-1
和+1
。这会是问题吗?
回答:
正如所指出的,在做其他事情之前进行参数搜索可能是个好主意。
我还会研究你可用的不同核函数。你的输入数据是二进制的,这对于RBF核函数来说可能是个问题(或者可能使其使用效果不佳,与其他核函数相比)。我不知道哪个核函数更适合,不过。尝试使用线性核函数,并寻找更多建议/想法 🙂
要获取更多信息和可能更好的答案,请查看stats.stackexchange.com。