如何训练isolationForest模型以给出最少的误报数?
Posted
技术标签:
【中文标题】如何训练isolationForest模型以给出最少的误报数?【英文标题】:How to train isolationForest model so as to give the minimum number of false positives? 【发布时间】:2018-10-02 01:27:34 【问题描述】:在使用隔离森林对数据进行异常检测时,我们应该只使用正常数据还是混合使用正常数据和异常数据来训练模型?还有什么是多变量数据异常检测的最佳算法?我想要最少的误报。
-
我发现污染水平低于 5%。
还有什么是用于多变量数据异常检测的最佳 ML 算法,以使误报率降至最低。
注意:我知道减少误报是一个调整模型的问题,但我想知道最有效的算法。从博客中我了解到 IsolationForest 是最新、最有效的无监督异常检测算法之一。
【问题讨论】:
烹饪距离是另一种选择。它在 R 中可用,例如 Cooks Distance Function:rdocumentation.org/packages/car/versions/1.2-16/topics/… python 中有没有这个库? 【参考方案1】:目前,scikit-learn v0.20.3
已实现 isolation forests。 IForest 在处理高维、多变量数据方面相当出色:
“在随机选择的属性中,在随机选择的分区点处对数据进行递归分区,以便将实例隔离为实例越来越少的节点 直到这些点被隔离为包含一个实例的单例节点。” --Charu C. Aggarwal (in Chapter 5 of Outlier Analysis)
我不能说它给出了最小误报的事实,因为它实际上取决于许多因素,包括您的训练数据。据我所知,它在识别异常和/或异常值方面做得很好(即使是离散的时间序列)。
您可以将contamination
参数设置为您心中所需的任何百分比,只要它是 (0., 0.5) 中的float
。
“数据集的污染量,即数据集中异常值的比例。在拟合时用于定义决策函数的阈值。”
默认为 0.1(或 10%),因此您可以设置 contamination=0.04
(4%)。
from sklearn.ensemble import IsolationForest
clf = IsolationForest(contamination=0.04)
【讨论】:
感谢您的回答。可以请您看一下相关帖子here吗?以上是关于如何训练isolationForest模型以给出最少的误报数?的主要内容,如果未能解决你的问题,请参考以下文章
手把手写深度学习(13):如何利用官方预训练模型做微调/迁移学习?(以Resnet50提取图像特征为例)
手把手写深度学习(14):如何利用官方预训练模型做微调/迁移学习?(以Resnet50提取图像特征为例)
如何使用 PyTorch 在预训练模型上添加新层? (给出了 Keras 示例。)