独家|浅谈用户行为数据的价值挖掘(PPT)
演讲者:李丹枫
本文长度为8765字,建议阅读15分钟
本文探讨分享了用户行为数据的价值挖掘以及如何用用户行为数据做金融风控。
[导读]如今,数据的概念已经被无限放大,人、事、物每天都在被数据化,从拥有数据、使用数据,到数据与人、场景、业务融合于一体,如何理解并利用好数据,将数据价值最大化,俨然已经成为商业蓝海中最璀璨的明珠。本期清华-青岛数据科学研究院主办的大数据“技术·前沿”系列讲座特别邀请【友盟+】首席数据官李丹枫博士,来到清华大学分享他从业十多年的宝贵经验和最新研究成果。李博士为我们揭开用户行为数据潜藏的巨大价值,解析如何攻克金融风控的突破口,让广告效果回归真实让用户在悄然间被触达、被服务。
李丹枫:我非常荣幸作为一个讲师来到清华,从1995年清华毕业,再到两年前20年校庆回来,今天能够站在这里给大家分享一些体会,还是有点小激动的,毕竟是一个清华人。
我大致介绍一下在加入【友盟+】之前的经历。我博士毕业后先在美国FICO做了5年,当时参与的反欺诈模型是工业界用到的第一个能够实实在在应用的神经网络模型,虽然模型只有一层的隐含层,但当时全世界75%的信用卡交易都会经过这个模型的检验。离开FICO后,我去了雅虎,那几年正好赶上Hadoop开始流行的时候,因为Hadoop项目的创始人当时就在雅虎工作,我也有幸成为了Hadoop的第一批使用者。
后来,微软找到我说他们想建立一个团队,目的是想把微软必应这么多年积累的技术经验能够整合起来对微软其他部门进行输出,当时我们接到的一个比较重要的任务就是Xbox One,它的第一版的多媒体搜索是我的团队根据必应搜索的技术架构给他们设计的,现在我家里还保留着一台白色的Xbox One,是外面买不到的。
2014年,我回国加入了阿里巴巴。2016年初,阿里把CNZZ和另外两家阿里收购的公司友盟和缔元信这三家公司合并成【友盟+】,我成为了CDO。【友盟+】的数据是非常可观,这里有一些数字。
中国APP应用市场累积的APP数约为300万个APP,我们服务125万个, 在top10000 APP中,我们的占有率约70%;
我们服务680万个网站,上百亿的URL;
每天监测到移动设备14亿,在国内是11亿,而中国有7亿多网民,差不多每个人有一到两台设备被监测到;
我们每天处理的事件数是280亿。
目前,【友盟+】有三大业务线基于一个数据智能底层平台—U-DIP,Data Intelligent Platform,业务大致包括U-Dplus(智能的统计分析服务产品),U-ADplus(数据为广告营销服务)和U-Oplus(新零售概念,将货、人、场景组合个性化匹配,把线下人的信息提供给商家,让他更好地服务客户)。(对【友盟+】业务感兴趣的同学可以网上查询作进一步了解,此处略过)
我们今天将围绕第三方互联网与移动互联网用户行为数据的来源和应用,这里先明确一个第三方数据的特点,第一它的深度不是特别深,假如你是一个银行的应用,你可能不会把你银行里的大家存款、交易的数据给我,只是打开APP登录了这个页面而已。但另一方面,第三方大数据范围会比较广,覆盖面比较大,今天我们讲的都是在这上面做得数据挖掘。
这是我们在APP SDK返回的原始数据的示意,这个SDK Android有一个版本,IOS有一个版本。在事件被触发的时候被返回的。传统的统计实际上只有启动跟退出才可以收集数据,现在用户可以自定义事件,定义的事件就被触发后,相关的数据传回来了。
这里面的数据样本显示出的信息有很多,我细讲下。每个APP会有一个ID,是帮我们决定是哪个APP的,后面【友盟+】会有ID,这是【友盟+】自己来判断这个设备是哪个设备的,后面有imei,这个是Android上一个标准的设备标识符,是国际标准设备标识符,后面是mac地址。然后utdid,这个是阿里的一个ID,因为我们属于阿里集团,后面包括这是什么版本,比如这个是Android4.3的版本,这个APP本身是什么版本。再后面是一些sessions信息,就是说你这一段行为能够拿到什么数据,如果你定义比较复杂的事件这些事件的信息也会出来,这个是APP端。
WEB端,我们是JS的SDK,通过http或者https协议传数,这个Referer告诉你这个访问是从百度来的,到了友盟+这个网站,包括你的屏幕的维度,你用的语言,包括我们自己ID。useragent是告诉你这个浏览器是什么样的。在无线端我们是通过设备ID做唯一判断的。在网站端我们最开始判断的不是一个设备,而是一个浏览器,比如说你在PC上开了IE、Chrome、360,这对于我们来说可能是三个ID,但会有一些算法把这几个ID连起来,告诉你这可能是同一个电脑的,或者同一个人的,我们会有一些算法把它们打通。
原始数据需要深层的加工处理,做一些基础的分析,第一步是用户行为数据,第二步是通过行为数据做特征提取,第三步会有一些知识体系、数据库,通过机器学习算法给消费者或者设备打上标签,这个标签是往后所有应用的基础数据,以后再使用就用第四步数据就好了,前面的这些做一次性处理就差不多了,第三步机器学习的模型我们会不断更新,来做更好的标签的生产。
标签会从各个维度判断这个设备背后的人,第一类属于基础属性,我们要判断性别、年龄、消费水平,而这些判断都是基于模型,我们需要收集一些训练数据,有了这些训练数据以后,比如说性别,我们就会看男的跟女的在用APP行为上,在浏览网站行为上有什么不同,这实际上是一个二分类模型判断性别。像年龄段,这是一个多分类模型判断属于哪个年龄段。
下面要重点谈下训练模型这件事。性别比较好说,要么是男要么是女,预测年龄虽然是一个多分类模型,但是在工业界里面很多场景里面大家用得更多是二分类,每一个年龄段做一个模型。但是二分类有一个问题,人不可能同时处于两个年龄段,所以就涉及到一个二分类模型结果的比较问题。现在很少有模型输出的是正确的概率,这意味着我做了两个模型,这两个模型的分数是不可比的。
比如说我做一个模型说我判断这个是一个桌子,另外一个模型判断说这是一个柜子,桌子模型说这个是桌子的可能性是0.6,柜子的模型说可能性是0.9,那么你说这就是个柜子吗?你不能这么说,因为0.9折换到概率以后可能比0.6的概率还要低,概率为什么会不同?第一,我们训练模型往往用得不是原始数据的比例,尤其是对于小的类目,对于小的类目来说,如果做一个随机采样做一个模型的话,有可能它的正样本特别少,我可能从它本身拿样本里的全量,剩下的可能拿出10%,这个的话模型看见的事实是,这个小类可能在我整体里面占了20%,不是它的可能占了80%,实际上真实世界这类可能只占2%,剩下的是98%,所以你这个模型做得再准也不可能得到正确的probability,没有正确的probability两个二分类模型是没法比的。
那么这个怎么解决呢?有比较粗暴的办法,就像一些兴趣标签,比如说兴趣偏好,一个人有多个兴趣没关系,一般出来一个模型只要这个分大于0.5就认为他对于这个有兴趣,那就好了,但是对于年龄段来说就没法这么做。这个你要怎么做呢?我们叫分数的校准,我拿出一些独立的数据,我用我的模型打一下分,我可以算出每一个分数段它实际的概率是多少,比如我算出0.9的时候,所有低于0.9的样本里面可能有10%真是这个样本,0.9就对应了概率是0.1,所以我们做了这个映射以后这个两个模型才有可比性。
这是我们树状的用户认知体系,这里面分了几个大类,基本属性、社会属性、兴趣偏好、行为习惯、财富、汽车行业、金融行业、其他,这是一种方法,是固定的标签体系。但是现在很多时候我们用的叫场景标签,Google把人的一天24小时定义了60个场景,比如说,你刚刚起床的场景是怎样的,你一打开电视的场景是怎样的,需要判断的是你在这个场景情况下最容易被什么样的广告打动。现在的标签体系有很多自定义的或者说基于场景或需求的,所以我们现在做得一个很重要的工作是把标签的生产自动化,如果客户提给我们一个需求,我们可以根据你的需求迅速自动产生一个模型,这个模型能够输出标签。
关于标签的生成方法,第一种标签的生成方法叫基于事实的,我们在实际应用中经常用到。我给你一批客户,你告诉我里面哪些人过去一个月开启的这类APP十次,他只要知道这个,基于事实的好处是,它有事实在所以特别容易解释清楚。不好的一点是,它的reach比较小,所谓reach就是说我有多少人能够有这样的标签,按体育APP来说,同样200人,可能有50人最近两天开启了10次以上的体育APP,如果广告主要这个,给我一万块钱,我说这一万块钱只能投给这50人,你要想再投100人我没法投了,因为没有了。
但是如果是模型预测就没有问题了,模型预测每个人都有对于体育兴趣的分,那就是根据你要的精准性,你说我要很精准,200人给你排名,排在第一的我认为是对体育最有兴趣的,排在最后的一个我认为是这200个人里最没兴趣的,但是他可能还是有一些兴趣的,对于广告主来说他愿意触达多少人就能触达多少人,只不过他要理解我的广度跟我的精准性的关系就好了。因为我们在兴趣后面会加一个分数,就是置信度,置信度广告主可以选,需要什么样的置信度。
下面我要重点讲下“打通”的问题,首先让我们了解下数据打通的方法。
比如说体育类APP,我怎么知道这是个体育类APP?开发者当时整合SDK的时候,我们并没有方法验证你填得APP类别是不是你真正的APP类别,所以我们需要有一个模型通过APP的描述对APP做另外一个层次的判断,这个基本上就是一个自然语言处理的方式。
PC的相对来说复杂一点,第一个我们的数据量比较多,PC一旦知道你的URL的话我可以去爬,可以把你的网站都爬下来,可以用比较复杂的模型来做,但是实现的时候也会用一些基于事实类的方法。比如说第一个是规则,我只要看它的URL规则就知道它是哪类的,这一类把规则梳理一遍,就可以去判断。第二个是用模型去判断,通过标题、正文等建一个模型做判断,这个要求比较高,打分大于0.9的我们才认为它是这一类的。第三个是映射,我们会对前面没有匹配的按照用户自填的做一个映射。当然我们还有LDA模型会把每一篇的文章做成Topic去做下一个子目录的类别,这些小类可能是有一个LDA打标签,再去引申到后面使用者身上的兴趣标签。
其次,我怎么知道多个设备属于同一个人?这里有两种方式,第一种方式是用第一方强帐号的体系连接起来,如果你登录支付宝、淘宝、天猫,在不同的设备上登录了同一个帐号的话,我们是可以通过这个帐号把这些设备连起来,简单直接也有效。如果不具备这种强账号关系,我们也通过一个算法打通。如果两个设备经常在同一个IP地址出现的话很可能属于同一个人,我们可能用IP的信息再加上其他的信息把不同的设备连起来。这个效果还是不错的,我们做了一个最简单的只用IP的模型,我们这个模型的Precision跟Recall可以达到70%、70%,这个实际上已经是一个挺好的效果了。
以上是数据打通的算法的方式,下面我将介绍“跨屏打通人”。
现在数据体量这么大,维度这么高,实际上原来传统的所谓的PII,比如说你的手机号、身份证号码这些是识别这个人重要的ID,这些重要的ID已经变得不是那么重要了,即便我把这些ID剔除出去,我还是能够识别你,现在数据维度这么高,数据量这么大,比如说你有一个非常稀疏的矩阵,这个稀疏矩阵维度很高,如果你有两个矩阵里面在某几个维度上面有重合的话,你基本上有很高的自信心说这两个是同一个人的,这个是被人家做过的,当年Netflix有一个100万美元的悬赏帮忙他们增强推荐引擎的效果,有些科学家就拿了另外一个数据源跟Netflix的数据进行比较,把很多用户直接就给认出来了。
这个是通过跨屏以后,可以把所有的数据整合在一起重新打一个标签,这个标签就更准确,内容更丰富。这也是在行为数据里面非常关键的一点,因为你数据连通越多,你能够提供的服务就越多,你的场景就越丰富,你对这个人了解的就越多。
这里我举一个实际案例。中国普惠金融场景,它面向的很多的受众群体是没有足够多的数据来做风控的,大家知道对于一个金融公司风控是它的生命线,做不好风控这个公司没法做下去,但是做风控没有数据是很难做好风控的。中国实际上没有一个能够完整收集数据的公司,央行有3.5亿人的信用相关数据,但是不幸的是这3.5亿人跟普惠金融面向的群体重合度不高。比如学生也是普惠金融的使用者,你们一般还没有买房买车,没有这些借贷还款的记录,可能也没有信用卡的记录,所以这些人的数据是非常缺失的。
跟信用相关的数据最高层是征信的数据,就是你借款、还款的数据,这个是最直接相关的。如果说这个人有借还款的数据,我用它判断信用相对来说比较容易比较直接,也会比较准确。后面是消费数据,包括信用卡记录,包括你在淘宝上买东西的数据,再往后是运营商的数据,你的每月话费的信息,再往后是社交数据,再往下是行为数据。除了行为数据可能还有一些其他杂七杂八的数据我就统一放在“其他”了。
说明:数据对风险的作用,越往金字塔尖上走风险作用越大,但是它获取的难度越大,覆盖率越低,越往下走它的数据量覆盖率越来越大,但是运用起来很难,因为这个数据不是直接相关的。
但是,我看什么网站用什么APP跟我的风险有什么关系啊?我们当时找了一些P2P公司合作,做出第一版的结果比我想象的结果要好,这个项目做到今天基本上每天已经有几十万的查询量,我们跟蚂蚁金服也有很多深入的合作,发现这个数据在中国这个大环境底下还是非常有用的。
其实美国也有一家公司,它是Google原来的CIO做的,他的理念也是,对于美国信用分比较低的,倒不是说没有信用数据的人,而是信用分比较低的人是不是可以再细筛一下,有些人虽然信用低但是有可能收入低诚信很好,你要借给他钱他还是还的,这些人可以收得利息高一点,但是风险又没有那么大,他想在这个市场上看能不能做。反正做得也比较艰难,我觉得他们不像我们有覆盖量这么大的数据,但是他们确实在这方面也有尝试。我们在这方面的尝试我认为是比较成功的。
虽然这个数据你看着跟金融业务没有那么相关,但是物以类聚、人以群分这个事是没有错的,这些人的行为确实是有一定规律的,所以如果我们有一些标识的数据通过对他的行为相近性进行判断,效果还是不错的。在美国金融领域我们做过一个模型,英文叫Bust out,就是我把自己包装或表现成一个非常良好的客户,定期合借钱定期还钱所有的记录都非常好,银行看你记录这么好,给你涨点信用值吧,比如原来给你5万,现在给你10万、20万,突然有一天,20万拿走了,离开美国再也不回来了,这其实对银行造成很大的损失。
我们做一个模型帮助银行早期判断是什么样的人这种可能性比较大,银行要么对他们严格监控,要么要再轻易加信用额度。这些人在这些方面会作假的,但是作假也没有那么容易,你要做成一个跟正常用户一模一样也没有那么容易,作假也是会有一些套路的,我们会从过去作假的人的行为里判断,什么人更像是作假的行为。在行为领域他不会想到说我用用APP、看看网站会有影响,他在这方面作假更难,我要在各个方面都装成一个正常人太难了。所以为什么这个数据在金融领域会比较有用,是因为这个原因。
这里有两个案例。第一个是个人贷款互联网金融机构,贷款额度是5千到10万,他们给了我们20万样本,这个基本上是基于IMEI的,IMEI是国际移动设备识别码,是Android手机的识别ID。第二个案例是手机贷,从3千到20万不等,10万个样本,也是用得IMEI。看一下结果,这都是在测试集上,做模型的人都知道,这个数据拿来以后切成三份,一份用来训练,一份用来决定训练什么时候停止,最后一份没碰过的作为测试。
这里跟征信相关的指标,左边这个图是标准的二分类模型指标,ROC,就是我把一个本来应该是错误的东西判断成正确的,这个曲线越靠近左上角说明这个模型越好,在这个曲线下面的面积越大越好,越接近1越好,这个模型曲线是0.7,看起来一般。然后右边这个模型是征信里面用得比较多的,就是底下这根红线我们叫KS,KS实际上是说你这个模型区分好样本和正样本最大的距离,也就是说你看这个红线是从零到零,它中间最鼓的地方是它区分的最大距离。一般来说征信公司都会在这个最大的距离点上做操作。
这个到什么程度才算比较好呢?根据场景不同是很不一样的,有的在0.1左右就可以有,有的场景可能要在0.4以上,这个模型是我们最开始第一个样本做得模型,这个是在0.3。我当时想我们这个数据能够做到0.1多就挺满意了,我一看0.3,真的比我想得好了一倍。我当时就说这个有戏我们可以继续往下做。第二个结果基本上差不多,稍微差一点,KS是0.28,但是肯定是在一个可用的程度。我们最后模型的分数是从300-800。这是一个违约率的分布,大家可以看一下,在300分违约率的可能性是90%,如果判断这个人是300,基本上你可以板上钉钉不用给他贷了,风险太高了,800分差不多是10%几。这个样本说明这个公司风险控制做得非常差。
你做模型会发现,比如说我们原来在美国做信用卡反欺诈的时候,有的模型很好做,拿数据随便一训练就是一个相当好的模型,有的模型特别难做,做得头发都白了也提高不了多少。这跟它本身原来的数据是有关的,因为一般人不会说我一点风控都没有,我直接就是什么人过来都给他贷款。如果我有一些风控规则其实会合卡掉一些,如果风控做得好他们给我们的数据我们会发现这个数据很难做,做提高就很难做。如果风控做得不好会发现很容易做。
这里面也是一样,我们做得好的例子KS能够达到0.45,有的风控做得非常好的,像刚才说的跟我们签约的TOP5的P2P公司,我们给他做得模型KS挺低的,但是他们愿意花钱买,因为他们是懂行的人,他们知道这个东西非常难做。一个是他们的风控做得好,一个是IOS的解决方案很难做,本身它的风险就低。
另外两个比较重要的事是模型的稳定性和权重。因为生产环境的输入是不可控的,假如你这个模型有100个输入,这100个输入在你实验室没问题,因为数据都给你,你切成三份怎么做,不同的模型不同Feature,这个组合最好,就万事了,你发篇论文万事大吉。在我们这里不一样,我们发现这个模型组合最好给到客户了,可能过了一个星期客户打电话过来说你这个模型在我这是个灾难。为什么?因为我们对他模型的输入没法控制,我们不知道它在实际环境中会产生什么事,有可能有些维度今天缺失,有可能有些维度因为系统的一些故障或者因为行为改变而改变了,造成这个模型的结果大面积波动,这对他们的运营会造成特别大的影响。
另外,对模型的权重要有一个控制,除了要优化我的目标和我预测的结果的差别,比如说权重加起来的总和不能太大,我保证没有特别大的权重在那。特别大的权重表示什么呢,可能这个模型有30%甚至40%的表现是因为一个或者两个的输入,如果生产环境中这一两个输入出问题,这个模型整个就完蛋了。做模型的人都有选变量这个事,怎么选变量呢,比如说我们做一些简单的cross correlation,这些东西如果它跟目标相关性太低了我就不要了,这个容易,谁都会做,我把小的不相关的都去掉。
我们做风控模型,它有一个比较大的问题就是说用户用我们的模型之前要测试模型,测试模型他不能用现在的数据测,他只能用历史数据测,比如说6个月之前的数据。我们系统有一个回溯的功能,就是说我要对于历史上的任何一天都要能做特征的计算,这样我才能把这个事做好。
最后,我将谈下用户怎么用我们的分。
因为这个分毕竟不是集中了所有的信息产生的分,而是我就用了行为这个信息,用户用的时候会自己再建一个模型,这个模型他要整合其他所有的分,比如说芝麻信用分,有8个征信公司可能每个公司都能拿到一些信息,把这些分整合起来做一个总分,最左边这个效果就是总分做到的KS,还不错将近0.3。第二个是【友盟+】的子分,这个里面不高,大概0.16、0.17的样子,但是你跟其他的子分比一下,我们是排在第二名的,它本身是一个非常tough的案例,但是我们的分在这个案例里面效果还是相当好的,因为我没有想到它排在第二名,这里面包括金字塔上面说的我们上面的很多层,消费数据、运营商数据、社交数据,我们反而排在金字塔最底下的分能够排在第二名,这也是给我们很大的信心继续往下做这个业务的一个重要原因。
今天你去参加任何一个互联网会议或者是涉及到消费者的会议,大家都会谈人口红利消失,为什么呢?因为中国的发展真的是非常快,人口红利确实越来越少,而且大家个性化的需求越来越强,我不希望接受的服务跟你的服务是一样的。所以为什么像今日头条能够做到“你关心的才是头条”,为什么淘宝、天猫现在是千人千面,每个人看到的东西都不一样。所以说,对客户的精细化运营是企业成败的关键,而数据实际上是精细化运营的关键。往往对一个企业来说自身的数据是不够用的,就像我刚才说的,它的数据是垂直的数据,没有横向打通,你需要找人横向打通。但是在中国的场景是什么,你找BAT拿不到数据,不会给你数据,腾讯微信内部团队都不给数据更别说你了。所以说这种场景下我们的行为数据其实是大有可为的,在很多方面都可以帮助企业精细化运营客户,满足个性化的需求。
将来大家做数据科学也好,做工程也好,我觉得满足个性化需求肯定是将来大的趋势,将来肯定会有很多小而美的东西,包括线下零售,大卖场一个跟着一个倒闭,现在有很多小而美的店反而起来了,因为它抓住了自己的核心用户,它看得不是新用户的增长,而是看老用户的价值!一个用户如果原来能在他身上产生100块钱的价值,现在是不是能精细化运营产生1000块钱的价值 ,这些是企业现在需要思考的问题,也是我们在学校的学生做科研也好,做毕业论文也好,这些都是值得考虑的方向。
我们的路还很长,要做得事情还有很多,我也希望如果将来有机会可以开放一些数据让大家一起把这个事情做好,让大家在这个方面都获益,在整个服务领域、数据应用领域能够开创一个新的天地。