基于 item
1
基于 item 的推荐方法假设:能够引起用户兴趣的 item ,必定与其评分高的 item 相似。主要包括三个步骤: (1) 得到每个用户对 item 的评分数据; (2) 对 item 进行最近邻的搜索; (3)
相比基于用户的推荐方法,基于 item 的推荐方法提高了协同过滤方法的扩展性和性能。基于用户的推荐方法会随着用户数量的不断增加,在海量数据的余户范围内进行“最近邻搜索”会成为算法的瓶颈,难以做实时的 item 推荐。而基于 item 的推荐方法通过计算 item 之间的相似性来替代计算用户之间的相似性。 Item 之间的相似性比用户之间的相似性更稳定,可以离线的计算 item
2 Mahout 中基于 item
2.1
--output
--input
-n
-u
-i 待推荐的 item
-f 过滤指定用户不需要推荐的 item 。格式为 userID, itemID
-b
-mp 设置每个用户喜好的最大数量 默认 10
-m 设置每个用户喜好的最小数量 默认 1
-mo
-s
SIMILARITY_URRENCE(DistributedurrenceVectorSimilarity.class),
SIMILARITY_EUCLIDEAN_DISTANCE(DistributedEuclideanDistanceVectorSimilarity.class),
SIMILARITY_LOGLIKELIHOOD(DistributedLoglikelihoodVectorSimilarity.class),
SIMILARITY_PEARSON_CORRELATION(DistributedPearsonCorrelationVectorSimilarity.class),
SIMILARITY_TANIMOTO_COEFFICIENT(DistributedTanimotoCoefficientVectorSimilarity.class),
SIMILARITY_UNCENTERED_COSINE(DistributedUncenteredCosineVectorSimilarity.class),
SIMILARITY_UNCENTERED_ZERO_ASSUMING_COSINE(DistributedUncenteredZeroAssumingCosineVectorSimilarity.class),
SIMILARITY_CITY_BLOCK(DistributedCityBlockVectorSimilarity.class);
2.2
Mahout 中基于 item 的推荐包括 12 个 MapReduce 过程。下面对每一个 MapReduce 输入的数据以 userid “\t” itemid “\t” perferenceValue
(1) 第 1 个 MapReduce :将 itemID
(2) 第 2 个 MapReduce :统计每个用户对哪些 item
(3) 第 3 个 MapReduce
(4) 第 4 个 MapReduce :统计每个 item
(5) 第 5,6,7 个 MapReduce :计算每个 item 与所有 item
(6) 第 8 个 MapReduce :将相同 item 之间的相似度置为 NaN
(7) 第 9 个 MapReduce :确定要推荐的用户,这些用户对哪些 item
(8) 第 10 个 MapReduce :根据以上的统计结果得到每个 item 与其他 item 之间的相似度,这些 item
(9) 第 11 个 MapReduce :过滤掉指定用户不需要推荐的 item
(10) 第 12 个 MapReduce :得到每个用户要推荐的 item 。这些 item 对于该用户来说是评分最高的前 n