第一章 绪论
1.1 选题背景与研究意义
计算机技术的发展和互联网的不断普及,满足了用户在信息时代对信息的需求,但随着网络的迅速发展而带来的网络信息量的指数增长,使得用户在面对大量信息时无法从中快速获得对自己真正感兴趣或有用的那部分信息,对信息的使用效率反而降低了。在庞大且复杂无比的互联网信息库面前,用户所需的信息量是微乎其微,如何从中快速、准确地找到所需的信息,是许许多多的学者所关注的问题。
个性化推荐系统正是解决这一问题的有效方法,它是根据用户的兴趣特点和历史行为,将用户感兴趣的信息、产品推荐给用户。和搜索引擎相比,个性化推荐系统通过研究用户的兴趣爱好,利用算法计算,能更好地找到用户需求的信息和引导用户发现自己对信息的需求。一个好的推荐系统不仅能为用户提供个性化的信息服务,还能与用户建立密切的联系,使用户对推荐系统产生依赖。
如今个性化推荐系统广泛应用在很多领域中,其中最为典型的就是电子商务领域。凭借个性化推荐系统,商家根据用户的兴趣和购买行为为用户推荐他们可能感兴趣的商品,能更好地激发用户的潜在需求。 目前,一些大型的电子商务网站,比如亚马逊、京东商城、淘宝网、当当网以及一些音乐、电影网站等都应用到了个性化推荐服务,可以说,个性化推荐的研究极具现实意义。
1.2 个性化推荐的研究现状
1.2.1 国内外研究现状
随着 Internet 的普及和电子商务的发展,推荐系统得到了越来越多研究者的关注。遗传算法、神经网络等机器学习技术也在推荐系统中得到应用,涌现出了越来越多的推荐方法,有代表性的如利用神经网络和遗传 K-means 算法通过分析用户在电子商务网站的浏览路径来获取用户偏好的方法、基于案例式推理协同过滤推荐方法等等。
国外比较著名的推荐系统有 GroupLens、PHOAKS 和 Ringo 等等。
GroupLens 是一个应用于 Usenet 新闻的协同过滤系统,它的目标是让用户一起协作,从大量的 Usenet 新闻中发现他们感兴趣的内容。该系统分为客户端和服务器端两部分。客户端是一个新闻阅读器 NewsReader,服务器端提供协同过滤服 务。NewsReader 一般连接到本地 NNTP 服务器,同时也连接到 GroupLens 服务器共享过滤信息,只要用户下载一篇文档,NewsReader 都会向 GroupLens 服务器发
送消息请求对该文档内容的预测。此外,用户也可以评价文档,NewsReader 会将该用户评价发送到 GroupLens 服务器上进行处理,以提供给其他用户浏览,GroupLens 会利用这些信息调整该用户和其他用户的相关性[1]。
Terveenet 等人开发出 PHOAKS(people Helping One Another Know stuff)系统,将大家都认为值得看的网站推荐给用户。其运作的方式就是分析用户在Usenet中所张贴的布告,找出文章内所推荐的网站URL,并统计每个URL有多少人推荐,藉此来将相关的网站U既推荐给需要的人。实验结果证实PHOAKS是有效的,可以达到 90%的准确性[2]。
Ringo 是由麻省理工学院所设计的一个音乐推荐系统。这个系统会先要求使用者针对音乐家做评比,再依评比的结果计算使用者相似度,然后将使用者分群,最后再由同一族群的使用者互相推荐音乐给彼此[2]。
尽管目前我国在 Internet 领域取得了很大的发展,但是和西方发达国家比起来仍然存在着不小的差距,Internet 的发展落后严重影响我国电子商务的发展,从而使得推荐技术的发展失去了应用背景和基础。目前我国在电子商务推荐方面所使用的主要是查找或检索技术。这种推荐策略的优点是技术比较成熟,实现比较简单,然而其在推荐策略个性化、自动化、持久化三个方面与世界先进推荐系统仍然存在着很大的差距,严格来说,这种查找策略并不具备主动提供个性化服务的功能,其与真正意义上的推荐策略仍存在差别。
目前我国电子商务的推荐功能相对国外存在较大的差距,主要表现在[3]:
(l)缺乏个性化的推荐。很多的推荐结果是对所有用户的,而非个性化的推荐,可能很多的推荐与某一用户的兴趣并不相符,这是我国电子商务推荐与国外推荐最主要的差别。
(2)推荐的自动化程度低。大多数的推荐功能都需要用户经过一段时间与计算机的交互,输入自己的兴趣信息,然后才能得到推荐结果,而系统不能保存用户每次的输入信息。总体说来,所有的推荐策略基本上停留在查找这一层次上,不能实现自动推荐。
(3)推荐的持久性程度低。目前我国的推荐技术都是建立在当前用户会话基础上,不能利用用户以前的会话信息,推荐的持久性程度非常低,这也是我国推荐技术和国外的推荐技术的一个重要差别。
(4)推荐方法单一。大多数所用的推荐策略基本就是分类浏览和基于内容的检索,缺乏多种推荐策略的混合使用,尤其缺少个性化与非个性化推荐策略的混合使用。
(5)不能在线推荐。有的推荐不能做到在线推荐,推荐不能及时反馈用户。然而随着我国电子商务事业的不断发展,对相应技术的迫切需求必将推动电子商务推荐技术研究不断深入,应用更加广泛。
1.2.2 传统个性化推荐系统的比较
个性化推荐研究于 20 世纪 90 年代被作为一个独立的概念提出来[4],其目的是根据用户的兴趣爱好为用户推荐感兴趣的商品或信息, Web2.0 技术的成熟,使得该项研究迅猛发展,用户不再是被动的网页浏览者,而是成为主动参与者。推荐算法的关键是如何提高推荐精度和效率,对此研究者提出了多种改进策略和算法。目前,个性化推荐方法主要有基于内容过滤的推荐、基于关联规则的推荐、协同过滤推荐、混合推荐系统等[5]。
基于内容过滤[6]的推荐系统是信息过滤技术的延续和发展,具有较为广泛的应用,主要是其具有简单、高效的特点。该算法根据用户已经选择的对象,从推荐对象中选择其他特征相似的对象作为推荐结果。这一推荐算法首先提取推荐对象的内容特征,和用户模型中的用户兴趣爱好匹配,最终把匹配度高的推荐对象作为推荐结果推荐给用户。其缺点在于很难出现新的推荐结果和新用户出现时具有冷启动问题。
基于关联规则[7]的推荐系统,从用户的历史消费数据中挖掘出事务之间一些关联规则,然后根据规则向用户做出推荐。例如,“尿布和啤酒”的故事,在美国一家超市里,把尿布和啤酒摆在一起出售,尿布和啤酒的销售额竟然同时增加了。沃尔玛根据所有门店的交易数据利用数据挖掘的方法进行分析,发现与尿布一起被购买最多的是啤酒,建立起两者的联系。关联规则挖掘可以发现不同商品在销售过程中的相关性,在零售业已经得到了成功的应用。但其规则抽取难、耗时,存在产品同名性问题。
协同过滤推荐[8]是应用最广泛、最成功的个性化推荐算法,它于 20 世纪 90年代开始研究并促进了整个推荐系统研究的繁荣。它主要分为基于用户的协同过滤、基于项目的协同过滤、基于模型的协同过滤。协同过滤的优点在于其克服了基于内容的推荐算法中无法为用户推荐新增兴趣的缺点,并且善于发现用户潜在的但自身暂时未意识到的新兴趣。然而,协同过滤算法仍面临着许多问题要解决,最典型的是冷启动问题、稀疏性问题和可扩展性问题。
各种推荐系统都有它的优缺点,在实际应用中可以根据具体问题进行混合推荐。混合推荐的目的在于通过组合不同的推荐算法,扬长避短,给出更符合用户需求的推荐结果。目前研究和应用最多的混合推荐是把基于内容的推荐和协同过滤推荐的组合。主要混合思路有两种:推荐结果的混合、推荐算法的混合。尽管从理论上讲可以有很多种推荐组合方式,但在某一具体问题上并不一定见效,混合推荐一个最重要的原则就是通过组合后要能避免或弥补各自推荐技术的缺点。
1.2.3 个性化推荐系统面临的问题及挑战
尽管协同过滤推荐算法是最成功的、应用最广泛的推荐系统,但这并不能表示现阶段个性化推荐技术的研究已经进入一个成熟的时期,随着网络技术的大范围普及,海量的用户和商品的信息快速呈现,当前个性化推荐系统面临严峻的问题与挑战[9]:
(1)数据稀疏性问题
数据稀疏性是当前限制协同过滤推荐系统推荐质量不高的首要原因。随着推荐系统规模越来越庞大,用户和商品项目的数量呈指数形式增加,而用户对项目的评价信息却非常稀缺,使得大部分基于关联分析的算法(例如协同过滤)都无法建立起准确的推荐模型,给用户返回准确地推荐结果。一个大型的电子商务网站陈列的资源项目往往达成百上千万,一个积极的用户所给出的评价信息对系统
的成百上千万的项目资源来说,简直是杯水车薪,这个本质上由高维数据引起的评价数据稀疏性的问题是协同过滤算法的一个经典问题。
(2)冷启动问题
冷启动问题也是限制协同过滤推荐结果准确性的又一个重要因素。所谓的冷启动就是新的用户(新项目)在他们刚刚进入系统时没有选择过任何物品(没有被任何用户选择过),导致他们可以被利用的行为信息非常罕有。因此,无法建立用户(项目)间的关系,分析他们的特征,算法也就不能对这些孤立的新用户(新项目)产生准确的推荐结果。如果我们能够获得用户(项目)充分的文本信息并据此计算用户(项目)之间的相似性,就可以很好解决冷启动的问题,不幸的是,目前的电子商务推荐系统,每天都不断有大量新的项目加入,各种各样的新产品涌现,因此无法指望构造大量的用户项目评价信息来避免冷启动问题。因此,怎么样才能将新产品推荐给有可能喜欢上它的用户,这是一个极具意义的挑战,同时提高新产品的销售量。
(3)推荐算法的可扩展性
在协同过滤推荐算法中,全局数值算法能及时利用最新的信息为用户产生相对准确的用户兴趣度预测或进行推荐,但是面对日益增多的用户,数据量的急剧增加,算法的扩展性问题(即适应系统规模不断扩大的问题)成为制约推荐系统实施的重要因素。在一个具体的推荐系统中,用户和产品的信息是动态改变的,新用户和新产品不断地加入,如果每次改变都需要完全重新计算,这个计算量是巨大的。虽然与基于模型的算法相比,全局数值算法节约了为建立模型而花费的训练时间,但是用于识别“最近邻居”算法的计算量随着用户和项的增加而大大增加,对于上百万的数目,通常的算法会遇到严重的扩展性瓶颈问题。该问题解决不好,直接影响着基于协同过滤技术的推荐系统实时向用户提供推荐问题的解决,而推荐系统的实时性越好,精确度越高,该系统才会被用户所接受。
1.3 本文的主要工作和组织结构
本文在对不同个性化推荐系统进行对比研究的基础之上,结合二部分图网络的推荐算法并对其做了改进,把用户和项目抽象为节点,结合用户对项目评分情况赋予每一条用户-项目边不同的权值,另外引进项目的度与权值之和的比值 ,使得推荐结果能够一定程度上抑制热门项商品目的推荐,并在准确性和多样性上有所提高。
本文共分五章,具体安排如下:
第一章 绪论。介绍了本论文选题背景与研究意义,以及国内外推荐系统技术的研究现状,主要是介绍了目前国内外主流的商务推荐系统及发展前景。另外总结了目前推荐系统所面临的问题和挑战。
第二章 个性化推荐系统。主要介绍目前使用最广泛的推荐系统——协同过 滤推荐系统,分别阐述了基于用户的协同过滤、基于项目的协同过滤以及基于模型的协同过滤等推荐算法,以及算法的原理、算法的优缺点等。
第三章 基于二部分图网络推荐系统的研究。分析基于二部分图网络结构的推荐算法对比于协同过滤技术存在哪些方面的优点,重点描述了基于二部分图网络的算法的具体实现步骤。
第四章 二部分图网络结构推荐算法的改进。在基于二部分图网络结构推荐系统的基础之上,通过权值参数 λ 1 \lambda_1 λ1、 λ 2 \lambda_2 λ2,及项目度与权值之和的比值 θ \theta θ的引入,改进推荐算法的准确性、多样性及流行性,解决冷启动问题,并通过实验数据验证了改进后的算法是可行的,取得良好的推荐效果。
第五章 总结与展望。主要是概述了整个论文的工作、取得的成绩,以及进一步地研究方向。
第二章 基于协同过滤的推荐技术
2.1 协同过滤技术基本概念原理
协同过滤算法是根据用户对物品或者其他信息的评价,发现目标用户和已知用户对物品的相关性,或者物品本身的相关性,然后基于相关性程度的高低来对用户进行预测推荐。通常所指的协同过滤推荐技术是指基于用户的推荐技术,后来有研究提出了基于项目的协同过滤推荐技术和基于模型的协同过滤技术。下面分别介绍这三种协同过滤技术的原理和机制[1 0]。
2.2 基于用户的协同过滤技术
该技术算法的实现过程要经过三个步骤:利用用户-项目矩阵获取用户评价信息,计算用户间的相似性并产生相似用户集,及推荐结果的生成。
步骤 1:用户信息获取
在个性化推荐中引入用户-项目矩阵, R i j R_{i j} Rij来描述用户对商品项目的评价信息,该矩阵中就包含了
m 个用户对n 个商品项目的评价信息。
步骤 2:产生相似用户集
可以选择相似度Sim值降序排列的前 K 个用户作为目标用户的相似用户。或 者将预先设定的相似度阈值作为标准,从这群用户里面选出相似度大于阈值的用户为相似用户群。
关于用户相似度的计算,常用的 2 种途径都是基于向量的相似度计算[11]:
a)余弦相似性
利用行向量 ⃗和 ⃗之间的余弦夹角Sim( i,j)来表示两用户间的相似性,其计算公式为:
s i m ( i , j ) = c o s ( i ⃗ , j ⃗ ) = i ⃗ × j ⃗ ∣ ∣ i ⃗ ∣ ∣ × ∣ ∣ j ⃗ ∣ ∣ sim(i,j)=cos(\vec{i},\vec{j})=\frac{\vec{i} \times \vec{j}}{||\vec{i}|| \times ||\vec{j}||} sim(i,j)=cos(i,j)=∣∣i∣∣×∣∣j∣∣i×j
b)修正的余弦相似性
修正的余弦相似性是对余弦相似性的一个完善和补充。其计算公式为:
s i m ( i , j ) = ∑ c ∈ I i j ( r i , c − r i ˉ ) ( r j , c − r j ˉ ) ∑ c ∈ I i ( r i , c − r i ˉ ) 2 ∑ c ∈ I j ( r j , c − r j ˉ ) 2 sim(i,j)=\frac{\sum_{c \in I_{ij}}(r_{i,c}-\bar{r_i})(r_{j,c}-\bar{r_j})}{\sqrt{\sum_{c \in I_{i}}(r_{i,c}-\bar{r_i})^2} \sqrt{\sum_{c \in I_{j}}(r_{j,c}-\bar{r_j})^2}} sim(i,j)=∑c∈Ii(ri,c−riˉ)2∑c∈Ij(rj,c−rjˉ)2∑c∈Iij(ri,c−riˉ)(rj,c−rjˉ)
公式中, I i I_i Ii和 I j I_j Ij分别被看成是用户i 和 j历史评价过的商品项目的集合, I i j I_{ij} Iij被 看作是用户
i 和 j共同评价过的商品项目的集合, r i ˉ \bar{r_i} riˉ和 r j ˉ \bar{r_j} rjˉ分别被用来表示用户i 和用户j 对项目的平均评价值, r i , c r_{i,c} ri,c表示用户i 对商品c 的评价值。
步骤 3:推荐列表生成
在搜索到相似用户群之后,就可以根据推荐方法推荐结果了,下面介绍 2种常用的方法:
a) 计算目标用户User对相似用户Ni
购买或评价过的商品项目 I t e m j Item_j Itemj喜爱程 度的预测值,根据预测值的情况生成推荐结果[ 12]。其计算公式为:
P r e d i c t i o n U s e r , I t e m j = ∑ N i ∈ N S i m ( U s e r , N i ) × ( r N i , I t e m j ) ∑ N i ∈ N ( ∣ S i m ( U s e r , N i ) ∣ ) Prediction_{User,Item_j}=\frac{\sum_{N_i \in N}Sim(User,N_i) \times(r_{ {N_i},Item_j})}{\sum_{N_i \in N}(|Sim(User,N_i)|)} PredictionUser,Itemj=∑Ni∈N(∣Sim(User,Ni)∣)∑Ni∈NSim(User,Ni)×(rNi,Itemj)
公式中, r N i , I t e m r_{N_{i,Item}} rNi,Item表示相似用户 N i N_i Ni对 I t e m j Item_j Itemj的评价值信息。
b) 第二种推荐方法是预测目标用户对所有未评分项目的评价值,然后根据预测评价值的大小,从中选取预测值较大的前 N 项推荐给用户。只针对项目间的相似性评分,其计算公式为:
P r e d i c t i o n U s e r , I t e m j = r U s e r ˉ + ∑ N i ∈ N S i m ( U s e r , N i ) × ( r N i , I t e m j − r N i ˉ ) ∑ N i ∈ N ( ∣ S i m ( U s e r , N i ) ∣ ) Prediction_{User,Item_j}=\bar{r_{User}}+\frac{\sum_{N_i \in N}Sim(User,N_i) \times(r_{
{N_i},Item_j}-\bar{r_{N_i}})}{\sum_{N_i \in N}(|Sim(User,N_i)|)} PredictionUser,Itemj=rUserˉ+