桑文锋:我在百度如何解决用户分析问题
桑文锋 知乎

2007年,我在“百度知道”做产品研发,在这之后7年多时间里,我的工作都是围绕用户行为数据建设的。去年4月份,我从百度离职后创立“神策数据”,为互联网公司解决用户行为分析问题,下面我的演讲内容都与用户分析相关。

百度内部的数据板块

百度内部两块数据比较重要:网页数据和用户行为数据。网页数据而言,百度在2000年做搜索业务时,全国中文网页数量不超过2亿个,而从网页上整体抓下来的数据中,只有几十GB。谷歌早期抓了2500多万个网页的内容,在1997年和1998年,从网页抓取下来的数据只有47GB。

谷歌与百度都在不断迭代,大约3年前开始,百度开始进入相对稳定状态,常用网页库数据有几百PB,网页库数量趋于稳定。

用户行为数据这一块,百度经历过几个阶段。2008年,百度知道、百度百科等新产品每天共产生几十TB新数据。去年我离开百度时,每天能采集到的用户行为数据达到PB级别。而现在百度每天产生的数据比去年还要增长50%以上,即差不多几个月的时间就能产生几百PB数据,跟之前整个网页库数据一样大。

只要我们创造一个内容之后,它就会被多次浏览、多次访问。所以,用户行为数据是比网页本身高一个数量级的数据。

搜索引擎发展的3个阶段

最开始,搜索是内容相关性的。当时,网页和线上材料都不多,只要你搜的关键词与实际网页内容能够匹配就可以。

但随着内容增多,谁排在前面、谁排在后面成了问题。最初,所有搜索引擎都基于关键词匹配相关内容,但作弊现象开始出现,如果将垃圾词塞进去,用户根本无法搜索到有用的东西。

但当时有那么几个人十分聪明,一个是谷歌的拉里佩奇,一个是百度的李彦宏,还有一个是做学术的。

他们三个人都意识到,链接本身很重要,一个网页被链接多少次,决定这个网页本身的权重是多少。而这也是谷歌、百度起家的东西,许多人以为百度抄袭了谷歌,但我研究了一下李彦宏和拉里佩奇发的专利,李彦宏的专利是在1997年提的,拉里佩奇的专利是1998年提的,李彦宏还更早一些。

这就进入到搜索引擎第二个阶段,基于链接关系决定谁排在前面。

2005年左右,搜索引擎进入第三波——基于用户行为。虽然从网页权重来看,有些东西排在前面,但新问题又产生了——一个老网页一定会比新网页的权重高,但新的页面可能更能满足用户需求。而群众的眼睛是雪亮的,用户进行搜索时,看到比较好的结果就会点击。

那么,可以基于“用户点击”这个数据,决定将什么排到前面。到目前为止,用户行为已经占据非常大的比重,从一些业内专家的说法来看,用户行为权重已经超过50%了。

在百度7年多的经历

接下来我将重点分享,我在百度7年多以来,做用户行为数据的经历。

我在百度知道做了一年研发后,对于接下来该怎么做比较困惑。“百度知道”2005年上线,到2008年的时候已经历时3年,产品形态就是一问一答,产品本身发展得非常成熟、数据非常稳定,每天有9万多个提问、25万个回答。

我觉得改造这款产品,需要研究用户,针对不同用户采用不同策略,甚至给他们展示不同的样式和界面,来提升百度知道的产品黏性和价值。

2008年,为提升百度知道的回答量,我们做了两个功能。

第一个功能基于核心用户。我们抽了35万个近一个月回答超过6个问题的核心用户,用3个多月时间,根据他们以往回答的问题抽取了17万多个兴趣词,结果新版上线后,却发现用户回答量没有发生变化。

我们当时分析原因,发现做个性化推荐之后,用户无非从之前到分类页面回答问题变为到个人中心,但平均回答6个问题的量没有变化。

后来我想,提升产品无非就两种思路:要么吸引更多用户,要么在单个用户上榨取更多东西。既然单个用户被榨取得差不多了,我们就拉新,扩大用户规模,从做核心用户推荐,变为针对所有用户推荐。只要用户在百度知道上做了访问,我们就去搜集他在全百度的数据。

百度内部当时有一个项目叫“后羿”,起源于百度在2008年做个性化广告的设想,即,在用户搜索时出现的广告,不仅基于关键词,还要基于用户行为体验,虽然当时做这件事情有点早,但的确帮我们奠定了根基,当时已经搜集了贴吧、知道或网页上各类用户行为数据,我们就在这个数据集上做训练。

用户在浏览器进行访问的时候,都会种下一个cookie,我们基于此将用户浏览的信息都记录下来。

根据这些信息,我们抽取每个用户权重最高的5个兴趣词,当用户访问百度知道详情页的时候,我们基于他们的兴趣词做实时搜索,将七八个待解决的问题放到页面右侧。

做这个的效果非常好,新版上线后,百度知道的回答量提升了7.5%,而我也因此在2008年获得“最佳百度人”奖。

此后,我对百度知道又做了一些改良,包括让它推荐的问题更具多样性等,还比如将用户半年之前的兴趣,通过权重进行不断迭代,使其衰减,而将最近的回答权重进行调整。但我发现,想再做提升不容易。后来我就开始做用户行为分析。

统一数据需求

百度文化里有一条是——用数据说话,不管做产品调研还是效果评估,都要统计数据。做产品访问都会在服务器端留下日志,基于日志就可以做统计分析。

但是,百度有众多产品,需要对各种各样的数据进行统计分析,如何将数据统计这件事情做得更好一些?

当时遇到几个问题,一是需求周期长,从提出统计需求到需求被处理,需要排队,因为一共只有两三个工程师处理这件事情,整个过程经过写程序、写脚本到上线,将统计结果发送给你需要几天的时间。

此外,运维成本高。每个需求统计都这样处理,团队很快维护了差不多六七百个统计程序,经常出问题。比如,贴吧被人爆了都会导致程序异常。

还有一点,运行速度慢,当时还是单机,300G文件跑起来没问题,但800G文件就跑不出来了。

第四个问题,员工成长受限。让员工写统计脚本,他们写3个月还行,写6个月就不想干了,写1年就立马跑路了,这也导致团队管理产生问题。

当时在百度内部,会基于Hadoop去跑一些任务,但对于它能将问题解决到什么程度,我心里没有底。我们设立的架构是,先提供一个界面,期望各个业务线的产品经理、工程师自己去做统计,而不是每次都把任务交给我们团队。将界面设计得小白一点、应用性能高一点。其实只是让大家通过界面配任务,用调度器、代码生成器,将其生成Hadoop的任务进行调度。

差不多一年半的时间里全公司都统一到这个平台中去了,这也是我在百度8年期间,做得最有成就感的事情。

后来,我们与其它团队进行合作,花了两个半月的时间,做了一个框架,并在2011年申请了专利,让开发效率提升,以前做一个统计需要几天,现在只要几分钟或更短的时间就能搞定。很快,大家都集中到统计平台,于是又产生了新问题——资源过于膨胀,当时我们团队只有五六个人,我觉得再这样下去数据规模太大了,无法控制。

当时我的思路受云计算影响,总想着去做一个更牛的计算引擎,但后来觉得这个思路不对,还是应该以数据为中心。2011年上半年,我和另外一个项目经理商量将两个团队合并,成立一个数据团队。后来,我们高级总监又从谷歌那边挖来牛人,这个人之前在雅虎做了7年,后来在谷歌做了5年,一直做数据仓库,他带领我们按照构建整个用户行为的思路去做数据仓库。

百度有七八十个核心业务线,我们将这些业务线产生的数据进行结构化,用谷歌的Protocol Buffer将其格式进行转化之后,再统一到一张表里面去。在这个基础上,我们再建上层主题数据。总之,让全百度各种各样的用户行为数据都统一到一张表。最近这一年多以来,我与很多大的IT公司交流过,他们这一块的数据都做得非常初级,根本没有将基础数据打通、把底层做好。

从2008年我开始做数据,到2012年,这三四年时间我慢慢想清楚,归根结底而言,数据就是一条“流”,我们把数据从源头搬到平台上,在这个基础上,再对数据进行入库、存储建设及管理。然后再去做产品分析和各种各样的应用。

心得

数据平台有两个关键环节,一个是元数据,一个是数据源。如果一个公司既能管理好元数据,又能管理好数据源,整个平台就不会差。

我们常用的业务数据库,实际存储的数据跟元信息都是在一起管理的,所以你感觉不到元数据本身的重要性,但是在大数据处理的情况下,就要把元数据分离出来。

想把数据平台做好,数据源很重要。拿百度来说,网页搜索是它最核心的业务线,其它的都是附属业务线,这些业务线都会用到网页搜索。如果我要变更搜索,下游依赖它的业务程序可能都会挂掉,所以我进行格式升级前都要事先告诉他们,不然可能会出问题。但如果我们让源头本身结构化,下游就不需要跟着源头动,数据解析效率也会比较高。

总结一下,我在百度做用户行为数据的心得:

第一点,数据源很重要。这也是我们创业思路中核心的一点。在数据采集这一块要“大”、“全”、“细”、“时”。“大”指的是宏观的大而非物理的大。比如每天全国各个地级市的苹果价格数据只有2MB,但基于它做一个苹果的智能调度系统,就是一个大数据应用。“全”强调多种数据源;“细”强调数据维度;“时”强调时效性。

第二点,用户行为事件模型很有效。规范并结构化用户行为之后,许多数据分析都会变得更容易。Event模型指的是事件模型,之前的叫做访问量模型。

我把2000年后的互联网分成3个阶段:

2000年~2006年是流量时代,谁的流量大谁就牛;

2006年~2011年,进入第二个阶段,我们把它叫做用户时代,谁的用户多谁就牛。比如开心网、人人网、Facebook,不再考量整体访问量,而是关心活跃用户、注册用户数;

2011年后到现在属于订单时代。不论是全民团购还是O2O、在线教育、互联网金融,无非是将线下的交易搬到线上,它本身就是和订单相关的。


CIO之家 www.ciozj.com 公众号:imciow
关联的文档
也许您喜欢