样本异常值处理是建模过程数据清洗的一个比较重要环节,可以有效提升后续模型训练拟合的精准度。对于数据异常值的识别,具体实现的方法可以分为统计分析和模型算法两个维度,其中统计分析方法主要是箱线图分布、标准差检测,这是实际场景中最常采用也是我们比较熟悉的方式,而模型算法包括DBSCAN聚类、孤立森林模型等,其原理过程相对前边几种方法较为复杂,但在实际应用后的数据处理效果也表现不错。
结合以上异常值处理方法的应用情况,本文介绍目前在应对黑产,反洗钱领域用得最多的算法,即其中较为经典的孤立森林识别异常值方法。本次对其进行详细介绍,从孤立森林的算法本质、实现方法、参数配置等方面进行全面解读,同时围绕具体的场景案例与样本数据,以实操角度来完成孤立森林识别异常值的完整过程。

1、算法原理
孤立森林(Isolation Forest):采用二叉决策树的方法对样本特征数据进行分裂,整个过程的样本选取、特征选取、分裂点选取都是随机化的方式,对于样本数据中的异常值,较大概率可以通过很少的次数将其切分判断出来。因此,孤立森林的核心思想是根据特征数据分割的次数来衡量某个样本点是否异常。如果划分的次数越多,说明样本点分布较为聚集,基本属于正常数据;如果划分的次数越少,说明样本点分布较为孤立,很大概率属于异常数据。
孤立森林是根据给定数据集的决策树集成建立起来的,与随机森林的算法思想很类似,但是孤立森林是将树上平均路径较短的样本数据点识别为异常值,对于“森林”中的每一棵孤立的“树”,其算法应用过程都是一致的,也就是随机选择m个样本和n个特征,然后在所选特征的最大值与最小值之间随机选择一个值来分割数据点,样本观测值的划分不断递归重复,直到当前树的所有样本观测值都被孤立。这个实现过程我们通过一个可视化流程示意图来表示,具体如图1所示,此决策树的特征变量为X1与X2。

图1 孤立森林决策树

通过以上对孤立森林算法思想的简单整体描述,我们大体可以了解到,异常特征样本点在决策树上与根节点的距离相比正常值更近。孤立森林与Kmeans、DBSCAN等聚类算法识别异常值的原理有很大区别,实现过程不需要借助类似距离、密度等指标的数值大小,来衡量异常样本与正常样本的差异,而是直接通过决策树算法的理念,直接来刻画描述样本数据分布的疏散程度,从而判断样本特征数据的异常可能性大小。因此,孤立森林算法的原理较为简单,且实现效果也较好,在实际场景中的应用度也逐步变得广泛。

2、实现方式
采用python语言实现孤立森林模型算法,可以通过直接调用sklearn库中的IsolationForest(),现简要介绍下模型的重要参数,具体如图2所示。

图2 孤立森林模型参数

(1)n_estimators:森林中生成随机树的数量,默认100;
(2)max_samples:构建子树的样本数量,默认auto=min(256,samples_all);
(3)contamination:异常数据占所有数据的比例,默认0.1;
(4)max_features:构建子树的特征数量,默认1;
(5)bootstrap:采样是否放回抽样,默认False;
(6)random_state:随机种子,默认None。

在配置模型参数时,可以根据样本情况与实际经验进行设置,或者简单直接采取模型函数的默认值。此外,模型训练与模型预测相关函数主要如下(其中X为样本特征数据):
(1)fit(X):训练拟合模型;
(2)predict(X):预测模型(返回1或-1,其中-1为异常值);
(3)fit_predict(X):训练模型+预测模型;
(4)decision_function(X):特征异常分数。

3、案例分析
通过以上内容介绍,我们对孤立森林的原理逻辑与模型实现已经有了大概的认识,接下来我们围绕一个实际场景案例,从实操角度来描述下采用孤立森林算法识别样本异常值的完整过程。我们根据图3代码简单构建一份样本数据如图4所示,具体包括20个样本和3个特征,下面则采用孤立森林模型算法来判断特征X1、X2、X3的异常值分布。

图3 样本构建


图4 样本数据

模型训练与模型预测如下图5所示,依次对特征X1、X2、X3的异常值情况进行判断,并最终返回各特征异常值的判断标签“flag”与异常分数“score”(图6)。

图5 模型训练与预测


图6 特征异常结果

由上图结果可知,异常值标签列X1_flag、X2_flag、X3_flag取值为-1代表对应的特征原始值为异常值,取值为1代表对应的特征原始值为正常值。例如X1_flag=-1,说明X1=76为异常值。因此,本样本数据的特征X1、X2、X3各存在1个异常值。同时,从对应异常值分数score也能进一步看出,异常值的分数结果明显比正常值低很多,现将各特征的异常值分数通过可视化图进行展现,具体如图7所示

图7 特征异常分数

上内容便是孤立森林算法在建模样本异常值检测的场景实现,可以看出这种采用模型方法来识别特征异常值的过程,与箱线图分布、标准差检测等方式有着明显区别,但最终处理分析结果也依然有着不错的表现。同时,由于孤立森林的每棵树都是通过随机采样独立生成的,也不需要通过样本距离、密度等指标来衡量数据的异常情况,因此在数据分析过程中相比KMeans、DBSCAN等方法的处理速度更为高效,这也是孤立森林模型算法的一个独特之处。
在实际建模过程中,样本数据的异常值检测方法包括箱线图分布、标准差检测、DBSCAN聚类、孤立森林等,各位小伙伴可以结合样本数据与场景需求等情况进行应用,尤其是孤立森林算法,在数据处理高效方面能够表现出很好的效果。此外,为了便于大家对孤立森林模型算法识别样本异常值的进一步理解与掌握,本文附带了与以上内容同步的python代码,供大家参考学习,详情请移至知识星球查看相关内容。

原创文章

黑产反诈有方法,异常识别我在行—欺诈反洗钱等领域用得最多的经典算法相关推荐

  1. vivo 游戏黑产反作弊实践

    作者:vivo 互联网安全团队 - Cai Yifan 在数字化.移动化的浪潮下,游戏产业迅速发展,尤其疫情过后许多游戏公司业务迎来新的增长点. 游戏行业从端游开始一直是黑灰产活跃的重要场景.近年来, ...

  2. 让黑产无处遁形 京东云推出风险识别服务

    第45次<中国互联网络发展状况统计报告>显示,截至2020年3月,我国网民规模为9.04亿,互联网普及率达64.5%,网络购物用户规模达7.10亿.如此庞大的网民构成了中国蓬勃发展的消费市 ...

  3. 知物由学 | 行为时序建模在社交引流黑产识别中的应用

    社交欺诈问题日益凸显 近年来,陌生人社交软件满足了城市青年拓宽社交圈和找陌生人倾诉的需求,但由于其天然的婚恋交友属性,导致成为色情/广告引流.以及杀猪盘/杀鱼盘/杀鸟盘等欺诈类黑产频繁入侵的重灾区. ...

  4. 技术揭秘 | 互联网广告黑产盛行,如何反作弊?

    简介:有人的地方就有江湖.广告作为互联网公司商业变现最为直接快捷的途径,广告作弊已经形成了一个有完整链条的黑产行业.如何通过技术手段识别并防范广告作弊?本文通过介绍常见的广告计费模式和虚假流量的获益形 ...

  5. “黑产“识别算法(社区检测,相似度,关联关系)

    "黑产"识别算法 前言 黑产的特性 通过业务特性识别 通过关联关系识别(非监督学习) 通过行为相似度识别(非监督学习) 通过用户画像识别(分类.预测) 前言 我们讨论的黑产识别,实 ...

  6. 浅谈社交行业风控如何做以及黑产危害

    据<2019 网络黑灰产治理研究报告>估算,2019 年我国网络安全产业规 模为五百多亿元,而黑灰产已达近千亿元规模;全年因垃圾短信.诈骗信息.个 人信息泄露等造成的经济损失估算达千亿元. ...

  7. 饿了么、滴滴用它对抗刷单和黄牛, “蚁盾”让黑产无处藏身

    移动互联网时代,越来越多的交易和操作转移到了线上,而"黑色产业"却也随之扩散到各行各业.从电商行业出现的炒信刷单.O2O行业的垃圾小号.公众服务行业的黄牛倒卖,到羊毛党.骗贷骗保党 ...

  8. 数美科技 | “双十一”全网狂欢,防“黑产”刻不容缓

    距2009年淘宝首创"双十一"至今,已过去了十余年,这场一年一度的购物狂欢,给了全国"剁手党"多年来始终无法抗拒的理由--"价格史低"!优惠 ...

  9. 超千人围观,普及 “反诈” 常见场景及应对手段,还有黑灰产攻防手段

    10 月 26 日,由软件绿色联盟举办的 "反诈" 主题直播活动已圆满落幕.本次直播我们特邀了两位 360 的资深技术专家,对<电信网络诈骗趋势解读与应对>.<黑 ...

最新文章

  1. dx9 lock unlock效率太低_synchronized的缺陷,Lock的诞生
  2. 公司考勤模块集成百度地图SDK
  3. Linux 数据流重定向
  4. 【Vue】脚手架 Vue CLI 的使用
  5. Dotnet Core Windows Service
  6. Linux显示txt文件,如何在Linux中显示文本文件中的某些行?
  7. xd使用技巧_魔兽世界怀旧服老玩家才会的治疗技巧,这四个技能需要看时机选择...
  8. C++ I/O 流 格式控制(上)
  9. (五)使用生成对抗网络 (GAN)生成新的时装设计
  10. 简易sql词法分析器和语法分析器
  11. ASIC 与FPGA比较谈
  12. java 前后端分离_Java项目如何实现前后端分离
  13. Python三大神器之Virtualenv
  14. HC05蓝牙模块配对步骤及AT模式设置方法(转载并进行部分修改)
  15. python摄像头识别快递单号,python 人脸识别以及条码识别(快递出库软件)
  16. java 解决oracle US7ASCII编码,sql查询时
  17. UEFI Specification 第一章 引言(基于UEFI_Spec_2_9_2021_03_18)
  18. C#转Java心路历程
  19. 城市选择插件 V-Distpicker 组件详解以及全套用法
  20. web performance tu ning

热门文章

  1. DRM系列(3)之DRM_IOCTL_MODE_MAP_DUMB
  2. 单总线CPU微程序控制器设计
  3. 前端开发中的地理定位问题小总结
  4. Electron:前端人的最佳跨平台解决方案
  5. python识别图像上的文字
  6. 大数据决策的误区案例之一
  7. jquery获取元素索引值index()
  8. latex添加背景图片
  9. Minecraft 命令方块:简易计时器
  10. 每日下载次数限制php,织梦实现会员限制用户单日下载软件资源的上限方法