【问题标题】:Calculating anomaly score for Anomaly detection using One-Class SVM使用一类 SVM 计算异常检测的异常分数
【发布时间】:2018-12-28 09:50:20
【问题描述】:

我有一个关于使用 One-Class SVM 计算异常检测的异常分数的问题。我的问题是:我如何使用决策函数(X)来计算它,就像我在隔离森林中计算异常分数的方式一样? 非常感谢,

【问题讨论】:

    标签: machine-learning anomaly-detection


    【解决方案1】:

    在隔离森林中,异常分数是衡量选择特定观察所需路径的平均长度与选择“正常”观察所需的平均路径长度的偏差

    这里的平均值取自所有使用的不同树。由于 SVM 不是一种集成方法——这种异常分数的概念并不直接适用。

    一种方法,我不知道这在统计/科学上听起来如何,测量异常分数是基于预测变量的子集构建多个 SVM 分类器。然后,您可以使用特定点被分类为异常值的次数百分比作为异常分数的代理。

    【讨论】:

      【解决方案2】:

      是的,您必须使用decision_function() 作为一类 SVM 中异常分数的度量。

      看看这个example,你可能会得到更好的理解。

      clf.decision_function(X_test)
      # returns the signed distance to the separating hyperplane.
      # Signed distance is positive for an inlier and negative for an outlier.
      

      【讨论】:

      • 非常感谢您的回复,但是有没有关于如何通过计算 decision_function() 计算异常分数的示例?
      • 我已经在我的回答中给出了示例命令,但是通过示例链接,它对OneClassSVM 有更多解释。
      【解决方案3】:

      这是一个已知问题,默认情况下 scikit 实现是否提供异常分数。

      解决此问题的一种方法是使用 decision_function (https://scikit-learn.org/stable/modules/generated/sklearn.svm.OneClassSVM.html#sklearn.svm.OneClassSVM.decision_function),但采用以下方式:

      anomaly_metric[i] = max_value_decision_fn - decision_fn[i]
      

      其中 i 是第 i 个数据点。

      来源:https://activisiongamescience.github.io/2015/12/23/Unsupervised-Anomaly-Detection-SOD-vs-One-class-SVM/#sklearn-Users-Beware

      How to calculate AUC for One Class SVM in python?

      【讨论】:

        猜你喜欢
        • 2015-02-28
        • 2019-12-13
        • 2021-12-18
        • 2021-05-25
        • 2013-04-20
        • 2020-09-25
        • 2019-02-15
        • 2020-11-18
        • 2018-05-28
        相关资源
        最近更新 更多