【问题标题】:SVM Machine Learning: Feature representation in LibSVMSVM 机器学习:LibSVM 中的特征表示
【发布时间】:2015-11-03 01:03:39
【问题描述】:

我正在使用 Libsvm 对书面文本进行分类。 (性别分类)

我在理解如何创建具有多种功能的 Libsvm 训练数据时遇到问题。

Libsvm 中的训练数据是这样构建的:

label index1:value1 index2:value2 

假设我想要这些功能:

  • Top_k 个词:k 个按标签最常用的词
  • Top_k 二元组:k 个最常用的二元组

因此,例如,计数将如下所示:

               Word count             Bigram count
         |-----|-----------|         |-----|-----------|
         |word |   counts  |         |bigra|   counts  |
         |-----|-----|-----|         |-----|-----|-----|
  index  |text | +1  | -1  |  index  |text | +1  | -1  |
         |-----|-----|-----|         |-----|-----|-----|
      1  |this | 3   | 3   |      4  |bi   | 6   | 2   |
      2  |forum| 1   | 0   |      5  |gr   | 10  | 3   |
      3  |is   | 10  | 12  |      6  |am   | 8   | 10  |
         |...  | ..  | ..  |         |..   | ..  | ..  |
         |-----|-----|-----|         |-----|-----|-----|

假设 k = 2,这是训练实例的样子吗?(计数与之前无关)

Label Top_kWords1:33 Top_kWords2:27 Top_kBigrams1:30 Top_kBigrams2:25

或者看起来像这样(功能混合时是否重要)?

Label Top_kWords1:33 Top_kBigrams1:30 Top_kWords2:27  Top_kBigrams2:25

我只是想知道具有多个不同特征的特征向量如何以及如何实现。

编辑:

根据上面更新的表格,这个训练数据是否正确?:

例子

 1 1:3 2:1 3:10 4:6 5:10 6:8
-1 1:3 2:0 3:12 4:2 5:3  6:10 

【问题讨论】:

    标签: machine-learning libsvm word-count feature-selection


    【解决方案1】:

    libSVM 表示是纯数字,所以

    label index1:value1 index2:value2 
    

    表示每个“标签”、“索引”和“值”都必须是数字。在您的情况下,您必须列举您的功能,例如

     1 1:23 2:47 3:0 4:1
    

    如果某些特征的值为 0,则可以省略它

     1 1:23 2:47 4:1
    

    记得按升序排列特征。

    一般来说,libSVM 不是为处理文本而设计的,我不建议您这样做 - 而是使用一些现有的库,它们可以轻松处理文本并环绕 libsvm(例如如NLTKscikit-learn)

    【讨论】:

    • 是的,我知道它们必须是数字的,我想知道如果我拥有这 2 个功能,它必须是怎样的。我编辑了我的帖子以澄清它
    • 是的,更新的特征表示对应于您绘制的表格。通常,SVM 中的特征之间没有任何意义(它们是独立的),因此您可以任意枚举它们。唯一重要的是,一个向量中的特征 K 必须与其他向量中的特征 K 表示完全相同的事物;其余的完全是任意的。但是 - 您应该考虑一些适当的功能缩放(如 tf-idf)
    【解决方案2】:

    无论您用于训练的 k most 单词/bigram 可能不是您的测试集中最流行的。如果您想使用英语中最流行的单词,您最终会得到theand 等等。 Maybee beerfootball 更适合对男性进行分类,即使他们不太受欢迎。此过程步骤称为feature selection,与 SVM 无关。当您发现选择性特征(啤酒、肉毒杆菌毒素等)时,您会枚举它们并将它们填充到 SVM 训练中。

    对于二元组,您也许可以省略特征选择,因为最多有 26*26=676 个二元组构成 676 个特征。但我再次假设像be 这样的二元组没有选择性,因为beer 中的选择性匹配完全隐藏在to be 中的许多匹配中。但这只是猜测,您必须了解功能的质量。

    此外,如果您使用单词/二元组计数,您应该对它们进行规范化,即。 e.除以文档的总字数/二元组数。否则,您的训练集中较短的文档将比较大的文档具有较小的权重。

    【讨论】:

      猜你喜欢
      • 2018-02-06
      • 2019-07-14
      • 1970-01-01
      • 2020-04-24
      • 1970-01-01
      • 2013-01-18
      • 2012-03-28
      • 1970-01-01
      • 2021-05-12
      相关资源
      最近更新 更多