`
cloudtech
  • 浏览: 4604850 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
文章分类
社区版块
存档分类
最新评论

Youtube视频推荐算法:从10页论文到4页论文的变迁

 
阅读更多

所以说豆瓣广播是个好东西,长久以来已经怠于主动关注paper的我,每次都能通过我那些专业敬业的友邻们发现有意思的文章或话题,知识因分享而伟大!而这一次,这篇来自youtube的4页论文[1],最初是通过Chen_1st同学的博客介绍知道的。追溯过去,又找到了Greg Linden的评荐博客。这篇文章很新,以至于我根本找不到免费的全文下载,于是很感谢zibuyu博士帮了一忙,还把youtube在08年发的那篇10页论文[2]一并给我发了过来,于是就有这个有点标题党的题目。

实话说,那篇10页论文我没仔细看,但还是先来回顾一下。08年的论文主要思想是把推荐问题建立在一个user-video的图上,试图在该图上给user u找到合适的video v。作者认为对某个u,他感兴趣的v应该是符合如下三个条件的。
1、 u与v之间的路径应该是短的;
2、 u与v之间应该有多条路径可达;
3、 u与v之间的路径应该排除掉那些度很高的节点。

为了在图上搜索符合这三个条件的解,作者提出了多种方法来解决这个被命名为Adsorption的算法,如Averaging、Random Walk、Linear System。给出了不少的概念定义与算法描述,并附赠一系列美好的实验结果。

但在那篇4页的论文里,之前的那些工作似乎都成了浮云,除了是来自于同一个公司的人,做的是同一个推荐产品之外,你几乎很难从这篇文章里再找到从前系统的影子,不单作者换了,行文风格从研究人员变成了工程师,甚至连最后的REFERENCES都没有对之前的文章加以引用。于是Greg不无戏谑地说:尽管我们做了上十年的工作,中间还穿插了对netflix竞赛的孜孜探讨,但好像一切又回到了原点,古老的item-based思想仍然发挥着其独有的魅力。

下面看看在遥远的墙外,那个叫youtube的视频网站始祖做了些什么复古式的工作。

首先无需求不产品,推荐产品也是要面向用户的特定需求的。Youtube用户的需求主要有三个方面:明确知道自己要看哪个视频;通过搜索来获取某些主题的视频;也不知道看什么,纯粹逛逛,找找乐子。Youtube的推荐产品面向的就是第三种需求,需要达成的目标是:视频推荐的时效性、精确性与多样性,可解释性是一个plus。

接下来几个工程师开始进行系统设计,搬出了诸如解耦、降低系统复杂性等等工程概念之后,介绍了他们本质上就是简单的item-based的推荐算法(但他们说这是关联规则)。最重要的公式就是以下的video相似性计算公式:

其中分子是video i与video j在用户session数据库中共同出现的次数,分母是一个规范化函数。当函数取值为ci时,这其实就是关联规则的置信度的计算公式,而当函数取值为vi与vj的模的乘积时,这个就是余弦相似度计算公式(因为在向量取值为1与0时,cij等于vi与vj的内积)。所以可以说这是关联规则与余弦相似度的通式。但youtube对这个函数的取值是ci * cj,如果把i作为种子,要找i的相似video的话,ci是不会影响到相似video的排序的,所以只有cj在起作用,而cj的作用则起到了打压热门视频的效果(因为播放得越多,cj越大,相似度越小),从另一个侧面可以提升推荐的多样性。当然这只是一种最简单的相似性描述,youtube实际系统当中还会考虑一些别的因素,如播放时间戳、视频的元信息等等。

理论上可以为每一个video pair计算出一个相似度rij,但实际中通常要对这个值进行截断,而以video作为节点,以有效的rij为边的权值就构成了一个有向的video graph。接下来就是根据这个图来为某个用户u生成候选推荐了。假设我们拥有用户u的一个视频种子集S,它可能来自于用户的收藏、评星或者简单的收看记录,一般意义上的item-based方法这时就会对S中的每一个视频,寻找它在video graph上的最近邻居,并以此作为推荐的候选。如下面的公式所示。

而这篇文章的方法稍有不同,但也很简单。作者们认为一般的item-based方法通常会压缩推荐候选的范围,即这种方法得到的结果通常多样性比较差。于是他们在第一步搜索最近邻居的基础上加以扩展:搜索多阶的最近邻居,如下面的两个公式所示。

这样就完成了推荐池的扩容。但这个推荐池通常比较庞大,而推荐系统只能从中选择几个或几十个推送到用户面前,这样就必须知道其中哪些视频的权重更大,哪些更小,所以就需要一个赋权的过程。Youtube对视频的赋权方式主要考虑了三方面的因素:1)视频的质量;2)跟用户的切合程度;3)多样性。第一个因素取决于视频上传时间、播放、评星、收藏、分享、评论等等视频本身的数据。第二个因素取决于用户对种子集中视频的喜好程度,以及推荐池中的视频跟种子集视频的相似程度。第三个因素可以通过多种方法来评判。然后把这三方面的因素作一个线性加权,就得到了推荐池中每个视频的权重,接下来的推荐就顺理成章了。

如此三步:构造video graph;在图上生成扩展的候选推荐池;为推荐池的video赋权。就是一个大致的框架,简单明了,非常工程化实用化的实现,一贯的google范。

为了说明这种推荐方法的有效性,作者以最多收看、最多收藏、最多评星的视频作为baseline,用以与推荐视频作比较,实验是在线进行的A/B Test,实验框架我以前也有过简要介绍。实验时间是21天,评判标准是点击率。结果发现,在这段时间里,推荐视频的点击率都稳定地比那三个baseline高出两倍,这已经足够说明问题了。

最后提一个数据,在youtube首页的推荐模块中的视频点击,占了首页视频点击的60%,虽然有模块位置的因素在里面,这也是个相当可观的数字。

Greg那篇博客下面还有一些饶有趣味的讨论话题,比如Greg说这篇文章应该引用早期amazon的那篇关于item-based的文章,因为从推荐算法本质上它们是同一套东西。当然同时Greg也坚称amazon是item-based推荐应用的始祖,而有人则指出,其实这样的思想在90年代的paper就已经有人提出过,但Greg认为这并不影响amazon是第一个把这项技术成功地应用于商业、特别是大规模数据应用领域的始作俑者,就如pagerank的想法在google诞生之前就已经存在,但没有人怀疑google是使用这项技术的成功的先行者。我认同Greg的说法,要是从paper或纯粹想法的角度不断回溯,估计某位古希腊哲人或古中国的科学家都可以跳出来说:哥当初就已经是这么想的!

参考文献:
[1] Davidson, J. and Liebald, B. and Liu, J. The YouTube video recommendation system. Proceedings of the fourth ACM conference on Recommender systems. 2010
[2] Baluja, S. and Seth, R. and Sivakumar, D. and Jing, Y. Video suggestion and discovery for youtube: taking random walks through the view graph. Proceeding of the 17th international conference on World Wide Web. 2008

转自:http://www.wentrue.net/blog/?p=1181

分享到:
评论

相关推荐

    内容算法:把内容变成价值的效率系统

    推荐平台优化:从SEO到REO 粉丝运营:新时代的新问题 全平台运营:从小作坊到MCN 自媒体变现 变现入门:平台分成 广告变现:品牌的溢价 自营电商:隔行如隔山 内容付费 缘何付费,规模几何 内容付费...

    Youtube短视频推荐系统变迁:从机器学习到深度学习

    Youtube是全球最大的视频分享平台,用户量高达10亿+,每天上传的UGC和PGC都是百万级别。...本文主要介绍youtube10年推荐系统相关的算法和策略变迁。笔者从网上找到了三篇介绍youtube推荐系统相关的文章

    Youtube4篇推荐系统论文

    youtube推荐系统改良的历程论文,从基础的item-based到graph random walk,到dnn

    Youtube推荐系统论文

    youtube推荐系统改良的历程论文,从基础的item-based到graph random walk,到dnn

    基于聚类层次模型的视频推荐算法

    目前推荐系统存在评论数据稀疏、冷启动和用户体验度低等问题,为了提高推荐系统的性能和进一步改善用户体验,提出基于聚类层次模型的视频推荐算法。首先,从相关用户方面着手,通过近邻传播( AP) 聚类分析得到相似用户,...

    Python对YouTube视频统计趋势数据集分析.zip

    这个数据集是最热门的Youtube视频的每日记录, 该数据集包含有关Youtube每日热门视频的数月(且在不断增加)的数据。包括US,GB,DE,CA和FR地区(分别为美国,英国,德国,加拿大和法国)的数据,每天最多列出200个...

    论文研究 - 使用YouTube作为学习社交表达的平台

    进行了6个YouTube视频,涵盖所有基于四种语言技能(听,说,读和写)的活动,以探索该平台功能在学习社交表达中的有效性。 检验前和检验后以及问卷被用作数据收集方法。 主要发现表明,测验后结果中正确问题的数量...

    youtube-duration-sort:按时长排序YouTube订阅视频-源码

    youtube-duration-sort按时长排序YouTube订阅视频去做添加更高质量的图标添加默认排序选项清理插入的图标清理代码

    YouTube视频趋势分析

    对YouTube数据集进行可视化分析。资源涵盖实验所用的数据集、代码、实验截图以及实验内容描述文档。

    Youtube批量视频上传工具

    免费的YouTube上传器是第一个也是最好的工具,无需在批处理模式下使用原始YouTube网络界面即可将视频上传到YouTube。 充分利用DVDVideoSoft YouTube上传器: - 高速上传单个视频和一串视频; - 保存帐户信息以便...

    机器学习算法配套案例实战-推荐系统ppt

    封面页 标题:机器学习算法配套案例实战 - 推荐系统 副标题/作者信息:您的姓名/日期/所属机构等 目录 介绍 推荐系统概述 推荐算法分类 案例实战:算法选择与实现 评估与优化 实际应用案例 结论与展望 参考文献/资源...

    youtubedl-android:youtube-dl适用于Android

    示例应用可以从下载用于测试的调试apk Checkout ,基于该库的视频下载器应用程序。安装 Gradle第1步:将jitpack存储库添加到您的项目构建文件中allprojects { repositories { maven { url ' ...

    数据结构和算法:YouTube频道上的以下教程示例:FreeCodeCamp

    数据结构和算法以下YouTube频道上的教程示例:FreeCodeCamp。

    Android YouTube 视频播放

    1=====播放YouTube视频呢?这个也有滴就,支持横竖屏切换,支持列表播放,可以只定义扩展,可以放到项目中直接运行。。。。。 2=====当然播放HLS格式的视频有时候确实是比较麻烦,ijkplayer还得编译so库进行支持...

    Youtube Video Player+Youtube API Unity播放YouTube视频插件包unitypackage

    您可以从YouTube API获取所有视频数据。 (需要添加自己的api,包含教程)。 使用 Unity 视频播放器或自定义播放器播放 YouTube 视频。 我们支持直播视频,但此功能不适用于 Unity 视频播放器,您需要一个支持 HLS ...

    YouTubeAPI_Project:通过Python脚本连接到YouTube的API

    YouTubeAPI_Project:通过Python脚本连接到YouTube的API

    Resources

    :Spain: -Youtube视频 :Spain: :Spain: -Youtube视频 :Italy: - :Spain: - -YouTube视频 :Spain: -Youtube视频 :Spain: :Spain: - PYTHON -Youtube视频 -Github -Github Repo -Github Repo 视频 :Spain...

    ckeditor-youtube-plugin:CKEditor插件嵌入Youtube视频

    适用于CKEditor 4的Youtube插件 版权所有:copyright:2017 Jonnas Fonini 。 这项工作是免费的。 您可以根据Sam Hocevar发布的“做您想做的事来许可公共许可证,第2版”的条款重新分发和/或修改它。 有关更多详细...

    如何修复YouTube黑屏视频问题1

    以下是可能导致YouTube屏幕停电的一些问题:广告拦截插件:有时,您的广告拦截器会阻止您观看视频,而不仅仅是过滤掉广告。如果您遇到YouTube视频播放的问题

    youtube-subscribers:接近YouTube频道的实时订阅者人数

    微型应用,可在第二秒之前观看特定YouTube频道的订阅者,观看次数和视频计数。 频道编号 您可以通过访问频道来获取频道ID。 这是一个例子: 频道ID为“ UCWjmAUHmajb1-eo5WKk_22A” 开始 您首先需要将Google API凭据...

Global site tag (gtag.js) - Google Analytics