在风控领域最主要的两个问题就是信用风险和欺诈风险,如果能解决这两个问题,只要能拿到资金方的资金,有流量,就可以躺着挣钱了,可以享受着让别人帮你挣钱的乐趣。
异常检测是反欺诈中的很少一部分,还有其他很多方法来做反欺诈,图谱相关我觉得是最有效果的反欺诈。
我们这边用iforest做异常检测,主要用来做三件事
一:数据过异常检测,检测出来直接用决策引擎卡阈值来拒人
二:检测出异常的用户,给异常数据做标签,把这部分用户导入到人工审核
三:检测出异常数据,给有监督树模型,数据加权
iforest 算法部分(最主要是检测出离群数据)
在数学层面理解,分布稀疏的区域表示数据发生在此区域的概率很低,可以认为落在该区域的数据为异常数据
黑色的点为异常点,白色点为正常的点(在一个簇中)。iForest检测到的异常边界为红色,它可以正确地检测到所有黑点异常点。
重点:
Iforest 有点类似于随机森林,是由多个itree构成,采用随机采样一部分数据去构建每一颗树,构建好树之后,预测的过程是把测试记录在Itree上走一篇,看测试数落在叶子哪个节点上,算一下数据的平均高度,关心小于平均高度的数据,异常点一般都是非常稀有的,在iTree中会很快被划分到叶子节点,因此可以用叶子节点到根节点的路径h(x)长度来判断一条记录x是否是异常点
公式:
E(h(x))表示记录x在每棵树的高度均值,
算法原理 :
假设我们有一个一堆检测的特征D
第一步:
我们从特征集D中随机选取一个特征attr1
第二步:
1.确定特征attr1的最大值和最小值
2.随机从特征attr1里面选择一个值value1,这个value1大于最小值小于最大值
3.循环遍历attr1把大于value1的值放到右节点上,把小于value1的值放到左节点上
第三步:
重复第二步
满足以下条件停止:
传入的数据集只有一条记录或者多条一样的记录;
树的高度达到了限定高度
4个测试样本遍历一棵iTree的例子如下:
b和c的高度为3,a的高度是2,d的高度是1。
上代码部分
感慨一下:
最近因为自己的时间比较忙,一直在弄自己的东西,异常检测我就交给我们组里面其他的两个小伙伴做,遇到了很多问题,最主要的问题出现在特征选择上,特别是在做坏人的召回,准确率的时候特别低,不能直视,最开始召回在10%左右,是
特征一定要选择连续性变量