协同过滤 算法改进

基于用户的协同过滤推荐
基于用户的协同过滤(user-based CF)是基于这样一个事实:每个用户都有与其具有相似兴趣爱好和购买行为的用户群,这些相似用户(邻居用户)的购买项目可以作为对当前用户(目标用户)进行项目推荐的基础。因此,这种方法也被称为基于邻居的协同过滤或最近邻居算法。
设R是一个n×m用户-项目矩阵,其中n代表用户数、m代表项目数。在这个
矩阵中,如果第i个用户购买了第j个项目,则rij是1,否则为0(rij为用户i对项目j的评价,这是使用2进制数字表示评价的情况,rij也可以是用户i对项目j的具体评分)。设U是目标用户的购买项目集合,基于用户的CF算法是采用如下步骤进行计算的:
(1) 在系统的所有用户中识别出与目标用户最相似的k个用户。通常把每个用户看作是项目空间上的一个m维向量。通过计算两个向量间的cos值得到两用户间的相似性,找到与最相似的k个用户构成目标用户的邻居集。
(2) 找出所有邻居用户的频繁购买商品构成频繁购买项目集,将集合中目标用户已经购买项目集合U中的商品除去,形成对目标用户产生推荐的候选项目集C。
(3) 在候选项目集C中挑选出N个目标用户最可能感兴趣的项目。利用邻居与目标用户的相似性,以及邻居对候选项目的评分,预测目标用户对候选项目的可能评分值,挑选出预测评分最高的N个项目作为最终推荐。基于用户的协同过滤关键之处在于寻找邻居用户,这是给出推荐的基础。此外,下面几个方面的考虑也是必须的。总的用户数必须足够多,这样才有可能使目标用户发现和其兴趣相似的邻居用户;用户对项目的评价必须简单易行;用户
间的相似性可以采用各种不同的方法,但必须准确高效。虽然基于用户的协同过滤技术作为一种典型的推荐技术有其相当广泛的应用,但它仍有许多的问题需要解决。最典型的问题就是数据的稀疏性问题,推荐的多样性问题,以及系统的可扩展性问题。关于这些问题在论文后面的章节将详细谈到,这里先简单介绍一下这些存在的问题。在电子商务系统中,一般用户很多且项目也很多,但通常情况下,每个用户只会对很少的项目做出评价,所以在用户-项目矩阵中,每行只有很少的项目有评价数据,整个数据阵异常稀疏。根据对一些大型电子商务系统的调查结果,系统中的用户的评价数据一般都在 1%以下。在这种情况下得到的用户间的相似性是非常不准确的,那么寻找到的邻居也就不太可靠,不可靠的邻居的推荐的将严重影响系统的推荐效果。另外,在当前的使用基于用户的协同过滤的推荐系统中,由于其算法一味地追求推荐的准确性,常常造成用户得到的推荐种类单一项目雷同,无法真正满足用户多样的购买需求,局限了用户在商品购买上的视野。此外,算法的运算性能在基于用户的协同过滤推荐也是必须考虑的方面。当用户规模和项目规模非常庞大的时候,计算用户间的相似性寻找邻居将是一件非常费时的事情,如果计算时间过长,无疑将影响在线推荐的实时性。
基于项目的协同过滤推荐目前解决基于用户的协同过滤推荐中的数据稀疏问题主要有以下几种方法:
一是采用维度压缩技术,比如奇异值分解,其根本思想是用线性代数中求特征根法,降低项目评分向量的维数,类似于将项目按特征值进行分类;二是采用基于内容的推荐技术,通过分析项目之间的特征属性对项目进行分类,根据已评分项目的评分预测与其相似的未评分项目的评分,从而增加矩阵稠密度这两种技术虽然都可以增加数据集的稠密度,但计算邻居用户的计算量(K最近邻算法,K Nearest Neighbors)是随着用户和项目的增加而线性增加的,对于含有百万个用户和项目的系统,基于用户的协同过滤推荐算法在性能方面会受到很大的影响。为
了提高算法性能,可以先采用聚类方法,对用户进行聚类,然后只限制在和目标用户最邻近的那个组用协同过滤方法得到推荐。后一种方法尽管极大地提高推荐计算的速度,但会减弱推荐的效果。更好的解决方法就是构造基于项目的推荐模型。用历史信息用来反映项目之间的关系,比如一个项目的购买经常导致另一个项目或一组项目的购买。由于有计算前的模型,所以能很快地得到推荐结果。这种方法就是基于项目的协同过滤推荐算法。基于项目的协同过滤(item-base CF)是通过用户-项目矩阵分析每个项目间的相似性,在此基础上得到被推荐的前N个项目。这个方法的根本思想是:一个用户将更会喜欢那些和他已经购买的项目相似的项目。由于这种方法不需要去识别邻居用户,所以推荐算法的速度要快很多。对于项目j,找出与其最相似的k个项目{j1, j2, … , jk),j与它们对应的相似性为{Sj1, Sj2, … , Sjk}。设U为目标用户已购买的项目集合,使用U计算N个推荐项目的
步骤如下:
(1) 对U中的每个项目j,计算其最相似的k个项目,构成项目j的相似项目集C j。
(2) 计算对目标用户的候选项目集合C,C=∪C j-U,即将U中每个项目的相似项目集合求并,并除去目标用户已购买的项目。
(3) 对C中的每个项目,计算其和目标用户购买集合U的相似性,即计算该项目与U中每个项目的相似性,并将各相似性结果求和。
(4) 把C中的项目按计算得到的相似性降序排列,取前N个作为最终推荐项目。
基于规则的推荐
基于规则的推荐(rule-based recommendation)是根据关联规则寻找相关项目,并对项目排序产生推荐。
所谓关联规则,即在一个交易数据库中统计购买了商品集X的交易中有多大比例的交易同时购买了商品集Y,得到的关联规则表示为X=>Y[s%,c%],s表示关联规则的支持度,c表示关联规则的置信度。即把已购商品作为规则头,推荐对象为规则体。简单的关联规则推荐算法过程如下:
(1) 使用关联规则发现算法,找出电子商务系统中满足最小支持度和最小置信度的关联规则R。关联规则的发现算法很多,如Apriori,AprioriTid,DHP,FP-tree等。
(2) 在R中找出被目标用户支持的关联规则R1,即规则左边的项目集是被目标用户购买过的项目集。
(3) 找出被关联规则R1所预测且没有被目标用户购买的所有商品P。
(4) 根据P中商品在关联规则R1中的置信度排序,挑选前N个商品作为算法输出。如果某商品被多个规则预测,则取置信度最大者作为排序依据。
基于内容的推荐
基于内容的推荐技术(content-based recommendation)是信息过滤技术的延续与发展。在基于内容的推荐系统中,项目是由项目的特征属性来定义。比如,新闻组过滤系统NewsWeeder是一个文本推荐系统,该系统推荐的项目是文本,因此,它用文本词汇作为项目特征属性。基于内容的推荐系统是基于项目的特征属性,将项目分类,从而获得与用户已评分或购买的项目相似的项目,将其作为推荐。与协同过滤一样,基于内容的用户资料也需要有用户的历史数据,在用户信息模型完整详细的情况下,能产生非常准确的推荐。但基于内容的推荐由于其核心思想的局限性,其产生的推荐虽然是用户熟悉的种类,但却缺乏新颖性,无法向用户产生跨种类的推荐,局限了用户的视野,无法真正发挥电子商务中推荐系统的作用。且要得到一个准确的用户模型,需要使用大量的用户数据进行长期的训练,这样才能对用户产生较为准确的推荐。但用户的兴趣偏好并非一成不变,因此该方法适应用户兴趣变化的能力较低。另外,对一些如难以用几个属性来描述的商品,这种方法将不适用。
基于人口统计信息的推荐
用户人口信息统计(demographic recommendation)推荐技术,是基于用户个人属性对用户进行分类,再按分类对各类中的用户进行推荐。这种推荐系统最早的例子可以追溯到1979年的Grundy,它从人机对话获得个人基本信息,在此基础上对个人推荐书籍。最近有些推荐系统也采用了这种技术,如Krulwich,使用简单调查问卷收集用户分类所需的信息,用市场调研来的用户个人信息去推荐产品和服务。在其它的系统中,也有在基于用户人口统计信息方法的基础上,再用机器学习分类器的方法进行推荐的例子。用户的统计信息其实很大程度上代表了用户
的模型,因此,该技术其实与协同过滤技术比较类似。不过,应该指出的是,两者使用的数据是不同的,协同过滤是根据用户-项目矩阵得到用户的相似性从而用户进行事实上的分类,所需要的数据是反映用户兴趣偏好的历史数据;而基于用户的人口统计信息的推荐分类的根据是用户的人口统计信息,它不需要用户的历史数据。
基于效用的推荐
基于效用的推荐(utility-based recommendation)需要项目的特征属性数据。这种推荐技术先要得到用户对项目的效用描述函数,然后用该效用函数对所有项目进行排序,取前 N 个项目作为对目标用户的推荐。其核心问题是怎样为每一个用户创建一个效用函数。Me-a-Tete 和电子商务网站 PersonaLogic2 使用了该项技术。基于效用的推荐是优点在于它能把项目的非自身属性,如提供商的可靠性、产品的可获得性等,考虑到效用计算中,这样能在决策的时候考虑诸如到货时间之类的项目非自身因素问题,提高了推荐的全面性,同时也加大了个性化的力度。但该项技术的关键和难点是如何设计出考虑周全且性能良好的效用函数,且该函数的使用不具有通用性,只能局限在具体的某个推荐系统内。
基于知识的推荐
和协同过滤不同,基于知识的推荐(knowledge-based recommendation)不是建立在用户偏好上,即不需要考虑用户-项目矩阵中的用户历史信息。在某种程度上可以说,如果所有的推荐技术被看成是一种推理(inference),那么基于知识的推荐提出了使用功能知识(functional knowledge)进行推理的概念。简单地说,功能知识是关于某个项目如何满足某个特定用户需求的知识,它能解释需要和推荐之间的关系。在基于知识的推荐看来,用户资料可以是任何能支持推理的知识结构,并非一定是用户偏好(用户-项目矩阵)。最简单的例子就是各种搜索引擎,如Google,用户输入的查询关键字,就是能满足该用户的项目,系统返回包含该项目的所以项目,这是一种规范化的查询。当然,功能知识也可以是一个更详细的用户需要的表示,比如Entree系统,采用基于案例的推理技术实现基于知识的推荐。基于知识的推荐系统所使用的知识可以有许多种形式。Google使用了网页间的超链接,并推出流行度(popularity value)和权威度(authoritative value)对这种形式的知识进行评判。Entrée使用了餐馆之间的相似度,并推出相关的烹饪知识(knowledge of cuisines)对其进行评判。
电子商务协同过滤稀疏性研究: 一个分类视角
用户偏好数据获取途径
电子商务推荐系统需要基于能够反映用户兴趣偏好的信息作为输入数据来生成推荐结果。真实的用户偏好数据
对推荐结果的准确度起关键作用。一般而言,用户的注册数据、交易数据、评分数据、购物篮数据、浏览数据等都可作为电子商 务 推 荐 系 统 的 输 入,具 体 包 括 显 式 评 分 ( explicit ratings) 和隐式评分( implicit ratings) 两类。
显式评分
显式评分要求用户向电子商务推荐系统提供自己的兴趣偏好信息,主要获取途径是用户对系统给出的推荐项进行
反馈和评价,也包括用户注册时提供的人口统计学数据和感兴趣领域选项。曾春等人将其称之为显式跟踪。基于用户的显式评分,系统可以向其提供有针对性的个性化推荐服务。在实际生活中,用户购买某商品后未必对该品满意,因此有些推荐系统让用户重新对已购商品给出评价。例如,网上音乐商店 CDNOW (www. cdnow. com) 允许用户对其已购品作出“拥有并且喜欢它”(own it and like it)或“拥有但不喜欢它”(own it but dislike it)的区分。显式评分的优势在于其获取途径简单、对用户偏好的表征可信度较高。但是显式评分但也存在若干不足:
(1) 用户需要停止浏览和阅读以进行显式评分输入;
(2) 如果用户感到不能从提供评分中得到好处,将不会提供评分;
(3) 用户浏览的项目大大多于他们所评分的项目;
(4) 协同过滤要求每个项目都有相当数量的评分才能提供精确的推荐结果。
2 隐式评分
隐式评分需要电子商务推荐系统通过自动学习用户行为信息来了解用户偏好,用户甚至感觉不到推荐系统的存
在。曾春等人将其称之为隐式跟踪。隐式评分的获取途
径主要有:
(1) 用户行为分析,包括访问页面、在页面中搜索文本、保存 /删除书签、点击 /移动鼠标、拖动滚动条、剪切 /粘贴 /保存 /打印页面、用 E-mail 发送页面等;
(2)Web 日志挖掘,包括获取页面点击次数、停留时间、访问顺序等;
(3) 购物篮数据;
(4) 客户购买历史。此外,客户对商品的退货行为也可认为是对该商品作出了否定评分(negative ratings)。在隐式评分的应用研究方面,GroupLens 系统的研究人员指出用户阅读文档的时间长短有助于预测该用户对文档的评分。Claypool 等人将能够反映用户兴趣的隐式评分称为隐式兴趣指示器(implicit interest indicators),并开发了一个专门的 Web 浏览器对用户花在网页上的阅读时间以及对网页滚动条、鼠标、键盘等相关操作进行统计分析以推测用户对该网页的兴趣大小,他们的实验证明用户阅读时间和在网页上拖动滚动条的次数确实能较好反映用户兴趣。Yoda 系统则采用遗传算法(genetic algorithm)来学习用户的访问行为,从而自动调整用户描述(user profiles)。隐式评分的优势在于:
(1) 免去了用户对项目进行评分的开销;
(2) 每个用户都能提供隐式评分;
(3) 能够“免费”收集;
(4) 各种隐式评分能结合起来生成更精确的评分;
(5) 能与显式评分结合起来提高评分质量,例如显式评分有时存 在不能准确反映用户真实兴趣的问题即谓“what I say is not what I want”。但是隐式评分的缺点也非常明显,即相对于显式评分而言它的获取难度偏大、对用户偏好的表征可信度偏低。因此,目前协同过滤算法仍然主要使用显式评分。不过,由于显式评分对于系统用户而言是一个额外负担,因此基于隐式评分的协同过滤具有更高的自动化程度。随着 Web 数据挖掘技术的不断发展,隐式评分也将更多地参与到推荐计算,甚至在未来有可能取代显式评分成为推荐算法依赖的主要数据。
结合项目的语义相似度的推荐算法
针对现有推荐系统在语义关联方面的不足,一些文献提出了结合对于项目之间语义相似性(Semantic Similar-i
ty)的醒目项目之间综合相似的度量,用项目的语义相似和得分相似加权评分的方式计算两个项目之间的综合相似度[9],用实验的办法确定两种相似度的加权系数a的最佳效果值,实验的结论一般将a的值取在0. 4 ~ 0. 6左
右[9,10]。此方法在一定程度上提高了推荐系统的预测精度。今后,对资源语义相似性如何实现自动抽取和度量还
要深入研究。此外,结合领域本体知识,利用领域背景知识给出更为良好的语义相似性计算模型,将是今后的研究重
点。
结合用户兴趣变化的时间加权(线形/非线形遗忘)的推荐算法
这种方法是基于这样的认识:在协同过滤算法中,充分考虑到/时间效应0的影响,即越早发生的点击兴趣(或是作出的评分)其重要性越小。为了降低早期评分或兴趣数据对推荐查找相似邻居的影响,引入时间加权函数(亦称/遗忘函数0)f(t) ( t为时间变量)到兴趣预测中,用用户的原始评分乘上时间加权函数,修改后相似度计算公式参照
文献[11]。遗忘函数即时间加权函数f(t)的特点是使得协同过滤的评分数值,依据其作出的评价时间而线性/非线形逐步减小其重要性。实验表明,这种方法相对适合其兴趣变化较快的用户集[11,12]。
结合用户身份信息的推荐算法
结合用户身份形似度的相似邻居查找方法,可以解决用户评分数量不足造成相似邻居难以查找的问题。人口统
计信息(Demographic Information)指的是人的性别、年龄、职业、教育程度、国籍、居住地、收入、健康状况等一系列自然和社会状况的说明。网站用户在注册时需要向电子商务系统提交一张注册表单,其中就包含了许多人口统计信息,这是推荐系统可以利用的数据,但用户应当填写什么内容、真实性和隐私如何保证是值得研究的问题。
结合用户或项目聚类(Clustering)的推荐算法
比较典型的是用户聚类的协同过滤算法:分为离线和在线两部分离线时,算法首先对用户聚类(如使用k-Means
方法),产生若干用户聚类中心,然后计算每一个用户与各聚类中心相似性度量,从而获得从本用户与各个聚类中心
的相似性度量矩阵;在线时,算法仅仅计算活动用户与各个聚类中心的相似性,然后通过对比离线时获得的相似性度
量矩阵搜索目标用户的最近邻居,再对此最近邻居进行目标用户评分预测,产生推荐。在线时,系统只需要计算目标
用户与少量聚类中心及其聚类集合内的相似性,因而查找最近邻居所需时间将大大缩短。实验结果表明,聚类方法
能够在一定程度上解决生成推荐的速度问题,而且能够提高推荐质量。实验也表明,即使用户聚类并没有达到最优,
算法仍然能够在一定程度上加快推荐生产速度,提高推荐质量。聚类实际上是一种基于剪枝策略的改进技术:如果活动用户对于一类的用户或项目平均相似程度(即聚类中心)高,那么相对于其余类而言相似程度低,则认为整个此类的相似度低,进行/剪枝0,不再考虑在此类中查找相似邻居,因此在时间快速响应方面有一定改进。对此方法有一些问题需要进一步研究,例如聚类过程中k值(聚类个数)的选取原则等。
结合用户或项目属性隐式评分的推荐算法
一些文献提出了基于用户浏览行为的算法,综合考虑用户的浏览时间、路径和商品项目属性,以用户的行为作为
隐式评分的依据。利用网站浏览记录捕捉用户行为,从而分析出用户的购买倾向和兴趣,利用CF技术产生预测评
分,生成相应的预测列表。文献提出的方法以实际浏览网站日志记录进行试验,得出结果是/系统的推荐质量较高0[3]。收集和生成用户隐式评分的公式,不同文献采用了不同的具体设计。大部分体现了这样的假设思想:(对一客体)浏览时间长,则表示对其兴趣度高。隐式评分(Implicit Rating)方式的改进方案,一般是利用Web日志等以往的浏览记录对用户的未来行为、爱好等进行预测。这种方法的优点是不需要用户显式(ExplicitRating)地进行评分,用户负担进一步减轻,自动生成评分,在很大程度上解决了用户评分稀疏的问题。而缺点主要在于:一是用户的实际爱好和想法不易揭示:以浏览行为等作为用户喜好信息评判来源有一定的误差。二是随着用户保护隐私意识的加强,获得用户浏览信息将日益困难,而且会对收集其上网记录的行为日益反感。甚至将来在一定条件下,收集他人上网记录等做法将成为违法行为,不再可行(即DM的隐私保护问题)。
云模型的推荐算法
云模型(Cloud Modal)是李德毅院士提出的一种定性定量转换模型[13],能够实现定性概念与其数值表示之间的不
确定性转换,可以表示自然科学、社会科学中大量的不确定现象。文献[14]等提出了基于云模型技术的协同过滤改进方案。通过云用期望Ex(Expected Value)、熵En (Entropy)、超熵He(Hyper entropy)这三个数字特征来整体表征一个概念,提取不同用户的评分特点模式,在此基础上计算用户之间的相似程度。算法在一定程度上克服了用户评分数据极端稀疏的负面影响,对于如何基于定性知识进行用户项稀疏矩阵填充等技术,都是有意义的下一步的研究方向。
应用遗传算法的CF改进
遗传算法(Genetic Algorithm,简称GA)是模拟达尔文的遗传选择和自然淘汰的生物进化过程的计算模型。文献等将遗传算法的思想应用到协同过滤推荐算法。而在文献中所列实验结果表明,使用GA的算法性能不一定就会改善。究其原因,GA/所预测的结果仅是一个可能的最适解,而非真正的最佳解。0文献结论认为:/试验评估的结果在资料(评分)充足的情況,使用基因演算法(GA)进行预测时即有不錯的准确度。而在资料稀疏的情況下,使用基因演算法进行预测准确可增加预测的准确度。
  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值