WORD格式整理
SpearmanCorrelationSimilarity,它的执行效率不是非常高,因为斯皮尔曼相关性的计算需要花时间计算并存储喜好值的一个排序(Ranks),具体时间取决于数据的数量级大小。正因为这样,斯皮尔曼相关系数一般用于学术研究或者是小规模的计算。
UserSimilarity similarity1 = new SpearmanCorrelationSimilarity(model); // construct a Spearman Correlation-based Similarity User1 to User1 : 1.0 User2 to User1 : -1.0 User3 to User1 : NaN User4 to User1 : 1.0 User4 to User1 : 1.0
考虑到Spearman Correlation的效率,可以把SpearmanCorrelationSimilarity包装一层Cache,具体做法为: UserSimilarity similarity2 = new CachingUserSimilarity(new SpearmanCorrelationSimilarity(model), model);
这样,每次计算的结果会直接放入Cache,下一次计算的时候可以立即得到结果,而不是重新再计算一次。
6. 基于谷本系数的相似性度量 —— Tanimoto Coefficient-based Similarity Tanimoto Coefficient和前面的5中相关度计算方式有很大的不同,它不关心用户对物品的具体评分值是多少,它在关心用户与物品之间是否存在关联关系。Tanimoto Coefficient依赖于用户和物品之间的这种Boolean关系作为输入。
更准确的说法为:Tanimoto Coefficient主要用于计算符号度量或布尔值度量的个体间的相似度,因为个体的特征属性都是由符号度量或者布尔值标识,因此无法衡量差异具体值的大小,只能获得“是否相同”这个结果,所以Tanimoto Coefficient只关心个体间共同具有的特征是否一致这个问题。Tanimoto Coefficient又被叫做Jaccard Coefficient,其值等于两个用户共同关联(不管喜欢还是不喜欢)的物品数量除于两个用户分别关联的所有物品数量。
专业资料 值得拥有
WORD格式整理
Intersection/Union
也就是关联的交集除于关联的并集,用公式表示为:
Tanimoto/Jaccard Coefficient
其值介于[0, 1]之间,如果两个用户关联的物品完全相同,交集等于并集,值为1;如果没有任何关联,交集为空,值为0。
三、电影推荐系统的实现 1. 数据下载:
到grouplens网站(http://www.grouplens.org/node/12)上下载Data Sets,在该电影系统中我们使用了将近900多用户为1683的电影评了近100000行的数据集。将下载的ml-data_0.zip里的评分数据和电影信息数据取出。将评分文件转换成类似于csv文件格式的文本文件,CSV是逗号分隔值文件(Comma Separated value),是一种用来存储数据的纯文本文件格式,文件名为rating.TXT。可以用写字板打开,如图4.1:
图4.1 rating.txt示意图
然后将数据导入到mysql数据库中,将电影数据文件也转换成CSV格式文件,然后也导入数据库中,Mysql中数据库为movierecommendation,上述两个文件对应的表分别为movies和rating。由于taste引擎需要频繁进行数据库操作,所以可以对mysql数据库进行一般的调优,在mysql安装目录的my.ini文件中设置一些参数,从而加快数据库操作运行的时间。
专业资料 值得拥有
WORD格式整理
2. 系统结构:
本电影推荐系统前台导航栏有三个菜单,分别为首页,推荐电影,参数设置。 首页:
首页上显示综合评分最高的前20部电影,综合评分是指对于一部电影,所有观看改电影的用户的评分的期望值。实现为在index.jsp页面中调用数据库接口,查询数据库,然后将结果显示出来:
参数设置页面:
由于协同过滤算法需要设置推荐的参数,在本系统主要是考虑邻居个数和相似度度量函数这两个参数:
在相似性度量下拉列表框中,一共可以选择四种相似度度量类,分别为:基于欧几里得距离的相似度、基于皮尔森相关性的相似度、基于斯皮尔曼相关的相
专业资料 值得拥有
WORD格式整理
似度、基于古本系数的相似性度量。各相关性度量类的说明都在第二章节中有详细介绍。系统使用application对象保存这些参数设置,并且在web.xml中设置了初始化的值,分别为6、PearsonCorrelationSimilarity。当用户在该页面设置参数后,将传给websetting.java servlet,将这些参数保存在application中,并且跳转到推荐电影页面。在setting.jsp页面中也使用javascript验证用户输入数据的合法性。
推荐电影页面:
在推荐电影页面,用户首先需要输入用户ID和推荐数,在jsp页面中使用javascript验证用户输入数据的合法性,用户ID的范围,1到990。推荐数范围为1到30,如果输入数据非法,将跳转到错误页面:
当输入合法参数之后,系统将会将推荐结果展示出来:
专业资料 值得拥有
WORD格式整理
在该页面中,首先输出数据库中总共的用户数,电影数,以及要推荐的用户ID,然后下面左边为用户所有评分过的电影,右边为给用户推荐的电影。具体实现见程序源代码。
四、总结
本系统是基于Apache Mahout的taste所做的一个电影推荐系统,使用的数据为grouplens网站的990个用户,1618部电影,近10万行的评论数据集。并且使用MySql数据库作为数据源。提供用户参数选择,用户可以设置邻居个数和相似性度量类。最终系统给用户输出用户打分过的电影以及给用户推荐的电影。本系统缺点就是由于频繁的数据库操作,导致系统性能有待提高。给用户显示结果时间过长,用户交互性不是很好。山水是一部书,枝枝叶叶的文字间,声声鸟鸣是抑扬顿挫的标点,在茂密纵深间,一条曲径,是整部书最芬芳的禅意。春风翻一页,桃花面,杏花眼,柳腰春细;夏阳读一页,蔷花满架,木槿锦绣、合欢幽香、蜀葵闲澹,一派峥嵘;秋风传一页,海棠妆欢,野菊淡姿,高远深邃;冬雪润一页,水仙临水一舞,腊梅素心磬口,向爱唱晚。
专业资料 值得拥有