Apache Mahout的Taste基于Hadoop实现协同过滤推荐引擎的代码分析

Apache Mahout的Taste基于Hadoop实现协同过滤推荐引擎的代码分析

ID:27678898

大小:30.86 KB

页数:8页

时间:2018-12-05

Apache Mahout的Taste基于Hadoop实现协同过滤推荐引擎的代码分析_第1页
Apache Mahout的Taste基于Hadoop实现协同过滤推荐引擎的代码分析_第2页
Apache Mahout的Taste基于Hadoop实现协同过滤推荐引擎的代码分析_第3页
Apache Mahout的Taste基于Hadoop实现协同过滤推荐引擎的代码分析_第4页
Apache Mahout的Taste基于Hadoop实现协同过滤推荐引擎的代码分析_第5页
资源描述:

《Apache Mahout的Taste基于Hadoop实现协同过滤推荐引擎的代码分析》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、ApacheMahout的Taste基于Hadoop实现协同过滤推荐引擎的代码分析Taste是ApacheMahout提供的一个协同过滤算法的高效实现,它是一个基于Java实现的可扩展的高效的推荐引擎。该推荐引擎是用这样简单的数据格式表达用户对物品的偏好。以此为输入数据,计算后就可以得到为每个user推荐的items列表。他提供了方便的单机版的编程接口,也提供了基于hadoop的分布式的实现。单机版的编程接口主要适用于写demo和做算法的评估,若

2、处理大规模数据,还是需分布式的实现。以下是对org.apache.mahout.cf.taste.hadoop.item.RecommenderJob的各MapReduce步骤的一个解读。Taste实现一个分布式的协同过滤推荐共经历了如下12个MapReduce步骤。以下分析了各步骤的Mapper和Reducer都做了哪些工作,并有什么格式的数据输出。代码分析:1、计算item的itemid_index和最小itemid值1.1、ItemIDIndexMapper.class,VarIntWrit

3、able.class,VarLongWritable.class,用原始输入,将userid,itemid,pref数据转成itemid_index,itemid 1.2、ItemIDIndexReducer.class,VarIntWritable.class,VarLongWritable.class,在itemid_index,Iterator中找最小的itemid,输出itemid_index,minimum_itemid此处只是保存一个int型的itemid_index索

4、引和对应的long型的itemid的映射2、计算各user的item偏好向量,即Vector2.1、ToItemPrefsMapper.class,VarLongWritable.class,booleanData?VarLongWritable.class:EntityPrefWritable.class,用原始输入,读入偏好数据,得到userid,2.2、ToUserVectorReducer.class,VarLongWritable.clas

5、s,VectorWritable.class,将userid,Iterator中的itemid变成itemid_index,得到userid,Vector,后者用RandomAccessSparseVector来存。3、统计数据中有多少个user3.1、CountUsersMapper.class,CountUsersKeyWritable.class,VarLongWritable.class,用步骤2的输出,统计独立userid数

6、目,先转换数据为userid,userid3.2、CountUsersReducer.class,VarIntWritable.class,NullWritable.class,通过CountUsersPartitioner将所有数据发到一个区,一个Reducer来处理由于userid都已排序,所以可以用极简单的方式来统计出独立userid数输出只有一个值,即用户数4、计算item的user偏好向量,即Vector,也即拿步骤2的结果做矩阵的修剪和转置4.1、MaybeP

7、runeRowsMapper.class,IntWritable.class,DistributedRowMatrix.MatrixEntryWritable.class,用步骤2的输出,按指定的maxCooccurrences参数值来修剪Vector的数目,目的是控制计算的规模,减少计算量然后转为以userid_index为列号、itemid_index为行号、pref为值的矩阵,用MatrixEntryWritable表示矩阵。输出为itemid_index,Matrix

8、ex,itemid_index,pref>4.2、ToItemVectorsReducer.class,IntWritable.class,VectorWritable.class,输出为itemid_index,Vector,相当于对步骤2的结果进行了矩阵的转置,有了偏好矩阵数据,接下来会调用RowSimilarityJob来计算行的相似度此处的行是item,所以默认是item-base的CF。但其实可以通过传入是否转置的参数来对步骤1进行调

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

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

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