1 推荐系统基本流程
推荐系统的目的是通过推荐计算帮助用户从海量的数据对象中选择出用户最有可能感兴趣的对象。涉及三个基本内容:目标用户、待推荐项目以及推荐算法,基本流程为:描述为用户模型构建、项目模型建立以及推荐算法处理三个基本流程;
1 构建用户模型
为了能够为用户提供准确的推荐服务,推荐系统需要为用户构建用户模型,该模型能够反映用户动态变化的多层次兴趣偏好,有助于推荐系统更好的理解用户的特征和需求。构建用户模型通常需要经历三个流程:用户数据收集,用户模型表示以及用户模型更新。
(1)用户数据收集:用户数据是用户模型构建的基础,用户数据收集的方式一般有显示方式获取和隐式方式获取两种。
显示方式获取的数据是用户特征属性和兴趣偏好的直接反映,所获得的信息数据是较为客观全面的,比如用户在注册时包含的性别、年龄等信息可以直接表示出用户的基本人口学信息和兴趣信息,用户对项目的评分可以反映出用户的偏好。但显示获取的方式最大的缺陷是其实时性较差,并且具有很强的侵袭性。
隐式方式获取用户数据是在不干扰用户的前提下,采集用户的操作行为数据,并从中挖掘出用户的兴趣偏好。用户的很多操作行为都能反映出用户的喜好,比如用户浏览网页的速度、用户查询的关键字等,推荐系统在不影响用户使用系统的情况下,通过行为日志挖掘出用户的偏好。隐式获取方式由于具有较好的实时性和灵活性和较弱的侵袭性,己经成为推荐系统中主要的用户数据采集方式。
(2)用户模型表示:用户模型是从用户数据中归纳出的推荐系统所理解的用户兴趣偏好的结构化形式。
a 基于内容关键词表示;
b 基于评分矩阵表示;
(3)用户模型更新:推荐系统面临的问题之一是兴趣漂移,兴趣漂移的根本原因在于用户的兴趣会随时间发生改变。为了使用户模型够准确的代表用户的兴趣,推荐系统需要根据最新的用户数据对用户模型进行更新。
2 建立项目模型
目前项目模型主要通过基于内容和基于分类这两类方式来建立。基于内容的方式是以项目本身内容为基础,向量空间模型表示是目前御用最为广泛的基于内容的方式。
基于分类的方式是根据项目的内容或者属性,将项目划分到一个或者几个类别中,利用类别信息来表示项目,这种方法可以很方便地将项目推荐给对某一类别感兴趣的用户。常见的分类算法有朴素贝叶斯算法和KNN分类算法等。
2 推荐算法简介
推荐系统实现的核心是其使用的推荐算法。针对不同的使用环境及其系统的数据特征,选取不同的推荐算法,可以在本质上提高推荐系统的推荐效果。根据不同的分类标准,推荐算法出现了有很多不同的分类方法,本文采用了比较普遍的分类方法。
推荐系统通常被分为基于内容的推荐算法、协同过滤推荐算法以及混合模型推荐算法三大类。
1 基于内容的推荐算法
基于内容的推荐算法,其本质是对物品或用户的内容进行分析建立属性特征。系统根据其属性特征,为用户推荐与其感兴趣的属性特征相似的信息。算法的主要思想是将与用户之前感兴趣的项目的内容相似的其他项目推荐给用户。
CBF(Content-based Filter Recommendations)算法的主要思想是将与用户之前感兴趣的项目的内容相似的其他项目推荐给用户,比如用户喜欢Java开发的书籍,则基于内容过滤算法将用户尚未看过的其他Java开发方面的书籍推荐给用户。因此,该推荐算法的关键部分是计算用户模型和项目模型之间的内容相似度,相似度的计算通常采用余弦相似性度量。
基于内容的推荐过程一般分为以下三个模块:
(1)特征提取模块:由于大多数物品信息是非结构化的,需要为每个物品(如产品、网页、新闻、文档等)抽取出一些特征属性,用某一恰当的格式表示,以便下一阶段的处理。如将新闻信息表示成关键词向量,此种表示形式将作为下一模块(属性特征学习模块)的输入。
(2)特征学习模块:通过用户的历史行为数据特征,机器学习出用户的兴趣特征模型。本模块负责收集代表用户喜好的数据信息,并泛化这些数据,用于构建用户特征模型。通常使用机器学习的泛化策略,来将用户喜好表示为兴趣模型。
(3)推荐模块:该模块利用上一阶段得到的用户特征模型,通过对比用户兴趣模型与带推荐物品的特征相似度,为用户推荐与其兴趣相似度较高的物品,从而达到个性化推荐的目的。该模块一般采用计算用户兴趣向量与待推荐物品特征向量的相似度来进行排序,将相似度较高的物品推荐给相应用户。计算相似度有多种方法,如皮尔逊相关系数法、夹角余弦法、Jaccard相关系数法等。
2 协同过滤推荐算法
协同过滤算法(Collaborative Filtering)是于内容无关的,即不需要额外获取分析用户或物品的内容属性特征。是基于用户历史行为数据进行推荐的算法。其通过分析用户与物品间的联系来寻找新的用户与物品间的相关性。
该算法算法通常有两个过程,一个过程是预测,另一个过程是推荐。主流的协同过滤算法包括三种:基于用户的协同过滤(User-Based Collaborative Filtering,UBCF)、基于项目的协同过滤(Item-Based Collaborative Filtering, IBCF)和基于模型的协同过滤(Model-Based Collaborative Filtering, MBCF)
(1)基于用户的协同过滤算法
基于用户的协同过滤推荐算法,先通过用户历史行为数据找到和用户u相似的用户,将这些用户感兴趣的且u没有点击过的物品推荐给用户。
算法主要包括以下两个步骤:
(1)找到与目标用户喜好相似的邻居用户集合。
(2)在邻居用户集合中,为用户推荐其感兴趣的物品。
UBCF的基本思想是将与当前用户有相同偏好的其他用户所喜欢的项目推荐给当前用户。一个最典型的例子就是电影推荐,当我们不知道哪一部电影是我们比较喜欢的时候,通常会询问身边的朋友是否有好的电影推荐,询问的时候我们习惯于寻找和我们品味相同或相似的朋友。
(2)基于物品的协同过滤算法
基于物品的协同过滤算法(Item-based Collaborative Filtering)其主要思想是,为用户推荐那些与他们之前喜欢或点击过的物品相似的物品。不过基于物品的协同过滤算法并不是利用物品的内容属性特征来计算物品之间的相似度的。该类算法是利用用户的历史行为数据计算待推荐物品之间的相似度。在该类算法中,如果喜欢物品A的用户大都也喜欢物品B,那么就可以认为物品A和物品B之间的相似度很高。
算法分为以下两个步骤:
(1)根据用户历史行为数据,计算物品间的相似度。
(2)利用用户行为和物品间的相似度为用户生成推荐列表。
IBCF算法是亚马逊在2003年发表的论文中首次提出,该算法的基本思想是根据所有用户的历史偏好数据计算项目之间的相似性,然后把和用户喜欢的项目相类似的并且用户还未选择的其他项目推荐给用户,例如,假设用户喜欢项目a,则用户喜欢与项目a高度相似且还未被用户选择的项目b的可能性非常大,因此将项目b推荐给用户。
3 基于模型的协同过滤算法
UBCF和IBCF都属于基于内存的协同过滤算法,这类算法由于充分发挥了用户的评分数据,形成全局推荐,因此具有较高的推荐质量。但随着用户和项目的规模增长,这类算法的计算时间大幅上升,使得系统的性能下降。针对该问题,研究人员提出将数据挖掘中的模型和CF算法结合,提出了基于模型的协同过滤算法(MBCF) 。
MBCF算法利用用户历史评分数据建立模型,模型建立的算法通常有奇异值分解、聚类算法、贝叶斯网络、关联规则挖掘等,且通常是离线完成。由于MBCF通常会对原始评分值做近似计算,通过牺牲一定的准确性来换取系统性能,因此MBCF的推荐质量略差于UBCF和IBCF。
4 混合模型推荐算法
由于基于内容的推荐算法和协同过滤推荐算法都有其各自的局限性,混合推荐算法应运而生。混合推荐算法根据不同的应用场景,有多
种不同的结合方式,如加权、分层和分区等。
目前使用的混合推荐算法的思想主要可以分成以下几类:
(1)多个推荐算法独立运行,获取的多个推荐结果以一定的策略进行混合,例如为每一个推荐结果都赋予一个权值的加权型混合推荐算法和将各个推荐结果取TOP-N的交叉混合推荐算法。
(2)将前一个推荐方法产出的中间结果或者最终结果输出给后一个推荐方法,层层递进,推荐结果在此过程中会被逐步优选,最终得到一个精确度比较高的结果。
(3)使用多种推荐算法,将每种推荐算法计算过程中产生的相似度值通过权重相加,调整每个推荐算法相似度值的权重,以该混合相似度值为基础,选择出邻域集合,并结合邻域集合中的评估信息,得出最优的推荐结果。
5 BP神经网络算法
BP (Back Propagation)神经网络是目前应用最广泛的神经网络模型之一,是一种按误差逆传播算法训练的多层前馈网络。
BP神经网络模型包括输入层、隐藏层和输出层,每一层由一个或多个神经元组成,其结构图如图2-3所示。BP神经网络拥有很强的非线性映射能力和自学习、自适应能力,网络本身结构的可变性,也使其十分灵活,一个三层的BP神经网络能够实现对任意非线性函数进行逼近。
BP神经网络的训练过程通常分为3个过程,依次分别为数据初始化过程、正向推演计算过程以及反向权重调整过程。数据初始化是BP神经网络能够进行有效训练的前提,该过程通常包括输入数据进行归一化处理和初始权重的设置;正向推演计算是数据沿着网络方向进行推演计算;反向权重调整则是将期望输出和网络的实际输出进行对比,从输出层开始,向着输入层的方向逐层计算各层中各神经元的校正差值,调整神经元的权重。正向推演计算和反向权重调整为对单个训练样本一次完整的网络训练过程,经过不断的训练调整,网络的实际输出越来越趋近于期望输出,当网络输出到达预期目标,整个训练过程结束。
3 推荐系统的文本处理
1 TF-IDF
TF-IDF(Term Frequency-Inverse Document Frequency,词频一逆文档)是文本处理中常用的加权技术,广泛应用于信息检索、搜索引擎等领域。
TF-IDF的主要思想是:如果一个关键词在文档中出现的频率很高,而在其他文档中出现次数较少,则该关键词被认为具有较强的代表性,即该关键词通过TF-IDF计算后有较高的权重。
2 TextRank
TextRank算法,是一种用于文本关键词排序的算法,页排序算法PageRank。
PageRank基本思想是将每个网页看成一个节点,网页中的链接指向看成一条有向边,一个网页节点的重要程度取决于链接指向该网页节点的其他节点的数量和重要权值,该过程描述如下:让每一个网页对其所包含的链接指向的网页进行迭代投票,每次迭代投票过程中票的权重取决于网页当前拥有的票数,当投票结果收敛或者达到指定的迭代次数时,每个网页所获得票数即为网页重要程度权值。
TextRank算法相比于TF-IDF最大的优点是TextRank是一种无监督的学习,因此不会受限于文本的主题,并且无需大规模的训练集,可以针对单一文本进行快速的关键词的权重计算。