近日,由腾讯互联网与社会研究院主办的“大数据连接的未来”高峰论坛在北京召开。腾讯公司云平台部总经理陈磊先生带来他的演讲《大数据背后的数据支撑》。陈磊主管腾讯云、腾讯开放平台和社交广告的研发工作。他在演讲中提到,要做好大数据服务,首先要解决的是信息安全的问题,而面对海量的数据,还要有极强的技术来收集、整理、分析大数据,从而得出准确的大数据结论。只有解决安全、海量、精准和实时的这几个问题,在流量采集、处理、建模、投放、应用等环节都去追求准确性,追求实时性,最后做出来的数据体系才回精准以及符合用户预期效果。
以下是陈磊演讲全文:
大家好,非常高兴有这个机会跟学术界的朋友交流。我们上午Touch和Dowson讲到腾讯在大数据方面的应用,我可能更多的侧重于讲他背后所采用的一些技术。
腾讯这家公司天生是在跟大量的数据打交道,从我们有了QQ之后,实际上在QQ业务高速的发展过程中,公司一直是在用数据,当时还没有大数据这个词,去分析用户的行为,去理解我怎么样能够让用户更喜欢我的产品,包括每一个聊天窗打开的方式,我们的产品的每一步演进背后都有很多的数据分析在起作用,这个实际上就是互联网公司普遍采用的一个产品研发的方式。
腾讯云生来就是在一个先天条件非常好的大数据环境里在创造大数据的技术,包括我们之前提到的广点通的广告业务,也是在一个土壤非常肥沃的环境里生长,因为我们有幸能够为这么多用户服务,能够通过对数据的分析,让我们更好的服务好用户的需求。
刚才James She教授讲的后半部分的内容让我想起我们在做的广告业务已经把里面很多技术用到实践中去了,大家在打开腾讯产品时看到的广告,实际上是通过大数据的分析,给到用户可能是最有可能关注的产品。包括我们跟很多硬件厂商在合作,比如有一个创业的公司,它把广告机做了一个变革,做了一个创新,我们看到酒店门口就有广告机,它是一个大的落地屏幕,上面会有广告。
这个广告机我们现在让它跟广点通这个产品发生联系,这样我们能够通过用户的QQ和微信的身份去给他展示更适合他的广告,或者更能够得到他关注的广告这样一个产品。所以,很多James 教授讲的内容在腾讯已经变成了现实的产品在使用。
我不想讲太多大数据的应用,想讲的是我们去做大数据,实际上面临哪些挑战,特别在腾讯这样一个环境里做大数据我们面临的挑战是什么,这些挑战里首先发生的挑战,我们认为是安全的挑战,因为我们这个平台有那么多用户的行为,有那么多用户的数据,所以,我们有这种社会责任感,就是要去保护这些数据的安全,同时也要保证这些数据的准确。
我们今天看到行业里有大量的互联网产品,都有上面讲的这些问题。这是我们对90个要求用户用信用卡或者银行卡去做支付的电商网站或者微信公共帐号做的安全扫描分析检查,这是我们主动去做的。我们看到90个用户中有60多个都或多或少有这五类问题,其中有20多个用户是有非常严重的问题的,包括盗取用户的身份,包括恶意的去替用户消费的这种办法都有。所以,今天我住这个酒店的时候,这个酒店如果让我把信用卡留下我是非常焦虑的,因为今天我们面临的互联网产品里的安全问题非常多。
这里面讲了一些比较具体的案例,移动电商网站发现它有严重的漏洞,可能会造成密码的泄漏。现在银行的所有操作都要通过短信验证,这本来是一个很好的安全手段,但是我们会发现一些很大的银行,它的网站实际上黑客是可以绕过手机短信的安全认证,让手机短信的安全认证无效。这个是一个微信服务平台,这个公司叫微盟,我们4月份截的一个图,今天这个list会更长,它的安全问题是非常非常多的。
要做好大数据的服务,我们首先要解决的是信息安全的问题。腾讯做了这么久的互联网服务,做了这么多大数据的服务,我们基本上没有让黑客利用我们的安全漏洞去侵害我们的用户。因为我们有一整套完备的安全防护措施,今天所有的这些安全防护措施我们都免费拿出来给行业使用,我们希望贡献一些绵薄之力,改善整个互联网行业,特别是在大数据领域里的安全环境。
讲一下我们安全防护的系统,从运营商的网络出发,我们有一个很强的防护,后面我们通过洋葱的系统去加固用户的服务器,包括我们的外部应用的防火墙,帮助用户解决他的安全问题。刚才讲到的所有的这些安全问题,举的这些例子都是可以用这样的方法去保护的。
所以,在大数据的采集和产生的所有的点上,都是有可能会发生安全的问题的。我们通过很多的技术手段去保障安全。
在有了安全的保障之后,我们拿到数据的时候,我们会发现我们面对的是一个海量的挑战,我们看到我们每天光是广告业务所要分析的数据,新增的数据就有200TB之多,我们每天机器学习处理上百亿的用户行为的反馈,包括我们分析的信息的属性和类别也会越来越多,也是百万级的,甚至我们觉得这个百万级的各种数据项还不够多,很有可能在很短的时间里我们会达到亿级的规模。
这给我们带来的挑战,首先怎么能够快速地把这么大量的数据集中起来,所有的这些数据是发生在终端上,发生在移动终端上,发生在网页上,发生在用户使用我们服务的产品里。怎么能够让它尽快地进入到我们的分析体系里,即使它是通过网页跟我们的服务器进行交互,我们的服务器也是遍布全国的,我们在全国有三百多个网络节点,所以,我们面临一个相当大的实时数据收集的挑战。这里的解决方案,除了要去做实时同步数据的系统,我们有几个很核心的系统,这是帮助所有的IDC之间能够有效地、实时地保证数据的准确性和不丢失的数据传输的能力。
同时,除了这些软件服务能力本身之外,还要去布设网络整个基础架构,在网络的基础架构上下工夫,我们知道全国有三百多个网络节点,这三百多个网络节点的互联互通是不可能靠公网保证,因为中国的公网有很多问题,三网不通等等这些问题。我们在运营商网络架构的基础上搭建了完整的网络架构来解决这样的问题。
数据都采集到同一个机房之后,它面临的问题是什么呢?是我怎么去把上百万个需要计算的job能够很好地计算出来,因为数据到达的时间不一定是很确定的,每一个数据,因为我们要做实时的回流和同步,每个数据到达的时候我们希望它等最短的时间就能进入到处理阶段,我们做了一个叫“落子”的数据任务调度的体系,它是一个高度分布的体系。随着数据不断地到达,它就会产生相应的计算job,在这个过程中我们还要考虑对资源合理的使用,不希望浪费太多我们手上的资源。
我们对开源的产品做了很多深入的修改和调整,提升它的性能,这里举两个非常简单的例子就不赘述了。
这里讲的是我们做的一些比较有效的优化,在过去的几年里对开源系统做了相当多的优化和改进。除了使用开源的产品之外,腾讯也去建设自己的叫做“腾讯数据魔方”的一个产品,实际上它要解决的问题是,我们在拿到这些原始的数据之后,我们能够分析出大量的结果,海量的结果,但是这些结果因为使用场景不同,需要采用不同的方式去累加,比如有的时候我们要去看的是过去三个小时的情况,过去三个小时的情况随着时间的推移,它切出来的数据片是不一样的。我们所采用的方法就是用空间去换取时间,因为你每次重新累加过去三个小时的情况这是非常痛苦的一件事情,因为数据太大了。所以,我们需要去做有效的缓存,让这个有效的缓存非常聪明,能够用非常有限的空间去换取实时性,去换取非常好的实时的效果,这是“腾讯数据魔方”所起到的作用。
所以,我们要去做大规模的,如200T的数据来了,我们要做数据的学习,以前都是采用“T+1”的方式,“T+1”的方式在我们做广告业务的过程中发现太慢了,特别是腾讯的广点通的广告是展示广告,展示广告的生命周期非常短,大概一个广告图片的生命周期就只有三天,过了三天之后效果会相差很多,在这三天中它有一个非常快的衰变过程,所以,没办法用昨天用户的行为指导今天广告的投放,这个问题是实践中非常棘手的一个问题。昨天所有用户的行为,如果你认为那是准确的,来指导今天的广告投放,你会发现效果非常差。所以,我们必须做实时的处理,这个过程中我们要去做流失计算,把学出来的所有参数随着新的数据进来进行微调,一开始我们是调参数,后来我们可以调整个方程的结构,包括我们怎么有效地降维,让这个事情算得更快,加速它的收敛。经常我们会在一条路上探索的时候,用一些很苛刻的条件快速地让它停止,发现这个事情是不太靠谱的,要尽快让它停止,改变我们学习的方向。
刚才讲的是海量数据给我们带来的挑战,除了海量数据的挑战之外,我们会看到其实有这么大量的数据里,怎么能够保证这些数据真的是准确的,怎么保证这个数据的结果是准确的,这是非常非常难的。同时,这么多的数据里,真正有效的数据,或者说效果最好的数据到底在哪儿,其实这些都是一个需要我们去思考的问题。
我们在这里面有一些小手段,首先用户输入的数据本身未必是准确的,我们有很多用户注册的年龄可能是0岁或者4岁,我们整个用户的年龄段会看到0到10岁可能是一个鼓包,后面就平了,然后到二十来岁变成一个大鼓,那个鼓包是一个正态分布,但是0—10岁之间有很多是用户数据的问题,怎么能真的去找到,虽然用户没有给我们准确的数据,我们怎么能知道用户到底他的实际年龄可能是多少,这个我们可以通过关系链的分析,通过他的一些社交的行为去一步一步地找到,这里面讲到的例子,首先我们看到他的注册年龄是4岁,但是他的好友可能是分布在80后,甚至我们可以看到他加入的群,包括他在微博上follow的名人可能是某一个年龄段喜欢follow的名人,等等,各种各样的猜测,最后我们发现原来是一个40岁的中年人。
这整个过程中每一步还是不准确的,比如他加入的班级群也未必跟他的年龄是吻合的,我们也有很多用户加入别人的班级群,比如他可能是辅导员,但是所有的数据相关分析的时候就能把这个问题的真相找到,就知道这个用户原来是40岁这样一个情况。
当然有各种各样不同的关系链,通过不同的关系链条对我们的数据进行优化和分析,保证数据的准确性。
讲到广告的算法,大家都是专家,我就不讲太多了,我们可以看到腾讯是通过各种各样不同的数据,最终去分析用户可能的兴趣是在什么地方,这个数据从上到下,实际上代表了什么?代表了数据的有效性。我们越来越发现实时的或准实时的行为才是最有效的,我们分析出来很多的人属性和我们通过他的互联网行为分析出来的兴趣特征反而往往不一定是那么准确的或者不一定代表用户此时此刻的兴趣点,也许他有一些长期的兴趣,但那些长期的兴趣并不一定能够帮助我们决定他此时此刻关注什么,对什么感兴趣。
在我们做社交广告的过程中,我们看到实时数据给我们带来的价值是非常大的,比如我们最早的时候采用的是“T+1”的算法,这表述的是广告系统计算的流程,首先投放系统把用户的行为数据收集进来,然后通过我们的平台进行计算,算出模型,最后回馈,实时查询是利用这个模型去提交广告。
早期的时候,我们做到了数据延迟一小时,在这样的一个过程里,我们得到的CDR,但是我们看到,到了第二个阶段我们延迟15分钟的时候,我们发现我们点击率提升了22%,整体的ECM提升了30%。这是在比较小的范围里在尝试,这里讲的流量实际上是我们很小一部分数的用户流量。这个阶段我们采用的是流式计算方法,采用分布式cache,把部分的计算结果cache起来,这个cache里讲的是部分活跃用户他可能感兴趣的广告是什么,也是为了优化最终用户看到的体验。
效果是非常明显的,从一小时变成15分钟之后效果是非常明显的,我们做了更多的优化之后,我们发现从15分钟变成秒级以后,这个效果又得到了很大的提升。
实际上一小时15分钟到实时计算,2012年广点通业务高速发展中实时分析这几件事情起到的作用是最关键和最大的。所以,腾讯的大数据技术,我们看到去解决安全、海量、精准和实时的这几个问题,在流量采集、处理、建模、投放、应用等环节都去追求准确性,追求实时性,最后做出来的这样一个数据体系就有一个精准和符合用户预期的效果。