推荐系统机器学习算法概览

2017 年 12 月 14 日 论智 weakish
来源:Medium
编译:weakish

编者按:Statsbot数据科学家Daniil Korbut简明扼要地介绍了用于推荐系统的主流机器学习算法:协同过滤、矩阵分解、聚类、深度学习。

现在有许多公司使用大数据来制定高度相关的建议以提高收入。数据科学家需要根据业务的限制和需求,在各种推荐算法中选择最好的算法。

为了简化这一任务,Statsbot团队准备了一份现有主要推荐系统算法的概览。

协同过滤

协同过滤(collaborative filtering, CF)及其改版是最常用的推荐算法之一。 即使是数据科学初学者也可以使用它来构建他们的个人电影推荐系统,比如用它写一个简历项目。

当我们想向用户推荐东西时,最符合逻辑的做法是找到有相似兴趣的人,分析他们的行为,然后给我们的用户推荐相同的东西。 或者我们可以查看与用户之前所购类似的物品,并进行相应的推荐。

这正是CF的两种基本方法:基于用户的协作过滤和基于物品的协作过滤。

在这两种情形下,推荐引擎分两步:

  1. 找出数据库中有多少用户/物品与给定的用户/物品类似。

  2. 评估其他用户/物品,这一评估基于比待评估用户/物品更相似的用户/物品的总权重,以预测给用户推荐相应产品的评分。

算法中的“最相似”是什么意思?

假设我们有一个表示每个用户的偏好的向量(矩阵 R的行)和一个表示用户给每件产品评分的向量(矩阵 R的列)。

首先,让我们去除一些元素,只保留两个向量中值均已知的元素。

例如,如果我们想比较比尔和简,我们可以看到,比尔还没有看过《泰坦尼克号》,而简到现在为止还没看过《蝙蝠侠》,所以我们只能通过《星球大战》来衡量他们的相似性。怎么会有人不看《星球大战》,是吧?:)

最流行的衡量相似性的技术是用户/物品向量之间的余弦相似性或加权平均数。

矩阵分解

下一个有趣的算法是矩阵分解。这是一个非常优雅的推荐算法,因为使用矩阵分解时通常不用考虑要在结果矩阵的列和行中保留的物品。

u是第i个用户的兴趣向量,v是表示第j部电影的参数的向量。因此,我们可以使用u和v的点积来逼近x(第i个用户对第j部电影的评分)。我们使用已知评分来构建这些向量,并使用它们来预测未知评分。

例如,我们有表示用户特德的向量(1.4; .9)和表示电影A的向量(1.4; .8),矩阵分解之后我们可以直接通过计算(1.4; .9)和(1.4; .8)的点积来还原电影A——特德的评分,结果为2.68。

聚类

前面两个推荐算法非常简单,比较适合小型系统。到目前为止,我们将推荐问题看作一个监督学习任务。现在到了应用无监督方法来解决这个问题的时候了。

想象一下,我们正在建立一个大型推荐系统,协同过滤和矩阵分解会花很长时间。这时第一个想到的应该是聚类(clustering)

根据属于同一聚类的所有客户的偏好,每个聚类会被分配一个典型偏好。每个聚类中的客户将收到在聚类层次计算出的推荐。

业务初期缺乏用户评分,因此聚类会是最佳选择。

不过,单独使用的话,聚类有点弱。因为通过聚类,我们识别出用户群组,然后给同一群组中的每个用户都推荐相同的物品。当我们有足够多的数据的时候,更好的选择是将聚类作为第一步,用来调整相关用户/物品选取,以供协同过滤算法使用。聚类也能提升复杂推荐系统的性能。

深度学习

十年来,神经网络有一个巨大的飞跃。今天,神经网络被应用到许多领域,正逐渐取代传统的机器学习方法。我想谈一下YouTube使用的深度学习方法。

毫无疑问,为这样的服务打造推荐系统是一项非常具有挑战性的任务,因为这一服务的规模很大,语料库是动态的,还有各种难以观察的外部因素。

根据《YouTube推荐系统的深度神经网络》,YouTube推荐系统算法包括两个神经网络:一个用于生成候选视频,另一个用于排名。如果你没有足够的时间阅读上面的论文,我这里有一个快速总结。

接受用户的历史事件作为输入,候选生成网络显著减少了视频的数量,从一个巨大的语料库抽取出一组相关性最高的视频。生成的候选视频是最和用户相关的,我们即将预测用户给候选视频的评分。这个网络的目标只是通过协同过滤来提供一些范围较广的个性化候选视频。

接下来我们需要更仔细地分析这些候选视频,以挑选出其中最好的视频。我们通过评分网络完成这一任务,评分网络可以通过一个期望目标函数给每个视频赋值一个分数,该期望目标函数使用描述视频的数据和有关用户行为的信息。评分最高的那些视频将被推荐给用户。

使用这一两步方法,我们可以基于一个非常巨大的视频语料库推荐视频,同时保证推荐的少量视频是个性化的。这一设计也允许我们混合从其他来源生成的候选视频。

这一推荐任务构成了一个极端多类分类(extreme multiclass classification)问题,基于用户(U)和情境(C)精确地分类在给定时刻t观看(wt)的特定视频,这一视频取自一个语料库(V),总共有数百万的视频类别(i)。

构建你自己的推荐系统

  • 基于大型数据库的在线推荐,最好的办法是将这个问题拆分成两个子问题:1)选择排名最高的N个候选 2)对它们进行评分。

  • 如何评估模型质量?除了标准的质量指标之外,还有一些特别针对推荐问题的指标:Recall at K和Precision at K,Average Recall at K和Average Precision at K。另外可以参考《A Survey of Accuracy Evaluation Metrics of Recommendation Task》(JMLR 10 (2009))

  • 如果使用分类算法解决推荐问题,则应考虑生成负样本。如果用户购买了推荐的物品,不应将其作为正样本,也不应将未购买的推荐物品作为负样本。

  • 基于在线分数和离线分数考量算法质量。 仅使用历史数据的训练模型可能导向简陋的推荐系统,因为该算法不知道新的潮流和偏好。

原文地址:https://blog.statsbot.co/recommendation-system-algorithms-ba67f39ac9a3

登录查看更多
7

相关内容

协同过滤(英语:Collaborative Filtering),简单来说是利用某兴趣相投、拥有共同经验之群体的喜好来推荐用户感兴趣的信息,个人透过合作的机制给予信息相当程度的回应(如评分)并记录下来以达到过滤的目的进而帮助别人筛选信息,回应不一定局限于特别感兴趣的,特别不感兴趣信息的纪录也相当重要。协同过滤又可分为评比(rating)或者群体过滤(social filtering)。其后成为电子商务当中很重要的一环,即根据某顾客以往的购买行为以及从具有相似购买行为的顾客群的购买行为去推荐这个顾客其“可能喜欢的品项”,也就是借由社群的喜好提供个人化的信息、商品等的推荐服务。除了推荐之外,近年来也发展出数学运算让系统自动计算喜好的强弱进而去芜存菁使得过滤的内容更有依据,也许不是百分之百完全准确,但由于加入了强弱的评比让这个概念的应用更为广泛,除了电子商务之外尚有信息检索领域、网络个人影音柜、个人书架等的应用等。
机器学习速查手册,135页pdf
专知会员服务
335+阅读 · 2020年3月15日
KGCN:使用TensorFlow进行知识图谱的机器学习
专知会员服务
80+阅读 · 2020年1月13日
【推荐系统/计算广告/机器学习/CTR预估资料汇总】
专知会员服务
86+阅读 · 2019年10月21日
可解释推荐:综述与新视角
专知会员服务
108+阅读 · 2019年10月13日
万字长文 | 10种传统机器学习算法,阿里工程师总结 | 下
机器学习算法与Python学习
3+阅读 · 2019年1月14日
推荐系统中的矩阵分解技术
AINLP
9+阅读 · 2018年12月24日
推荐系统概述
Linux爱好者
20+阅读 · 2018年9月6日
K近邻算法入门
论智
5+阅读 · 2018年3月18日
干货 :详解个性化推荐五大最常用算法
数据分析
6+阅读 · 2017年7月19日
详解个性化推荐五大最常用算法
量子位
4+阅读 · 2017年7月8日
Domain Representation for Knowledge Graph Embedding
Arxiv
14+阅读 · 2019年9月11日
Arxiv
8+阅读 · 2019年5月20日
Arxiv
22+阅读 · 2018年8月3日
Arxiv
8+阅读 · 2018年5月15日
Arxiv
5+阅读 · 2017年11月13日
VIP会员
相关VIP内容
机器学习速查手册,135页pdf
专知会员服务
335+阅读 · 2020年3月15日
KGCN:使用TensorFlow进行知识图谱的机器学习
专知会员服务
80+阅读 · 2020年1月13日
【推荐系统/计算广告/机器学习/CTR预估资料汇总】
专知会员服务
86+阅读 · 2019年10月21日
可解释推荐:综述与新视角
专知会员服务
108+阅读 · 2019年10月13日
相关资讯
万字长文 | 10种传统机器学习算法,阿里工程师总结 | 下
机器学习算法与Python学习
3+阅读 · 2019年1月14日
推荐系统中的矩阵分解技术
AINLP
9+阅读 · 2018年12月24日
推荐系统概述
Linux爱好者
20+阅读 · 2018年9月6日
K近邻算法入门
论智
5+阅读 · 2018年3月18日
干货 :详解个性化推荐五大最常用算法
数据分析
6+阅读 · 2017年7月19日
详解个性化推荐五大最常用算法
量子位
4+阅读 · 2017年7月8日
相关论文
Domain Representation for Knowledge Graph Embedding
Arxiv
14+阅读 · 2019年9月11日
Arxiv
8+阅读 · 2019年5月20日
Arxiv
22+阅读 · 2018年8月3日
Arxiv
8+阅读 · 2018年5月15日
Arxiv
5+阅读 · 2017年11月13日
Top
微信扫码咨询专知VIP会员