斗鱼风控算法体系建设

标签: | 发表时间:2021-08-20 21:13 | 作者:
出处:https://mp.weixin.qq.com

分享嘉宾:龚灿 斗鱼 算法负责人

编辑整理:王彦磊 灵数科技

出品平台:DataFunTalk


导读:直播行业在业务上面临运营安全、活动安全、流量安全、账号安全、交易安全、内容安全等风险问题,智能风控在技术方面主要有高频对抗、场景繁多、解释性弱等挑战。本文将分享斗鱼算法团队针对以上问题,如何构建风控算法体系,以及如何应对风控技术方面的挑战。

01 智能风控背景介绍

1. 直播风控面临的问题有什么?

目前黑产从业人数超过150万人,市场规模高达千亿级别,斗鱼主要的风控场景有运营安全、活动安全、流量安全、账号安全、交易安全、内容安全、风险联控等七大类。

2. 智能风控在技术上有哪些挑战?

  • 风控是强对抗场景,策略效果很容易会衰减甚至失效

  • 风控对抗场景繁多,每个风险场景单独建模工作量大

  • 策略鲁棒性和模型可解释性顾此失彼

面对问题,往往是先有目标,再有解决方案。围绕风控业务上遇到的问题,我们采取的方案是先扎根业务,建立一套尽可能通用的算法体系架构,配合风控策略和风控运营一起,将业务上琐碎的工作流程化、流程化的工作自动化、纯人力不可解的工作智能化,以此来较好的完成日常风控场景中遇到的问题。

02 算法架构

1. 概述

结合以上的技术问题,算法架构设计上基于现有的直播业务考量,将上述的七类风控场景的风险抽象为以下几类风险类型:

  • 内容风险:内容风险主要包括图片、文本、视频(这里主要讨论文本)。比如用户在直播间发广告、色情信息等

  • 用户行为风险:可通过UID维度指标发现的异常行为。比如某个UID单天登录某一个入口的次数较多等此类风险

  • 团伙风险:针对类似“手机墙”等手段将行为风险分摊到多个ID上,此类风险通过用户行为风险是较难识别的,需要对团伙风控进行单独的识别

  • 设备风险:前面三类都是基于UID的行为进行风控,最后需要通过从设备角度进行风险识别的补充

通过对以上四类风险的识别构建一套有效覆盖所有场景的智能风控解决方案。

2. 核心算法层

核心算法层包括风险评分、团伙识别、垃圾文本、设备风险和异常序列。

  • 风险评分:由最初树模型逐渐演进到后来的DeepFM,主要考量风险评分在使用中的有序性,分数越高风险越高

  • 团伙识别:基于传统的图算法在业务中效果不好,自研发了团伙生成算法

  • 垃圾文本:由最开始的人工特征+浅层模型,过渡到TextCNN,再到融合文本信息和用户行为的Wide&Deep模型

  • 设备风险:采用的是IForest 和自研设备指纹算法。

  • 异常序列:作为前面算法识别风险行为的补充,对用户行为的序列进行了一层识别

3. 业务融合层

针对四类风险结合业务需要做一下模型的融合,与上一层核心算法模块划分相同。

  • 风险评分:base模型为单天的风险评分,需要结合历史的评分进行加权得到融合的评分,对于当天没有数据的,通过团伙评分做补充(比如之前有风险,但近几天没有记录,风险会衰减,通过团伙评分可以将这些风险补上去),白评分主要是衡量评分的误杀。

  • 团伙识别:团伙管理是因为数据量大,关系多,考虑到资源的合理利用,对这部分信息做了一些存储、关系方面的管理。团伙可解释性是针对业务述求提供的一个后台实时查询功能。

  • 垃圾文本:分为模型和线上策略,因为模型有一定的滞后性,所以线上需要一个实时的对抗策略。

  • 设备风险:自研设备生成算法,另外提供设备相似度、设备异常信息以及设备风险分等维度的异常设备标签。

4. 风控系统层

在业务融合层的上一层,包括统一拦截服务、实时团伙服务、设备异常风险,评分管理、团伙管理、分析平台、序列查询。

5. 业务应用层

最上层为应用层,即上面提到的七类风控场景。

03 模型实践

1. 实践中搭建风控算法体系主要遇到的问题挑战

  • 如何与变体多、变化快的垃圾文本做对抗?:垃圾文本主要是通过各种手段生成变体逃过模型和策略的监控,属于强对抗的场景,导致策略很容易失效

  • 如何构建一套全场景评分系统?:在实际运营中针对案例的及时反馈排查,对新风险行为的及时发现,给风控团队的分析和识别工作带来了很大挑战

  • 如何解决单UID维度下的弱风险问题?:风险评分系统主要是基于UID 层面的风险识别,但是UID程度的风险主要都是基于单个ID聚合出来的,对于分散在各个结点上的风险怎么识别是需要解决的问题

  • 如何识别异常行为序列?

  • 如何识别设备维度风险?

  • 识别结果如何做到可解释?

2. 算法演进

现有的模型主要是从2018年演进过来的,主要演进过程如下图所示:

① 垃圾文本

直播场景通常会存在大量各种形式的垃圾文本,我们的模型主要经历了以下几个迭代步骤:

  • 最初采用人工特征工程+浅层分类模型,模型简单可控,模型可解释性强,但是需要做大量的 人工特征工程

  • 模型更改为textcnn,特征工程工作量减少,模型召回率提升,但对像音字、像形字不能很好的识别

  • 像音字、像形字识别:基于pycnn,把汉语的像音字转化成拼音,将拼音当做词输入到模型中,分别将汉字特征、拼音特征分别做卷积池化,然后拼起来输入到softmax;针对像形字问题,在pycnn基础上在embedding层使用cw2vec,对字的笔画进行编码输入到模型中去,然后卷积池化融合。

  • 除了文本信息,将模型进一步融入用户信息(用户评分,用户信息,用户属性等):此处借鉴了推荐系统中的Wide&deep模型。

垃圾文本整个迭代思路大概是这样,可以参考下图:

② 风险评分

在风控场景,我们希望任何一个用户进来都可以立刻得到一个评判用户好坏的分值,对不同分值的用户采取不同策略。对于高危用户下发惩罚策略,对于中危用户重点关注,对于低危用户原则上尽量减少策略的调用,提高用户体验。总体要求是评分要有有序性,第二是模型的准确率、覆盖率,第三是模型的可解释性。

早期模型采用简单的二分类模型(树模型、逻辑回归),效果不太理想。树模型分类效果不错,但是不能保证分值的有序性;逻辑回归能保证分值有序性,但是特征工程特别复杂。所以第一版改进借鉴推荐系统的思路:GBDT+LR 的融合,GBDT做特征的自动提取,LR保证模型的评分有序性;第二版迭代采用dnn代替gbdt做高阶特征的自动提取,提升模型的泛化能力;第三版迭代是把Wide侧改为FM,进一步提升模型泛化能力。经过以上三版模型迭代,模型到达了一个ROI瓶颈期,所以再进一步的迭代重心从模型结构调整转为引入更多信息,于是将序列的embedding和图的embedding融合到模型中去。以上几版迭代均取得了不错的收益,迭代步骤可参考下图:

③ 风险团伙

团伙作案特点:

  • 团伙账号规模较大,组织性强,对平台危害性大;

  • 使用脚本软件、操纵群(云)控设备对账号进行批量操控;

  • 账号之间具有行为同步性和信息聚集性。

团伙识别的挑战:

  • 传统策略缺乏关联风险识别,无法对整个团伙一网打尽

  • 专业黑产团伙技术更新快,策略易被攻破

传统图算法的不足:

  • 传统的图分割和社区发现算法,需要分场景单独建模,无法识别伪装性较好的行为

  • 传统图算法无法引入side info

  • 图嵌入的方式需要先构图、且解释性较差

基于以上痛点,自研了全场景的团伙(FSG)挖掘算法,如下图所示:

④ 行为序列

业务痛点:传统模型无法捕获时序信息,导致对用户行为路径异常情况覆盖不佳

基于这个痛点最开始采用了C-LSTM模型,这个模型可识别一部分行为序列异常的风险,但是对时序信息刻画不足(比如短时间内频繁操作之类的特征)。第一版模型改进(参考论文:https://arxiv.org/pdf/2002.05988.pdf):在C-LSTM的基础上加入Timestamp embedding,加入了时间特征,可以解决这个问题,效果提升显著。第二版模型迭代将特征提取器从原来的CNN 换成了transformer的encoder部分构建分类模型,同时剔除容易误杀的长度小于5的短序列,目前该部分的收益较好,算法过程可参考下图:

⑤ 设备指纹

难点:

  • 如何定义计算各个特征模块的相似度的算子

  • 如何将各个模块的相似度有效的融合起来得到综合相似度

目前这部分的算法可以识别到设备层面的异常,目前已有基本架构,如下图所示:

⑥ 模型可解释性

用到模型可解释的案例有:

  • 风险评分模型:GBDT+LR,参考阿里论文:Unpack Local Model Interpretation for GBDT;

  • 风险评分模型:Deepfm,模型升级到Deepfm后,采用控制变量(mask)的方法查看单个特征对结果的影响来提取模型特征的可解释性。

今天的分享就到这里,谢谢大家。

在文末分享、点赞、在看,给个3连击呗~


分享嘉宾:

活动推荐:

2021年8月28日,DataFunSummit:数据治理与安全在线峰会将如约而至。本次峰会将全程直播 既包括核心技术解析、又有来自头部大厂的工业实践分享,专家云集,精彩不容错过!

还没报名的小伙伴,欢迎识别二维码免费报名收看!

社群推荐:
欢迎加入  DataFunTalk 风控算法 交流群,跟同行零距离交流。 识别二维码,添加小助手微信, 入群。

关于我们:

DataFunTalk 专注于大数据、人工智能技术应用的分享与交流。发起于2017年,在北京、上海、深圳、杭州等城市举办超过100+线下和100+线上沙龙、论坛及峰会,已邀请近1000位专家和学者参与分享。其公众号 DataFunTalk 累计生产原创文章400+,百万+阅读,10万+精准粉丝。

🧐 分享、点赞、在看,给个 3连击呗! 👇

相关 [斗鱼 算法 体系] 推荐:

斗鱼风控算法体系建设

- -
分享嘉宾:龚灿 斗鱼 算法负责人. 出品平台:DataFunTalk. 导读:直播行业在业务上面临运营安全、活动安全、流量安全、账号安全、交易安全、内容安全等风险问题,智能风控在技术方面主要有高频对抗、场景繁多、解释性弱等挑战. 本文将分享斗鱼算法团队针对以上问题,如何构建风控算法体系,以及如何应对风控技术方面的挑战.

斗鱼大数据的玩法

- - IT瘾-bigdata
本文来源于斗鱼数据平台部吴瑞诚先生在光谷猫友会的分享. 我是吴瑞诚,现在负责斗鱼数据平台部,今天给大家分享一下斗鱼大数据这块的玩法. 我先做个自我介绍,我是11年初华科通信硕士毕业就进入淘宝,主要做HBase相关开发,后来回武汉后在1号店转向应用架构方向. 我是14年9月加入斗鱼,当时斗鱼研发是30人的规模,从0开始搭建斗鱼大数据平台,单枪匹马一个人,大概干了三个月,招不到大数据开发,哪怕只是基本了解Hadoop的都很招不到,干的很苦.

文本挖掘算法、热度识别体系:美味爱读是如何搭建个性化阅读架构的

- - PingWest
最近我在使用一款AVOS公司推出的个性化新闻类阅读产品—— 美味爱读,与其他产品相比,它推送的内容更加精确并具有时效性. 令人意外的是,这款产品本身并不在AVOS公司的产品计划中,而是由AVOS中国团队的四位工程师——孙宁、倪华杰、杨朝中和庄晓丹所提出的. 2011年4月,Youtube的两位创始人Chad Hurley和陈士骏从雅虎手中收购了书签网站 Delicious,在此基础上成立了AVOS公司.

缓存算法

- lostsnow - 小彰
没有人能说清哪种缓存算法由于其他的缓存算法. (以下的几种缓存算法,有的我也理解不好,如果感兴趣,你可以Google一下  ). 大家好,我是 LFU,我会计算为每个缓存对象计算他们被使用的频率. 我是LRU缓存算法,我把最近最少使用的缓存对象给踢走. 我总是需要去了解在什么时候,用了哪个缓存对象.

BFPRT算法

- zii - 小彰
BFPRT算法的作者是5位真正的大牛(Blum 、 Floyd 、 Pratt 、 Rivest 、 Tarjan),该算法入选了在StackExchange上进行的当今世界十大经典算法,而算法的简单和巧妙颇有我们需要借鉴学习之处. BFPRT解决的问题十分经典,即从某n个元素的序列中选出第k大(第k小)的元素,通过巧妙的分析,BFPRT可以保证在最坏情况下仍为线性时间复杂度.

贪心算法

- Shan - 博客园-首页原创精华区
顾名思义,贪心算法总是作出在当前看来最好的选择. 也就是说贪心算法并不从整体最优考虑,它所作出的选择只是在某种意义上的局部最优选择. 当然,希望贪心算法得到的最终结果也是整体最优的. 虽然贪心算法不能对所有问题都得到整体最优解,但对许多问题它能产生整体最优解. 如单源最短路经问题,最小生成树问题等.

缓存算法

- 成 - FeedzShare
来自: 小彰 - FeedzShare  . 发布时间:2011年09月25日,  已有 2 人推荐. 没有人能说清哪种缓存算法由于其他的缓存算法. (以下的几种缓存算法,有的我也理解不好,如果感兴趣,你可以Google一下  ). 大家好,我是 LFU,我会计算为每个缓存对象计算他们被使用的频率.

K-Means 算法

- - 酷壳 - CoolShell.cn
最近在学习一些数据挖掘的算法,看到了这个算法,也许这个算法对你来说很简单,但对我来说,我是一个初学者,我在网上翻看了很多资料,发现中文社区没有把这个问题讲得很全面很清楚的文章,所以,把我的学习笔记记录下来,分享给大家. k-Means 算法是一种  cluster analysis 的算法,其主要是来计算数据聚集的算法,主要通过不断地取离种子点最近均值的算法.

查找算法:

- - CSDN博客推荐文章
从数组的第一个元素开始查找,并将其与查找值比较,如果相等则停止,否则继续下一个元素查找,直到找到匹配值. 注意:要求被查找的数组中的元素是无序的、随机的. 比如,对一个整型数组的线性查找代码:. // 遍历整个数组,并分别将每个遍历元素与查找值对比. 要查找的值在数组的第一个位置. 也就是说只需比较一次就可达到目的,因此最佳情况的大O表达式为:O(1).

排序算法

- - 互联网 - ITeye博客
排序算法有很多,所以在特定情景中使用哪一种算法很重要. 为了选择合适的算法,可以按照建议的顺序考虑以下标准: .     对于数据量较小的情形,(1)(2)差别不大,主要考虑(3);而对于数据量大的,(1)为首要.  一、冒泡(Bubble)排序——相邻交换 .  二、选择排序——每次最小/大排在相应的位置 .