异常检测怎么做,试试孤立随机森林算法(附代码)

      最后更新:2020-03-18 14:13:05 手机定位技术交流文章

      选自blog.paperspace

      作者:Dhiraj K

      机器编译之心

      参与:李石门,

      异常检测在机器学习中似乎是一个比较困难的问题,但也可以通过使用适当的算法很好地解决。本文介绍了隔离林算法,并通过原理和代码的介绍,教您找出数据集中的异常值。


      从银行欺诈到预防性机器维护,异常检测是机器学习中非常有效且常见的应用。在这个任务中,孤立森林算法是一个简单而有效的选择。

      本文包括:

      介绍异常检测;异常检测的用例;什么是孤立的森林?孤立林异常检测;用Python实现

      的异常值是给定数据集中与其他数据点明显不同的数据点。

      异常检测是在数据中发现异常值的过程(数据点与大多数数据点明显不同)

      现实世界中大型数据集的模式可能非常复杂,通过查看数据很难找到模式。这就是为什么异常检测在机器学习中是一个极其重要的应用。

      本文使用隔离林来实现异常检测我们有一个简单的工资数据集,其中一些是不正常的目标是找到这些异常值可以想象,公司的一些员工已经赚了一大笔不寻常的巨额收入,这可能意味着有不道德的行为。

      在继续实现之前,我们将首先讨论一些异常检测的用例。

      异常检测案例

      异常检测在行业中应用广泛以下是一个常见的用例:

      银行:发现异常高的存款每个账户持有人通常都有一个定期存款模式。如果在此模式下有异常值,银行将检测和分析此类异常(如洗钱)

      金融:一种欺诈性购买模式每个人通常都有固定的购买模式。如果在这种模式下存在异常价值,银行需要检测异常价值并分析其潜在的欺诈行为。

      医疗保健:检测欺诈保险索赔和支付

      制造业:可以监控机器的异常行为,从而控制成本许多公司持续监控机器的输入和输出参数。众所周知,在故障发生之前,机器的输入或输出参数将会异常。从预防性维护的角度来看,有必要对机器进行持续监控。

      网络:检测网络入侵任何对外开放的网络都面临着这样的威胁。监控网络中的异常活动可以尽早防止入侵。

      下一步了解机器学习中的隔离林算法

      什么是隔离林

      隔离林是一种用于异常检测的机器学习算法这是一种无监督的学习算法,通过隔离数据中的异常值来识别异常。

      隔离林是基于决策树的算法从给定的特征集中随机选择特征,然后在特征的最大值和最小值之间随机选择分割值,以隔离异常值。这些特征的随机划分将使树中异常数据点生成的路径更短,从而将它们与其他数据分开。

      一般来说,异常检测的第一步是构建“正常”内容,然后报告任何不能被视为正常的异常内容然而,孤立林算法不同于这一原则。首先,它没有定义“正常”行为,也没有基于点计算距离。

      ,顾名思义,孤立的森林不会通过显式隔离异常来隔离异常,它会隔离数据集中的异常值

      隔离林的原理是:离群值小且观测值不同,因此更容易识别孤立的森林整合了孤立的树木,并在给定的数据点中隔离离群值

      隔离林通过随机选择特征,然后随机选择特征的分割值,递归地生成数据集的分区与数据集中的“正常”点相比,孤立离群点需要较少的随机分区,因此离群点是树中路径较短的点,路径长度是通过根节点的边数

      使用隔离林,不仅可以更快地检测异常,而且需要更少的内存

      隔离森林隔离数据点中的异常值,而不是分析正常数据点与其他正常数据点相比,异常数据点的树路径较短,因此孤立森林中的树不需要太大的深度,因此可以使用较小的max_depth值来减少内存需求。

      也适用于小数据集

      然后我们对数据做一些探索性的分析,以了解给定数据的相关信息

      探索性数据分析

      首先导入所需的库进口兔子、熊猫、海鸟和马普洛特利此外,IsolationForest应该从sklearn .系综导入在将

      importnumpyanmportantpandassapped importseabornasnsimportmatplotlib . pyplotasplt from klearn . ensembleimportionforest

      导入到库之后,csv数据应作为padas数据帧读取,并且应检查前十行数据。

      本文使用的数据是不同职业人员的年薪(美元)数据中有一些异常值(例如,工资太高或太低),目标是检测这些异常值。

      df = PD . read _ CSV(' salary . CSV ')df . head(10)

      数据集标头

      为了更好的理解数据,工资数据被绘制成小提琴图,如下图所示小提琴图表是一种绘制数字数据的方法

      一般来说,小提琴图表包含所有的数据在方框图中-中间值的标记和方框或四分位数的标记。如果样本数量不太大,图表也可以包括所有样本点。小提琴画工资

      为了更好地理解异常值,您还可以查看方框图。方框图通常也称为方框图。方框图中的方框表示数据集的四分位数,线条表示剩余的分布。线不代表被识别为异常值的点

      我们通过四分位范围函数检测异常值。在统计数据中,四分位范围(也称为中间延伸或中间50%)是衡量统计离差的指标,它等于第75个数字和第25个数字之间的差值。

      工资的方框图表示右边的两个异常值在

      完成数据的探索性分析后,可以定义和拟合模型

      定义和拟合模型

      我们将创建一个模型变量并实例化IsolationForest类将这四个参数的值传递给隔离林方法,如下所示

      评估者数量:n _ estimators代表综合基本评估者或树木的数量,即孤立森林中的树木数量这是一个可调整数参数,默认值为100;最大样本数:max_samples是训练每个基本评估者的样本数如果max_samples大于样本大小,所有树都将使用所使用的样本进行训练。max_samples的默认值为“自动”如果值为“自动”,则最大样本数=最小值(256,n _ samples)。数据污染问题:算法对这个参数非常敏感。它指的是数据集中异常值的预期比例,并在根据样本分数拟合定义阈值时使用。默认值为“自动”如果选择“自动”,则根据隔离林的原始纸张定义阈值。最大特征:并非所有基础评估者都接受过数据集内所有特征的训练这是从所有用于训练每个基本评估器或树的特征中建议的特征数量该参数的默认值为1模型=隔离林(n _估值器= 50,max _ samples =' auto ',contact = float (0.1),max _ features = 1.0)模型拟合(df

      隔离林模型训练输出在定义了

      模型之后,将使用给定的数据来训练该模型,这通过fit()来实现该方法传入一个参数——使用的数据(在本例中,是数据集中的薪资列)在

      正确训练模型后,将输出孤立的林实例(如图所示)您现在可以为数据集添加分数和例外列。

      添加分数和例外列

      定义并拟合模型后,找到分数和例外列在训练好的模型上调用decision_function()并将薪资作为一个参数传入,以找到分数列的值

      类似地,可以在训练好的模型上调用预测()函数,并将工资作为参数传入以找到异常列的值

      将这两列添加到数据帧df中添加这两列后,查看数据框正如我们所料,数据框架现在有三列:工资、分数和异常值。分数列中的负值和异常列中的-1表示异常异常列中的一个表示正常数据。算法

      给训练集中的每个数据点分配一个异常分数可以定义阈值,并且根据异常分数,如果分数高于预定义的阈值,则该数据点可以被标记为异常。在

      df

      将分数和异常值添加到每一行数据之后,可以打印预测的异常值

      打印异常

      为了打印数据中的预测异常,应在添加分数列和异常列后分析数据如前所述,预测异常在预测列中的值为-1,得分为负基于此信息,预测的异常(本例中为两个数据点)打印如下

      异常=df.loc

      异常输出

      请注意,这不仅可以打印异常值,还可以打印数据集中异常值的索引,这对进一步的处理非常有用。

      评估模型

      为了评估模型,阈值设置为“薪资> 99999”是一个异常值使用以下代码查找数据中的异常值:

      异常值_计数器= len (df [df ['工资'] > 99999)异常值_计数器

      计算模型发现的异常值数量除以数据中的异常值数量,以获得模型的准确性

      打印(‘准确率:’,100 *列表(测向[‘异常’])。计数(-1)/(异常值_计数器))

      精度:100%

      尾注

      本教程讲述了什么是异常值以及如何使用孤立林算法检测异常值还讨论了针对该问题的不同探索性数据分析图表,例如小提琴图表和盒式图表。

      最后,我们实现了隔离森林算法,并打印出数据中真正的异常值我希望你喜欢这篇文章,并希望这篇文章能在未来的项目中帮助你。

      本文由 在线网速测试 整理编辑,转载请注明出处,原文链接:https://www.wangsu123.cn/news/1803.html

          热门文章

          文章分类