【问题标题】:One Class SVM and Isolation Forest for novelty detection用于新奇检测的一类 SVM 和隔离森林
【发布时间】:2019-10-15 12:42:12
【问题描述】:

我的问题是关于新奇检测算法 - 隔离森林和一类 SVM。 我有一个训练数据集(具有 4-5 个特征),其中所有样本点都是内点,我需要将任何新数据分类为内点或异常点,并相应地摄取另一个数据帧。

在尝试使用隔离森林或一类 SVM 时,我必须在训练阶段输入污染百分比 (nu)。但是,由于训练数据集没有任何污染,我是否需要将异常值添加到训练数据框中并将该异常值部分作为 nu。

此外,在使用隔离森林时,我注意到每次预测时异常值百分比都会发生变化,即使我没有更改模型。除了进入扩展隔离森林算法之外,有没有办法解决这个问题。

提前致谢。

【问题讨论】:

  • 你好,这是一个老故事,但你找到解决办法了吗?

标签: machine-learning one-class-classification


【解决方案1】:

关于隔离林的污染

如果您为正常实例(所有内点)训练,则应将污染设为零。如果您不指定此项,污染将是 0.1(对于版本 0.2)。

下面是一个简单的代码来展示这一点,

1- 导入库

import numpy as np
import matplotlib.pyplot as plt
from sklearn.ensemble import IsolationForest
rng = np.random.RandomState(42)

2- 生成二维数据集

X = 0.3 * rng.randn(1000, 2)

3- 训练 iForest 模型并预测异常值

clf = IsolationForest(random_state=rng, contamination=0)
clf.fit(X)
y_pred_train = clf.predict(X)  

4- 打印异常数

print(sum(y_pred_train==-1))

这会给你0个异常。现在,如果您将污染更改为 0.15,程序会从您已经拥有的同一数据集中指定 150 个异常(由于 RandomState(42) 而相同)。

[参考文献]:

1Liu, Fei Tony, Ting, Kai Ming and Zhou, Zhi-Hua. "Isolation forest." Data Mining, 2008. ICDM'08. Eighth IEEE International Conference

2Liu, Fei Tony, Ting, Kai Ming and Zhou, Zhi-Hua. "Isolation-based anomaly detection." ACM Transactions on Knowledge Discovery from Data (TKDD), (2012)

【讨论】:

  • 感谢您的回复。我确实明白,在将污染因子设置为 0 时,将对模型进行训练,以便在训练数据集上没有检测到异常,这正是基本事实。然而我的目标是当我在另一个新数据集上使用这个模型时,它应该能够找出这个新数据集中关于我的训练数据的异常值和内点值是什么。由于已训练的模型在 contamination=0 的情况下进行了训练,因此可以得出结论,新数据集中的每个样本也是一个内点,异常检测算法失败。我该如何解决这个问题?
【解决方案2】:

“仅使用正常数据(内点)进行训练”。

这违背了隔离森林的本质。这里的训练神经网络中的训练完全不同。 因为每个人都在使用这些但没有弄清楚发生了什么,并且用 20% 的 ML 知识写博客,所以我们有这样的问题。

clf = IsolationForest(random_state=rng, contamination=0)
clf.fit(X)

fit 在这里做什么?是训练吗?如果是,什么是受过训练的

在隔离森林中:

  1. 首先,我们构建树,
  2. 然后,我们通过每棵树传递每个数据点,
  3. 然后,我们计算隔离点所需的平均路径。
  4. 路径越短,异常分数越高。

contamination 将确定您的阈值。如果是0,那你的threshold是什么?

请先阅读original paper 以了解其背后的逻辑。并非所有异常检测算法都适合所有场合。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-11-16
    • 1970-01-01
    • 2017-12-16
    • 2019-07-20
    • 2018-09-10
    • 2019-07-11
    • 2017-08-21
    • 1970-01-01
    相关资源
    最近更新 更多