推荐系统简介

推荐系统 

    当用户并不明确自己可能需要某些商品的时候,搜索引擎的作用开始不那么明显,于是就需要推荐引擎来为用户进行可能感兴趣商品的推荐。

    如图,推荐系统可以看作是一个黑盒子,把用户以及商品的一些信息 作为输入,它就能给相关用户推荐他们可能会感兴趣的商品。
推荐系统简介

推荐系统分类

     1.根据面向对象的不同

  •  大众化的推荐系统,顾名思义,就是所有人都会收到的一些推荐,这个可以由后台管理员固定设置。
  •  个性化的推荐系统由于针对到了个人,则更能够体现出人工智能给人类提供的服务和便利。

      2.根据不同的数据源

  • 根据系统用户的基本信息发现用户的相关程度,这种被称为基于人口统计学的推荐(Demographic-based Recommendation)。一般的思想是相似的用户可能感兴趣的商品也相同或相近。
  • 根据推荐物品或内容的元数据,发现物品或者内容的相关性,这种被称为基于内容的推荐(Content-based Recommendation)。比如用户喜欢看电影《美人鱼》,《美人鱼》的导演是周星驰,主演是林允和邓超,那么就判断这名用户有可能会喜欢邓超主演的电影或者周星驰导演的电影。
  •  根据用户对物品或者信息的偏好,发现物品或者内容本身的相关性,或者是发现用户的相关性,这种被称为基于协同过滤的推荐(Collaborative Filtering-based Recommendation)。用户对物品的偏好主要是通过一些浏览信息,购买信息,点击信息等来进行判断,但是这种隐式反馈极有可能会造成噪声影响,无法准确判断用户是否真的对某些商品感兴趣;而显示反馈就是指可能会麻烦用户耗费更多时间填写调查问卷,对商品进行评价,但是这个反馈更加客观直接,有助于推荐系统准确向用户进行推荐。

    3.根据不同的模型建立方式

  • 基于物品和用户本身的,这种推荐引擎将每个用户和每个物品都当作独立的实体,预测每个用户对于每个物品的喜好程度,这些信息往往是用一个二维矩阵描述的。由于用户感兴趣的物品远远小于总物品的数目,这样的模型导致大量的数据空置,即我们得到的二维矩阵往往是一个很大的稀疏矩阵。同时为了减小计算量,我们可以对物品和用户进行聚类然后记录和计算一类用户对一类物品的喜好程度,但这样的模型又会在推荐的准确性上有损失。
  • 基于关联规则的推荐(Rule-based Recommendation):关联规则的挖掘已经是数据挖掘中的一个经典的问题,主要是挖掘一些数据的依赖关系。典型的场景就是“购物篮问题”,通过关联规则的挖掘,我们可以找到哪些物品经常被同时购买,或者用户购买了一些物品后通常会购买哪些其他的物品,当我们挖掘出这些关联规则之后,我们可以基于这些规则给用户进行推荐。
  • 基于模型的推荐(Model-based Recommendation):这是一个典型的机器学习的问题,可以将已有的用户喜好信息作为训练样本,训练出一个预测用户喜好的模型,这样以后用户在进入系统,可以基于此模型计算推荐。这种方法的问题在于如何将用户实时或者近期的喜好信息反馈给训练好的模型,从而提高推荐的准确度。
    其实在实际使用中,很少有推荐引擎使用单一的推荐策略,一般都是在不同的场合下使用不同的推荐策略以达到更好的效果。

推荐系统面临的挑战

    推荐系统面临的主要挑战主要有:稀疏问题(Sparsity Problem)、冷启动问题(Cold Start problem)、可扩展性(Scalability)和过度专业化问题(Over Specialization Problem)。

  • 稀疏问题是推荐系统面临的主要挑战,数据稀疏性对推荐效果有很大影响与像MovieLens类似的数据系统以用户-物品打分形式存储,当物品或用户数增大时,维数和稀疏性也会增大。由于协同过滤依赖于评分矩阵,所以受此影响很大。通常对稀疏问题的解决方法是通过某些方法对用户对商品的打分进行填充以便于计算。回想一下,标准的相似度方法只考虑那些当前用户和用来比较的用户都评过分的物品。当数量很少时,评分碰巧相同或不同都会对相似度计算影响很大。因此这种思路就是给那些只有一两个用户评过分的物品赋以缺省值(可能也会对一些附加的物品),这样可以提高稀疏评分数据上的预测质量(Breese et al.1998)。这些人工缺省投票就像一种缓冲机制,能够减少那些个别巧合因素对相似度的影响。近来,Wang et al.(2006)还提出过其他解决数据稀疏问题的方法。由于发现大多数协同推荐只用到评分数据中的某部分特定信息(用户相似度或物品相似度),因此研究人员建议将这两种不同类型的相似度组合起来提高预测准确率。
  • 冷启动问题是指当一个新用户或新物品加入系统时,三类冷启动问题分别为:新用户问题、新物品问题和新系统问题,由于缺少信息或评分所以推荐很困难。此时,协同过滤不能进行有用的推荐,但基于内容的方法在新物品加入时可以推荐,因为基于内容的方法不依赖与以前的评级信息。最直接的解决方法就是直接利用调查问卷等方式来获取用户的偏好,统计用户某些基础信息对用户进行聚类,利用内容和协同过滤相结合的混合方法,利用用户在其它的网站上的一些浏览信息来挖掘用户可能的喜好。
  • 可扩展性是指以优雅的方式处理不断增长的信息的能力。互联网数据爆炸对推荐系统提出了很大挑战。协同过滤算法随用户和物品的增长计算量呈指数增长,代价昂贵且有时导致错误结果。现在很多分布式框架已经被提出用于解决这种大数据问题。
  • 过度专业化是指用户只能获得其用户画像中已知的或已定义的物品的推荐,阻碍了用户发现新物品或其他选择。然而,推荐多样性是一切推荐系统想要的特征。过度专业化问题可利用遗传算法缓解。重点是丰富推荐列表的多样性。

参考文章: 推荐引擎初探  赵 晨婷 和 马 春娥