推荐系统是一种信息过滤系统,旨在预测用户可能对某项内容的评分或偏好。简而言之,它是一种算法,能够向用户推荐相关项目。例如,在Netflix中推荐用户观看哪部电影,在电子商务中推荐用户购买哪种产品,或者在Kindle中推荐用户阅读哪本书等。
推荐系统的用例
推荐系统有许多用例。其中一些包括:
A. 个性化内容:通过为不同类型的受众创建动态推荐,帮助改善站点体验,如Netflix所做的那样。
B. 更好的产品搜索体验:帮助根据产品的特性进行分类,例如材质、季节等。
推荐系统的类型
1. 基于内容的过滤:这种类型的推荐系统通过用户之前搜索的项目内容来展示相关项目。这里的内容指的是用户喜欢的产品的属性/标签。在这种类型的系统中,产品使用某些关键词进行标记,然后系统尝试理解用户想要什么,并在其数据库中查找,最后尝试推荐用户想要的不同产品。
// 例如,在电影推荐系统中,每部电影都标记有类型。当新用户加入时,系统最初会推荐流行电影或通过用户表单收集信息。随着用户对电影的评分,偏好就会显现出来;例如,如果用户对动作电影的评分一直很高,而对动漫电影的评分很低,系统就会推荐更多以动作为导向的内容。
优势包括不需要其他用户的数据,因为推荐是针对单个用户的,这使得它更容易扩展到大量用户。该模型可以捕捉到用户的具体兴趣,并推荐很少有其他用户感兴趣的项目。
缺点是项目的特徵表示在一定程度上是手工设计的,这需要大量的领域知识。该模型只能根据用户现有的兴趣进行推荐。换句话说,该模型在扩展用户现有兴趣方面的能力有限。
2. 基于协同的过滤:基于其他类似用户的兴趣和偏好向用户推荐新项目,这就是基于协同的过滤。例如,当在亚马逊购物时,它会推荐新产品说“购买此商品的客户还购买了”。这种方法不仅解决了基于内容过滤的限制,还利用了用户互动,使其更加健壮。通过关注用户的历史表现,这种推荐系统可以更准确地预测未来的偏好。
有两种类型的协同过滤:
A. 用户基础的协同过滤:使用邻近用户的评分来完成项目的评分。简而言之,它基于用户相似性的概念。
B. 基于项目的协同过滤:使用用户对邻近项目的评分来预测项目的评分。简而言之,它基于项目相似性的概念。
// 例如,如果项目数量大于用户数量,选择用户基础的协同过滤,因为它会减少计算能力的需求。如果用户数量大于项目数量,选择基于项目的协同过滤。例如,亚马逊有成千上万的商品要销售,但有数十亿的客户。因此,亚马逊使用基于项目的协同过滤,因为与其客户相比,产品数量较少。
优势包括即使数据量小也能工作得很好。这种模型帮助用户发现对给定项目的新兴趣,但模型可能仍然会推荐它,因为相似的用户对该项目感兴趣。不需要领域知识。
缺点是无法处理新项目,因为模型没有在数据库中新添加的项目上进行训练。这个问题被称为冷启动问题。
评估指标
已经讨论了不同类型的推荐系统及其优缺点,但如何评估给定模型是否推荐了正确的东西,以及这个系统预测了多少相关的东西,这就涉及到评估指标。评估模型有多种指标,但这里将讨论4个主要指标。
1. K的平均精度:它给出了推荐项目列表的相关性。这里的K精度意味着在前k个推荐集中的相关项目。
2. 覆盖率:它是训练数据模型能够在测试集中推荐的项目百分比。或者简单地说,可能的推荐系统可以预测的百分比。
// 数据收集:收集有关用户和项目的信息。
// 数据准备:清理和组织收集的数据。
// 模型选择:选择一种制作推荐的方