推荐系统,比你更懂你
在过去的几十年中,随着 Youtube、Amazon、Netflix 和许多其他网络服务的兴起,推荐系统在我们的生活中占据了越来越多的位置。 从电子商务(向买家推荐他们可能感兴趣的文章)到在线广告(向用户推荐正确的内容,匹配他们的偏好),推荐系统如今在我们的日常线上生活中是不可避免的。
一般来说,推荐系统是一种算法,旨在向用户推荐相关项目(项目是要观看的电影、要阅读的文本、要购买的产品或其他任何取决于行业的内容)。
我想大家都会同意,现在网络购物几乎可以模拟实体店的购物体验了,就像实体店的销售人员会根据我们的偏好给出建议、指导我们购买合适的产品。
不可否认的是,我已经不止一次地发现,不管是在Amazon还是服装网站上,还是在Netflix等流媒体网站上,它们推荐的东西我都很喜欢,这很诡异。但同时这也意味着,他们的推荐真的做的很好!
“Netflix奖”是Netflix举办的一项公开竞赛,目的是去发现预测用户对电影评分的最佳算法。该奖项得出的结论之一是,提出合理推荐很简单,但要改进它们却非常困难。
因此,如果你想要构建一个应用程序来提供非常成功的推荐,都需要什么?
本文会探讨一些传统但又很成功的推荐系统方法——协同过滤和基于内容的推荐。本文还会重点介绍每种方法的缺点,以及应该如何去克服它们。如果你想了解更多数据分析相关内容,可以阅读以下这些文章:
TikTok如何利用推荐系统,比你更懂你?
Machine Learning知识点:机器学习里的聚类分析技巧
三个月如何搞定机器学习的数学原理?
研究了2000+笔记本,我们总结了最适合机器学习、数据科学和深度学习的电脑
介绍
什么是“推荐问题”?
问题是指,要找到一个效用函数,根据用户过去的行为、与其他用户的相似度、与其他商品间的相似度、内容描述等,来评估用户对商品的喜爱度。
推荐方法的简要总结:
- 1、协同过滤(Collaborative Filtering):根据用户的过去行为来推荐项目。
这是是一种不可知的算法,也就是说,不管算法是否尝试推荐电影,书籍,还是产品,都不需要考虑太多关于该领域的知识。这种方法的两个子类型是:
— 基于用户的方法(User-based approach):寻找与目标用户相似的用户,并推荐他们喜欢的内容
— 基于项目的方法(Item-based approach):寻找与用户先前喜欢的项目相似的项目
- 2、基于内容的方法(Content-based Approach):与协同过滤几乎相反;她并不重视用户过去的行为,而是根据项目特征或描述来推荐新项目。
- 3、个性化学习排名(Personalised Learning to Rank):把推荐视为排名问题(同时运用协同过滤和基于内容的方法)
- 4、人口统计方法(Demographic Approach):根据用户特征推荐新项目
- 5、社交推荐(Social Recommendations):基于信任(利用用户之间的现有关系)
- 6、混合方法(Hybrid Approach):就是把上述任何方法组合起来使用
数据挖掘推荐
推荐可以理解为一般的数据挖掘问题,如下所示:
把推荐当成数据挖掘问题。
意外发现
大多数推荐系统推荐的商品在所有的用户中都很流行,并且与用户日常消费的商品很相似。结果,用户收到的是她/他已经熟悉或者无论如何都会去找的推荐,导致满意度很低。为了克服这个问题,推荐系统应该:
- 启用意外发现-用户不知道他/她想寻找的东西
- 推荐一些新奇的、相关的、但意想不到的东西,比如,一些偶然发现的东西
- 把用户的喜好扩展到邻近地区
协同过滤可以提供可控的偶然发现——它知道在推荐中参与了多少相邻用户。
什么有效,什么重要:
任何人在开始构建推荐系统之前,都希望从自己知道的一些有效事物开始。虽然,这在很大程度上取决于领域和特定问题,但可以肯定的是,协作过滤就是最好的隔离方法。也可以混合使用其他方法来改善结果、解决诸如冷启动等问题。
什么重要:
- 数据预处理:异常值去除、去噪、去除全局效应(如:单个用户的平均值)
- 使用矩阵分解、SVD进行智能降维
- 组合不同方法
协同过滤(CF)
如上文所述,协同过滤是一种与其推荐项目完全无关的方法。它完全适用于用户的过去行为。
CF的组成:
- 包含‘m’个用户的列表和‘n’个项目的列表
- 每个用户都有一个带有相关意见的项目列表。意见可以是:- Explicit详细、清晰明了的(像评分表一样)– Implicit隐私保密的(如购买记录等)。
值得注意的是,明确的评级可能会很嘈杂而且带有偏见——比如:提到一部奥斯卡获奖纪录片,用户可能想给它一个5星评级。但并不意味着用户想要被推荐更多的纪录片。
另外,获取详细数据要难得多。如果你想要获取大数据,隐式方法是可行的,因为它更容易获得,而用户不需要采取任何额外步骤。
- 正在执行CF预测任务的活跃用户
- 衡量用户之间相似度的指标
- 选择邻近子集的方法
- 预测活动用户当前未评级项目的评级方法
协同过滤的基本步骤:
- 1. 确定目标/活跃用户的评级
- 2. 根据相似度函数(邻域形成)识别与目标或者活跃用户最相似的用户
- 3. 确定相似用户喜欢的产品
- 4. 生成目标用户对每种产品的评级预测
- 5. 根据预测评分表,推荐一组排名靠前的产品
协同过滤的优势:
- 不需要相关领域的知识
- 帮助用户发现新的兴趣-意外发现
- 非常简单的方法,并在大多数情况下能产生足够好的结果
协同过滤的缺点:
- 需要大量可靠的用户反馈数据点来引导
- 要求产品的标准化(需要用户购买完全相同的产品——对于像亚马逊这样拥有大型商品目录的网站来说非常困难)
- 假设先前的行为决定了当前的行为,不考虑“上下文”知识的话存在很大弊端。比如,一个用户在搬家时一次性购买家具之后,其实就不希望再被推荐更多的家具了。
所以,这种方法存在一些局限性或缺点,比如下面的“冷启动”问题。
个性化CF vs非个性化CF:
- CF推荐比较个性化,是因为它们基于相似用户的评级进行“预测”。所以,每个目标用户的邻居区域都不一样。
- 非个性化推荐,是平均所有用户推荐,然后生成一个基于协作的推荐。
在推荐中你尝试的第一基准、或第一种方法应该是最受欢迎的选择。如果你基于CF的推荐没有更受欢迎,那你可能就做错了。
基于用户的CF:
首先,找到与目标用户相近的邻近用户,然后根据其邻近用户的加权,对目标用户进行计算预测。
目标用户与邻近用户之间的相似度可以通过Pearson关联计算。也可以根据用户的不同相似度给邻近的用户分配权重。
但是,使用邻居子集,会限制用户数量,有时候还会导致一些邻居用户可能没有对产品进行评级。这会导致数据的稀缺。如果空间维数很大,这种情况会经常发生。就会迫使我们使用一个大的邻域,而邻域较大又会导致计算效率的低下。
最邻近的协同过滤(Nearest Neighbour CF)面临的挑战:
- 稀疏性
- 推荐的准确性(可能较差)
- 可扩展性
- 爱好相似但很少评分的用户之间关联性不强
稀疏问题:
- 通常,对于大型产品集,用户只对其中很小一部分进行评级。
- 比如——亚马逊上有数百万本书。假如两位读者各买了100本书,那么他们买到同一本书的概率是0.01。
- 标准CF的用户数量必须是产品目录的十分之一。
可扩展性问题:
- 最邻近算法要求计算量,随着客户数量和商品数量的增长而增长
- 最坏情况下的复杂度是‘mn’(其中‘m’是客户数量,‘n’是产品数量)
解决方案——矩阵分解(Matrix Factorization):
在降维空间中,用潜在模型去捕获用户和项目之间的相似性。
矩阵分解(MF)的基本思想,不是用矩阵来表示稀疏空间中的项目,而是用主题将空间压缩成更小的东西。
基于项目的协同过滤:
在这种方法中,我们仍然对物品一无所知,而是基于用户的行为去推荐。这意味着,如果相同的用户喜欢两种不同类型的物品,我们也认为这些物品是相似的。
算法:
- 查看目标用户已评级的项目
- 计算它们与目标项目的相似度
- 相似度只根据其他用户过去的评分来计算
- 选择“k”个最相似的项目
- 通过对目标用户对最相似项目的评分进行加权平均来计算预测
项目相似度计算:
相似度可以是—余弦相似度、可以是基于相关性的相似度、也可以是调整后的余弦相似度。
协同过滤的限制:
- 冷启动问题:系统无法对尚未收集到足够信息的用户或项目做出任何推论。
- 流行偏见:很难向有独特品味的人推荐产品,因为CF倾向于推荐流行商品(尾端的商品不会获得太多数据)
冷启动问题:
- 新用户问题:为了做出准确的推荐,系统必须首先从评分中了解用户的偏好。有几种技术可以解决这个问题。大多数使用混合方法,将基于内容的方法与CF结合来解决这个问题。
- 新项目问题:新项目会定期添加到推荐系统中。直到有相当数量的用户对新项目进行了评分后,系统才能够推荐它。解决这个问题的方法是采用基于内容的策略或“探索新道具”策略。
基于内容的方法:
- 纯粹基于内容的系统,仅分析用户过去评分过的项目内容而建立的个人资料,为用户提供推荐
- 推荐关于项目内容的信息,而不是基于用户的意见和互动
- 使用机器学习算法,根据内容的特征描述,从示例中归纳出用户偏好的模型
内容是什么?
- 它可以是明确的属性或特征,如类型、年份、演员等
- 它也可以是使用NLP的文本内容(标题、描述、目录等)
- 它还可以分析音频和视频信号
基于内容的方法的优势:
- 不需要其他用户的数据
- 无冷启动或稀启动问题
- 能够向用户推荐品味独特的产品
- 能够推荐新的和不受欢迎的项目
- 能否通过列出导致项目被推荐的内容特征来提供推荐项目的解释
基于内容的方法的缺点:
- 要求内容可以被编码为有意义的特性
- 有些项目不适合简单的特征提取方法(例如:电影,音乐)
- 即使是文本,信息检索技术也不能考虑多媒体信息
- 用户的品味必须表现为这些内容特征的一个可学习的功能
- 很难利用其他用户的质量判断
- 很难实现偶然性
- 容易过拟合(鸽子洞pigeon hole)
- 这种方法的效果只会达到描述的程度
结论
搜索的时代已经结束了。推荐时代万岁!本文简要介绍了推荐系统的世界。它探索了更传统的建立推荐系统的方法。
虽然简单,但是协作过滤已经一次又一次地被证明可以提供非常好的结果。将它与其他方法(如基于内容的方法)结合起来,你将最终拥有一个出色的系统,它可以比用户本人更了解用户!感谢你的阅读!希望本文能让你更了解推荐系统的技术和应用。你还可以订阅我们的YouTube频道,观看大量数据科学相关公开课:https://www.youtube.com/channel/UCa8NLpvi70mHVsW4J_x9OeQ;在LinkedIn上关注我们,扩展你的人际网络!https://www.linkedin.com/company/dataapplab/
原文作者:Chantal D Gama Rose
翻译作者:Lea
美工编辑:过儿
校对审稿:Jiawei Tong
原文链接:https://prianjali98.medium.com/recommender-systems-know-your-users-better-than-they-know-themselves-4568eef3d4ad