• 项亮:推荐系统实践


    专题直播:http://labs.chinamobile.com/focus/imic_2012
        

        2012年8月21日至8月22日,中国移动在北京国际会议中心举办“第六届移动互联网国际研讨会”,聚焦于云、管、端、“台”,更广泛、更深入地探索构建合作共赢的产业新生态,打造移动互联新生活。以下为Hulu软件研究人员项亮发表演讲。   

    以下为演讲速记:  

      谢谢大家来听我们的报告。之前的嘉宾都讲了很多界面怎么设计、产品怎么定义之类的,我今天给大家分享一些算法方面的东西。首先关于推荐系统。这是我今天的主要内容,关于推荐系统,什么是推荐系统?大家有两种不同的认识,从狭义的方面来讲,大家会认为比如说亚马逊首页给你推荐,这个就叫做推荐系统,其他的都不算,这个在我看来,其实推荐系统给他一个比较明确的定义,就是能够通过用户行为的变化,来改变用户浏览所看到的东西的东西,就叫做推荐系统,比如说你在网上买了一双鞋,然后你买完鞋以后去了一个页面,发现这个页面和别人不一样,是跟你刚刚买鞋这个行为发生的变化非常相关的一种变化,这是推荐系统所产生的。
        

      推荐系统有一些任务,首先推荐系统在整个网站里面,它连接了三方面的参与者。首先是用户,然后是物品,我要卖的东西,然后还有网站本身,对这三方面的人,或者是说提供这些东西的这些提供商来说,这些系统需要解决三个问题,第一个是我们知道现在的社会是一个信息扩展社会。会在网站上看到各种各样的东西,特别是网店兴起之后大家的选择范围比以前大很多,所以如何从这些海量的商品中或者是信息中找到用户感兴趣的信息,是推荐系统的第一个任务。
        

      第二个任务是推荐系统在满足用户的同时,也要满足物品的提供商,比如说我们Hulu最主要的提供商是卖电视的,像美国的福克斯,CPS,这些内容提供商。我们必须要把他们很长远的电影给推荐出去,不能说他卖一千部电影,我们只推荐一部,其他的不放这是一个推荐任务。另外一个是很多网站有很多搜索,还有各种各样的排行榜,为什么要用推荐系统,如果其他的产品能够带来推荐系统,能够带来的所有好处,就没有必要用推荐系统,所以说推荐系统的第三个任务是要帮助使用他的网站增加他的用户粘性。
        

      这个推荐系统诞生从正式的学术上的诞生起源于1994年,当时美国的一些研究人员发表了一篇论文,从论文开始产生了一个词,推荐系统才正式诞生,从诞生到现在已经用了很多的领域。特别是近几年应用的领域很多,像电子商务里面有淘宝,当当等等,音乐上就有豆瓣电台之类的,另外像社交网络有新浪微博。还有像本地服务中的大众点评。这里截取了推荐系统的界面,来说明它的应用。刚刚说了对推荐系统有比较狭义的认识,我截屏截出来的东西就叫做推荐系统,比如说Hulu的首页里面,上面是Hulu的,下面是亚马逊里面的,亚马逊里面会根据你以前看过的书,买过的书给你推荐一些书,这是根据用户个性化的行为给用户推荐物品这是一个比较狭义的推荐系统。
        

      这是我们在移动互联网上做的一个个性化推荐的产品,大家知道这个在看视频网站这件事情上,有很多的设备都可以看视频网站,比如说iphone和Ipad,家里面的电视,包括机顶盒都会用来看视频,根据我们的研究发现,在设备上看视频和在网站上看视频有非常大的不同点。在设备上看视频的用户更需要一种工具帮助他们发现他们个性化的,所喜欢的东西。因为在设备上,大家知道输入是非常困难的,用户的兴趣也是很不明确的。基于这些我们在这个设备上设计了一个和网站上完全不一样的应用。大家看到整个第一屏的所有东西,从最上面的,如果对美剧看兴趣的都知道,最上面有一个电影,这个里面展示很多的美剧。下面也是一些个性化的,告诉客户你之前看过什么东西。下面是根据你用户的行为给你做的推荐。再下面是一些其他的好友给你做的推荐。我们在设备应用上加入了更多的个性化的元素。
        

      跟我们一样的,亚马逊也是,大家如果看到亚马逊在网站上的首页,会发现有各种各样的繁杂的分类目录,最近改过版,比以前好多了,但是在手机上只有一个搜索和推荐。其实就满足了用户的需求,一种是用户有明确的目的,我今天想买一个袜子我就去搜索了,另外是客户不知道干什么,就想买一个东西,就去推荐。这是中国的大众点评。主要是考虑用户所处的上下文,比如说他所处的时间和地点,给他推荐的餐馆之类的。
        

      这个豆瓣也是一样,音乐可以是是推荐最适合的场景。在我看来一个好的推荐系统,最好的场景是用户极端的无聊,极端的不知道自己想干什么,这种情况下你听音乐,很少有人说我今天就要听这么一个音乐,不会有这样一个人。大家就是说我只是想听音乐,我不知道我想听什么,你按照我的风格给我推荐就可以了。豆瓣电台在iphone上的界面,把手机打开,登上豆瓣电台,戴上耳机就可以听了,你不告诉他你想听什么,他也不让你有选择。你也没办法搜索我想听什么。
        

      除了这个之前的个性化推荐以外,还有相关的产品,相关物品推荐,比如说你在Hulu上看到了一个电影,我们会给你推荐相似的东西,或者是说你在亚马逊上买了一本书,我们会给你推荐一些相似的书。其实这个用的范围更广泛。很多的网站没有个性化的推荐,也就是说首页没有推荐,但是每一个商品的页面都有推荐。而且这个推荐给电子商务网站带来的销售量的增加也是有很大的影响的。
        

      比如说我之前听过一个电商网站的说法,有一个应用叫做打包销售。主要的方法是你们买了一本书之后,下面会有一个界面,你买这本书和那本书一起买可以便宜多少钱,这对销售额的增长很有用的,这也是有相关推荐的,这是在亚马逊上买程序员修炼之道之后,告诉你应该买这本书的人,也买了其他的什么东西。另外这个是视频网站上每看完一个视频以后,会弹出一个框,大家上优酷和奇艺也可以看到,这样可以增加用户的视频浏览时间。
        

      再说这个推荐系统有什么算法之前,我们说一下评测。我们设计一个任何东西之前,我们要了解他的评测指标。如果你没有目的,就没有方法直线你的目的。对于评测有三种评测方法。第一种是离线实验,我们搞一个数据集,我们自己在这定一些指标,去优化,如果大家做过数据挖掘和记忆搜集会知道我优化一个指标,然后第二种是说你离线实验,之后你觉得这个离线效果已经很好,为什么要先做离线实验呢,因为没有任何成本,只需要一个研究人员搞一个数据集,搞几天就可以出来了,但是弄出来之后,只是说离线指标要好,但是离线指标好不代表你上线就能够得到商业上的增长。第二步就是我们要做用户调查,我们花钱雇一帮人来推这个系统,你用这个爽不爽之类的东西。你需要花钱雇人,这个才能帮你填这些调查表格,最后你用户调查,离线实验感觉都很爽,你就可以放在线上做测试之类的。这当然是实验方法了。
        

      关于在线评测的实验指标,一个是点击率一个是转化率。但是这两个率的定义,对不同的网站是不一样的。点击率比较容易定义,用户点的东西。但是对于转化率来说,电商网站和视频网站的转化率就不一样了。电商的转化率是定单,真正从这个用户这赚多少钱了。对于视频来说的话,看你的影视模式,你靠放广告的话,就要让用户的观看时间变长就知道了。大家知道优酷,你多看一个视频就可以多看一个广告,你最终的光看时长越长的话,转换率就越高,还分为短期的转化率和长期的转化率。
        

      比如说我们之前在实验中发现,美国的用户,我不知道中国用户有没有这种特点。他们平时不怎么看电影,周末会看电影。你平时给他积攒的电影他会积攒到周末看。如果记录了那一天的转化率的话,可能算不出转化,但是如果时间往后的话,会发现在一定时间内会转化的。
        

      离线指标非常多了,这个指标多得让人觉得你不知道以哪一个目标作为优化为主。其中一个比较著名的是推荐的准确率,主要是描述了推荐系统预测一件事情的能力。比如说我推荐系统预测你明天会去买一双鞋,你明天真的去买一双鞋了,就叫做预测准确了。很多时候不能代表推荐系统的真实的能力,因为推荐系统,包括我们设计很多离线算法预测正确的都是非常显而易见的事情,比如说我预测你明天会吃饭,明天太阳从东边升起。很多时间我们所评测的准确率高的推荐系统,是因为他预测到了显而易见的事情,对于不显而易见的事情,很多系统没有预测准。
        

      覆盖度呢,我前面说这个用户系统对内容和提供商来说都是很重要的,比如说以前一千本书,你只把其中的十本推荐给了客户,另外的没有给客户推荐,那么你的覆盖率是1%。也就是说覆盖率描述了这个系统,是否可以把常规的系统推荐给用户的能力。
        

      多样性是说用户看到的推荐结果是多样的,为什么是多样的呢。大家觉得这只是这个研究人员追求的指标,我觉得应该多样就应该多样。其实不是这样的,因为用户的兴趣本身是多样的。而我们推荐系统的能力,并不能知道用户在当时和当地需要什么东西。那么为了解决我不知道他在当时当地需要什么东西的问题,我们最简单的解决方案,我们把他可能喜欢的各种各样的东西都弄出来,让他自己选择一个,比如说这个人曾经喜欢这个刘德华的歌,也喜欢张学友的歌,今天这个客户来了,他可能也是想找刘德华,但是你并不知道他今天只是想找刘德华,所以你要使你的结果多样,使他能够更容易的击中他的兴趣。
        

      新颖性和准确率有一点关系,很多的推荐系统只是把一些显而易见的东西预测出来了,所以新颖性是考量了把一些用户不知道的,比如说用户天天吃饭,今天也吃饭,这个没意义,如果客户天天吃饭,今天没吃饭你告诉他,这个会很新颖。
        

      另外信任度呢,大家知道推荐这个东西和社交网络一样都是一个线下活动的线上表现。比如说现实生活中会交朋友,比如说赵本山的卖拐,会推荐一个拐给你,如何认为我要买这个拐呢,必须有一个信任度,同样一个东西,赵本山卖给你你可能会买,但是我卖给你你并不一定会买。我的推荐结果是一样的,但是你给用户的信任度不同,会影响用户的最后决策。信任度的下一个是可解决性,主要是说提高推荐系统信任度的方法,是让你的结果可以解释,告诉用户为什么推荐这个东西,用户很多时候知道这个原因以后可以更好的相信你的结果,最后一个指标是你的系统能不能受到一些攻击,我这个人,我自己卖鞋的,我想把我的鞋天天弄到首页上,我攻击你的系统。你的系统在这种攻击下怎么样应对。
        

      然后主要的方法有这么五种,有内容过滤,协同过滤,根据用户的行为进行郭彤,社会化过滤,上下文相关推荐。内容过滤最简单的,一个用户看过大话西游,无间道之后,看过色戒,还会看什么,最有可能看临歧的电影,这是由刘德华和梁朝伟和周星弛三人合演的,这是一个内容推荐的例子。
        

      然后机遇用户协同过滤,给用户推荐他有相似兴趣的其他用户喜欢的物品。比如说我都知道看过金庸全集一以后会看金庸全集二,但是没有人知道喜欢啤酒的人会买尿布,这件事之前大家不知道。但是最后通过协同过滤挖掘数据以后才知道,社会化过滤,比如说在新浪微博上也有的,第一种给用户推荐好友喜欢的物品,第二种是给用户推荐好友。给用户推荐好友最典型的应用是像大家都要找工作,找工作人脉很重要,这个时候推荐好友和重要。
        

      最后这个是上下文的推荐,这幅图表现什么事情呢,像大家都看过了希尔顿和他的朋友在家里面看电影,这个包含了很多上下文,第一个是在家里面看的,地点,第二个是和什么人看,和朋友,没有说时间,可以说是晚上看的,一般的PC肯定放在家里面,所以在PC上放的时候,肯定在同一个时间,同一个地方,同一个什么什么,一般不会和好友围着PC看,但是移动设备不一样,可以变化的,可以通过GPS数据很容易拿到的,所以上下文决定了对推荐效果很大的影响。
        

      最后说一下我们前面提到了很多推荐算法,但是有一些很好,有一些在某种程度上好,但是怎么样才能让这些算法发挥最大的作用呢。我们要把这个推荐算法融合一下,不仅要融合算法,还要融合各种行为。我们说推荐系统就是用户的行为了,用户的行为非常的。所以好的推荐算法,应该融合用户的各种各样的行为,利用各种各样不同的算法给用户推荐一个结果。
        

      我前面讲了很多,推荐系统也有很多挑战,比如说冷启动,优化目标,我前面那么多指标,哪一些指标更重要,还有异购的,多源的数据,各种各样的数据。最后是前面很多人提到了产品设计,和用户界面怎么做。
        

      推荐系统和移动互联网来说,我的经验并不是特别多,我只是总结了一些移动互联网的特点。第一个是用户大部分的时候都是处于无聊的心态,大部分都是处于地铁上或者是电梯里看移动互联网,很少有人在工作的时候看,屏幕很小,很多人说过了。第三个是移动设备上输入文字很困难,大家觉得Ipad和iphone很可以,但是要想在电视上输入一句话很难。用户一般是处在一般的明确上下文当中,用户的设备是各种各样的,比如说有安卓和iphone等等。最后是用户的数据比PC上更丰富,因为有各种各样的数据。我的演讲到这里,谢谢大家。

      

    (本文为现场速记稿,不代表移动Labs及中国移动观点)  

  • 相关阅读:
    复制某文件夹及其子文件夹中的一定大小的文件
    一个简单的查询脚本
    写一个交互的脚本
    nginx+php5.6.12+discuz
    curl 错误
    python 交互界面tab补全
    uwsgi.xml
    supervisorctl
    认识nginx配置文件
    nginx+uwsgi+django 配置3
  • 原文地址:https://www.cnblogs.com/abc8023/p/4076859.html
Copyright © 2020-2023  润新知