【问题标题】:representing data for usage with libsvm (sparse or not)表示与 libsvm 一起使用的数据(稀疏与否)
【发布时间】:2013-09-12 20:14:14
【问题描述】:

我想对函数堆栈跟踪进行一些数据挖掘,为此我使用 libsvm 并以稀疏格式表示数据以提高处理速度,每个堆栈跟踪都是一个实例,变量是函数,即:

class1 F1,F2,F1,F456,F3  
class2 F4,F4,F4,F56,F3000  
...

在某个地方,我看到的独特函数的注册表不断增长,这就是函数索引的来源。理想情况下,我想使用稀疏格式来表示上述实例,并将其划分为 5 个变量,如下所示:

1 1:1 2:1 1:1 456:1 3:1  
2 4:1 4:1 4:1 56:1 3000:1

这在 libsvm 的格式中是不可能的,所以我将总函数注册表的长度添加到每个组以避免索引冲突,如果我们假设总共有 3000 个函数:

1 1:1 3002:1 6001:1 9456:1 12003:1,  this is how the first instance looks now

如果函数的数量没有改变,这可行,但情况并非如此,因为每次添加新函数,都必须重做整个事情。

我使用的是稀疏格式,但也欢迎对其他格式提出建议,我能够使用 Weka 以密集格式使用数据,使用函数名称作为变量,它可以工作,只是比使用 libsvm 慢得多

谢谢!

【问题讨论】:

    标签: machine-learning format svm sparse-matrix libsvm


    【解决方案1】:

    你有几个选择:

    a) 每次都重做整个事情(我认为为 libsvm 生成输入比 libsvm 本身更快:))

    b) 第一件事用偶数,第二件事用奇数。所以你的例子看起来像:

    1 2:1 3:1 1:1 911:1 5:1
    

    这避免了冲突,您不必重做整个事情:)

    【讨论】:

    • 感谢@usamec,a) 是我目前正在做的事情,但不确定我是否得到 b)?我认为一个更普遍的问题是我如何在 libsvm 稀疏格式中表示重复特征,例如 A B A A C。在前面的示例中,我使用了 5 个差异属性,不确定奇数/偶数索引会有多大帮助?我正在考虑以其他方式采用正常的密集格式并使其成为 1:2 2:3 3:2 4:2 5:3000 ...
    猜你喜欢
    • 2017-09-03
    • 1970-01-01
    • 2016-08-26
    • 2010-11-18
    • 1970-01-01
    • 2011-03-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多