摘要:随着大数据的广泛应用,淘宝个性化的业务场景越来越多。基于物品的协同过滤(item-based collaborative filtering)算法是推荐算法领域应用比较广泛的一种算法 。本文首先介绍了ItemCF算法基础概念;其次介绍了基于Mapreduce的算法开发过程分析;最后介绍了如何对Mapreduce进行单元测试和本地集成测试。
关键词:个性化推荐、ItemCF算法、Mapreduce单元测试
正文:
一、ItemCF算法-基于物品的协同过滤算法介绍
基于物品的协同过滤(ItemCF)算法是目前业界应用最多的算法。在淘宝网的很多个性化推荐场景,ItemCF算法都被广泛使用。
基于物品的协同过滤算法为用户进行个性化推荐主要分为两步:
1)计算物品之间的相似度;
2)根据物品的相似度和用户的历史行为给用户生成推荐列表;
ItemCF算法演变经历了几个重要的阶段。通过几次算法优化,降低了热门的物品和活跃的用户对物品之间的相似度的影响。下面通过算法核心计算公式A到公式C的介绍,详细介绍ItemCF算法。
公式A中,分母|N(i)|是喜欢物品i的用户数,分子|N(i) N(j)|是同时喜欢物品i和物品j的用户数。公式A的缺点:如果物品j很热门,很多人喜欢,那么wij 就会很大,接近1。因此,该公式会造成任何物品和热门物品的相似度都有很大的相似度。为了避免推荐出热门物品的问题,提出公式B。
……………………
Wij是物品i和物品j之间的相似度,Rui是用户对物品i感兴趣,S(i,k)是物品i最相似的K个物品集合。公式B的缺点:活跃用户对于物品之间相似度的影响。假如,一个非常活跃的用户一天看了100万的商品,其中包括物品i和物品j,那么物品i和物品j就因为这个非常活跃的用户产生了相似度。学者认为活跃用户对物品相似度的贡献应该小于不活跃的用户,需要对活跃用户做软性的惩罚。提出了公式C。
N(u)是用户喜欢的物品集合。根据公式C计算的物品之间的相似度计算公式为用户进行的个性化推荐解决了热门物品和活跃用户的噪音问题。