表示与libsvm一起使用的数据(稀疏与否)

时间:2013-09-09 10:49:46

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

我想在函数堆栈跟踪上进行一些数据挖掘,为此我使用的是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慢得多

谢谢!

1 个答案:

答案 0 :(得分:0)

你几乎没有选择:

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

b)对于第一件事使用偶数而对另一件事使用奇数。所以你的例子看起来像:

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

这可以避免碰撞,你不需要重做整个事情:)