- Mahout0.9—Hadoop2.20—协同过滤算法
1.1. 基于物品的协同过滤推荐函数
Mahout支持推荐函数,通过mahout –-help 查看:
函数1:itemsimilarity: : Compute the item-item-similarities for item-based collaborative filtering
itemsimilarity是计算物品相似度矩阵;如果只需要相似矩阵,可用此函数。
函数2:recommenditembased: : Compute recommendations using item-based collaborative filtering
recommenditembased是计算物品相似度矩阵,并根据相似矩阵和用户数据进行推荐结果计算;recommenditembased的计算过程包括itemsimilarity;
1) itemsimilarity参数
通过mahout itemsimilarity –-help 查看:
–input (-i) input, 设置数据输入路径
–output (-o) output ,设置结果输出路径
–similarityClassname (-s) ,设置相似度计算函数:
SIMILARITY_COOCCURRENCE,同现相似度
SIMILARITY_LOGLIKELIHOOD, 对数似然相似度
SIMILARITY_TANIMOTO_COEFFICIENT
SIMILARITY_CITY_BLOCK, 曼哈顿距离相似度
SIMILARITY_COSINE, 余弦相似度
SIMILARITY_PEARSON_CORRELATION,皮尔森相似度
SIMILARITY_EUCLIDEAN_DISTANCE, 欧氏距离相似度
具体函数定义参照:http://blog.fens.me/mahout-recommend-engine/
–maxSimilaritiesPerItem (-m), 物品最大相似物品数量,默认是100;
–maxPrefs (-mppu) ,最大评分,默认是: 500
–minPrefsPerUser (-mp) ,最小评分,默认是1
–booleanData , false评分 true 0、1
–threshold (-tr) ,相似度过滤
–randomSeed ,抽样
–tempDir tempDir ,临时目录
2) recommenditembased参数
通过mahout recommenditembased–-help 查看:
–input (-i) input, 设置数据输入路径
–output (-o) output ,设置结果输出路径
–similarityClassname (-s) ,设置相似度计算函数
–numRecommendations (-n) ,每个用户推荐数量,默认10
–usersFile,计算用户推荐结果的用户数据
– itemsFile,推荐结果只包含该物品列表;
–maxSimilaritiesPerItem (-m), 物品最大相似物品数量,默认是100;
–maxPrefs (-mppu) ,最大评分,默认是: 500
–minPrefsPerUser (-mp) ,最小评分,默认是1
–booleanData , false评分 true 0、1
–threshold (-tr) ,相似度过滤
–filterFile (-f) ,过滤用户推荐物品
–randomSeed ,抽样
–tempDir tempDir ,临时目录
1.2. 基于物品的协同过滤推荐
上传数据
sudo hadoop fs -put ./item.txt /testdata/ input
sudo hadoop fs -put ./user.txt /testdata/ output
1、itemsimilarity 相似矩阵计算,只计算相似矩阵
sudo mahout itemsimilarity -i /testdata/ input /item.txt -o /testdata/ output -s SIMILARITY_COOCCURRENCE –tempDir /testdata/temp
2、itemsimilarity 输出相似矩阵,推荐结果
sudo mahout recommenditembased -i /testdata/ input /item.txt -o /testdata/ output –usersFile /testdata/userfile/user.txt -s SIMILARITY_COOCCURRENCE -n 20 –tempDir /testdata/temp