优化OneClassSVM的准确性

时间:2014-06-25 21:10:17

标签: python machine-learning scikit-learn

我遇到了一个需要使用一类分类系统的问题。我目前正在使用python进行开发,因此我正在使用sci-kit学习机器学习任务。

从他们的文档中,OneClassSVM应该能够像预期的那样工作(仅为培训提供正面示例),但结果模型给我高度不准确的结果 - 即使是在原始培训数据

X = generate_data()  # Generate matrix of tf-idf document vectors

cls = OneClassSVM(kernel='rbf', gamma=0.1, nu=0.1)
cls.fit(X)

y = cls.predict(X)
print y[y == 1].size / y.size

上述(简化)代码段会在训练数据上返回40-55%的准确度分数。它在新颖的数据上表现得更糟(正如人们所预期的那样),几乎所有结果都是不正确的。

40-55%的准确度基本上和随机分类器一样好,所以我做错了什么?我试图使用参数 gamma nu ,但这对我来说似乎没什么用。

我知道OneClassSVM实现利用了Scholkopf等人提出的技术。 al和另一种选择是支持向量数据描述技术(Tax和Duin),但这不是在scikitlearn中实现的,并且需要我自己实现libsvm的接口。最重要的是,根据我的理解,SVDD与OneClassSVM实现一样准确,因此根本无法解决我的问题。

生成的训练数据是由标准tf-idf表示的文档矩阵。

0 个答案:

没有答案