作者|黄崇远(题图:ssyer.com,CCO协议) 公号,数据虫巢(ID: blogchong)
“ 这篇偏理论,请做好查资料准备。”
所谓异常检测,即在正常的流程中,你需要识别出来潜在的异常,而一般情况下,异常则意味着风险,所以,在实际的场景中,这类诉求是非常常见的。
01
—
实际生活中的异常检测场景
我们的大主题是广告,所以还是先以广告为例,在实际的广告投放中,什么场景下会有类似的异常检测的诉求呢?
广告投放的核心目标是给流量投放广告,然后最终期望用户点击广告带来转化,这种所谓的转化有可能是直接的点击(常规CPC广告),也有可能是APP的下载(常规的APP应用下载投放),还有可能是咨询沟通(在线咨询),也有可能是表单收集(常见的H5类型投放,表单收集)。
每产生一个Click,每产生一个下载,每产生一次表单提交,这都意味着需要扣广告主的钱,如果说点击/下载/表单填写都是假的呢?这个职责谁来承担,反正广告主钱是已经扣了。
以表单提交为例,H5的投放,大部分对于广告主来说还有后续的一些其他操作,诸如拿着表单信息进行离线的电话沟通等,一方面推广费用已经扣除,另一方面收集过来很大一部分是无效表单,联系不上,恶意辱骂,信息错位等等,其离线的进一步营销也是需要成本的。这就造成了无效成本的进一步增大。
那么,会有这么多错误点击和错乱表单的存在吗?真的是有的,有一些习惯性无聊的,看到广告就瞎点;有一些是竞品玩家,纯粹故意恶心你来的;还有一些人性本恶的,估计进来骂人以及找骂的;还有一些机器人等等。
针对这些人这些情况,我们如果能提前一步识别出来,避免将广告投放给他,如果能够控制召回和准确率,岂不妙哉;退一步讲,就算提前预测不出来,点击之后,产生表单之后再进行识别,这样也可以避免给广告主造成经济损失,也是可以的。
但是,这毕竟少数人,如果是大规模的情况,那意味着你大广告投放环境实在太糟糕了,建议不要做广告了。
这种抓“坏人”的情况除了广告领域,其他领域也大有存在,比如网站或者平台上的恶意流量识别,电商里找撸羊毛的羊毛党,贷款领域里的潜在贷款风险人的识别等。
各行各业,都有类似的诉求,是的,找“坏人”。
02
—
异常检测与分类
可以看到,我们核心目标就是找“坏人”。这不是典型的分类问题吗?你是好人,或者你是坏人,二选一,没得挑,二值分类问题。
但这真的不是典型的分类问题。
还是以广告为例,一次广告投放以100万的曝光量计算,你觉得会遇到多少“坏人”,会有10万?如果你的平台高达10%的坏人比例,那你的平台估计早得关门大吉了。
所以,这种情况,永远都是小比例事件。100万的曝光,以1%的点击率来算,进来的人1万个,1万个里有近百个捣乱的已经够你喝一壶的了。
所以,实际比例可能是99.99万比100,如果是典型的分类问题,五五分是正常的,三七开也算是过得去,但没怎么见9999比1这么悬殊比例的典型分类问题。
所以,异常检测从来都不是典型的分类问题,是典型的非典型分类问题。他具有以下几个特点:
“ 第一,一定是茫茫人海里找到少数特殊的存在,严格意义上还是分类。”
“ 第二,但对于这些人来说,找到他们非常重要,因为他们的有害性很高,这意味着在某种合适平衡的情况下,我们需要尽可能的提升召回率。”
“第三,在很多情况下,我们并不能很好的找到很多那些有问题的正样本,然后负样本中极有可能会包含正样本,而正负样本量是属于极度失衡的状态。”
这三点应该比较好理解,所以针对几类问题,我们需要找到优化的方法,不能一板一眼的通过常规分类手段实现预测模型的构建。
03
—
PU-Learning
所谓PU-Learning,即P代表的是Positive,U代表的是Unlabel,就是上述中第三点,负样本实际上是泛样本。我们可以确保异常的正样本中没有“好人”,但不能保证负样本中没有“坏人”。
实际上,很多时候根本就没有啥负样本,就是在大池子捞一批人出来,所以才有Unlabel的说法,因为没法区分,量太大了,能显性找出来的,都已经丢到正样本里头去了。
所以这