本文首发于个人博客,可 点击查看
推荐系统是一种信息过滤系统,用于预测用户对物品的“评分”或“偏好”。
-- From wikipedia
推荐系统火热,是互联网、大数据、人工智能发展的必然趋势。其可应用于各个细分领域。如:新闻微博、电商、外卖团购、视频音乐、搜索查询、社交人脉、证券股票等等。
目前推荐系统主要4种推荐方式:热门推荐、人工推荐、相关推荐、个性化推荐。
热门推荐顾名思义就是热度比较高的当下热点事件或内容,有广泛的社会关注;人工推荐是编辑或内容运营人员将优秀的文章或物品进行有针对性的推送;相关推荐则为根据当下浏览的内容按照一定的信息或关联规则进行内容推荐;个性化推荐时根据用户的历史浏览记录,通过算法和模型进行机器学习为用户自身定制化的推荐。本文重点关注个性化推荐与知识图谱相结合的方式。
产生背景
Web2.0我们常用搜索引擎获取自己需要的信息,即使现在,搜索引擎也是主流的信息资料获取途径。但使用搜索引擎的背景是目标明确的情况下,同时也需要将目标转化为搜索🔍关键字,并在巨量的结果集下筛选信息会浪费大量的时间、资源。
当用户需求较为模糊不能转化为搜索关键字时,推荐系统优势便凸显出来。
推荐系统浅析
推荐方式
推荐系统产生推荐列表的常见方式可总结为2种:基于内容与基于协同过滤。
- 基于内容推荐做法:利用有关物品的离散特征,推荐具有类似性质的相似物品。(以物推物)
此方法根据用户历史信息来识别和推荐类似内容。历史信息可手动定义,也根据类似性算法自动提取。与协同过滤的最大区别在于它仅依赖用户自身的信息或历史访问记录,而不依赖其他相似用户的历史行为。
- 基于协同过滤做法:根据用户的历史行为,如:购买、评价、点赞等行为,结合其他相邻用户的相似决策建立模型,用于预测当前用户对哪些物品感兴趣(或预测某些物品感兴趣的程度)。
由于协同过滤要考虑其他用户的行为,使用群组知识并基于相似用于形成推荐内容。本质上,推荐内容基于多个相似用户之间的自动协作,并过滤出相似偏好或行为的用户。
相似性: 根据所用的特定算法,将拥有类似兴趣爱好的用户进行分组,用于推荐内容。可用韦恩图表示相似程度。
Tips: 推荐系统是代替搜索引擎帮用户找到合适的物品,而推荐系统实现底层却使用搜索引擎算法对数据进行索引,还有其他大量相同的技术。但是在用户需求与应用场景上,推荐系统离用户更近。
大多数场景下,用户的个性化需求很难转化为简短明确的查询词,推荐系统应运而生,填补空白,挖掘用户历史行为,满足个性化需求,实现精准推荐。
- 还有一种混合推荐方式:“混合方法”。
混合方法是将基于内容与基于协同过滤结合使用,目的为增加推荐系统的效率和复杂性,并且合并之后有可能增加推荐的准确性,混合方法也可用于解决协同过滤数据冷启动。随着用户数据增加或成熟,权重逐步从基于内容过滤转向基于协同过滤。
与搜索引擎相似,推荐系统也需要对推荐列表集进行过召回、过滤、排序,推荐引擎根据推荐算法获取到推荐结果集,然后根据筛选条件对召回结果集进行过滤,过滤后最终推荐结果,与此同时对推荐结果按照排序策略算法进行权重排序,用户便可看到最终的推荐结果。
以上主要为的当前业界所用或者称为传统推荐方式,以下将重点关注基于知识图谱的推荐的系统
数据收集
收集用户数据不是一蹴而就的。
也就是需要经过常说的冷启动阶段。并且,数据需要经常更新,且有时效性。会随着时间、地点、年龄等因素的变化而变化。
此处需要引入衰减机制,即让用户关键词表中的关键词喜好程度按一定周期或规律保持衰减。具体查看TF-IDF算法,此算法可返回一组某篇文本关键词TF-IDF的词对数,这些关键词最好的代表了这篇文本的核心内容,而这些关键词将本篇文章的关键程度量化。
TF-IDF算法可参考《TF-IDF及其算法》
数据又可分为显示数据和隐式数据,显示数据即用户的购买、退货、打分、点赞、收藏、评论等形式,直接表达自己的喜好。隐式数据可能使隐形的,需要深度挖掘,如:快进、重复观看、浏览、点击等等,隐式数据准确度较低,并存在很大的噪声。今日头条的内容推荐和微信看一看均提供了让用户主动优化推荐引擎的方式,让推荐数据最大程度的满足用户需求,精准描述用户画像。
建立评判标准
评判一个推荐系统的前提,是建立一个好的评判标准,不断改进算法,无限靠近评判标准。推荐系统的实际效果依赖多种因素,如用户意图、用户背景知识、对系统的熟悉度、信任度、用户界面等等。
目前推荐系统的评判标准可分为“准确度(accurary)”和“可用性(usefulness)”两种。
准确度是推荐系统的预测结果,与用户行为之间的误差。准确度还可细分为“预测准确度”和“决策支持准确度”;预测准确度又可分为“评分预测准确度”、“使用预测准确度”、“排序准确度”等,计算推荐系统对消费者喜好的预测与消费者实际喜好间的误差平均值。
预测准确度是非常重要的评判标准,却不是唯一。推荐系统的可用性一般用覆盖率(召回率)来描述,为描述推荐效果的多样性,也常采用其他的可用性指标,这些指标对推荐系统的用户体验也具有非常重要的意义,如:新颖性、惊奇性、实用性、风险、鲁棒性、隐私性、自适应性、可扩展性、推荐效率以及可解释性等等。
现有评估推荐系统的评估方法主要有:离线测评、在线测评与用户调研等.下面主要介绍离线测评:
离线测评:把数据集分成训练集和测试集,通过训练集学习优化调整模型,用测试集对模型进行测试,计算精确度和运行效率,这种方法简单、属于闭门造车,不与用户交互,不能测试出用户满意度。所以一般用户自测或内部测试。
离线测评中使用3个指标对其推荐结果进行评估:准确率(Precision)、召回率(Recall)、F值(F-measure),这3个值可从结果矩阵中评判推荐结果;具体算法详解可见历史文章《算法模型评估:准确率(Accuracy)精确率(Precision)召回率(Recall)和综合评价指标(F1-Measure)》。
召回率反应被推荐系统推荐的物品占真正喜欢的物品的比重。准确率反应推荐系统的推荐水平,能不能将用户喜欢的物品推荐给用户,而用户不喜欢的物品则不推荐。F值是准确率和召回率的加权平均,均匀的反应推荐效果。
知识图谱在推荐系统中的优势与方法介绍
大数据环境下对知识图谱的发展奠定了数据上的优势,对多源异构数据进行整合,建立更细粒度的用户实体和文章或物品实体,得到更加紧密知识相关性。因此,知识图谱在扩展实体信息、强化实体之间的联系上,有天然的优势,可为推荐系统提供强大而丰富的参考作用。在知识图谱中,实体中包含着丰富的描述性知识,而这些知识恰好可以为推荐结果提供精确性、多样性与可解释性。
将知识图谱引入推荐系统主要有3种处理方式,并非可商用,此处只做方法介绍:
基于特征的知识图谱辅助推荐
基于特征的知识图谱辅助推荐的核心是知识图谱特征学习的引入,知识图谱可提供实体之间更深层次和更长范围内的关联,知识图谱的高纬度和丰富的语义关系,使得处理起来比物品属性更复杂困难。
使用知识图谱特征学习对知识图谱进行处理,得到实体和关系的低维稠密向量表示,由此便可以较为自然的与推荐系统进行结合与交互。
使用该方式处理,根据训练次序不同又可分为3种方式,以下为3种方式的处理示意图:
基于结构的推荐模型
基于结构的推荐模型可更直接的使用知识图谱的结构,对于知识图谱中的每个实体,都进行宽度优先搜索来获取其在知识图谱中的多边关联实体,并从中得到推荐结果。
根据其所用关联实体的技术不同,有可分为向外传播法和向内聚合法:
向外传播法模拟用户兴趣在知识图谱上扩展的过程,将每个用户的历史兴趣作为知识图谱的种子集合,沿着知识图谱的链接迭代向外扩展。附示意图一张:
向内聚合法在学习知识图谱实体特征的时候聚合该实体的邻居特征表示,通过邻居聚合操作,将每个实体的特征计算都结合其临近结构信息,且权值是由链接关系和特定的实体(用户)决定,这样就同时刻画了知识图谱的语义信息和个性化兴趣。
在这里提供网上看到的几种方式作为参考:
- 下位实体遍历:浏览此商品或文章(实体)后还需要其他下游相关辅助物品或信息,助力或强化已知实体。例如买了手机时候有可能需要屏幕贴膜、耳机、手机保护壳等等。
- 组合属性遍历:根据用户搜索或浏览的信息提供临近或相似实体,以供参考。如:当浏览Thinkpad E450笔记本时,系统便推荐同价位的其他品牌笔记本如华硕、神州等等,供用户参考。
- 同属性遍历:相同父实体的子实体也具有相关性,当一个实体具有多个父实体,不是所有的父实体都适合被往下遍历。当用户咨询Thinkpad E450时,系统推荐台式机就不是很合适。
- 二元实体遍历:适合同父类实体遍历,同父类实体通常表示这两个产品互补或者相似。
- 多路径遍历对比:知识图谱是网状的关系,实体之间可以通过多种路径遍历得到,所以可以对遍历路径进行对比得到较为合适的路径。
基于知识图谱表示学习的协同过滤
基本思想是对于协同过滤计算出来的最邻近物品,系统推荐给用户,而对于该用户喜欢的物品在语义上相似的物品,同样推荐给用户。相对于协同过滤推荐算法,仅使用推荐算法,加入内涵知识(知识图谱)会得到更好的效果,推高推荐的可用性。
此方法将推荐物品嵌入到一个低维空间,然后计算物品之间的语义相似性,生成语义相似性矩阵,最终得到物品的语义临近,同时也解决了推荐冷启动问题。这里给出一个TransE-CF算法处理流程图。
推荐系统使用知识图谱的重点与难点
1️⃣、如何对用户偏好进行精准建模?知识图谱数据往往多源异构,具有丰富的用户、物品等实体数据信息,在此基础上如何提高推荐的准确性。
2️⃣、大数据环境下,数据生成速度快,且多源数据融合过程中引入了更多的噪声和冗余,传统推荐算法中采用的精确计算方式越来越难以应对,概率模型统计方法将继续发挥重要作用。
3️⃣、如何评价其推荐效果?传统推荐系统的评价指标主要是准确度和可用性。这些指标当然也可以用于基于知识图谱的推荐系统,用准确率和召回率来表示推荐系统的准确度。然而不同领域的推荐系统的实际问题不同,使用不同的数据集,使得难以形成统一的效用评价标准。
4️⃣、如何通过深度挖掘和相关性知识提高推荐效果?鉴于知识图谱的特点,其相对于因果关系,其更适合关系挖掘。通过从知识图谱中深度挖掘物品实体之间、用户实体之间、以及物品与用户间的深层次关系,来得到更多的相关性结果,帮助用户进行个性化推荐,提高推荐结果的精确性、多样性和可解释性。
5️⃣、如何提高推荐系统的可扩展性?可扩展性一直是推荐系统应用中的难点。传统推荐系统中,用户与物品数量增加,使计算量显著增大。目前主要的解决方法有聚类、数据集缩减、降维等。知识图谱中,用户之间、用户与物品之间信息互动产生大规模的数据集;将这些数据集融入知识图谱后会急剧增加计算复杂度。如何将用户之间产生的数据动态、快速地融入知识图谱并提高推荐系统的可扩展性,是要解决的难点。
6️⃣、怎样充分利用社交网络信息?传统的推荐系统假设用户之间是独立同分布的,忽略了用户之间的社会交互与联系。知识图谱中用户与用户、用户与物品、物品与物品之间都存在一定的联系,用户不再是单一独立的用户,需要进一步挖掘用户之间的联系以发现更多的隐含信息。如何充分利用好图谱中的社交信息,将推荐系统的效果发挥的更好,值得期待。
7️⃣、将知识图谱与推荐系统结合已逐渐成为学术研究与产业应用的研究热点,但现有方法仍有非常大的局限性,且模型都属于统计学习,通过挖掘网络中的信息,并采用统计学来推断。现有模型网络结构都是静态的,真实的业务场景中,用户的兴趣与需求会随着时间、地点等诸多因素而改变,如此多变的情况,对知识图谱的时效性具有非常高的要求,如何刻画时间、地点的演变网络,值得深入研究。
与推荐系统结合的其他产业界研究热点方向有:
- 推荐系统与深度学习
- 推荐系统与强化学习
- 推荐系统中的用户画像
- 推荐系统的可解释性
持续更新...
ChangeLog
- Create 2019-04-24
参考资料
- [1]. 如何将知识图谱特征学习应用到推荐系统?
- [2]. 推荐算法不够精准?让知识图谱来解决
- [3]. 个性化推荐系统,必须关注的五大研究热点
- [4]. 知识图谱的推荐系统综述
- [5]. 知识图谱在推荐系统的落地
- [6]. RippleNet: Propagating User Preferences on the Knowledge
Graph for Recommender Systems