基于 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