使用无监督的隔离森林,如何从异常分数中识别出最佳异常值数量?

数据挖掘 无监督学习 数据科学模型
2021-09-17 19:01:59

我正在使用无监督隔离森林算法并计算异常分数来检测二维玩具数据集中的异常值。从散点图中,我能够检测/可视化具有最高异常分数的数据点(例如:数据中的前 10 个或前 15 个异常值)作为我的异常值。异常值的数量是用户决策的主观因素(例如:0.5>S>1 的异常值是异常值,小于 0.5 的所有值都不是)还是有办法根据异常值检测最佳异常值数量?

使用隔离森林进行异常值检测

3个回答

在大多数情况下似乎使用隔离森林的方式涉及对您期望的异常值比例进行某种事先“猜测”(如果您想安全起见,您可能会倾向于增加它) . 根据您设置的比例(它是 中的contamination参数scikit-learn),观察值会根据它们的异常分数进行标记。

话虽这么说,没有什么能阻止你在运行隔离森林后提出自己的规则。您可以绘制异常分数,然后根据分数的分布亲自查看另一个阈值是否有意义。这将是一个更具经验性的规则。

这将是一个经验法则。您可以想出一些逻辑来标记异常值(如果与平均值相差 2-std,则将其标记为异常值,然后使用此百分比来设置污染水平)。

有一个称为score的属性,您可以将其用作 model.predict_score(X) ,它基于此返回异常分数,您可以将其分类为内点或异常点。