【问题标题】:Confusion in building a Svm Training Set构建支持向量机训练集的困惑
【发布时间】:2013-12-06 20:49:00
【问题描述】:

我目前正在测试我的 Binary SVM Java 实现的训练阶段。 我已经针对如下所示的小数据对其进行了测试,但我需要将我的 svm 应用于已知数据集,例如垃圾邮件/非垃圾邮件、图像等。

  1. 我的 SVM 能够读取数值,因此我还需要使用一些真实数据对其进行测试。
  2. 稍后我想继续讨论图像。

为了找到一个真实的数据集,我搜索了不同的repos,但我只能找到数值+字符、文本等。

我找到了spam Archive

  1. 但是我该如何处理呢?
  2. 我想我需要使用 tfidf 将文本转换为数字数据,然后应用我的 SVM。
  3. 但是如何将它们表示为 1/-1 类。

通常输入应该是这种格式吧?

0 0 1
3 4 1
5 9 1
12 1 1 
8 7  1
9 8 -1
6 12 -1
10 8 -1
8 5 -1
14 8 -1

如何将垃圾邮件归档数据转换成上述格式?

【问题讨论】:

  • 如果您正在寻找预先准备好的测试数据,LIBSVM 组有大量可用的测试数据。
  • 感谢您的回复 tmyklebu:您能与我分享这些数据集的链接吗?

标签: java algorithm machine-learning svm


【解决方案1】:

这都是关于功能选择的。输入当然是成对的文档和标签。但是特征提取包含在训练过程中。最直接的方法是二进制表示,其中我们检查特定单词是否出现在某些特定文档中。它也被称为词频:特征向量中的第 i 个分量是单词 wi 在一个文档中出现的时间。这里的向量是一个已建立的字典,包含了训练文档中的所有单词。您还可以考虑逆文档频率:wi 在所有文档中出现的次数除以文档总数。 仅供参考,一篇关于垃圾邮件支持向量机的研究论文: http://classes.soe.ucsc.edu/cmps290c/Spring12/lect/14/00788645-SVMspam.pdf

【讨论】:

  • 每条消息一个特征向量。如果我将所有消息转换为 TFIDF,我将获得数值。但我很困惑,如何将标签 1 用于垃圾邮件,将 -1 用于非垃圾邮件。该archicev是垃圾邮件而不是垃圾邮件文本数据的组合吗?
  • @Sree,你可以选择那些在你的训练集中出现频率最高的词,比如 1000 个文档频率词。如果这些词出现的次数少于 20 次,则不要使用它们。通常训练集约为 10^5(文档或电子邮件)。
  • 所以在为垃圾邮件归档执行 tfidf 后,我应该将所有数据标记为 1,而非垃圾邮件标记为 -1,然后 snd 到 svm...
猜你喜欢
  • 2013-12-25
  • 2017-09-19
  • 2013-07-14
  • 2016-11-07
  • 2017-08-08
  • 2020-10-26
  • 2016-08-17
  • 2021-04-10
  • 2018-07-31
相关资源
最近更新 更多