基于hadoop生态系统的mahout推荐和聚类分析(1)

简介

hadoop是Apache旗下的一个开源分布式计算平台,在分布式环境下为用户提供处理海量数据的能力。

mahout是hadoop下的一个子项目,主要用于推荐、分类和聚类分析

一、推荐

关于推荐的算法有很多,本次主要介绍协同过滤算法。

(1)基于用户的协同过滤算法(UserCF)

        UserCF是推荐算法中最古老的算法,可以说,UserCF的诞生标志着推荐系统的诞生,该算法在1992年被提出的,但直到现在依然是推荐系统领域最著名的算法。

       UserCF符合人们对于趣味相投的认知,兴趣相似的用户往往有相同的物品喜好,当目标用户需要个性化推荐的时候,可以先找到和目标用户有相似兴趣的用户群体,然后将这个用户群体喜欢的,而目标用户没有听说过的物品推荐给该用户,这种方法就被称为基于用户的协同过滤。

下面举一个例子:

基于hadoop生态系统的mahout推荐和聚类分析(1)

       由上图可以看出用户A和用户C都喜欢物品A和物品C,因此认为这两个用户是相似用户,并将用户A没有接触过但用户C喜欢的物品D推荐给用户A,这就是UserCF的推荐原理。

       在大家简单了解了UserCF之后,也一定会看出此算法的关键步骤就是计算用户与用户之间的兴趣相似度,因为在实际应用中,用户数据都是百万、千万甚至上亿级,所以也就不可能再像上图这样简单分析了,这时就要用到相似度算法,在此就不做深入讲解了,有兴趣的同学可以自行查阅.(常用的相似度算法:曼哈顿距离(Manhatten)、欧氏距离(Euclidean)、余弦相似度等)

(2)基于物品的协同过滤算法(ItemCF)

       ItemCF是业界使用最多的推荐算法,亚马逊其推荐系统的基础使用的就是ItemCF。

       ItemCF是给目标用户推荐和他们之前喜欢的物品相似的物品。该算法并不利用物品的内容属性计算物品之间的相似度,而是主要通过分析用户的行为记录来计算物品之间的相似度。

       该算法基于的假设是:物品A和物品B具有很大的相似度是因为喜欢A物品的大多数用户也都喜欢物品B。

下面举一个例子:

基于hadoop生态系统的mahout推荐和聚类分析(1) 

       这和上面呢个同一个例子。首先用户A和用户C都喜欢物品A和物品C,这样就认为物品A和物品C是相似的,所以在用户A喜欢物品A时,就将物品C推荐给他,这就是基于物品协同过滤的原理。

     在计算物品相似度方面,与UserCF不同,ItemCF计算物品相似度是通过建立用户到物品倒排表来计算的。

      

总结:

        UserCF算法推荐的是那些和目标用户有着共同爱好的其他用户所喜欢的物品,ItemCF算法则是推荐那些和用户之前喜欢物品相似的其他物品。由此可以看出UserCF是更加偏向于社会化的,ItemCF则是偏向于个性化的。

 UserCF算法适合于新闻推荐和微博话题这些场景,推荐新颖度高,但很难对推荐结果做出解释,算法复杂度高。

ItemCF则在电子商务,图书,电影,音乐等方面广泛应用,并可以利用用户的历史记录给推荐结果做出解释,给用户更加信服的结果,但推荐新颖度低,多样性不足。

 

明天我将会给大家演示一个单机版基于物品的协同过滤音乐推荐的小例子。