对于one-class SVM,是否可以找出检测到的异常值中的哪些参数异常?

For a one-class SVM, is it possible to figure out which parameter(s) in the detected outlier are anomalous?

例如,我在每加仑英里数、马力和价格上训练了我的 one-class SVM:

(19.5, 140.0, 32000)
(24.1, 200.0, 40000)
(15.2, 101.2, 45000)

当我输入:
(23.3, 105.2, 1000000)

它被正确识别为异常值。但我也对 为什么 它是异常值感兴趣。有没有办法让SVM告诉我价格太高了?

如果您使用的是非线性 class SVM(而线性 SVM 并没有多大意义),那么简短的回答是否定的。一个 class svm 中的异常值检测不是一组简单的规则 "feature x has to be between A and B"。它基于估计数据集的边界,因此唯一有效的答案是 "this is an outlier because in the metric induced by the kernel used, distance to the boundary is A, while acceptable one found during training is B"。

特别是,这意味着决策是高度非线性的,因此 (23.3, 105.2, 1000000) 可以是离群值,(23.3, 105.2, 999999) 是离群值,再次是 (23.3, 105.2, 999998)一个离群值,并且 (23.3, 105.2, 999997) 又是一个离群值(显然具有不同的训练集)。