推荐系统(Recommendation System )介绍

目录

    • 推荐系统简介
    • 推荐系统的作用与效果
    • 常见的推荐系统
    • 推荐系统的逻辑结构和典型架构
    • 推荐系统的特征模型
    • 推荐系统的常用算法
            • 基于用户(user)的CF
            • 基于物品(item)的CF: 基于物品的CF原理大同小异,只是主体在于物品

推荐系统简介

       推荐系统是通过挖掘用户与项目(物品)之间的二元关系,帮助用户从大量数据中发现其可能感兴趣的项目(物品)如网页、服务、商品、人等,并生成个性化推荐以满足个性化需求。

       电商推荐系统一般是电商的核心系统,通过推荐系统,可以提升电商整体的转换率,解决商品销售的过程中的“长尾问题”。
电商系统实现一般包括:猜你可能喜欢,看了又看,买了又买等。

推荐系统的作用与效果

  • 将网站的浏览者转为购买者或者潜在购买者(购物车);
  • 提高购物网站的交叉销售能力和成交转化率;
  • 提高客户对网站的忠诚度和帮助用户迅速找到产品。
  • 提供定制化服务(个性化推荐)

常见的推荐系统

  • 某宝的商品推荐
    推荐系统(Recommendation System )介绍_第1张图片
  • 音乐推荐
    推荐系统(Recommendation System )介绍_第2张图片

推荐系统的逻辑结构和典型架构

  • 推荐系统的逻辑结构
    推荐系统(Recommendation System )介绍_第3张图片
  • 推荐系统的典型架构
    推荐系统(Recommendation System )介绍_第4张图片

推荐系统的特征模型

  • 用户,物品关联规则
    推荐系统(Recommendation System )介绍_第5张图片
  • 用户特征模型
    推荐系统(Recommendation System )介绍_第6张图片
  • 商品特征模型
    推荐系统(Recommendation System )介绍_第7张图片

推荐系统的常用算法

  1. 定义:推荐系统中的数据源D=(U,I,R),其中U = {User1,User2,User3,…,Useri}是用户的基本集合,I = {Item1,Item2,…,Itemj}是项目集合;i*j阶矩阵R是基本用户对各项目的评分矩阵,第m行第n列的元素Rmn代表用户m对项目n的评分。

  2. 相似度介绍
           常用的相似度计算方法有欧式距离、余弦距离算法、杰卡德相似性算法。此处用到的是余弦相似度来计算!
    推荐系统(Recommendation System )介绍_第8张图片
    余弦相似度和欧式距离图形结构
    推荐系统(Recommendation System )介绍_第9张图片

  3. 余弦相似性
           应用到推荐系统的场景是这样的:两个项目i和j被当作两个n维的向量a和b。每个用户的评分都可以看作为n维空间上的向量,如果用户对产品没有进行评分,则将用户对该项目的评分设为0。用户间的相似性通过向量间的余弦夹角度量:
    在这里插入图片描述
           用户a和b共同评分过的项目集合用来表示, = (和分别表示用户a和用户b评分过的项目的集合,结果是它们的交集)。因此,用户a和b的相似性:
    推荐系统(Recommendation System )介绍_第10张图片
    其中,分子为两个用户评分向量的内积,分母为两个用户向量模的乘积。

  4. 基于流行度的算法
           基于流行度的算法非常简单粗暴,类似于各大新闻、微博热榜等,根据PV、UV、日均PV或分享率等数据来按某种热度排序来推荐给用户。简单来说,热门什么,就推荐什么。

  5. 协同过滤算法
           简介:协同过滤算法(Collaborative Filtering:CF)是很常用的一种算法,在很多电商网站上都有用到。CF算法包括基于用户的CF(User-based CF)和基于物品的CF(Item-based CF)。

    基于用户(user)的CF

           通过计算用户对商品评分之间的相似性,搜索目标用户的最近邻居,然后根据最近邻居的评分向目标用户产生推荐。

    • 分析各个用户对item的评价(通过浏览记录、购买记录等);
    • 依据用户对item的评价计算得出所有用户之间的相似度;
    • 选出与当前用户最相似的N个用户;
    • 将这N个用户评价最高且当前用户又没有浏览过的item推荐给当前用户。
      推荐系统(Recommendation System )介绍_第11张图片
    • 基于用户(user)的协同过滤举例:
             首先我们根据网站的记录计算出一个用户与item的关联矩阵,如下:
      在这里插入图片描述       然后,行是不同的用户,列是所有物品,(x, y)的值则是x用户对y物品的评分(喜好程度)。我们可以把每一行视为一个用户对物品偏好的向量,然后计算每两个用户之间的向量距离,这里我们用上述所讲的余弦相似度来算:
      推荐系统(Recommendation System )介绍_第12张图片
             之后得出用户向量之间相似度如下,其中值越接近1表示这两个用户越相似:
      表示用户a对项目d的评分, 和分别表示用户a和用户b对所有商品的平均评分。
      推荐系统(Recommendation System )介绍_第13张图片
             最后,我们要为用户1推荐物品,则找出与用户1相似度最高的N名用户(设N=2)评价的物品,去掉用户1评价过的物品,则是推荐结果。
    基于物品(item)的CF: 基于物品的CF原理大同小异,只是主体在于物品
    • 分析各个用户对item的浏览记录;
    • 依据浏览记录分析得出所有item之间的相似度;
    • 对于当前用户评价高的item,找出与之相似度最高的N个item;
    • 将这N个item推荐给用户。
      推荐系统(Recommendation System )介绍_第14张图片
  6. 基于内容的算法
           在京东上购物的小伙伴们应该都知道,每当你进入任何一个物品页面的时候都会有一个“猜你喜欢”的栏目,这时候他就会根据你经常购买的物品给你推荐相似的物品。例如对我来说:我经常购买互联网类书籍,所以它就会给我推荐类似的书籍(当然这里只是举个例子,京东的推荐算法肯定不可能那么单一,但是可以肯定的是他肯定会用到最基础的CB推荐算法)。
    CB的过程一般包括以下三步:
           (1) 物品表示(Item Representation):为每个item抽取出一些特征(也就是item的content了)来表示此item;
           (2) 特征学习(Profile Learning):利用一个用户过去喜欢(及不喜欢)的item的特征数据,来学习出此用户的喜好特征(profile);
           (3) 生成推荐列表(Recommendation Generation):通过比较上一步得到的用户profile与候选item的特征,为此用户推荐一组相关性最大的item。

  7. 基于模型的算法
           基于模型的方法有很多,用到的诸如机器学习的方法也能够很深,这里只简单介绍下比较简单的方法——Logistics回归预测。我们通过分析系统中用户的行动和购买记录等数据,得到以下表:
    在这里插入图片描述
    表中的行是一种物品,X1到Xn是影响用户行动的各种特点属性,如用户年龄段、性别、地域、物品的价格等等,y则是用户对该物品的喜好程度,可以是购买记录、阅读、收藏等等。通过大量这类的数据,我们可以回归计算出X1~Xn对应的系数,这即是各特点属性对应的权重,权重值越大则表明该属性对用户选择商品越重要。
           在计算的时候,单一的某种属性和另外一种属性可能其实不存在强关联。比如,年龄与购买护肤品这个行动其实不呈强关联,性别与购买护肤品也不强关联,但当我们把年龄与性别综合在一起斟酌时,它们便和购买行动产生了强关联。比如(我只是比如),20~30岁的女性用户更偏向于购买护肤品,这就叫交叉属性。通过反复测试和经验,我们可以调剂特点属性的组合,拟合出最准确的回归函数。最后得出针对每种物品的属性权重以下:
    推荐系统(Recommendation System )介绍_第15张图片
           基于模型的算法由于快速、准确,适用于实时性比较高的业务如新闻、广告等,而若是需要这类算法到达更好的效果,则需要人工干预反复的进行属性的组合和挑选,也就是常说的Feature Engineering。而由于新闻的时效性,系统也需要反复更新线上的数学模型,以适应变化。
           下文会基于用户(user)和基于物品(item)的推荐系统CF,分别实现基于Apache Mahout和Spark MLLib实现推荐系统实例。

你可能感兴趣的:(推荐系统)