oneclass SVM使用scikit-learn在离群值检测中偏斜数据

时间:2015-03-17 14:32:49

标签: scikit-learn svm

我正在使用带有scikit-learn的oneclass SVM检测数据集中的异常值。我试着用一个例子解释我的问题:

想象一下具有高度和性能特征的简单数据集(这只是一个简化,我的数据集要大得多)。当两个特征之间存在奇怪的组合时,我想要检测的是异常值,例如:

h - height
p - performance

h p class
----------
10       0.1         1

12       0.5         1

20       3.2         1

24       2.9         1

23       0.4        -1

...

我正在缩放数据集,并且我使用以下配置训练和检测异常值:

clf = svm.OneClassSVM(kernel="rbf", nu=0.01, gamma=0.01)

当我的数据集成比例时,没有问题。但是,当数据集以下列方式偏斜时,我遇到了一个问题:

  • 所有高度都在3或4左右,但10左右的高度大约为0。 然后,oneclass-SVM选择10左右的高度作为异常值,而不是选择高度30和性能0.2等值。

我已经解决了问题训练2 SVM将高度分成两组(一个数据集中的高度大约为10,而第二个数据集中的高度大约为10)。

有没有办法解决它而不拆分数据集?

0 个答案:

没有答案