用户评分设计与实现(风控方向)
维度 == 标签,泛指描述恶意行为的一类合集,不必纠结文中用词,看官就当做一回事, 就是你理解的那回事就行。
- 不区分维度
不管你是IP维度、设备维度、xxx维度,只要能描述恶意倾向就算 - 不面向维度
不面向某一维度打分,只面向用户 - 不绝对公平
不同维度之间的权重可能失衡,由基准分控制,或者说由“业务专家”配置;但保证在相同业务场景下相同标签,恶意次数、最近分布与得分正相关 - 不同业务场景可以不同侧重点
每个业务场景可以各自一套基准分值逻辑,所有业务共用
一套得分增值逻辑
总原则:
每天基于前一天的分值,增量更新
得分越高,用户越黑
纵向分
下文,将所有具备恶意倾向的描述,统称为“标签”,比如代理IP登录是一个维度,也可以说是一个标签,工程师喜欢说维度,运营喜欢说标签.看官随你自己
-
基准分
每个标签命中一次就在原先基础上直接加的分数基准分,用来度量不同标签的
危害程度
,举例打架10分,骂人5分,事情危害程度不同 -
浮动分
(频次分)
每个标签当天命中N次(次数,次数,不是人数,人数相关,下文单独会说),乘以浮动系数后加的分数浮动分,用来度量某个恶意行为
重复程度
,偷盗1次,和偷盗100次,量刑不同 -
级联分
(组合分)
每个标签与其他标签同时满足后,额外加的分,此分不再追加浮动系数级联分,用来描述
特定组合下,危害加剧程度
,额外加分的场景。往往适用于几个弱标签,组合出一个强标签。就像同时具备"夜晚活动"、“携带撬锁工具”、"走路躲躲藏藏"等特征,大概率是啥?三个单独看,未必多可恶吧。猫夜晚活动,开锁匠携带撬锁工具,便衣police还走路躲躲藏藏呢?
-
衰减分
(随时间减分,慢性洗白
)
每个标签在考察周期(默认一个月),命中情况的分布,命中密集分布在近期,则不洗白或者低速洗白;不命中密集分布在近期,则洗白或者高速洗白为何要洗白,不用说了吧?总不能犯了一次错,撸了次羊毛,一辈子都不给改过自新啊?万一他是大R,后面刷个几十上百万呢
举例:假设考察周期是7天,1表示命中某标签,0表示没有命中
对于
A序列 1,1,1,1,0,0,0 和
B序列 0,0,0,0,1,1,1
显然A序列需要洗白,做减分操作;B序列需要加分或者不加不减,总之不能洗白
横向分
上述是 4个 基础分值,计算逻辑,所有标签通用,可以归为一类:纵向比较
,始终是一个标签下的结果或情况在比较。下面介绍一些,横向比较
, 哪个标签更好使?
-
效果分(名字不重要,也可以叫评价分,反馈分,重点看下文解释)
-
举例:安装设备修改器 -- 一般用户不会安装这,安装这玩意的,大概率不是好人,是一个黑标签
假设uid abcdefghijk安装了设备修改器,那么设备号(uid): abcdefghijk就是这个黑标签下的一个值
那如果 abcdefghijk 设备上一共登录了100个用户,其中90个都已经被标黑了,是不是说这个标签打在这个设备上很准啊,或者说这个设备在这类标签中很准啊
-
再举例:云商IP -- 一般用户的出口IP不会是云商IP,理由不解释,本文重在解释用户评分系统设计,不过多描述基础网络基础知识
假设IP 1.2.3.6 是云商IP,那么就说 1.2.3.6是这个黑标签下一个值
如果这个IP 1.2.3.6一共登录了10000个用户,其中8000个已经被标黑了,是不是说明这个IP识别的很准啊
-
可以看出,
效果分是为了标签之间横向对比,把识别效果好的突出来
,让更准的标签多干活。就像团队里,让优秀的人,多机会表现,是一个意思。那么问题来鸟,如何衡量谁更优秀?
- 方案A,谁的准确率高,谁更优秀
设备 abcdefghijk 准确率90%,胜出 - 方案B,谁准确的基数大,谁优秀
IP 1.2.3.6 准确基数8000 远大于上面的90, 胜出 -
方案C,方案AB结合
在某个阈值线以下,比较基数;超过阈值线以后,比较准确率
设备abcdefghijk 和 IP 1.2.3.6, 谁更优秀,你说了算,甚至,你可以设计成一样优秀
- 方案A,谁的准确率高,谁更优秀
- 汇总
目标:让标签具备横向比较能力,让优秀的标签值发挥更大的作用
实现方式:根据其标识总数,有效标识数去计算,规则看官你定
-
实现
画完饼了,该讲如何实现了?代码是没有滴,看懂了,肯定是阔以开工编码滴
-
数据层面(一)
为了计算每个标签的4个纵向分(基础、浮动、级联、衰减),需要为每个用户存储一个二维表格,每行是一个标签最近30天(周期看官可以自己定)的命中情况
标签名 30天前 29天前 ... 昨天 tag1 323(次) 1(次) .... 0(次) tag2 3(次) 0(次) .... 9(次) 每个用户一张表嘛?当然不是,数据结构,码农自己可随意换,能描述上述信息即可。
比如我有50个标签,1亿用户,完全可以用户尾号分表,十张表,每张1千万用户,每个用户50行记录,那么每张表数据量5千万,还好还好。
对于某个标签
:- 基准分怎么算?看昨天是否命中咯
- 浮动分怎么算? 看昨天命中多少次咯
- 级联分怎么算? 看昨天命中的标签汇总,是否满足指定组合咯
- 衰减分怎么算?获取最近30天的命中次数,非0分布越靠近越是正分,非0分布越远越是负分。具体权重,看官随便拍个值,你家码农绝壁搞的定。搞不定?盘他
-
数据层面(二)
为了计算每个标签的效果分,需要统计每个标签值,每天的命中用户的打标结果。如果无人工打标,可以直接粗暴一点点,被任意标签连续命中7天就算黑用户。
标签项 标签值 日期 准确 误判 代理IP 1.2.3.6 昨天 323(人) 1(人) 代理IP 1.2.3.6 前天 39(人) 0(人) 代理IP 1.2.3.6 .... .... .... 云商IP 6.3.2.1 昨天 23(人) 0(人) 云商IP 6.3.2.1 前天 31(人) 0(人) 云商IP 6.3.2.1 .... .... .... 其他标签 其他值 .... .... .... 明白了摸?有了怎么一张效果统计表,你是不是想怎么算都行?选出你爽的标签值或者标签项都可以!!!
效果好的标签值,比如1.2.3.6,可以增加其效果分,让命中它的人得分高
效果好的标签项,比如云商IP,可以反过来提高这个标签的基准分,这个很重要哦,形成反哺了哦
再进一步,不停的反哺,你最终将得到一份十分贴近业务的基准分配置,这就是
知识沉淀
。你可以拿它换2个肉夹馍了 -
业务(场景)层面
上文说了,可以得到一份贴合业务的基准分配置。那么不同的业务,是不是有所差异,是不是应该有不同一套基准分配置? 这个实现就不说了,找你家码农搞,让做个可配的。做不了,就盘他
扩展
- 效果分计算可以考虑
漏报
阻断
机制:假设某个标签数据被污染,需要有阻断机制,立即该标签的得分强制置零;甚至可以更暴力,全局阻断
,所有标签得分为0- 衰减力度:衰减实现,未举例,随意实现,但是衰减力度需要根据实际效果,适当调整,不要坏了十天,一天就洗白白了,也不能一百天也洗不白。拿不准,就找运营拍板。不要问板是谁?为何要拍他?
- 如何造那么多标签,供这套评分系统使用? 移步下文: https://blog.csdn.net/secretx/article/details/86629558