mahout推荐系统算法分析

mahout推荐系统算法分析

ID:20428124

大小:338.96 KB

页数:24页

时间:2018-10-13

mahout推荐系统算法分析_第1页
mahout推荐系统算法分析_第2页
mahout推荐系统算法分析_第3页
mahout推荐系统算法分析_第4页
mahout推荐系统算法分析_第5页
资源描述:

《mahout推荐系统算法分析》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、RecommenderJob源码分析(StepbyStep)Maj2014年6月3日11:58:090.RecommenderJob简介RecommenderJob是mahout推荐系统的分布式实现,使用的算法是Itembased的协同过滤算法。它的输入是一个含有用户喜好数据的.csv文件,数据格式是userID,itemID,prefValue。输出是userIDs对应的推荐物品和评分。这里以书中的例子作为输入:其中第一列是用户ID,第二列是物品,第三列是该用户对物品的评

2、分。如用户1对101物品评分是5,如此类推。将上面的评分保存为文件,存到hdfs中,路径为/usr/testdata/intro.txt,执行以下命令:hadoopjarmahout-core-0.9-job.jarorg.apache.mahout.cf.taste.hadoop.item.RecommenderJob–input/usr/testdata/intro.txt–sSIMILARITY_EUCLIDEAN_DISTANCE–outputoutput1该命令使用欧式距离求相似度,将结果输出到

3、output1目录中。结果如下所示:这个结果也是很好理解的,对于用户1,首要推荐104,其次推荐106,以此类推。RecommenderJob使用MR分布式计算框架,所以所有的矩阵运算全部都映射为key-value对并操作,运算不直观(推荐算法中用到了9个MR任务),所以对各个MR任务的源码进行分析,为方便理解,提供对应步骤的中间结果显示。看完各个MR任务后,可以对输入文件如何转换为向量,分布式矩阵乘法操作,如何计算相似度有比较好的理解。这些中间结果绝大部分摘自网上参考文献(文章最后有附网站),不过网上用

4、的是0.7,我们这边用0.9,有个别流程不同。1.RecommenderJob步骤一PreparePreferenceMatrixJobPreparePreferenceMatrixJob主要用于前期准备工作,如将输入文件的key-value转为key-vector等。该Job继承自AbstractJob,实现了run方法就能被main调用了,下同。PreparePreferenceMatrixJob由3个PrepareJob组成(Map-reduce)。下面来一个一个看:1.1ItemIDIndexMa

5、pperandItemIDIndexReducer用途:Convertitemstoaninternalindex(将items转化为内部索引)输入:--input指定的输入文件输出:itemIDIndexItemIDIndexMapper这个mapper很简单Setup过程获取transpose布尔变量,默认是falseMap代码如下:protectedvoidmap(LongWritablekey,Textvalue,Contextcontext)throwsIOException,Interrupt

6、edException{String[]tokens=TasteHadoopUtils.splitPrefTokens(value.toString());longitemID=Long.parseLong(tokens[transpose?0:1]);intindex=TasteHadoopUtils.idToIndex(itemID);indexWritable.set(index);itemIDWritable.set(itemID);context.write(indexWritable,item

7、IDWritable);}这里itemID=tokens[1],idToIndex为return0x7FFFFFFF&Longs.hashCode(id)%0x7FFFFFFE;所以这里也等于itemID比如itemID为101,则idToIndex也为101ItemIDIndexReducer代码如下:protectedvoidreduce(VarIntWritableindex,IterablepossibleItemIDs,Contextcontext)throws

8、IOException,InterruptedException{longminimumItemID=Long.MAX_VALUE;for(VarLongWritablevarLongWritable:possibleItemIDs){longitemID=varLongWritable.get();if(itemID

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。