LibSVM将我的所有训练向量转换为支持向量,为什么?
我正在尝试使用SVM进行新闻文章分类。
我创建了一个包含function(在文档中找到的唯一单词)作为行的表。 我用这些特征创建了权重向量映射。 即,如果文章的单词是特征向量表的一部分,则该位置标记为1
或0
。
例如: – 培训样本生成…
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
由于这是第一份文件,所有function都存在。
我使用0
作为类标签。
我使用svm.Net进行分类。
我给出了300
手动分类为训练数据的权重向量,生成的模型将所有向量作为支持向量,这肯定是过度拟合的。
我的总要素(特征向量数据库表中的unique words/row count
)是7610
。
可能是什么原因?
由于这种过度拟合,我的项目现在状况非常糟糕。 它将每篇文章分类为正面文章。
在LibSVM中,二进制分类是否对类标签有任何限制?
我使用0
而不是-1
和+1
。 那是问题吗?
正如所指出的,在进行任何其他操作之前,参数搜索可能是一个好主意。
我还会研究可用的不同内核。 您输入数据是二进制的这一事实可能对RBF内核有问题(或者与其他内核相比可能使其使用次优。) 但我不知道哪个内核更适合。 尝试线性内核,并四处寻找更多建议/想法:)
有关更多信息和更好的答案,请查看stats.stackexchange.com。
你需要进行某种类型的参数搜索,如果类不平衡,分类器可能会在不做太多的情况下人为地获得高精度。 本指南擅长教授基本的,实用的东西,你应该阅读它
我肯定会尝试使用-1和+1作为标签,这是标准的方法。
另外,你有多少数据? 由于您在7610维空间中工作,您可能拥有那么多支持向量,其中不同的向量在每个维度中“支持”超平面。
有了这么多function,您可能需要尝试某种类型的特征选择方法,如主成分分析。
上述就是C#学习教程:LibSVM将我的所有训练向量转换为支持向量,为什么?分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1020305.html