协同过滤算法中的相似度优化方法

协同过滤算法中的相似度优化方法
协同过滤算法中的相似度优化方法

—52—

协同过滤算法中的相似度优化方法

徐 翔,王煦法

(中国科学技术大学计算机科学与技术系,合肥 230027)

摘 要:在协同过滤推荐系统中,通过对稀疏评分矩阵进行填充,可以提高对用户相似度的度量效果和系统的推荐精度。不同填充方法对相似度计算结果的影响存在较大差异。为解决该问题,针对3类填充方法构建的评分数据集,以最近邻算法进行推荐,分析传统相似度和基于云模型的相似度经2种方法优化后的度量效果,分别为各填充方法选取最有效的相似度优化方案。 关键词:协同过滤;最近邻;相似度;云模型

Optimization Method of Similarity Degree

in Collaborative Filter Algorithm

XU Xiang, WANG Xu-fa

(Department of Computer Science and Technology, University of Science and Technology of China, Hefei 230027)

【Abstract 】In collaborative filter recommendation systems, the performance of user similarity measuring can be improved by filling the sparse marking matrix. Different filling method has different effect on similarity calculation result. To resolve this problem, this paper makes recommendation by using nearest neighbor algorithm on marking sets constructed by three kinds of filling methods separately, analyzes the measure performance optimized by two methods of traditional similarity measures and the similarity based on cloud model, and selects the most effective similarity measure optimization scheme for each filling method.

【Key words 】collaborative filter; nearest neighbor; similarity degree; cloud model

计 算 机 工 程 Computer Engineering 第36卷 第6期

Vol.36 No.6 2010年3月

March 2010

·软件技术与数据库· 文章编号:1000—3428(2010)06—0052—03

文献标识码:A

中图分类号:TP391

1 概述

协同过滤是用于减少信息过载的常用技术,已成为个性化推荐系统的主要工具。最近邻协同过滤算法[1]是当前最成功的推荐技术之一。但随着推荐系统规模的扩大,用户评分数据出现极端稀疏性,导致该算法的推荐质量降低。

为解决数据稀疏性问题,一些学者提出了新的相似度计算模型,如文献[2]提出基于云模型的相似度计算方法。一些学者则采用对稀疏的用户-项矩阵进行填充的技术来提高相似度度量效果。最简单的填充办法是将用户对未评分项目的评分设为一个固定的缺省值,如设定为用户的平均评分,实验表明该方法可以有效提高协同过滤算法的推荐精度,因此,被许多简单推荐系统采用。另一种填充方法的处理过程如下:(1)采用预测评分的方式先估算出未评分项目的评分,将用 户-项矩阵填充完整;(2)在得到的稠密矩阵上计算用户间的相似度,以最近邻算法进行推荐。例如,文献[3]提出一种基于项目评分预测的协同过滤推荐技术,通过估计用户评分来填充用户-项矩阵,减小数据稀疏性对计算结果的影响。文献[4]通过奇异值分解(Singular Value Decomposition, SVD)算法估计未评分项目的评分,并在稠密矩阵上计算用户间的相关相似度,采用最近邻算法求取实际未评分项目的预测值。

选取合适的相似度方法对提高推荐精度具有重要作用,因此,本文在3类填充后的评分数据集下对现有相似度度量方法进行了优化分析。

2 现有相似度度量方法

本文主要研究4种相似度:余弦相似度[2](Cos),修正的余弦相似度[2](ACos),相关相似度[2](Pearson)和基于云模型的相似度(Yun)。前3种相似度是传统相似度度量方法得到的,下文简要介绍基于云模型的相似度。云模型表达的概念的整体特性可以用期望Ex 、熵En 、超熵He 3个特征来表示,记为C (Ex , En , He ),称为云的向量。在云模型中,云由多个云滴组成,每个用户的所有评分集合被视为一朵“云”,每个评分被视为一个“云滴”,可以通过逆向云算法[2]实现每朵云从定量值到云的特征向量的转换,2朵云之间的相似度可以由云的特征向量的夹角余弦来表示。

基于云模型的相似度度量算法描述如下:

输入 用户i 的评分集合P i =(x 1,x 2,…,x N ),用户j 的评分集合P j =(y 1,y 2,…,y M ),其中,N , M 分别为用户i 和用户j 评分过的项目个数。

输出 用户i 和用户j 的相似度YSim (i , j )

(1)计算用户i 的评分矢量的样本均值1

1N

i i X x N ==∑,一阶样本绝对中心矩

1

1N i i x X N =?∑和样本方差221

1()1N i i S x X

N ==?∑?。Ex i 的估计值为?Ex X =,He i 的估计值为1

1??N

i

i He x Ex N ==?∑,En i 的估计值为?En =,则用户i 的云向量为i =C (,,)i i i Ex En He ,用户j 的云向量为j =C (,,)j j j Ex En He 。

(2)对任意2个用户i 和j 的相似度可以由C i 和C j 之间的余弦夹角来表示,即

作者简介:徐 翔(1984-),男,硕士研究生,主研方向:电子商务个性化理论与方法;王煦法,教授、博士生导师 收稿日期:2009-10-25 E-mail :xuustc@https://www.360docs.net/doc/3a16952707.html,

—53—

(,)cos(,)i j i j i j

YSim i j ?==

C C C C C C

3 2种相似度优化方法

3.1 基于用户评分项目并集的优化方法

对稀疏的评分矩阵采用填充技术后,用户间的所有评分项目均为共同评分项目,此时相关相似度和修正的余弦相似度是等同的。如果直接采用传统相似度方法计算最近邻,则用户的相似度由所有项目上的评分决定。而在实际系统中这是不现实的,因此,基于所有项目的相似度是不准确的。

文献[3]提出在预测评分矩阵上计算2个用户的相似度时,仅在用户实际评分项目的并集上进行,而不考虑他们均未评价的项目评分。

本文对云模型相似度采用文献[3]的思想进行修正。设用户i 和用户j 的评分项目的集合分别为I i 和I j ,他们评分的项目并集记作ij i j U I I =∪,i 和j 在U ij 上的评分矢量分别记作UP i 和UP j ,且'{(,)|}i ij R i t t U =∈UP , '{(,)|}j ij R j t t U =∈UP ,R ’为填充后的用户-项矩阵,R ’(i ,t )表示用户i 对项目t 的评分。修正后,算法的输入变为UP i 和UP j ,其他部分与原算法相同。修正后基于云模型的相似度记作UYun 。同理,修正后的余弦相似度记作UCos ,修正后的相关相似度记作UACos 。 3.2 基于相关加权因子的优化方法

相关相似度虽然能反映用户间的相似程度,但不能显示相似度的可靠程度。例如,2个用户在较少的项目上有相同评分不表示他们的兴趣相似,因为他们同时打过分的项目较少;如果2个用户共同评分的项目较多,则相关系数可以较准确地反映他们之间的相似关系。

一些推荐系统引入加权因子e 来提高相似度的可靠性,e =Q /T ,其中,Q 为2个用户共同评分的项目数;T 为预先设定的阈值,与数据集大小相关。如果Q >T ,则加权因子为1。经过修正后,与活动用户共同评价项目较少的用户对最终预测结果的贡献度有所降低。实验表明,加权因子可以提高相关相似度的可靠程度。基于上述思想,本文采用相关加权因子来修正其他相似度方法的度量结果,以提高协同过滤算法的推荐精度。

4 实验结果与分析

为分析以不同矩阵填充方式填充的用户评分数据对各相似度方法度量效果的影响,本文选取3种采用不同填充方式的数据集作为测试集,即极度稀疏数据集、缺省评分数据集和SVD 预测评分数据集,并采用最近邻算法进行评分预测。实验以协同过滤算法的推荐精度来衡量各相似度方法度量效果的优劣。

4.1 数据集及度量标准

本文实验采用Grouplens 工作组提供的公开数据集,它由943个用户的10万条值为1~5的评价数据组成。数据集中共有1 682个电影项目,每个用户至少对20个电影项目做出评价。实验选取其中459个用户的2万条评分数据作为初始测试集,稀疏等级为97.4%。对稀疏评分矩阵分别进行3种填充操作,构建不同的测试集,即极度稀疏数据集(未评分项目的评分设置为0)、缺省评分数据集(未评分项目的评分缺省设置为用户的平均评分)和SVD 预测评分数据集(未评分项目的评分由SVD 算法[5]估计)。

实验采用平均绝对偏差(Mean Absolute Error, MAE)来衡量各相似度方法的度量效果,即通过计算预测的用户评分与

实际用户评分之间的偏差来衡量预测的准确性。MAE 越小,相似度方法的度量效果越好。假设预测的用户评分集合为{p 1,p 2,…,pN },对应的实际评分集合为{q 1,q 2,…,qN },则

i i

i N

p q MAE N

∈?∑=

4.2 极度稀疏数据集

为评估各相似度方法的有效性,最近邻算法分别采用Yun, Cos, ACos 和Pearson 4种相似度计算最近邻居集,并以MAE 来衡量相似度方法的度量效果。图1给出了极度稀疏数据集下各相似度方法的MAE 。结果表明,4种方法的预测效果都不好,Pearson 的效果最差,ACos 次之,Cos 和Yun 的效果较好,Cos 的效果最好。

图1 极度稀疏数据集下各相似度方法的MAE

对各相似度值的分布情况做了统计分析。Cos 有63%的计算结果集中在(0.0, 0.2]的范围内,小于等于0的计算结果占32%。Pearson 的结果在0~1范围内分布较均匀,但60.6%的结果小于等于0或得不到结果。ACos 有39%的结果集中在(0.0, 0.2]的范围内,59%的结果小于等于0或得不到结果。Yun 有97%的结果分布在[0.9, 1.0]范围内,3%分布在[0.7, 0.9]范围内。

综上所述,从0~1范围的分布来看,Pearson 的分布结果最均匀,Yun 的分布情况最集中,Cos 和ACos 其次。从结果小于等于0和得不到结果的总比重来看,Cos 和Yun 的有效结果比例很大(分别为68%和100%),Pearson 和ACos 的无效结果均超过60%。由各相似度结果的分布情况可知,Cos 和Yun 的度量效果优于ACos 和Pearson 。

4.3 缺省评分数据集

4.3.1 基于用户评分项目并集的优化分析

在缺省评分数据集下,ACos 和Pearson 等效,因此,实验只对Cos, ACos 和Yun 采用基于用户评分项目并集的修正,修正后的相似度分别为UCos, UACos 和UYun ,并和原来的 3种方法进行对比分析。如图2所示,UYun 的预测效果最好,最小MAE 为0.846,Yun 次之。ACos 和UAcos 方法在度量效果上几乎一致,UCos 的效果优于Cos 。可见,在缺省评分数据集上,云模型相似度比传统的余弦相似度和相关相似度的效果更好。基于用户评分项目并集的相似度修正方法提高了Yun 和Cos 的推荐精度,但没有改善ACos 的效果。因此,在缺省评分数据集下,实验选定UYun 相似度为度量效果最优的方法。

—54—

M A

E

图2 缺省评分数据集下各相似度优化效果对比

4.3.2 基于相关加权因子的优化分析

为验证相关加权因子能否对UYun 相似度进一步优化,实验将UYun 计算的相似度系数乘上加权因子,从而通过相关相似度的可靠性来修正UYun 方法的相似度结果。

通过实验发现,加权因子中阈值T 的设定会影响相似度修正效果。本文将T 的取值设定为10~50,以10为步长,分

析不同取值对相似度修正结果的影响,结果如图3所示。

UYun 表示未做加权因子修正的情况,UYT10表示UYun 经T =10的加权因子修正后的情况,以此类推。结果表明,T 大于400

5101520253035404550

0.820.83

0.84

0.85

0.86

0.87

0.88

0.89

UYun UYT10UYT20UYT30UYT40UYT50

图3 UYun 以相关加权因子修正时不同阈值下的MAE

4.4 SVD 预测评分数据集 4.4.1 SVD 保留维数的选取

在SVD 算法预测评分前,需要先确定矩阵奇异值分解保留的维数k 。本文在初始测试集上进行多次实验,k 从1~25递增,步长为1,结果表明,当k =8时,算法的MAE 最小为0.83,预测精度最高。因此,SVD 保留的维数k 设定为8。本文SVD 的算法由Matlab 工具实现。 4.4.2 基于用户评分项目并集的优化分析

SVD 保留维数确定后,分别以Yun, Cos, ACos, UYun, UCos, UACos 6种相似度计算最近邻居,做评分预测并与SVD 算法的预测结果进行对比,如图4所示。只有UACos 和Yun 的预测精度超过了SVD 算法。UACos 的最小MAE 为0.79,达到最优,Yun 方法次之。基于用户评分项目并集的相似度修正方法仅提高了ACos 的效果,而降低了Cos 和Yun 的效果。因此,实验选取UACos 方法为度量效果最优的相 似度。

5101520253035404550

0.780.8

0.82

0.84

0.86

0.88

0.9

0.92

SVD Cos ACos Yun UACos UCos UYun

图4 SVD 预测评分数据集下各相似度优化效果对比

4.4.3 基于相关加权因子的优化分析

为进一步提高算法精度,本文对UACos 的结果以相关加权因子进行优化,并对阈值的选取进行实验,结果如图5所示,可以看出,随着阈值T 的增加,算法的推荐精度没有提高,反而下降。0

5

10

15

20

25

30

35

40

45

50

0.790.8

0.81

0.82

0.83

0.84

0.85

0.86

UACos UAT10UAT20UAT30UAT40UAT50

图5 UACos 以相关加权因子修正时不同阈值下的MAE

4.5 实验结论

在极度稀疏数据集下,余弦相似度比其他相似度更简单且有效。在缺省评分数据集下,基于云模型的相似度经2种优化方法修正后(UYT40)的效果最优。在SVD 预测评分数据集下,基于用户项目评分并集的修正ACos 相似度(UACos)比其他相似度效果更好。对于后2种稠密数据集,Yun 和ACos 及其优化后的度量效果较好,基于用户评分项目并集的优化方案显著提高了相似度的效果,但两者在基于相关加权因子的方法下的效果存在差异,其原因可能是2种数据集的填充评分的精确度不同。 (下转第57页)

基于用户的协同过滤算法 UserCF流程图

UserCF算法主要流程: 主要全局变量: const int usersum = 6040; //用户总数 const int itemsum =3952; //项目总数 const int N =10; //为用户推荐前N个物品 int trainuser[usersum][itemsum]={0}; //训练集合user item rate矩阵 int test[usersum][itemsum]={0}; //测试集合user item rate矩阵 struct _simi { double value; //相似值 int num; //相似用户号 }; _simi simiUser[usersum][usersum]; //排序后的相似性矩阵double trainuserItem[usersum][itemsum]={0.0}; // user item 兴趣程度矩阵int recommend[usersum][N]={0}; //为每个用户推荐N个物品

拆分数据集函数int SplitData(int m, int k) 主要流程: 将数据集拆分为测试集test和训练集trainuser,其中1/m为测试集,取不同的k<=m-1值在相同的随即种子下可得到不同的测/训集合

计算用户之间相似度函数double Simility(int* Ua, int*Ub)主要流程:计算用户Ua和Ub的相似性,返回值为Ua和Ub的相似度

用户相似性矩阵排序函数int sort(double *simArr,_simi *simStruct)主要流程:根据相似性由高到低排序,每行第一个是自己

改进了协同过滤推荐算法的推荐系统的制作流程

图片简介:

本技术介绍了一种改进了协同过滤推荐算法的推荐系统,属于推荐系统技术相关领域。该推荐系统包括输入模块、推荐算法和输出模块三个部分,输入模块用于输入用户个人基本信息、用户对项目的评分和用户历史信息等;推荐算法根据输入信息分析用户兴趣爱好,寻找最相似用户和项目,给出预测的评分结果;输出模块依据用户输入请求,输出相应的推荐项目。其中改进部分是对推荐算法中冷启动问题进行优化。针对新用户、新项目和新系统不同的冷启动问题,提出了优化解决方法。 技术要求 1.一种改进了协同过滤推荐算法的推荐系统,其特征在于,包括输入模块、推荐算法和输出模块;输入模块用于输入用户个人基本信息、用户对项目的评分、用户历史信息和当 前的点击操作;推荐算法根据输入信息分析用户兴趣爱好,寻找最相似用户和项目,给 出预测的评分结果;输出模块依据用户输入请求,输出相应的推荐项目到客户端。 2.如权利要求1所述的一种改进了协同过滤推荐算法的推荐系统,其特征在于,所述推荐算法为协同过滤推荐算法,所述协同过滤推荐算法冷启动实现方式为:一、提供非个性 化的推荐,非个性化推荐的最简单例子就是热门排行榜,可以给用户推荐热门排行榜, 然后等到用户的反馈足够多,数据收集到一定的时候,再转换为个性化推荐;二、利用 用户的注册信息,提供的年龄、性别、职业等数据做粗粒度的个性化;三、利用用户的 社交网络账号登录,导入用户在社交网站上的好友信息,然后给用户推荐其好友喜欢的 物品;四、利用物品的内容信息计算物品相关表,利用专家进行标注。 3.如权利要求2所述的一种改进了协同过滤推荐算法的推荐系统,其特征在于,在所述推荐算法中,用户点击商品链接后,推荐系统会记录用户的点击行为,然后系统计算用户 间相似度,找出与当前用户最相似的前N个用户,接着在这前N个用户中找出当前用户没有点击的商品,将点击率最高的几个商品加入推荐列表,最后将推荐列表发往客户端向 用户展示推荐的商品。

基于协同过滤的推荐算法及代码实现

基于协同过滤的推荐算法与代码实现 什么是协同过滤? 协同过滤是利用集体智慧的一个典型方法。要理解什么是协同过滤(Collaborative Filtering, 简称CF),首先想一个简单的问题,如果你现在想看个电影,但你不知道具体看哪部,你会怎么做?大部分的人会问问周围的朋友,看看最近有什么好看的电影推荐,而我们一般更倾向于从口味比较类似的朋友那里得到推荐。这就是协同过滤的核心思想。 协同过滤一般是在海量的用户中发掘出一小部分和你品位比较类似的,在协同过滤中,这些用户成为邻居,然后根据他们喜欢的其他东西组织成一个排序的目录作为推荐给你。当然其中有一个核心的问题: 如何确定一个用户是不是和你有相似的品位? 如何将邻居们的喜好组织成一个排序的目录? 简单来说: 1. 和你兴趣合得来的朋友喜欢的,你也很有可能喜欢; 2. 喜欢一件东西A,而另一件东西B 与这件十分相似,就很有可能喜欢B; 3. 大家都比较满意的,人人都追着抢的,我也就很有可能喜欢。 三者均反映在协同过滤的评级(rating)或者群体过滤(social filtering)这种行为特性上。 深入协同过滤的核心 首先,要实现协同过滤,需要一下几个步骤: 1. 收集用户偏好 2. 找到相似的用户或物品 3. 计算推荐 (1)收集用户偏好 要从用户的行为和偏好中发现规律,并基于此给予推荐,如何收集用户的偏好信息成为系统推荐效果最基础的决定因素。用户有很多方式向系统提供自己的偏好信息,而且不同的应用也可能大不相同,下面举例进行介绍:

以上列举的用户行为都是比较通用的,推荐引擎设计人员可以根据自己应用的特点添加特殊的用户行为,并用他们表示用户对物品的喜好。 在一般应用中,我们提取的用户行为一般都多于一种,关于如何组合这些不同的用户行为,基本上有以下两种方式: 将不同的行为分组:一般可以分为“查看”和“购买”等等,然后基于不同的行为,计算不同的用户/物品相似度。类似于当当网或者Amazon 给出的“购买了该图书的人还购买了...”,“查看了图书的人还查看了...”

基于项目的协同过滤算法 ItemCF流程图

ItemCF算法主要流程: 主要全局变量: const int usersum = 6040; //用户总数 const int itemsum =3952; //项目总数 const int N =10; //为用户推荐前N个物品 int trainuser[usersum][itemsum]={0}; //训练集合user item rate矩阵 int test[usersum][itemsum]={0}; //测试集合user item rate矩阵 struct _simi { double value; //相似值 int num; //相似物品号 }; _simi simiItem[itemsum][itemsum]; //排序后的相似性矩阵double trainuserItem[usersum][itemsum]={0.0}; // user item 兴趣程度矩阵int recommend[usersum][N]={0}; //为每个用户推荐N个物品

拆分数据集函数int SplitData(int m, int k) 主要流程: 将数据集拆分为测试集test和训练集trainuser,其中1/m为测试集,取不同的k<=m-1值在相同的随即种子下可得到不同的测/训集合

计算项目之间相似度函数double Simility(int* ItemA, int* ItemB)主要流程:计算用户ItemA和ItemB的相似性,返回值为ItemA和ItemB的相似度

用户i对物品j预测兴趣程度函数double getUserLikeItem(int i,int j,int k)主要流程: 利用k个最近邻来计算

基于用户评分Kmeans聚类的协同过滤推荐算法实现

基于用户评分Kmeans聚类的协同过滤 推荐算法实现 一:基于用户评分Kmeans聚类的协同过滤推荐算法实现步骤 1、构建用户-电影评分矩阵: public Object readFile(String fileName){ List user = new ArrayList(); double[][] weight = new double[user_num][keyword_num]; List obj = new ArrayList(); try { File file = getFile(fileName); FileReader fr = new FileReader(file); BufferedReader br = new BufferedReader(fr); String line = ""; while (br.ready()) { line = br.readLine(); String[] data = line.split(" "); String[] str = data[1].split(";"); user.add(data[0]); for (int i = 0; i < str.length; i++) { String[] s = str[i].split(":");

weight[Integer.parseInt(data[0])-1][Integer.par seInt(s[0])-1] = Double.parseDouble(s[1]); } } obj.add(user); obj.add(weight); br.close(); } catch (Exception e) { e.printStackTrace(); } return obj; } 2、根据用户评分聚类: public class GenerateGroup implements Base{ private List initPlayers;//初始化,一个随机聚类中心 private List players;//每个用户实体类 public static List clusterHeart; public GenerateGroup(List list) { players = list;

一种改进的协同过滤推荐算法

种改进的协同过滤推荐算法 摘要:协同过滤算法自提出以来便得到了广泛运用,但 协同过滤算法本身具有的数据稀疏性及冷启动问题也制约了算法的性能。通过分析协同过滤算法的原理和不足,提出了一种改进协同过滤算法的思路,并在MovieLens 数据集上进行了验证,一定程度上提高了 算法性能。 关键词关键词:推荐系统;协同过滤;数据稀疏性文献标识码:A 文章编号:1672-7800(2016)004-0063-03 0 引言网络技术的 迅猛发展使得互联网上的信息呈现爆炸式 中图分类号:TP312 增长,为人们的生活和学习提供了便利,与此同时,海量的数据也带来了一些问题,其中最主要的就是“信息过载”问题。所谓信息过载问题,是指由于不相关的垃圾数据过多从而导致用户无法准确找到自己想要信息的问题。 为应对信息过载问题,人们提出了各种解决方案,其中 最为用户所熟悉的无疑是搜索引擎技术。但搜索引擎的服务是被动的,它要求使用者必须先给出一个搜索关键字,然后才能提供与该关键字相关的信息。这种完全依赖于关键字的服务模式要求用户能用关键字准确描述自己所需信息,否则

无法提供服务,但是现实中用户很多时候并不能精确描述自己的需求信息。这种情况下,以推荐系统为代表的技术可以较好地解决该问题,提高用户的使用体验。 1 协同过滤算法 1.1算法介绍 “协同过滤”技术最早由GlodBerg等于20世纪90年代 提出,该技术最初被用来过滤电子邮件[1],此后这种技术取得了商业上的巨大成功,得到了广泛使用[2-3] 。协同过滤的基本思想是,如果两个用户在一些项目上具有相似的评价信息,包括显示的直接评分信息或者点击、购买等隐式评价信息,则这两个用户具有相似兴趣。一般而言,协同过滤需要使用到的用户评价信息会被存储在一个数据表中,该表可以被称为用户评分矩阵。 协同过滤技术的关键在于计算两个用户或者项目的相 似度,然后根据相似的用户或者项目进行推荐。其中如果根据某一用户的评分数据寻找到与其相似的用户,并依据相似用户的爱好对活动用户进行推荐的思想被称为基于用户的协同过滤。如果知道用户对某一项目评分较高,则可以根据评分矩阵寻找与这一项目相似的项目推荐给用户,这种思想被称为基于项目的协同过滤。 两种协同过滤算法的基本步骤比较相似。首先,依据用 户对物品的评分建立用户评分矩阵,矩阵的行数为系统中用

基于协同过滤算法的电影推荐系统设计

高级数据挖掘期末大作业

基于协同过滤算法的电影推荐系统 本电影推荐系统中运用的推荐算法是基于协同过滤算法(Collaborative Filtering Recommendation)。协同过滤是在信息过滤和信息系统中正迅速成为一项很受欢迎的技术。与传统的基于内容过滤直接分析内容进行推荐不同,协同过滤分析用户兴趣,在用户群中找到指定用户的相似(兴趣)用户,综合这些相似用户对某一信息的评价,形成系统对该指定用户对此信息的喜好程度预测。 电影推荐系统中引用了Apache Mahout提供的一个协同过滤算法的推荐引擎Taste,它实现了最基本的基于用户和基于内容的推荐算法,并提供了扩展接口,使用户方便的定义和实现自己的推荐算法。 电影推荐系统是基于用户的推荐系统,即当用户对某些电影评分之后,系统根据用户对电影评分的分值,判断用户的兴趣,先运用UserSimilarity计算用户间的相似度.UserNeighborhood根据用户相似度找到与该用户口味相似的邻居,最后由Recommender提供推荐个该用户可能感兴趣的电影详细信息。将用户评过分的电影信息和推荐给该用户的电影信息显示在网页结果页中,推荐完成。 一、Taste 介绍 Taste是Apache Mahout 提供的一个个性化推荐引擎的高效实现,该引擎基于java实现,可扩展性强,同时在mahout中对一些推荐算法进行了MapReduce 编程模式转化,从而可以利用hadoop的分布式架构,提高推荐算法的性能。 在Mahout0.5版本中的Taste,实现了多种推荐算法,其中有最基本的基于用户的和基于内容的推荐算法,也有比较高效的SlopeOne算法,以及处于研究阶段的基于SVD和线性插值的算法,同时Taste还提供了扩展接口,用于定制化开发基于内容或基于模型的个性化推荐算法。 Taste 不仅仅适用于Java 应用程序,还可以作为内部服务器的一个组件以HTTP 和Web Service 的形式向外界提供推荐的逻辑。Taste 的设计使它能满足企业对推荐引擎在性能、灵活性和可扩展性等方面的要求。 下图展示了构成Taste的核心组件:

基于在线评论情感分析的改进协同过滤推荐算法

第45卷 第6A 期 2018年6月 计算机科学COMPUTER SCIENCE Vol.45No.6A June 2018 本文受国家自然科学基金项目(71671121,11471152)资助.孙丽华(1979-),女,博士生,主要研究方向为个性化推荐算法,E-mail :sunlh68@t j u.edu.cn ;张兴芳(1957-) ,女,教授,主要研究方向为不确定性的数学理论与应用. 基于在线评论情感分析的改进协同过滤推荐算法 孙丽华1 张兴芳2 (天津大学管理与经济学部 天津300072)1 ( 聊城大学数学科学学院 山东聊城252000)2 摘 要 针对在线中文评论中用户主观意见的不确定性,提出了一种基于不确定理论的情感分析模型,并结合情感分析模型设计了一种个性化推荐算法.首先,采用分词工具ICTCLAS 和IKAnal y zer 预处理在线中文评论,并基于情感词典(HowNet )计算特征词的点互信息值;然后,应用不确定变量与不确定集设计情感分析模型;最后,根据情感分析模型设计搜索K 最近邻居的新方法,并产生推荐.实验结果表明,该方法能够有效提高推荐的准确率,缓解数据稀疏问题. 关键词 推荐算法,不确定统计,在线评论,情感分析中图法分类号 TP391 文献标识码 A Im p roved Collaborative Filterin g Recommendation Al g oritbm Based on Sentiment Anal y sis of Online Review SUN Li-hua 1 ZHANG Xin g -fan g 2 (Colle g e of Mana g ement and Economics ,Tian j in Universit y ,Tian j in 300072,China ) 1(School of Mathematical Sciences ,Liaochen g Universit y ,Liaochen g ,Shandon g 252000,China ) 2 Abstract Aimin g at the uncertaint y of users sub j ect o p inions in online Chinese review ,a sentiment anal y sis model based on uncertaint y theor y was p ro p osed.An individual recommendation al g orithm was desi g ned on the basis of the p ro p osed sentiment anal y sis model. First ,the tokenizers of ICTCLAS and IKAnal y zer was used to p re p rocess online Chinese review to g enerate characteristic words ,and the p oint mutual information value of characteristic words accoun-tin g for the sentiment direction were com p uted based on HowNet dictionar y .Then ,the sentiment anal y sis model was established via uncertaint y theor y of uncertain variables and uncertain sets.In addition ,the new similarit y formula based on the p ro p osed model was used to search the K-nearest nei g hbors.Finall y ,the recommendation lists were g iven.Ex p eri- mental results show that the p ro p osed method can effectivel y im p rove the accurac y of recommendation and alleviate the s p arse data p roblem. Ke y words Recommendation al g orithm ,Uncertain statistics ,Online review ,Sentiment anal y sis 1 引言 随着互联网的发展,电子商务逐步进入社会化商务时代,用户可以发布和获得网络信息的渠道日益增多. 以 协同过 滤 思想为基础的推荐技术[1] 很好地帮助用户提高了信息利 用率.基于用户或项目的协同过滤推荐算法,无论是在实际应用领域还是理论发展方面,都取得了丰富的成果.但是,在电子商务网站中,普遍存在数据稀疏问题,国内外一些学者通 过改进推荐算法来提高推荐精度[2-3] ,从而满足用户的需求. 然而,随着用户需求的不断细化,学者们发现评分数据中包含的信息量有限,不可避免地忽略了用户的某些特征信息,限制了推荐的精度. 在线评论是用户对项目使用经验的具体反馈,从评论信息中挖掘用户意见,无疑能完善用户偏好模型,提高推荐精度.由于自然语言本身具有不确定性,使得用户反馈的体验信息具有不确定性.为解决这类问题,现有文献多采用概率 [2] 或模糊 [4-5] 的方法.例如,Dra g oni 等 [6] 利用模糊的方法 刻画情感倾向,并将该方法应用到不同的领域来分析评论中的情感倾向性.Ha q ue 等 [7] 基于模糊逻辑的方法分析用户正 面或者负面的情绪来判断用户对产品的兴趣.Loia 等[8] 和 Wan g 等[9] 利用模糊的方法来识别文本中用户的情感倾向. Fu 等[12] 利用模糊方法从句子级别来研究情感分类, 提高了情感分类的准确性.因此,情感分析技术很快被应用到推荐 系统中[10-11].Fu 等[13] 结合评论信息来丰富用户的偏好信 息,利用HowNet 情感词典分析评论中用户的情感倾向,挖 掘用户情感倾向来提高推荐结果的准确性.De 等[2] 利用概率推断的方法从模糊观测的结果中改进协同过滤推荐算法, 提高推荐结果的精度. 然而,概率论和模糊数学中并没有涵盖所有的非确定性,例如,在情感分析过程中,分析用户的情感倾向是正向的程度或者是负向的程度;类似地,分析用户的情感强度是无法用工 具测量的.不确定理论[14]对这些问题给出了合理的解释,并对其做了进一步的完善[ 15] .可以利用不确定理论来更好地描述这些既不是随机也不是模糊的非确定问题. 本文针对在线中文评论中用户主观意见的不确定问题,建立了一种基于不确定理论的情感分析模型,并在此基础上设计了个性化推荐算法,以提高推荐结果的精度和缓解数据稀疏问题.最后,在Java 环境下,利用两个真实数据集验证 了该算法的有效性. 万方数据

浅谈基于协同过滤的个性化推荐算法

浅谈基于协同过滤 算法的个性化推荐 姓名: 学号: 班级: 学院: 年月日

摘要 协同过滤是如今推荐系统中最为成熟的的一个推荐算法系类,是利用群体的喜好来推测使用者的喜好,从而向用户产生推荐的算法。当前协同过滤算法大致可以分为基于用户的协同过滤算法和基于项目的协同过滤算法。协同过滤为主要算法的推荐系统的应用领域日益广泛,电子商务是其应用的最主要和最成功的领域。但协同过滤算法仍具有很多不足之处,最突出的不足分别是数据稀疏性问题,冷启动问题和系统延伸性问题。在已有的理论和实践研究基础上,个人提出了协同过滤推荐值得深入研究的方向应包括多维数据的交叉利用,从而提高协同过滤推荐的精准度。 关键字:协同过滤推荐,基于用户,基于项目,数据稀疏,冷启动,系统延 伸性,多维数据的交叉利用 正文 一、协同过滤推荐的基本定义 (一)协同过滤推荐的概念 协同过滤是如今推荐系统中最为成熟的的一个推荐算法系类,简单来说是利用某兴趣相投、拥有共同经验之群体的喜好来推荐使用者感兴趣的资讯,个人透过合作的机制给予资讯相当程度的回应(如评分)并记录下来以达到过滤的目的进而帮助别人筛选资讯,回应不一定局限于特别感兴趣的,特别不感兴趣资讯的纪录也相当重要。 (二)协同过滤推荐的主要算法概述 当前协同过滤算法大致可以分为两类,一类是基于用户的协同过滤算法,一类是基于项目的协同过滤算法。 基于用户的协同过滤推荐根据相似用户群的观点来产生对目标用户的推荐。基本思想是如果某些用户对部分项目的评分趋于一致或是很接近,可以认为他们对其它项目的评分差异就比较小,进一步,可以使用这些相似用户的项目评分值对目标用户的未评分项目进行估计。基于用户的协同过滤使用数理统计的方法来寻找与目标用户有相似兴趣偏好的最近邻居用户集合,再以最近邻居用户对特定项目的评分为基础使用一定的数学方法来预测目标用户对该特定项目的评分,而预测评分最高的前N个商品可以看作是用户最有可能感兴趣top-N商品返回给目标用户(这就是所谓的top-N推荐)。基于用户的协同过滤推荐算法的核心思想是利用数理统计的方法为目标用户寻找他的最近邻居用户集,再以最近邻居用户对特定项目的评分为基础使用一定的数学方法来预测目标用户对该特定项目的评分,最终产生最后的推荐结果。通过最近邻居用户对目标用户未评分项目的评分值进行加权平均来逼近,这是该算法思想的关键。基于用户的协同过滤推荐算法的主要工作有:用户之间相似性的衡量、最近邻居集的查找和评分预测值的计算。 和基于用户的协同过滤相比,基于项目的协同过滤推荐算法的思想出发点是完全相反的,但是计算方法一致。基于项目的协同过滤推荐算法是根据用户对与

协同过滤推荐算法与应用

机器学习算法day03_协同过滤推荐算法及应用课程大纲 课程目标: 1、理解协同过滤算法的核心思想 2、理解协同过滤算法的代码实现 3、掌握协同过滤算法的应用步骤:数据处理、建模、运算和结果判定

4、 1. CF协同过滤推荐算法原理 1.1 概述 什么是协同过滤(Collaborative Filtering, 简称CF)? 首先想一个简单的问题,如果你现在想看个电影,但你不知道具体看哪部,你会怎么做? 大部分的人会问问周围的朋友,看看最近有什么好看的电影推荐,而我们一般更倾向于从口味比较类似的朋友那里得到推荐。这就是协同过滤的核心思想。 协同过滤算法又分为基于用户的协同过滤算法和基于物品的协同过滤算法 1.2 案例需求 如下数据是各用户对各文档的偏好: 现在需要基于上述数据,给A用户推荐一篇文档

1.3 算法分析 1.3.1 基于用户相似度的分析 直觉分析:“用户A/B”都喜欢物品A和物品B,从而“用户A/B”的口味最为相近 因此,为“用户A”推荐物品时可参考“用户B”的偏好,从而推荐D 这种就是基于用户的协同过滤算法UserCF指导思想 1.3.2 基于物品相似度的分析 直觉分析:物品组合(A,D)被同时偏好出现的次数最多,因而可以认为A/D两件物品的相似度最高,从而,可以为选择了A物品的用户推荐D物品

这种就是基于物品的协同过滤算法ItemCF指导思想 1.4 算法要点 1.4.1、指导思想 这种过滤算法的有效性基础在于: 1、用户偏好具有相似性,即用户可分类。这种分类的特征越明显,推荐准确率越高 2、物品之间具有相似性,即偏好某物品的人,都很可能也同时偏好另一件相似物品 1.4.2、两种CF算法适用的场景 什么情况下使用哪种算法推荐效果会更好? 不同环境下这两种理论的有效性也不同,应用时需做相应调整。 a.如豆瓣上的文艺作品,用户对其的偏好程度与用户自身的品位关联性较强;适合UserCF b.而对于电子商务网站来说,商品之间的内在联系对用户的购买行为影响更为显著。 1.5 算法实现 总的来说,要实现协同过滤,需要一下几个步骤: 1.收集用户偏好 2.找到相似的用户或物品 3.计算推荐

基于用户的协同过滤推荐算法原理和实现

在推荐系统众多方法中,基于用户的协同过滤推荐算法是最早诞生的,原理也较为简单。该算法1992年提出并用于邮件过滤系统,两年后1994年被GroupLens 用于新闻过滤。一直到2000年,该算法都是推荐系统领域最著名的算法。 本文简单介绍基于用户的协同过滤算法思想以及原理,最后基于该算法实现园友的推荐,即根据你关注的人,为你推荐博客园中其他你有可能感兴趣的人。 基本思想 俗话说“物以类聚、人以群分”,拿看电影这个例子来说,如果你喜欢《蝙蝠侠》、《碟中谍》、《星际穿越》、《源代码》等电影,另外有个人也都喜欢这些电影,而且他还喜欢《钢铁侠》,则很有可能你也喜欢《钢铁侠》这部电影。 所以说,当一个用户A 需要个性化推荐时,可以先找到和他兴趣相似的用户群体G,然后把G 喜欢的、并且A 没有听说过的物品推荐给A,这就是基于用户的系统过滤算法。 原理 根据上述基本原理,我们可以将基于用户的协同过滤推荐算法拆分为两个步骤: 1. 找到与目标用户兴趣相似的用户集合 2. 找到这个集合中用户喜欢的、并且目标用户没有听说过的物品推荐给目标用户1. 发现兴趣相似的用户 通常用Jaccard 公式或者余弦相似度计算两个用户之间的相似度。设N(u) 为用户u 喜欢的物品集合,N(v) 为用户v 喜欢的物品集合,那么u 和v 的相似度是多少呢: Jaccard 公式: 余弦相似度:

假设目前共有4个用户:A、B、C、D;共有5个物品:a、b、c、d、e。用户与物品的关系(用户喜欢物品)如下图所示: 如何一下子计算所有用户之间的相似度呢?为计算方便,通常首先需要建立“物品—用户”的倒排表,如下图所示: 然后对于每个物品,喜欢他的用户,两两之间相同物品加1。例如喜欢物品a 的用户有A 和B,那么在矩阵中他们两两加1。如下图所示:

基于用户-项目特征的协同过滤推荐改进算法

基于用户-项目特征的协同过滤推荐改进算法 朱 珠,辜丽川,舒贵阳,冯娟娟,王 超,陈 卫 ( 安徽农业大学 信息与计算机学院,安徽 合肥 230036 ) 摘 要:基于用户的协同过滤推荐算法是当前使用范围最广的推荐算法之一。传统的协同过滤推荐算法仅依靠用户对项目的打分记录,数据稀疏度高而且来源单一,对用户间相似度测算的可信度影响较大。针对这一问题,引入用户画像信任度和类别评分差异度两个概念,对传统基于用户的协同过滤推荐算法进行改进,提出一种多维用户相似性计算方法,该算法通过调节用户画像信任度和类别评分差异度在用户相似性计算中的贡献系数,进而影响推荐算法评价指标MAE 的变化,实验结果表明,新算法较原算法在命中率和准确率上有较大提高。 关键词:用户画像; 项目类别; 相似性; 协同过滤 中图分类号:TP399 文献标识码:A 文章编号:1673-9639 (2017) 09-0015-05 协同过滤推荐算法[1-2]是应用最为广泛的推荐方法之一,在亚马逊网、Netflix 、YouTube 等在线电子商务[3]、移动应用[4]等领域作为个性化信息服务的解决方案,都有较为成功的应用。随着数据量增大,用户对项目的打分数量有限,每个用户的打分数量通常小于整体待评分项目的1‰,用户-项目打分矩阵数据稀疏等级高,数据重叠性低,严重制约了用户间相似度测算的可信度,降低了推荐算法的性能。因此,如何通过用户相似性计算为目标用户过滤出可靠的邻居用户成为算法亟待解决的关键问题。 为解决数据稀疏性问题,赵琴琴等[3]依据用户-项目评分矩阵,通过相似度传播,为目标用户寻找更多、更可靠的邻居,并分别从用户和项目两方面寻找用户、项目的相似性。胡勋等[5]为提高基于共同评分项目的用户相似度计算精度,使用推土机距离实现跨项目的移动用户相似度计算,提出一种将移动用户信任关系与项目评分特融合的协同过滤推荐算法; 贾冬艳等基于用户相似度计算的结果,动态选取目标用户的兴趣相似集,并依据用户评分信息计算目标用户与兴趣相似用户的信任度,实现双重邻居选取[1]。 以上处理方式在一定程度上缓和了数据稀疏性问题,但这些方式的数据来源单一,仅依赖于用户对项目的行为记录,没有考虑用户和项目自身特征差异对相似性的影响,用户信任度稳定性较低,往往导致推荐结果的准确率和命中率降低。为解决上述问题,本文引入“用户画像”和“用户对同一类别项目的评分量”两个度量因子,提出一种改进相似度的协同过滤推荐算法,实验结果证明该方法在准确度等方面有较大改善。 1.相关概念 1.1.度量相似性 1.1.1.余弦相似性 将用户i 和用户j 的评分向量视为n 维空间向 收稿日期:2017-03-22 基金项目:国家自然科学基金项目(31371533);安徽省重大科技专项(16030701092);安徽农业大学2015年度教育改革与发 展研究项目(18)。 作者简介:朱 珠(1992-),女,安徽六安人,硕士,研究方向:数据挖掘、机器学习等。 第19卷 第9期 铜仁学院学报 V ol. 19, No. 92017年 9 月 Journal of Tongren University Sep. 2017

基于协同过滤算法的电影推荐系统

基于协同过滤算法的电影推荐系统

————————————————————————————————作者:————————————————————————————————日期:

高级数据挖掘期末大作业

基于协同过滤算法的电影推荐系统 本电影推荐系统中运用的推荐算法是基于协同过滤算法(Collaborative Filtering Recommendation)。协同过滤是在信息过滤和信息系统中正迅速成为一项很受欢迎的技术。与传统的基于内容过滤直接分析内容进行推荐不同,协同过滤分析用户兴趣,在用户群中找到指定用户的相似(兴趣)用户,综合这些相似用户对某一信息的评价,形成系统对该指定用户对此信息的喜好程度预测。 电影推荐系统中引用了Apache Mahout提供的一个协同过滤算法的推荐引擎Taste,它实现了最基本的基于用户和基于内容的推荐算法,并提供了扩展接口,使用户方便的定义和实现自己的推荐算法。 电影推荐系统是基于用户的推荐系统,即当用户对某些电影评分之后,系统根据用户对电影评分的分值,判断用户的兴趣,先运用UserSimilarity计算用户间的相似度.UserNeighborhood根据用户相似度找到与该用户口味相似的邻居,最后由Recommender提供推荐个该用户可能感兴趣的电影详细信息。将用户评过分的电影信息和推荐给该用户的电影信息显示在网页结果页中,推荐完成。 一、Taste 介绍 Taste是Apache Mahout 提供的一个个性化推荐引擎的高效实现,该引擎基于java实现,可扩展性强,同时在mahout中对一些推荐算法进行了MapReduce 编程模式转化,从而可以利用hadoop的分布式架构,提高推荐算法的性能。 在Mahout0.5版本中的Taste,实现了多种推荐算法,其中有最基本的基于用户的和基于内容的推荐算法,也有比较高效的SlopeOne算法,以及处于研究阶段的基于SVD和线性插值的算法,同时Taste还提供了扩展接口,用于定制化开发基于内容或基于模型的个性化推荐算法。 Taste 不仅仅适用于Java 应用程序,还可以作为内部服务器的一个组件以HTTP 和Web Service 的形式向外界提供推荐的逻辑。Taste 的设计使它能满足企业对推荐引擎在性能、灵活性和可扩展性等方面的要求。 下图展示了构成Taste的核心组件:

基于用户的协同过滤算法

基于用户的协同过滤算法 作者:罗沐阳(2012101020028) 指导教师:张勇 【摘要】:随着网络技术的应用和普及、电子商务的迅猛发展,越来越多的信息充斥在网络之上。如何在众多的资源中找到适合自己需求的信息,成为众多学者、专家和网络用户火心的核心问题之一。个性化推荐技术在这样的背景下应运而生。协同过滤技术是个性化推荐技术最为核心的技术之一,也是目前应用最为广泛和成功的技术。本文主要研究的是基于用户的协同过滤推荐算法的实现。 【关键词】:协同过滤,相似度,个性化推荐 1.电子商务个性化推荐技术 1.1个性化推荐技术 电子商务对传统的商务交易产生了革命性的变化,从而要求“以产品为中心”向“面向客户”、“以客户为中心”的新的商业模式的转变,要求电子商务网站按客户群划分产品,围绕客户进行服务,为客户提供所需要的东西,所以对每个顾客提供个性化的服务成为必要。在这种背景下,推荐系统(Recommender System)应运而生,它是根据用户个人的喜好、习惯来向其推荐信息、商品的程序。电子商务网站可以使用推荐系统分析客户的消费偏好,向每个客户具有针对性地推荐产品,帮助用户从庞大的商品目录中挑选真正适合自己需要的商品,尽可能为每个顾客提供个性化的服务。 个性化推荐(personalized recommendation)技术通过研究不同用户的兴趣,主动为用户推荐最需要的资源,从而更好地解决互联网信息日益庞大与用户需求之间的矛盾。目前,推荐技术被广泛应用到电子商务、数字图书馆、新闻网站等系统中。因此,各种适用于推荐系统的技术应运而生,如协同过滤技(CF)、bayesian网技术、聚类分析技术、关联规则技术、神经网络技术和图模型技术等,其中,协同过滤是应用最为广泛的个性化推荐技术。协同过滤推荐又分为基于模型(Model-based)的协同过滤和基于用户的协同过滤。后来,sarwr 教授在2001年提出基于项目的协同过滤算法 1.2协同过滤 协同过滤推荐技术是用“相似统计”的方法发现具有相似偏好或是兴趣特征的“相邻用户”。“协同过滤”的思想最早由美国明尼苏达州大学的学者Paul Resnick在1994年,发表的《GroupLens: AnOpen Architecture for Collaborative Filtering of Netnews》一文中提出的。迄今为止, 协同过滤是在个性化推荐系统中应用最广泛和最被人们所认可的一种推荐技术。 协同过滤的基本原理是:根据用户对信息产品的评分情况,对其他用户进行检索, 找出与该用户“品味”相似的一小群人, 也就是“邻居”,然后再基于这些相似性进行信息产品评分预测,产生Top-N的推荐结果。

基于协同过滤算法的推荐系统设计

基于协同过滤算法的推荐系统设计 一、绪论: 长尾理论。 二、协同过滤算法的定义: (一)预定义: 要实现协同过滤算法,需要做以下的预定义: 1、邻域: 给定集合X,映射U:X→P(P(X))(其中P(P(X))是X的幂集的幂集),U 将X中的点x映射到X的子集族U(x)),称U(x)是X的邻域系以及U(x)中的元 素(即X的子集)为点x的邻域,当且仅当U满足以下的邻域公理: U1:若集合A∈U(x),则x∈A。 U2:若集合A,B∈U(x),则A∩B∈U(x)。 U3:若集合A∈U(x),且A ?B ?X,则B∈U(x)。 U4:若集合A∈U(x),则存在集合B∈U(x),使B ?A,且?y∈B,B∈U(y)。 2、皮尔逊相关系数: 皮尔逊相关系数是一种度量两个变量相似程度的一种方法,若变量X和变量Y线性相关,则其皮尔逊系数的z值域为[-1,1]。系数值为1表示完全正相关; 系数值为-1表示完全负相关。 3、曼哈顿距离: 4、欧几里得距离: 5、余弦相似度: 6、 Jaccard相似度: (二)基于用户的协同过滤算法: 在实际应用中,如果一个用户C需要得到个性化的推荐,那么根据这个用户过去喜欢过的物品,计算出与这个顾客有着相似偏好的用户,继而把这些相似的用户所喜欢的、且C没有喜好过的物品推荐给用户C,这就是基于用户的协同过滤算法的主要思路。 该方法主要包括两个步骤: 1、寻找和查询用户具有相似偏好的用户群体。 2、找到这些用户所喜欢的物品集合,选取其中用户最为感兴趣的子集推荐给 查询用户。 在步骤1中,我们使用相似度来度量两个用户之间的相似度。相似度的计算方法可以调用预定义中的皮尔逊相似度、余弦相似度、曼哈顿距离、欧几里得距离和jaccard相似度。记用户A和用户B之间的相似度为sim 在得到用户的相似度之后,我们需要给查询用户返回根据其兴趣度的T opK结果,我们用如下公式衡量用户的兴趣度: 公式 其中S(u,K)代表相似用户集中的前K个用户,N(i)代表喜欢物品i的用户集合。 R代表用户u对物品i的感兴趣程度。 下图代表基于用户协同过滤算法的主要流程: (三)基于物品的协同过滤算法: 在基于用户的协同过滤算法的基础上,又发展出了基于物品的协同过滤算法。 这主要是因为在一般的网站应用中,用户的数量往往远远大于物品的数量,这就造 成了计算用户之间的相似度成为一件非常耗时的工作:以余弦相似度为例。设一个

基于项目的协同过滤推荐算法

基于项目的协同过滤推荐算法采用统计技术来寻找与目标项目有相似评分的邻居项目,再基于邻居项目的评分数据预测目标项目的评分,从而选择预测评分最高的前若干项推荐给目标用户。整个算法基于用户一项目评分矩阵R ( m, n}进行。R( m, n}是一个mxn阶矩阵,m行表示m个用户,n列表示n个项目,矩阵,表示用户i对项目j的评分数据。 元素值R i ,j 一般情况下,网站用户数量增长比较快,而待评价项目比较稳定,因此计算出的项目相似度矩阵的更新频率比较低,所以此矩阵可以使用较长时间。基于项目的协同过滤推荐算法认为,用户对不同项目的评分具有相似性,先计算项目之间的相似性,当需要估计用户对某一项目的评分时,可以参照用户对其他项目的评分来进行判断[11]。 和基于用户的协同过滤推荐算法相似,该算法也分为三步: (1)建立用户—项目矩阵 M表示有m个用户,n为项目数量,矩阵中的R ij表示用户i对项目j的评价,可选取一定的范围数字表示。 (2)获取目标用户邻居 根据用户—项目矩阵,计算目标项目与其他项目的相似度,获得目标项目的项目邻居列表,其中,项目的相似度可根据上文提到的余弦相似性,皮尔森相似系数以及修正的余弦相似系数计算出来,从而采用TOP-N算法产生最近邻居集[2]。 (3)进行推荐 根据邻居对项目的评分来预测目标用户对项目的评分,可采用下面的一个公式:

U为邻居用户集,sim(T,n)表示目标项目与最近邻居的相似性,Ru, n表示用户u 对项目n 的评分; RT 和Rn 分别表示对项目T 和项目n的平均评分[11]。 基于项目的协同过滤推荐技术可以对基于一些复杂的,难以表达的概念(信息质量、品位)进行过滤,同时也可以推荐一些新特性。 但是,由于大型电子商务站点用户及商品项的数量庞大且不断增加,使得R ( m, n}成为高维矩阵,’用户给予评分的商品项很少,通常在1%以下[3j,导致R ( m, n}中的评分数据极端稀疏。因此,基于项目的协同过滤推荐算法面临严峻的用户评分数据稀疏性的挑战[m。文献[8了在其提出的优化算法中考虑到了项目的类别相似性,但只涉及项目的第1层分类,而未能扩展到实际商品在多类别多层次上的相似性。本文提出了计算项目类别相似性的方法,并将其与传统的项目评分相似性相结合,进一步求得项目综合相似性,从而提高最近邻居项目的搜寻准确度,同时也缓解了用户评分数据稀疏性问题。 2 基于项目的协同过滤推荐算法的不足 对于项目i、j之间的评分相似性simR(i,j),基于项目的协同过滤推荐算法主要采用以下3种方法进行度量:

基于协同过滤算法的电影推荐系统

高级数据挖掘期末大作业基于协同过滤算法的电影推荐系统

本电影推荐系统中运用的推荐算法是基于协同过滤算法(Collaborative Filtering Recommendation)。协同过滤是在信息过滤和信息系统中正迅速成为一项很受欢迎的技术。与传统的基于内容过滤直接分析内容进行推荐不同,协同过滤分析用户兴趣,在用户群中找到指定用户的相似(兴趣)用户,综合这些相似用户对某一信息的评价,形成系统对该指定用户对此信息的喜好程度预测。 电影推荐系统中引用了Apache Mahout提供的一个协同过滤算法的推荐引擎Taste,它实现了最基本的基于用户和基于内容的推荐算法,并提供了扩展接口,使用户方便的定义和实现自己的推荐算法。 电影推荐系统是基于用户的推荐系统,即当用户对某些电影评分之后,系统根据用户对电影评分的分值,判断用户的兴趣,先运用UserSimilarity计算用户间的相似度.UserNeighborhood根据用户相似度找到与该用户口味相似的邻居,最后由Recommender提供推荐个该用户可能感兴趣的电影详细信息。将用户评过分的电影信息和推荐给该用户的电影信息显示在网页结果页中,推荐完成。 一、Taste 介绍 Taste是Apache Mahout 提供的一个个性化推荐引擎的高效实现,该引擎基于java实现,可扩展性强,同时在mahout中对一些推荐算法进行了MapReduce 编程模式转化,从而可以利用hadoop的分布式架构,提高推荐算法的性能。 在版本中的Taste,实现了多种推荐算法,其中有最基本的基于用户的和基于内容的推荐算法,也有比较高效的SlopeOne算法,以及处于研究阶段的基于SVD和线性插值的算法,同时Taste还提供了扩展接口,用于定制化开发基于内容或基于模型的个性化推荐算法。 Taste 不仅仅适用于Java 应用程序,还可以作为内部服务器的一个组件以HTTP 和Web Service 的形式向外界提供推荐的逻辑。Taste 的设计使它能满足企业对推荐引擎在性能、灵活性和可扩展性等方面的要求。 下图展示了构成Taste的核心组件:

相关文档
最新文档