@异常检测怎么做,试试孤立随机森林算法(附代码)
选自blog.paperspace
作者:Dhiraj K
机器之心编译
参与:李诗萌、一鸣异常检测看似是机器学习中一个有些难度的问题 , 但采用合适的算法也可以很好解决 。本文介绍了孤立森林(isolation forest)算法 , 通过介绍原理和代码教你揪出数据集中的那些异常值 。
文章图片
文章图片
从银行欺诈到预防性的机器维护 , 异常检测是机器学习中非常有效且普遍的应用 。在该任务中 , 孤立森林算法是简单而有效的选择 。
本文内容包括:
介绍异常检测;
异常检测的用例;
孤立森林是什么;
用孤立森林进行异常检测;
用 Python 实现 。
异常检测简介
离群值是在给定数据集中 , 与其他数据点显著不同的数据点 。
异常检测是找出数据中离群值(和大多数数据点显著不同的数据点)的过程 。
真实世界中的大型数据集的模式可能非常复杂 , 很难通过查看数据就发现其模式 。这就是为什么异常检测的研究是机器学习中极其重要的应用 。
本文要用孤立森林实现异常检测 。我们有一个简单的工资数据集 , 其中一些工资是异常的 。目标是要找到这些异常值 。可以想象成 , 公司中的一些雇员挣了一大笔不同寻常的巨额收入 , 这可能意味着存在不道德的行为 。
在继续实现之前 , 先讨论一些异常检测的用例 。
异常检测用例
异常检测在业界中应用广泛 。下面介绍一场常见的用例:
银行:发现不正常的高额存款 。每个账户持有人通常都有固定的存款模式 。如果这个模式出现了异常值 , 那么银行就要检测并分析这种异常(比如洗钱) 。
金融:发现欺诈性购买的模式 。每个人通常都有固定的购买模式 。如果这种模式出现了异常值 , 银行需要检测出这种异常 , 从而分析其潜在的欺诈行为 。
卫生保健:检测欺诈性保险的索赔和付款 。
制造业:可以监测机器的异常行为 , 从而控制成本 。许多公司持续监视着机器的输入和输出参数 。众所周知 , 在出现故障之前 , 机器的输入或输出参数会有异常 。从预防性维护的角度出发 , 需要对机器进行持续监控 。
网络:检测网络入侵 。任何对外开放的网络都面临这样的威胁 。监控网络中的异常活动 , 可以及早防止入侵 。
接着了解一下机器学习中的孤立森林算法 。
什么是孤立森林
孤立森林是用于异常检测的机器学习算法 。这是一种无监督学习算法 , 通过隔离数据中的离群值识别异常 。
孤立森林是基于决策树的算法 。从给定的特征集合中随机选择特征 , 然后在特征的最大值和最小值间随机选择一个分割值 , 来隔离离群值 。这种特征的随机划分会使异常数据点在树中生成的路径更短 , 从而将它们和其他数据分开 。
一般而言 , 异常检测的第一步是构造「正常」内容 , 然后报告任何不能视为正常的异常内容 。但孤立森林算法不同于这一原理 , 首先它不会定义「正常」行为 , 而且也没有计算基于点的距离 。
一如其名 , 孤立森林不通过显式地隔离异常 , 它隔离了数据集中的异常点 。
孤立森林的原理是:异常值是少量且不同的观测值 , 因此更易于识别 。孤立森林集成了孤立树 , 在给定的数据点中隔离异常值 。
孤立森林通过随机选择特征 , 然后随机选择特征的分割值 , 递归地生成数据集的分区 。和数据集中「正常」的点相比 , 要隔离的异常值所需的随机分区更少 , 因此异常值是树中路径更短的点 , 路径长度是从根节点经过的边数 。
用孤立森林 , 不仅可以更快地检测异常 , 还需要更少的内存 。
孤立森林隔离数据点中的异常值 , 而不是分析正常的数据点 。和其他正常的数据点相比 , 异常数据点的树路径更短 , 因此在孤立森林中的树不需要太大的深度 , 所以可以用更小的 max_depth 值 , 从而降低内存需求 。
推荐阅读
- 『价格』价格差 100,华为 Mate30 和 iPhone SE2 怎么选?答案简单!
- 『市场份额』鲁大师公布一季度手机排名,华为荣耀排名第一、二名,安兔兔怎么看?
- 『冬季摄影』冬天摄影:怎么拍摄以花朵为主题的冬季照片?
- 「运营商」半夜12点断我网络,一气之下换了运营商,看看怎么回事
- #外观#李现代言的荣耀30,被iPhoneSE2截胡?怎么选不用我说了吧!
- 小鱼一键重装系统@微软mse杀毒软件怎么样
- [世界]智能AI未来将全面取代人类世界?对此,你怎么认为的?
- 中央处理器@CPU是怎么看懂代码的?
- #宅女科技范#智能AI未来将全面取代人类世界?对此,你怎么认为的?
- #轻度玩机#李现代言的荣耀30,被iPhoneSE2截胡?怎么选不用我说了吧!
