【问题标题】:Categorical Feature分类特征
【发布时间】:2011-04-07 02:24:30
【问题描述】:

对于 LibSVM。

在“支持向量分类实用指南”中,建议使用 m 数来表示 m 类别属性。例如 {red, green, blue} 可以表示为 (0,0,1), (0,1,0), (1,0,0)。

但在自述文件中,它说索引中的值:值对只能取实数。

有人知道如何在数据文件中表示(0,0,1)吗?

【问题讨论】:

    标签: libsvm


    【解决方案1】:

    如果一个分类属性可以有 3 个值(例如红色、绿色、蓝色),那么根据 libsvm 指南,数据文件中将有 3 个特征。假设另一个特征权重,您的编码将类似于下面的 +ve 示例,权重为 100 个单位,颜色 = 绿色。

    标签重量红绿蓝

    +1 1:100 2:0 3:1 4:0

    【讨论】:

      【解决方案2】:

      这对于 libsvm 来说不是必需的,因为它使用一对一的方法来训练 SVM(事实上,在他们的文档中,他们向您推荐了一篇研究文章,其中将一对一与一对一进行了比较并且表现更好)。如果您有 4 个类别 a、b、c、d,libsvm 实际上在内部创建 6 个 svm,一个用于 a verses b,一个用于 a verses c,一个用于 a verses d,一个用于 b vs d,一个用于 c verses d。当被要求进行分类时,它运行所有 6 个并使用投票系统来确定获胜类别。这实际上比只使用 (1,0,0,..) (0,1,0..) 类别输入要好。

      如果您查看 libsvm data examples。您将看到您为每个类别分配了一个整数,并且该整数位于条目的前面,然后跟随该数据元素的值向量的每个元素,例如如果我有 5 个类中的数据并且每个数据元素有 3 个向量和数据向量 (3.3, 1.5, 0.5, 7.3, 3.5) 属于第 4 类,我的数据文件的一行看起来像

      4 1:3.3 2:1.5 3:0.5 4:7.3 5:3.5

      这真的很难看,但我认为这是因为他们使用了删除零向量条目的约定,例如如果向量 (.5,0,0,0,.7) 属于类别 2,则相应的数据行将是(我认为)

      2 1:.5 5:.7

      它的价值(如果我是正确的)是在一些数据量非常大的问题中,大部分条目都是零。

      【讨论】:

        猜你喜欢
        • 2017-08-01
        • 2018-03-11
        • 2021-10-23
        • 2019-06-13
        • 1970-01-01
        • 2017-04-09
        • 2020-07-27
        • 2020-11-21
        • 2015-03-20
        相关资源
        最近更新 更多