【推荐系统学习笔记】推荐系统基本知识
前记
因为业务需要看了些推荐系统的资料,为了巩固下学习的知识,写个笔记梳理下这段时间看的推荐系统知识,这次总结的知识主要来源陈开江老师的《推荐系统》一书,这本书的行文通俗易懂,很适合入门推荐系统不久的同学阅读。
一、推荐系统的概念
1.推荐系统的定义
推荐系统就是用已有的连接去预测用户和物品将会出现的连接。这里的连接表示用户和物品存在关系,例如用户对物品进行了某个操作,或者用户跟物品的某个属性一致,都可以认为他们之间存在连接。推荐系统要做的便是将可能与用户产生连接的物品推荐给用户,让他们产生真正的连接。
2.推荐系统的一般架构
推荐系统的架构图如下图所示:
大致分为两个阶段:(1)召回阶段,即粗筛阶段,此阶段会使用一些简单的模型从海量物品中筛选出一小部分待推荐的物品,以提升排序阶段的效率;(2)排序阶段,此阶段会使用复杂的模型从召回阶段获取的物品集合中得到最终的推荐集合。
二、推荐系统的常用算法
上一章节介绍了推荐系统的定义和一般架构,对推荐系统的两个主要阶段进行了简单介绍,本章节对其中常用的算法进行具体介绍。
1.基于内容的推荐算法
主要思想:
考察用户画像与物品画像的匹配程度。这里的画像的含义为用户或者物品的向量化表示,如常见的注册资料、标签,以及深度学习得到的Embedding向量。
主要过程:
(1)内容获取。这里的内容既包括公司的内部数据,也包括一些外部数据。外部数据通常通过爬虫爬取,而爬取的数据可能会存在一些敏感数据,需要进行一些数据清洗的工作。这里数据清洗可以采用诸如字典匹配、机器学习以及NLP的方法。
(2)内容挖掘和用户分析。这里通过挖掘上一阶段得到的内容数据获取物品画像,然后结合用户的反馈行为可以得到用户画像。获取物品画像常用的方法包括关键词提取、实体识别、内容分类和Embedding等。
(3)内容推荐算法。最简单的推荐算法便是计算相似度,根据用户画像和物品画像的相似度对物品进行排序。复杂一些的方法是训练预估模型,利用用户的行为日志构建训练样本,样本特征除了用户画像和物品画像特征外,还可以使用一些上下文特征,如时间、地点等。常见的模型包括线性模型(LR)、因子分解机(FM)等。
算法优点:
(1)可解释性强。
(2)可以很好地解决物品冷启动问题。当新物品进入系统时,只要得到其画像数据即可进行推荐。
算法缺点:
(1)无法解决用户冷启动问题。
(2)获取精准的物品画像较为困难。如在视频推荐领域,获取准确的影片标签需要投入较大的人力成本。
2.基于用户的协同过滤算法
主要思想:
人以群分。为用户推荐与其相似用户所喜欢的物品。
主要过程:
(1)获取用户向量。向量维度为物品个数,向量维度上的取值可以是0、1表示用户是否喜欢该物品,也可以是数值表示用户评分。
(2)根据用户向量,计算用户两两相似度。通过设定一个相关阈值或者TopN的方式选取用户的相似用户。
(3)汇总相似用户所喜欢的物品作为推荐结果。
算法优点:
(1)可以很好地解决物品冷启动问题。
算法缺点:
(1)在用户量很大的场景下相似度计算过程开销过大。
(2)无法解决用户冷启动的问题。
(3)存在数据稀疏和倾斜问题,用户间共同消费的共同消费往往很少,而且大多集中在热门物品中。
(4)用户口味变化较快,存在兴趣迁移问题。
3.基于物品的协同过滤算法
主要思想:
物以类聚。为用户推荐与其喜欢物品的相似物品。
主要过程:
(1)获取物品向量。向量维度为用户个数。
(2)根据物品向量,计算物品两两相似度。
(3)根据推荐场景产生不同推荐结果。“猜你想看”,汇总用户所喜欢物品的相似物品,根据汇总后的分数推荐;“相关推荐”,直接获取当前物品的相似物品。
算法优点:
(1)大多数推荐场景下的物品数量远远小于用户数量,因此算法开销也较小。
(2)物品间相似度不易变化,不存在兴趣迁移问题。
(3)可以很好地解决用户冷启动问题。
算法缺点:
(1)相似度矩阵无法实时更新。
(2)计算相似度时没有考虑置信度的问题。如两个物品同时且仅被同一用户喜欢,它们的相似度会很大,但这明显是不可信的。
(3)无法解决物品冷启动问题。
4.矩阵分解
主要思想:
将用户物品关系矩阵分解成两个小矩阵得到用户隐因子向量和物品隐因子向量。
主要过程:
(1)构建用户物品关系矩阵。矩阵的每行表示某个用户对每个物品的评分,矩阵的每列表示每个用户对某个物品的评分。
(2)矩阵分解。先定义损失函数,然后采用梯度下降的方法最小化损失函数,最终可以得到两个小矩阵————用户矩阵和物品矩阵。这种是最基础的矩阵分解方法,还有一些改进方案:增加偏置信息(用户评分标准不同)、增加历史行为(有的用户评分数据过少)、考虑时间因素(人的兴趣变化)。
(3)计算推荐结果。用户矩阵的每一行即为用户向量,物品矩阵每一行即为物品向量,通过点积计算可以得到用户对每个物品的评分,将分数最高的物品集合推荐给用户。
算法优点:
(1)在协同过滤的基础上结合了机器学习的思想,可以获得更好的推荐效果。
算法缺点:
(1)存在冷启动问题。
(2)可解释性不强。
三、推荐系统的评价指标
利用上一章节的算法即可搭建一个简单的推荐系统,而完成系统的搭建后需要一些评价指标来评判其推荐效果。这里介绍两类常用的评价指标。
1.系统有多好
这类方法分为深度类指标和广度类指标。
深度类指标旨在考察系统预测用户与物品连接上的表现是否到位。常见的深度指标有:
(1)评分准确率。将推荐看成分类任务时使用此种指标,通常用均方根误差RMSE考察。
(2)排序能力。将推荐看成排序任务时使用此种指标,通常用AUC考察。由于多数场景下主要关注物品排序情况,因此AUC的更加常用。
(3)分类准确率。将推荐看成分类任务时使用此种指标,通常用F-Measure值来综合考虑准确率和召回率。
另外还有检测推荐系统的商业指标:点击率、转化率。
广度类指标旨在考察系统在本职工作以外的表现情况。常见的广度类指标有:
(1)覆盖率。考察系统在多少用户身上“开采”成功。
(2)失效率。考察系统推不出结果的情况。
(3)新颖性。考察系统推出用户没见过物品的能力。
(4)更新率。考察推荐结果的更新程度。
2.系统还能好多久
这类指标主要考察系统的检测健康程度,这类指标主要有:
(1)个性化。
(2)基尼系数。
(3)多样性。