推荐算法

Netflix 推荐系统:第二部分

a 夏天 提交于 2020-01-06 14:16:14
原文链接: http://techblog.netflix.com/2012/06/netflix-recommendations-beyond-5-stars.html 在 blog 的第一部分,我们详细介绍了 Netflix 个性化推荐系统的各个组成部分。我们也解释了自从我们宣布 Netflix Prize 后,Netflix 推荐系统是如何变化的。100 万美金的奖金让我们不论在算法创新,还是在品牌宣传和吸引人才加入方面都获得了丰厚的回报。不过,准确的预测电影评分仅只是我们推荐系统的一部分。在本文中,我们将更加深入的介绍个性化推荐技术,讨论当前我们使用的模型、数据,以及我们在这方面的创新方法。 排序 推荐系统的目的是给用户提供一些有吸引力的物品供用户选择。具体的做法是先选择一些候选物品,并对这些物品按照用户感兴趣的程度进行排序。展示推荐结果最常用的方式是组成某种有序列表,而在 Netflix,列表就是一行行的视频。因此,我们需要一个排序模型,利用各种各样的信息,来为每一个用户生成个性化推荐列表。 如果你正在寻找一个能够最大化用户消费的排序函数,那么最显然的基本函数就是物品的热门程度。原因很简单:用户总是倾向于观看大家都喜欢观看的视频。然而,热门推荐是个性化推荐的反义词,它将为每个用户生成千篇一律的结果。因此,我们的目标就是找到一个比热门推荐更好的个性化排序算法

Netflix 推荐系统:第一部分

跟風遠走 提交于 2020-01-06 14:07:31
原文链接: http://techblog.netflix.com/2012/04/netflix-recommendations-beyond-5-stars.html 在这篇包含两个部分的博文中,我们将揭开 Netflix 最有价值的资产——推荐系统的面纱。在第一部分,我们将介绍 Netflix Prize 对推荐领域的贡献,Netflix 推荐服务的主要模块,以及推荐服务如何满足网站的商业需求。在第二部分,我们将介绍我们使用的数据和模型,讨论如何将离线的机器学习实验与线上的 A/B 测试相结合。 Netflix Prize 和推荐系统 在 2006 年,我们宣布举办 Netflix Prize ,这是一个旨在解决电影评分预测问题的机器学习和数据挖掘的比赛。对于那些能够将我们的推荐系统 Cinematch 的准确率提升 10% 的个人或团队,我们提供 100 万美金的奖励。我们希望通过比赛发现新的方法来改善我们提供给用户的推荐结果,这是我们商业模式的核心部分。当然,我们需要一个比较容易评测和量化的指标:我们选择的评测指标是均方根误差(RMSE,预测评分和真实评分之间的均方根误差)。比赛的要求是打败我们系统 0.9525 的 RMSE 得分,并将其降低到 0.8572 或更低。 比赛开始一年后,Korbell 的团队以 8.43% 的提升赢得了第一个阶段奖。他们付出了超过

推荐算法之基于物品的协同过滤

旧城冷巷雨未停 提交于 2020-01-01 12:25:21
基于物品的协同过滤( item-based collaborative filtering )算法是此前业界应用较多的算法。无论是亚马逊网,还是 Netflix 、 Hulu 、 YouTube ,其推荐算法的基础都是该算法。为行文方便,下文以英文简称 ItemCF 表示。本文将从其基础算法讲起,一步步进行改进并基于 MovieLens 数据集给出代码实现,带你领略这一经典算法的美。 1.基本原理 前面我们简单讲解了一下基于用户的协同过滤推荐(UserCF),并且给出了实现代码。还不了解的朋友可以转到链接---- 推荐算法之基于用户的协同过滤 。但是我们也讲到该算法存在一些缺点,首先,随着网站的用户数目越来越大,计算用户兴趣相似度矩阵将越来越困难,其运算时间复杂度和空间复杂度的增长和用户数的增长近似于平方关系。其次,基于用户的协同过滤很难对推荐结果作出解释。因此,著名的电子商务公司亚马逊提出了另一个算法——ItemCF 。 ItemCF 给用户推荐那些和他们之前喜欢的物品相似的物品。比如,该算法会因为你购买过《统计学习方法》而给你推荐《机器学习》。不过,ItemCF算法并 不利用物品的内容属性计算物品之间的相似度 ,它 主要通过分析用户的行为记录计算物品之间的相似度 。 该算法认为,物品 A 和物品 B 具有很大的相似度是因为喜欢物品 A 的用户大都也喜欢物品B 。

如何自学图像编程

社会主义新天地 提交于 2019-12-30 04:53:21
现在,图像类信息越来越多了,对图像的编程需求也越来越多。图像类项目的特点是性价比高,单行代码的价格一般是普通的程序的10倍,每行代码能够卖几块钱。很多人把目光放在这个上面。刚才又有网友咨询,做图像要看些什么书?结合我的自学经验,写一篇博客谈谈这个问题。 需要先明确几个问题: (1)你的基础如何?做图形图像的话,对数学要求比较高,至少要有大学数学的基础——微积分、线性代数、概率统计和数值分析都会用到的。不然,书看不下去,没法自学。如果要做深入的话,对英语也有一定的要求,绝大部分深入的资料都是英文的。 (2)做哪个层面的?与硬件严重相关的只能选C,做应用层的话可以选C++和C#,我个人推荐C#,当然,智能手机还是推荐C++。做Web层面的话,目前最佳选择是Flash(其实Silverlight比Flash更适合做Web图像,好歹Silverlight有byte类型,有struct,但Silverlight的普及度不够),Html5/Canvas目前只能做简单的应用,复杂的还不行。如果只是做算法,matlab就够了,但一般不是科班出生,很少做纯算法的。做纯算法还有个缺点就是,算法转换为收入很难。鉴于C#写算法并不比用matlab写算法慢,不建议摸matlab。但matlab代码要能看懂,因为论文中很多算法是用matlab写的。 (3)有没有克服困难的勇气。图像类项目大多不大

德州扑克视频推荐

♀尐吖头ヾ 提交于 2019-12-23 18:38:11
德州扑克 德州扑克视频推荐 2017年是德扑的风口年,阿里巴巴、腾讯、新浪、联众等投入重金进行市场开拓。而一线城市的白领,也都越来越喜欢上了这个来自西方的扑克竞技。纷纷从斗地主、升级、掼蛋等传统牌类游戏进行了『娱乐升级』。在金融圈更是流传,德州扑克已经是必要的社交技能甚至是面试技能。那么,今天,由我来为大家简单分享下我对德州扑克的见解。今天聊得内容大致如下: 德州扑克大概是什么? 德州扑克是不是赌博? 决定德州扑克的胜负中,技术因素占比多少? 德州扑克的乐趣有哪些?为什么这么多人喜欢玩? 经常玩德州扑克真的有那么大的积极作用吗? 德州扑克的批评声音 德州扑克的阴暗面 德州扑克的规则 德州扑克的技巧 我与德州扑克的故事 AI 发展下,德州扑克行业何去何从? 实录提要: 可否介绍下德研社的未来发展模式? 如何处理与线上游戏平台的竞争关系? 如果不设现金局,该如何处理无现金局的紧张感和危机感不足的问题? 像人作为可被观察对象,是否存在主动隐藏观察变量的做法呢? 德研社成立以来,运营上遇到哪些壁垒,如何去应对的? “成为德扑高手的路径”讲了很多的心法,有没有权威的著作和视频吗? 有没有从对游戏完全无感变得热衷,或反过来的案例分享? 德扑在大众中的流行趋势是怎样的? 阅读全文: http://gitbook.cn/gitchat/activity

非算法工程师面试必问的算法面试理论

帅比萌擦擦* 提交于 2019-12-22 02:58:12
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 非算法方向的你 面了多少次试? 最后,因为不懂算法, 死在了半路上? 这些痛, 作为技术创新型公司的小编——个推君 怎么会不懂? 为此,个推君特请了我司经验丰富的面试官 为你奉上一份热乎的 面试宝典 。 宝典可不是面试题哦 仅送给想认真钻研的童鞋 帮大家梳理知识点 让大家举一反三, offer拿到手软! 注:此处建议大家使用 C 语言来学习数据结构与算法。 一、数据结构 数据结构是算法的基础。大家需要对数据结构有个清晰的概念,因为大部分的算法题均需要带入数据结构的概念来处理。科班出身的程序员或多或少学习过数据结构。我们推荐大家可以重温下这本书,温故而知新。 时间复杂度与空间复杂度 在说算法之前和大家科普两个重要的理论知识:算法的时间复杂度与空间复杂度。 时间复杂度 算法的时间复杂度,用来度量算法的运行时间,记作: T(n) = O(f(n))。它表示随着 输入大小n 的增大,算法执行需要的时间的增长速度可以用 f(n) 来描述,并且会忽略常量部分。 举个例子 int aFunc(void) { printf("Hello, World!\n"); // 需要执行 1 次 return 0; // 需要执行 1 次} 调用此方法,printf("Hello, World!\n"); 执行了一次,那么我们记作 T

协同过滤算法智能推荐原理与实践

时光总嘲笑我的痴心妄想 提交于 2019-12-19 09:02:47
数据挖掘的一个经典案例就是尿布与啤酒的例子。尿布与啤酒看似毫不相关的两种产品,但是当超市将两种产品放到相邻货架销售的时候,会大大提高两者销量。很多时候看似不相关的两种产品,却会存在这某种神秘的隐含关系,获取这种关系将会对提高销售额起到推动作用,然而有时这种关联是很难通过经验分析得到的。这时候我们需要借助数据挖掘中的常见算法-协同过滤来实现。这种算法可以帮助我们挖掘人与人以及商品与商品的关联关系。 协同过滤算法是一种基于关联规则的算法,以购物行为为例。假设有甲和乙两名用户,有a、b、c三款产品。如果甲和乙都购买了a和b这两种产品,我们可以假定甲和乙有近似的购物品味。当甲购买了产品c而乙还没有购买c的时候,我们就可以把c也推荐给乙。这是一种典型的user-based情况,就是以user的特性做为一种关联。 一、业务场景描述 通过一份7月份前的用户购物行为数据,获取商品的关联关系,对用户7月份之后的购买形成推荐,并评估结果。比如用户甲某在7月份之前买了商品A,商品A与B强相关,我们就在7月份之后推荐了商品B,并探查这次推荐是否命中。 本次实验选用的是PAI-Studio作为实验平台,仅通过拖拽组件就可以快速实现一套基于协同过滤的推荐系统。本实验的数据和完整业务流程已经内置在了PAI首页模板,开箱即用: 二、数据集介绍 数据源:本数据源为天池大赛提供数据,数据按时间分为两份

PaddlePaddle分布式推荐算法实践

我与影子孤独终老i 提交于 2019-12-17 06:33:26
项目介绍 本项目只实现了DeepFM论文中介绍的模型的DNN部分,DNN部分模型结构如下: 该项目目前仅支持在CPU环境下运行 在百度云上运行集群训练 参考文档 在百度云上启动Fluid分布式训练 在百度云上部署一个CPU集群。 用preprocess.py处理训练数据生成train.txt。 将train.txt切分成集群机器份,放到每台机器上。 用上面的 分布式训练 中的命令行启动分布式训练任务. 在PaddleCloud上运行集群训练 如果你正在使用PaddleCloud做集群训练,你可以使用cloud.py这个文件来帮助你提交任务,trian.py中所需要的参数可以通过PaddleCloud的环境变量来提交。 文件结构 本项目的文件结构如下 | - - raw # 原始数据集 | - - models # 训练过程中暂存的模型 | - - infer_model # 固化后的模型 | - - train . py # 训练脚本 | - - reader . py # 数据读取脚本 | - - preprocess . py # 数据预处理脚本 | - - cloud . py # 集群训练脚本 | - - network_conf . py # 构建模型 | - - freeze_infer . py # 使用固化模型进行预测的脚本 | - - infer . py #

推荐系统的常用算法原理和实现

故事扮演 提交于 2019-12-17 03:50:34
推荐算法介绍 基于人口统计学的推荐 这是最为简单的一种推荐 算法 ,它只是简单的根据系统用户的基本信息发现用户的相关程度,然后将相似用户喜爱的其他物品推荐给当前用户。 系统首先会根据用户的属性建模,比如用户的年龄,性别,兴趣等信息。根据这些特征计算用户间的相似度。比如系统通过计算发现用户A和C比较相似。就会把A喜欢的物品推荐给C。 优缺点: 不需要历史数据,没有冷启动问题 不依赖于物品的属性,因此其他领域的问题都可无缝接入。 算法比较粗糙,效果很难令人满意,只适合简单的推荐 基于内容的推荐 与上面的方法相类似,只不过这次的中心转到了物品本身。使用物品本身的相似度而不是用户的相似度。 系统首先对物品(图中举电影的例子)的属性进行建模,图中用类型作为属性。在实际应用中,只根据类型显然过于粗糙, 还需要考虑演员,导演等更多信息。通过相似度计算,发现电影A和C相似度较高,因为他们都属于爱情类。系统还会发现用户A喜欢电影A,由此得出结论,用户 A很可能对电影C也感兴趣。于是将电影C推荐给A。 优缺点: 对用户兴趣可以很好的建模,并通过对物品属性维度的增加,获得更好的推荐精度 物品的属性有限,很难有效的得到更多数据 物品相似度的衡量标准只考虑到了物品本身,有一定的片面性 需要用户的物品的历史数据,有冷启动的问题 协同过滤 协同过滤是推荐算法中最经典最常用的

化繁为简:推荐算法三视角

。_饼干妹妹 提交于 2019-12-15 05:02:21
关于推荐系统,如果在忘掉所有的公式和代码,忘记所有的语言描述,脑海里就剩下几张图景,会是什么?一张二维表格,一个拓扑图,一条时间线。这三幅图景,是我看待推荐算法的三种视角。 视角一:矩阵视角 在脑中想象一个二维的表格,每一行代表一个用户,每一列代表一个物品,表格里的每一个点代表用户对物品的操作,这个操作可以是评分,点击,点赞。其中,有些格子记录了行为,有些格子是空的。到这里,我们就建立了基本的矩阵视角,推荐问题转化成了如何补上那些空格子。 用户对物品的评分等于相似用户对该物品评分的加权平均值,这就是user-base的协同过滤了。换一个方向,用户对物品的评分等于该用户对其他物品的评分按物品相似加权平均值,这就是item-base的协同过滤。度量用户之间的相似度,把矩阵的一行——对物品的评分向量作为该用户的表示向量,那么用户之间可以计算向量的距离,可以选择任何距离公式,如余弦距离,皮尔森距离。对于物品之间的相似度,换一个方向即可。 对于任何两个物品,可以计算它们的评分差值。具体来说,两个物品有一批共同的历史评分用户,也就是矩阵里两列有交集的行,每一行可以计算一个差值,将差值平均起来,作为两个物品的距离。和上面的距离不同的,这个差值可以想象成物理中的位移,带着符号的。推荐时,某用户对于某个物品的评分,等于某用户对其他物品评分加上这个位移,再进行平均得到的平均评分。和上面的item