可能有些人还不知道,黄姐姐消失的这几个月,去生了个孩子。宝宝满月去打疫苗,被医院震耳欲聋、此起彼伏的小朋友哭声吓到了,回来后哭闹了好几天。于是乎,黄姐姐这个新手妈妈开始各种咨询医生,老人家,并在网上查:宝宝受到了惊吓怎么办?经过筛选,尝试了几种操作性比较强,且不那么吓人的方法:
1.安全感:多抚摸,多抱,让宝宝时常听到妈妈的声音;2.吹气:冲著额头吹气,让宝宝眨眼,重复几次;3.趴在手臂上睡:一个神奇的抱娃姿势;4.补充微量元素:主要是钙和锌; 5.吃药:治疗「惊悸不眠」的药《猴枣散》;6.半夜叫魂:晚上宝宝睡著后,念到:摸摸毛(头发),吓不著;摸头芯儿,吓一阵儿;摸摸耳,吓一会儿;xx回来吧。7.敲床:敲著床边念到:床帮床帮神,俺的小孩丢了魂,您给俺找,您给俺寻,找来交给他母亲。8.贴纸:在一张纸上书写「天皇皇,地皇皇,我家有个夜哭郎。过路君子念三遍,一觉睡到大天亮」,并贴到人来人往的街道上,希望更多的人可以看到并念出来。
1.安全感:多抚摸,多抱,让宝宝时常听到妈妈的声音;
5.吃药:治疗「惊悸不眠」的药《猴枣散》;
黄姐姐向来以唯物主义者自居,不信什么鬼神说。所以,当然黄姐姐先是用了方法1-5,三天后并没有任何改善,于是在第四天,才在外婆的商(bi)量(po)下,用了方法6-8。
神奇的是,到了第五天,宝宝竟然可以安心睡觉了,而且也不再哭闹了。
这时,外婆问了句:你觉得,是哪种方法管用了?
黄姐姐实在不想说是6-8管用,便回答个「不知道」敷衍过去了。
其实,这像极了黄姐姐经常被问到的一个问题:从哪个角度可以看出这是个欺诈分子?以及哪个栏位比较好用?
如果单纯地从理性分析(暂且忽略鬼神说的不可解释性),1-8被黄姐姐分成两组:
组A:1-5;
组B:6-8。
整理一下:组A应用了4天,组B应用了1天,且最终结果为True。
那么,最终结果为true,可能是组A作用力的累加效果,也可能是组B立竿见影的效果。想要确定,还需要进行重复实验。确定了组A和组B后,还可以进一步拆分分析。比如,可能是组A的方法1加上组B的方法6起到的作用。
一个著急的母亲,会同时采用多种方法来解决宝宝的非正常哭闹;一个反欺诈从业者,也希望一下子把所有栏位输入模型,跑出个结果来防范欺诈。但正如黄姐姐所做的,先去掉操作性不强的,再去掉不吓人的方法;由于一些栏位的杂讯很大,同样需要我们先予以去除,然后再进行系统的分析。这一过程需要充足的样本和不断的思考和实践,著实费时费力。
不过,基于一些项目经验,黄姐姐尝试了很多处理不同list的方法。以下分享几个比较有效的处理方法。
先科普一下Apriori,以免有些读者不了解。Apriori是关联关系挖掘一个比较经典的演算法,其一个著名的应用就是指导超市货架上物品的摆放位置——「尿布啤酒」问题。也就是,通过对顾客购买商品的关联分析,发现购买了尿布的人中也有很多购买了啤酒。单纯想一想觉得很不可思议,而通过调查发现,去超市购买尿布的多为男人。反正也要跑到超市买尿布,索性再给自己捎上两罐啤酒,算是自己的「跑腿费」了。是的,Apriori演算法对于发现这些可能违背常识的事物和事物之间的内在联系是非常有效的。而团伙欺诈,也属于这一类问题。很多欺诈团伙的作案手法,在被揭发前,也是不为人知且看上去匪夷所思的。但鲜有将Apriori演算法应用于反欺诈的,究其原因,大概是由于关联浓度过低以至于难于检测。试想,假设一个平台,拥有2000万用户,其中有100个人,采用(同一IP 10.10.10.10 +同一小时注册23:00:00+同一手机前缀1880000xxxx)这一组合发起了虚假注册。如果采用Apriori来计算支持度,可以想像,由于巨大的分母,这一组合的置信度会非常低。这与「尿布啤酒」不同,欺诈检测的栏位更多,栏位值更丰富,直接运用值(value)来做关联挖掘,几乎是不可能完成的事情。这就像把一勺盐扔进一片海,企图提高整片海域的咸度一样。
对App list的挖掘,也有类似的问题。APP name太多太复杂,直接调用Apriori很难看到效果。但其实我们稍微动动脑筋,就会发现,「尿布啤酒」问题中,我们得到的结论是「尿布」+「啤酒」这一组合常常出现,而不是「青岛啤酒」+「帮宝适尿布」,对吗?相信大家已经看到了问题所在,是的,我们在对App list进行Apriori运算时,采用品类数据可能会更好。事实的确如此,我们可以做如下操作:
以上,便可得到一些比较有趣的组合。例如,黄姐姐发现:
统计分析可以从以下几个角度进行:
举个例子,在一个项目中,黄姐姐统计的部分借款类app的odds,如下:
黄姐姐将其分成三个风险等级:高、中、低。并做了人工的keywords提取处理,以涵盖更多的新app(可能未在统计列表中,以及未来可能会出现的借款app名称),例如:将「来借贷款」、「借点钱贷款」、「贷款123」和「搜易借贷款」四个的公共词「贷款」提取出来,作为keyword入模型,其风险等级为「中」,风险系数(odds)为14.88。如此这般,假设有一个新的借款app,名称叫「黄姐姐诚信贷款」,便也会被纳入这一等级,并赋予此风险系数。
此列表需要在每次模型更新时重新计算,建议维护时间为每月或每季度一次。
wifi list主要有两个用途,一是可以匹配关键词,如「借款」,「贷款」,「钱」等;二是可以对wifi name做聚类,发现那些地理距离很近的人群,甚至是在同一个房间的人群。
衍生建议:
Risk_wifi_ssid:是否命中高风险关键词,value = true / false
这里,我们将简讯拆成两个元素:一是简讯号码,二是简讯内容。对简讯号码的处理比较简单,主要是进行统计分析,我们可以这样:
对于简讯内容,建议采用两个极端:极好和极坏。
通讯录也可拆成两个元素:一是存储的昵称;二是存储的号码。这个也是个挺有趣的事情,黄姐姐的项目中,发现有些统计真的让人匪夷所思。比如,通讯录4个字昵称占比较高的用户逾期率高;非11位手机号码占比高的用户逾期率也高。这个很难有一个特别合理的解释,但事实就是如此,就像文章开头关于叫魂的灵异方法一样。
Keywords也挺有趣,黄姐姐发现,存储的昵称中,如果包含了地址关键词,则逾期率较高;还有些人,爸爸妈妈的号码就存了十几个,请问谁是你的亲爸亲妈?其他都是干爹?还有一类比较常见的,就是有明显属性的词,例如:贷款中介黄经理。
由于通话详单数据量通常非常大,所以常常需要先做过滤处理。
过滤方式有两种:
一是把主叫和被叫都是本产品的客户的用户过滤出来;
二是过滤掉被叫时常超过15秒(或其他阈值,根据数量级确定)的通话;
通话详单可以做如下统计:
以上数据作为罗辑回归(LR)的输入,最合适不过,效果很好。
GPS list严格来讲,应该是GPS网格list。操作方式非常简单,把目标区域按照一个一个方格划分(例如:100m*100m),然后根据坏人标签统计每个方格内的坏人浓度,可以把格子按照黑白灰划分,或者按照更多的等级划分,以此来决定是否对某一个方格内的用户放款,或者将其作为xgboost的一个输入,效果也很好。
风控建模要处理很多list,对各种list进行合适的处理并衍生出有效的特征,对模型效果大有裨益,对A卡KS等指标的贡献也会比较显著,虽然有些list的组合看起来那么让人匪夷所思。但这世间的事,本不是都能解释的,就像文章开头,连自诩为坚定的唯物主义者的黄姐姐都开始叫魂了,你还在等什么?如果将每一种list的处理结果都生成一个风险分,作为A卡的一个输入,相信你会让自己的模型起死回生。
BTW:如果有足够的样本,黄姐姐真的挺想用机器学习研究下治疗小儿惊吓的方法,会不会成为砖(wu)家(po)呢?哈哈哈……
来个硬广:
想跟黄姐姐一样成为风控小巫婆的童鞋,欢迎关注以下招聘信息