Mahout协同过滤算法源码分析--Itembased Collaborative Filtering实战
来源:互联网 发布:ai mac版 编辑:程序博客网 时间:2024/05/01 03:40
Mahout版本:0.7,hadoop版本:1.0.4,jdk:1.7.0_25 64bit。
本系列介绍介绍mahout中的Itembased Collaborative Filtering算法,这个算法的实现的源码是org.apache.mahout.cf.taste.hadoop.item.RecommenderJob。在mahout官网是这样介绍这个算法的:RecommenderJob是一个完全分布式的基于项目的推荐器。它的输入是一个含有用户喜好数据的.csv文件,数据格式是userID,itemID,value。输出是userIDs和每个用户的推荐项目及项目的评分。下面就按照这样的输入数据,使用《mahout in action》中的list2.1中的数据进行测试(数据在http://blog.csdn.net/fansy1990/article/details/12354119中也可以看到),使用下面的测试代码对RecommenderJob进行测试:
package mahout.fansy.item.test;import org.apache.mahout.cf.taste.hadoop.item.RecommenderJob;public class TestRecommenderJob {/** * RecommenderJob测试程序 * @param args * @throws Exception */public static void main(String[] args) throws Exception {String[] arg=new String[]{"-jt","ubuntu:9001","-fs","ubuntu:9000","-i","hdfs://ubuntu:9000/test/input/user_item","-o","hdfs://ubuntu:9000/user/mahout/item/output","-n","3","-b","false","-s","SIMILARITY_EUCLIDEAN_DISTANCE","--maxPrefsPerUser","7","--minPrefsPerUser","2","--maxPrefsPerUserInItemSimilarity","7","--tempDir","hdfs://ubuntu:9000/user/mahout/item/temp"};RecommenderJob.main(arg);}}其中的一些参数先做些说明:-n参数就是--numRecommendations参数,这个参数设置后在最终的对每个用户进行推荐的时候就会推荐numRecommendations个项目;-b参数是--booleanData的缩写,这个参数是指原始数据是有用户的评分还是没有,比如原始数据只有用户和项目,这个也是可以的;-s是similarityClassname的缩写,看英文大概意思就是相似度的计算方式,这里选择的是欧氏距离;其他参数在后面的系列分析blog中进行分析。
上面的测试代码跑完后,可以在50030界面查看,一共跑了几个job任务,一般如下:
可以看到一共有9个job任务,同时在HDFS监控界面可以看到最后的推荐结果:
算法的输出也是比较好理解的,比如,从上面的结果可以看出,用户1被推荐了104、106、105项目(而且这些项目是按照得分从高到低排序的)。
所以,总体来说,这个算法调用和最后对结果的分析来说还是比较清晰的。算法调用只用设置-n(每个用户推荐多少个项目)即可,其他参数不进行设置,直接默认即可(不过好像-s参数一定要进行设置的)。最后算法跑完后,产生的结果也是很好分析的。
分享,成长,快乐
转载请注明blog地址:http://blog.csdn.net/fansy1990
- Mahout协同过滤算法源码分析--Itembased Collaborative Filtering实战
- mahout算法源码分析之Itembased Collaborative Filtering实战
- mahout算法源码分析之Itembased Collaborative Filtering(六)总结
- Collaborative filtering 协同过滤
- 协同过滤Collaborative Filtering
- Collaborative filtering 协同过滤算法 Slope One
- Collaborative Filtering协同过滤推荐算法
- collaborative filtering (CF):协同过滤
- collaborative filtering (CF):协同过滤
- Slope One :简单高效的协同过滤算法(Collaborative Filtering)
- 数据挖据-协同过滤算法 (collaborative-filtering, CF)
- Mahout协同过滤算法源码分析(1)
- Mahout协同过滤算法源码分析(3)--parallelALS
- Mahout协同过滤算法源码分析(5)--拓展篇
- Mahout协同过滤算法源码分析(6)--并行思路
- 协同过滤(英语:Collaborative Filtering)
- 协同过滤 之 User-based Collaborative Filtering
- Mahout 协同过滤 itemBase RecommenderJob源码分析
- Java中的ArrayList数组
- K均值算法的c语言实现
- HTTP 协议详解
- 对于observation or feature 的两种利用方式
- HRBUST 1793 离线并查集
- Mahout协同过滤算法源码分析--Itembased Collaborative Filtering实战
- 大数据应用之HBase数据插入性能优化之多线程并行插入测试案例
- 如何使用ContentResolver
- Java线程:线程的同步与锁
- 数据库系统概论 数据挖掘 目录
- Apache按天截断日志工具,无法生成访问日志
- JS通过事件的传递来间接调用定义在函数中的函数
- 工厂模式,简单工厂模式,抽象工厂模式三者有什么区别
- cocos2d 坐标系