尝试理解隔离林算法

2024-04-29 10:25:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试将isolation forest algorithm与Python scikit learn一起使用。

我不明白为什么要生成集合X_testX_outliers,因为当我得到数据时,我不知道其中是否有异常值。但也许这只是一个例子,我不必为每个案例生成和填充集合。我认为隔离林不必接收干净的X_train(没有异常值)。

我误解了算法了吗?我是否必须使用其他算法(我考虑过一个类SVM,但它的X_train必须尽可能干净)?

隔离林算法是无监督算法还是有监督算法(如随机林算法)?


Tags: 数据test算法trainscikitalgorithmlearn案例
2条回答

问题

我不明白为什么要生成集合X_testX_outliers,因为当我得到数据时,我不知道其中是否有异常值。

回答:

您不必生成X_outliers。这只是一个示例,向您展示隔离林可以检测异常值。这个数据集是随机的。与原始数据无关。

你需要做的只是将你的IsolationForest与你的训练数据相匹配。然后,如果需要,签入一个测试集-作为预处理步骤-如果有一些异常值。

“隔离林算法是无监督算法还是有监督算法(如随机林算法)

隔离树是一种无监督的算法,因此它不需要标签来识别异常值。它遵循以下步骤:

  1. 对数据进行随机递归分区,并将其表示为一棵树(Random forest)。这是用户定义子样本参数和树数的训练阶段。作者(Liu and Ting,2008)建议子样本和100棵树的默认值为256。当树的数目增加时,达到收敛。但是,可能需要根据具体情况进行微调。

image

  1. 一旦数据的递归分区完成,就到达树的末尾。预计到达异常值所需的距离远小于正常数据所需的距离(见图)。

  2. 对路径距离进行平均和归一化,以计算异常得分。异常得分为1被视为异常值,接近0的值被视为正常值。

异常值的判断是根据得分进行的。不需要标签列。因此它是一种无监督算法。

相关问题 更多 >