硕鼠的博客站

范路的博客主站,时而会发些东西。

图灵读书会——推荐系统实践

6月16日,我们的御膳房会议室迎来了一个非常有特色的活动——图灵的读书会。图灵是挂靠在人民邮电出版社下面的一个出版机构,不是很大,每年出的书也不是很多,但是对于一个计算机、软件圈子的人来说,图灵的影响力还是很大的。这主要是是因为图灵所出的图书,品质一直都非常不错。

记得以前有一次和一个出版社的编辑聊天(另外一家以计算机图书闻名的出版社),他说纸质书就是给初学者看的,那些已经达到一定技术层次的人,是不会购买纸质书看的,他们如果有什么需要,通常能够在网络上找到所需内容。所以纸质书就是为初学者设定的。我和图灵的人聊天的时候,他们却告诉我,他们会出一些比较有深度的、比较新、层次比较高的书,哪怕这些书的销量很小,但是对于那些真正需要这些书的人来说,这些书才是真正有价值的。

很难说这两种观点哪个更正确一些,从我个人的角度来说,那些为初学者编写的书籍,可能能够有很好的经济效益。但是那些有层次、有深度,描述最新技术的图书,才是对社会,对整个行业有价值的东西。

图灵的编辑真的很热爱他们所出版的图书,热爱图书本身而不是为图书的销量而忧、而喜。每次见到他们,他们都会满怀激情的向我推荐他们的书,就像计划生育之后的父母们在向周围的人介绍他们唯一的宝贝。

图灵最近在做一些改变,从一个出版机构向社区的方向转型。既然他们已经拥有了一个相对细分的,很有深度的读者和作者、译者人群,那么去维护一个拥有极强购买力和社会影响力的社区,肯定要比做一个单纯的出版机构更加有价值。

DSC_0450

图灵出了不少曲高和寡的图书,比如很多数学方面的书,还有不少算法方面的英文原版书。每次出来做活动,他们总是要带着这些宝贝出来向大家展示。

DSC_0468 DSC_0470

当天推的这本书是一本《推荐系统实践》,这个主题虽然是现在最热门的主题,但是真正能够看懂这本书的人应该并不多。所有人都知道智能推荐是当前互联网和移动互联网中最核心的技术,能够说出其中一些特性的人也不在少数,但是真正了解或者说愿意去了解推荐系统核心算法的人并不是很多。

既然是读书会,那么分享者肯定是和这本书有关的一些人,《推荐系统实践》这本书有两位技术指导,和一位作者。当天的读书会就是有这三位来为大家分享他们各自对于推荐系统的理解和心得。

曾经任职于谷歌,现任腾讯公司情境广告中心总监的王益,是这本书的一位技术指导。腾讯公司情境广告中心总监——王益

王益主要讲了一些广告相关的东西,讲解了广告和推荐的差异。作为一个互联网广告圈子里面的老兵,他讲的东西还是很能够引起不少听众的共鸣的。

来自豆瓣的陈义是本书的另外一位技术指导。

豆瓣的陈义

陈义的语速非常缓慢,听他讲东西是一件非常痛苦的事情,总是觉得非常的困。

下图为本书作者,来自hulu的项亮。 《推荐系统实践》的作者——来自hulu的项亮

和上面两位推荐和互联网广告圈子的老兵比较起来,项亮要稍微稚嫩一些,从中科院毕业时间不久的他,虽然现在就职于hulu,但是讲解的时候,纯数学的东西多了一些,和应用结合得有些生硬。他所能够拿出来列举的案例,大多是hulu的,还有个别amazon的案例,基本都是一带而过了。

所谓推荐系统

推荐系统,其实由来已久,不同的地方仅仅是,现在所说的推荐系统是有计算机系统根据用户的属性和内容的属性进行自动推荐,以前是人工推荐,用比较书面的语言来说叫做编辑推荐,而现在则是计算机自动推荐。自动推荐的好处在于能够在更大的范围内选择内容,向更大的人群做一对一的个性化推荐。这是以前的编辑推荐所无法实现的。

推荐系统需要向用户推荐一些用户所喜欢的东西,但这并不是全部。推荐系统还需要不时的向用户推荐一些新的东西,要保持一定的新奇性。推荐系统中比较典型的电台类应用,其创新性就在于用户可以不断的听到一些新歌,一些从风格判定,推荐系统认为用户应该喜欢的新歌。

在推荐用户喜欢的内容,和用户应该喜欢的新内容之外,推荐系统还需要告知用户,他是怎么工作的,是依据什么做出的推荐。推荐系统需要和用户之间建立起信任,并不断的加深和巩固这种信任。类似于竞价排名和在sns timeline中灌广告都是伤害这种信任的做法。

推荐和广告是两套不同但相近的算法

这两种算法,非常相近,都是希望能够能够将最佳的内容推向用户。但是,也有一些差异。推荐算法只需要考虑用户的满意度即可,也就是说推荐算法所追求的就是不断的提高用户的满意度。但广告算法要复杂一些,广告算法并不仅仅追求用户的满意度,通常用户最满意的广告算法就是没有广告,所以,广告算法所追求的是用户、广告主之间的一种平衡。

推荐的是内容,而广告应该和内容分离开。中国人总是觉得自己比别人更聪明一些。比如百度就将广告直接和内容混合在了一起,做了竞价排名系统。很多人都觉得这是一种不道德的方法,特别是这个行业的老大google号称自己不作恶,他们的搜索结果是完全由算法决定的,不受任何商业因素和人为因素的影响。google是将广告分离出来放在搜索页的旁边,并标注清楚,那是广告。

将内容和广告进行混合,最彻底的应该是SNS系统,但是也有很多SNS系统因为在内容中混入了太多的广告而之逐渐衰亡。国内SNS网站中这种例子很多的。

推荐和广告算法,是当前互联网和移动互联网的关键,核心竞争力

用户进入一个网站的目的是获取内容,所以作为为用户直接推荐内容的推荐系统,是当前各个内容网站的核心功能。

记得以前大家总是在说Web 1.0时代,是网站提供内容,用户自己上网去阅读这些内容。到了web 2.0时代,则是用户自己创造内容,用户自己决定订阅哪些内容,系统自动将用户订阅的内容推送给用户。而到了现在,由于用户创造内容的成本越来越低,用户所创造的内容成几何级数爆炸增长。再有用户自己去筛选自己所需要的内容,并进行订阅已经越来越困难,于是以机器学习为核心的智能推荐系统就成为了互联网和移动互联网服务最核心的功能。

用户的时间越来越紧张,甚至连碎片时间也逐步成为了各个应用和服务所争夺的阵地。如何在有限的时间内尽可能看到更多的用户自己觉得重要和有趣的信息,这就是目前互联网和移动互联网应用和服务所争相研究的领域。Path的成功,就是这种新需求下的新信息组织方式的一次成功,path仅仅是向用户推荐一些他们可能认识的其他用户,path是通过限制好友数量来实现对信息流的约束的。

智能广告推送系统

当直接销售马匹的收入无法让人们满足的时候,人们为马匹分级。当固定的广告位置和报价无法让企业和用户满意的时候,网站上智能广告系统。

最早的互联网广告从传统的平媒广告中继承了很多规则。网站将广告位根据位置和面积进行了详细的划分,然后按照不同的价格销售给不同的广告主。当广告位越来越紧张,用户为了得到更好的体验,希望能够尽量减少广告位置,而广告主虽然需要在有限的广告位上展示他们的广告,但是他们又不愿意为了这些有限的资源支付更多的费用,于是互联网和移动互联网广告又从电视和广播广告行业中学来了新的规则,将同一个广告位,按照不同的时间段分割开来,卖给不同的广告主。

随着广告内容的增长,由网站编辑来处理广告已经越来越困难了。虽然电视台和广播电台都有自动广告播放系统,但是这种系统还是无法适应互联网广告的播放。自动广告播放系统,在同一个时间、同一个频道上播放同一个广告。这对于能够直接计算转换率的互联网广告系统来说显然还不够好。

为了降低单个广告的播出成本,增加单位时间内,单个广告位播放广告的数量,以及这些广告的点击数和转化率。互联网广告服务商在抛弃了按照固定位置销售广告,按照固定时间段和固定位置销售广告位之后,选择了自动推荐广告的方式。也就是根据用户所浏览的内容,自动在广告库中挑选一条用户可能喜欢的广告来播放,在同一个时间段,在同一个广告位置上,不同的用户看到的将是完全不同的广告。

有限的广告播放位置,被从空间和时间上彻底的拓展了。现代的广告推荐系统就是在最大限度上利用广告展示机会,并将转化率提升到最高的一种方法。通过综合的考量,可以确保广告主的广告,特别是那些容易被用户点击的广告,在用户阅读内容的时候,推送到用户面前。然后,根据可靠的记录和统计结果,向广告主收取相应的费用。一个广告被展示了多少次,被点击了多少次,甚至是产生了多少次购买。

互联网和移动互联网广告拥有一个任何传统广告方式都无法匹敌的优势,那就是可以直接转换为购买。任何传统广告,都无法准确的统计到底有多少用户是通过广告走进商店购买商品或服务的。传统广告的效果通常是按照复杂的数学方法评估出来的,而互联网广告却可以直接结算转化率。所以,互联网广告算法就变成了赤裸裸的对转化率的追求。

大部分的互联网广告算法,最早都是来自于google,google应该是目前互联网广告算法的开山鼻祖,也是最前沿的广告技术得以被研发和应用的地方。google在国内的专利,大部分都是和广告相关的。曾经听过一位以前在google工作过的同事说起过google的专利政策,他们觉得那些和搜索相关的核心算法没有必要去申请专利,一旦他们申请了专利,别人就会来抄袭他们的算法。而后台的核心算法,即使被抄袭了,也很难证明。bing就曾经抄袭google的排序算法,google唯一能做的也就是将完全一模一样的搜索结果展示给广大网民,博得一笑。但是google在广告业务方面的专利投入还是非常可观的,他们申请了大量的广告展示、推荐和计数相关的专利。而且将这些广告专利在国内都做了PCT(专利合作条约 PATENT COOPERATION TREATY),也就是说这些专利在国内都是有效的。不过好像没听说过google在专利上起诉过谁,还是那位原来在google工作的同事,他说google的专利政策是避免别人来告google,google很少主动去告别人的。

这个行业里面有google这样一个老大,要比苹果和oracle那种公司成为老大肯定好很多。

高深的数学,让人难以一下听懂

不论是推荐算法还是广告算法,其核心都是高深的数学理论知识。这场活动是我所参加的各种活动中,内容最艰深的一次了。核心的部分,基本听不懂。像我这种层次的人去参加这种活动,也就是能够在案例和叙述的部分,还能听明白一些东西,但是那些数学公式除了让我感觉这个行业异常艰深之外,就不是我这种假行家能够搞明白的了。

推荐系统不论使用什么算法,其关键在于多维数据的整理和分析。所谓的多维,通常至少是数百个维度,据说google已经可以在以亿计的维度中对数据进行分析和比对、排序了。

关于冷启动

对于广告和推荐算法来说,都不得不面对冷启动的问题。推荐算法将冷启动进行了更详细的划分,分为新用户进入系统时的冷启动、新内容进入系统时的冷启动,以及系统中用户和物品都是新的时候的冷启动。

当一个新用户进入系统的时候,系统不了解这个用户,不知道应该向这个用户推荐什么内容或广告。

通常推荐系统的核心算法按照侧重不同,分为以用户为核心的推荐算法和以内容为核心的推荐算法。那些以用户为核心的,就是根据用户的行为特性和用户与用户之间的关系来进行推荐的系统。这种算法有一个通俗的名字叫做协同过滤,通俗的讲,系统分析一个用户的行为习惯,然后找到和他行为习惯相近的用户,将那些和这个用户行为习惯相近的用户们喜欢的东西推荐给这个用户。豆瓣电台应该就是比较典型的协同过滤算法的实例。

这种以用户为核心的推荐算法的问题就是,当新用户进入系统的时候,很难做出准确的推荐。

另外一种以内容为核心的推荐系统,是将内容进行分类,然后以喜欢某一内容的用户,应该也喜欢同一类型的其他内容为基础,向用户进行推荐。亚马逊就是使用的这种方式,当某个用户在亚马逊中点击了某件商铺之后,回到主页就会看到同类型的其他商品的推荐。

这种以内容为核心的推荐算法在新内容进入系统的时候,推荐的效果也会出现偏差。

曾经有一个很神奇的案例,潘多拉电台,在系统上线的时候,用户和内容都是新的。无论采取哪种推荐算法,都难以得到很好的效果。于是潘多拉做了一件事情,邀请了大量的专家,将几十万首歌曲和音乐请这些专家进行评定和打分。将音乐分为四百多个维度进行评定,形成了一个完整的评定模型库。每一个用户进入的时候,首先要填写自己的喜好,系统根据用户的喜好和专家评定的模型库来进行推荐。

一个新的系统,既没有用户也没有内容的时候,总是内容要更容易处理一些。花钱做内容,不论是用什么方法,其投入产出比通常还是可以进行预估的。但是,如果花钱去做用户,其结果通常就像天朝的新闻联播那样,制作和观看的人都知道那是靠不住的。

总结

智能广告系统,对于那些小网站和小应用来说意义不大,这是个大公司才能玩儿得起的东西。现在很多大公司都在做平台,吸引那些小型的应用和服务进驻他们的平台,他们其实就是希望能够依靠广告来赚去利润。

推荐系统将逐步走下神坛,成为所有系统和应用的必备选项。但是推荐系统目前还主要停留在两个极端,大公司可以使用一些数学家来为他们设计模型和算法。而那些创业团队中的程序员们,则完全是根据个人的力量在单打独斗。目前的推荐系统,其数学部分和算法部分,很难被现在学校里面毕业的那些软件学院的本科生甚或是研究生所理解,现在的学校课程的划分越来越细化,那些以应用为目的的学科,其基础课程的重量已经越来越轻了。

记得我95年大学毕业的时候,有人说,数学对于以后的程序员来说所需要用到的绝大部分是加法,减法和乘法偶尔用到,除法基本不用。现在看来,计算机虽然主要用途已经不再是计算,但数学对于这个以智能为核心动力的时代来说显得比以往任何时候都更加重要了。

相信那些位于两个极端中间的一些智能推荐工具将在不久的将来风行起来,那些不需要开发者具备太多专业数学知识,就能够被使用的开源或开放的云端推荐服务和系统,应该会在未来一段时间里面逐渐涌现,并最终形成类似于Apache、Nginx那样的东西。


 

Both comments and pings are currently closed.

Comments are closed.

Close Bitnami banner
Bitnami