zoukankan      html  css  js  c++  java
  • [Datawhale 10月] 初学推荐系统-01-概述

    比葫芦画瓢之参考书籍或链接

    传统推荐系统 VS 深度学习推荐系统

    传统:

    传统推荐系统


    深度学习:

    深度学习推荐系统

    基础推荐系统的核心内容

    1. 协同过滤(CF)算法:基于用户的协同过滤(UserCF)和基于商品的协同过滤(ItermCF)
    2. 矩阵分解算法:矩阵分解算法引入了隐向量(不可观测的随机变量构成的向量)的概念,加强了模糊处理稀疏矩阵的能力,也为后续深度学习推荐系统汇总的Embedding的使用打下基础。
    3. FM(Factorization Machines/因子分解机)算法:该算法属于逻辑回归(LR)算法应用在推荐系统上的一个改进,在LR的基础上增加了特征交叉项,该思想不仅在传统的推荐算法中继续使用,在深度学习推荐算法中也对其使用进行了改进与应用。
    4. GBDT+LR:使用树模型来做特征交叉,相比于FM的二阶特征交叉,树模型可以对特征进行深度的特征交叉。
    5. Wide&Deep: 在深度学习推荐系统的技术体系比较重要,实现比较简单(据说)。

    以下正文:

    01. 推荐系统简介

    1. What
      • 用户:rs是一种帮助用户快速发现有用信息的工具
      • 公司:rs是一种增加公司产品与用户接触,购买等行为概率的工具
    2. Why
      • 用户:在不清楚用户需求的情况下进行信息的过滤和推荐,与搜索系统相比,推荐系统更多的是利用各类历史信息猜测其可能喜欢的内容
      • 公司:解决产品能够最大限度地吸引用户,留存用户,增长用户黏性,提升用户转化率,从而达到公司提升销售效率和业绩的目的
      • 串联用户-商品/信息流-公司之间的关系,提升公司的利益最大化
    3. 类别:
      • 商品rs
      • 信息流rs

    02. 常用评价指标

    1. 用户满意度 (在线指标)
      • 用户的实际购买率
      • 附加:用户的点击率、转换率、停留时间、收藏、分享等行为
    2. 预测准确度(离线指标)

      预测准确度是用来度量用户的实际行为与推荐系统预测结果的准确度;有以下指标可以使用:
      • 评分预测

        评分预测模型通过对用户的历史物品评分记录进行建模,进而得到用户的兴趣模型,然后使用该模型预测用户未未见过商品的评分.

        评分预测的预测准确度一般通过均方根误差(RMSE)和平均绝对误差(MAE)计算.

        对于测试集中的一个用户u和物品i,令(r_{ui})是用户u对物品i的实际评分,而(hat{r_{ui}})是推荐模型预测出的评分,那么RMSE可以定义为:

        [RMSE = sqrt{frac{sum_{u,i in T}(r_{ui} - hat{r}_{ui})^2}{|T|}} ]

        MAE定义为:

        [MAE = frac{sum_{u,i in T}|r_{ui} - hat{r}_{ui}|}{|T|} ]

        • 值得注意的是:
          RMSE(均方根误差)由于存在平方项,使得使得用户真实评分与推荐系统预测评分相差较大的用户加大了惩罚,即该评测指标对系统要求更加的苛刻
      • Top N 推荐

        解释: 一次推荐一个列表的信息给用户
        • 精确率:(正正)/ (正正 + 负正)
        • 召回率:(正正)/ (正正 + 正负)
          混淆矩阵
    3. 覆盖率
    • 简单定义:rs所有推荐出来的商品集合站总物品集合数的比例,但对于相同的覆盖率,不同物品的数量分布,或者说物品的流行度分布是可以不一样的。简言之,就是一个rs对物品长尾的发掘能力。
    • 长尾能力(推荐列表中种类的次数分布):如果所有商品都得到推荐并且分布比较均匀,则rs的长尾能力比较好;一般,分布比较陡峭,则rs覆盖率比较低;分布比较平缓,则说明rs覆盖率较高。
    • 信息熵来定义覆盖率: 其中(p(i))是物品(i)的流行度除以所有物品流行度之和

      [H = -sum_{i=1}^n p(i) log_{10}p(i) ]

    • 基尼系数来定义覆盖率: 其中(i_j)是按照物品流行度p从小到大排序的物品列表中第(j)个物品

      [G=frac{1}{n-1} sum_{j=1}^{n}(2j-n-1)p(i_{j}) ]

    1. 多样性
      一个好的推荐系统得到的推荐列表中应该尽可能多的包含用户的兴趣,只有这样才能增加用户找到感兴趣物品的概率
    2. 新颖性

      满足推荐的新颖性最简单的方法就是给用户推荐他们之前没有看过的物品,但是每个用户没见过的物品数量是非常庞大的,所以一般会计算推荐物品的平均流行度,流行度越低的物品越有可能让用户觉得新颖,因此,如果推荐结果中的物品平均热门程度比较低说明推荐的结果就可能比较新颖.
      也可能会造成全部冷门的问题.
    3. AUC曲线

      AUC(Area Under Curve),ROC曲线下与坐标轴围成的面积

    03. 召回

    3.1 召回层在推荐系统架构中的位置及作用

    基于工程上的考虑,召回阶段负责将海量的候选集快速缩小为几万到几千的规模;而排序层则负责对缩小后的候选集进行精准排序——然后再向外输出。

    下面是召回层与排序层的特点

    • 召回层:待计算的候选集合大、计算速度快、模型简单、特征较少,尽量让用户感兴趣的物品在这个阶段能够被快速召回,即保证相关物品的召回率
    • 排序层:首要目标是得到精准的排序结果。需要处理的物品数量少,可以利用较多的特征,使用比较复杂的模型。
    • 权衡计算速度和召回率后:工业界主流的召回方法是采用多个简单策略叠加的“多路召回策略”

    3.2 多路召回策略

    示例图,从多个维度进行召回,并发加速;例如视频推荐,具体使用哪些召回策略其实是与业务强相关的,召回规则可以是“热门视频”、“导演召回”、“演员召回”、“最近上映“、”流行趋势“、”类型召回“等等。

    img

    多路召回存在的问题

    • 超参数(召回数的K)的限制:对于每一路召回都会从商品集合中拉回K个商品,这里的K是一个超参数,对于K的选择一般需要通过离线评估加线上的A/B测试来确定合理的K值。
    • 割裂:无法综合考虑多个不同的策略对同一个物品的影响,如综合多个维度来过滤商品等。

      基于上述问题,Embedding召回是一个综合性强且计算速度也能满足需求的召回方法。

    3.3 Embedding召回

    Embedding是什么?

    Embedding其实是一种思想,主要目的是将稀疏的向量(如one-hot编码)表示转换成稠密的向量,下图直观的显示了one-hot编码和Embedding表示的区别于联系,即Embedding相当于是对one-hot做了平滑,而onehot相当于是对Embedding做了max pooling。
    preview

    常见的Embedding技术有哪些?

    目前主流的Embedding技术主要可以分为三大类。

    • text embedding
    • image embedding
    • graph embedding

    在推荐系统领域,text embedding技术是目前使用最多的embedding技术,对于文本特征可以直接使用该技术,对于非文本的id类特征,可以先将其转化成id序列再使用text embedding的技术获取id的embedding再做召回。

    常见的text Embedding的技术有:

    • 静态向量:word2vec, fasttext, glove
    • 动态向量:ELMO, GPT, BERT

    目前主流的Embedding技术主要可以分为三大类。

    • text embedding
    • image embedding
    • graph embedding

    在推荐系统领域,text embedding技术是目前使用最多的embedding技术,对于文本特征可以直接使用该技术,对于非文本的id类特征,可以先将其转化成id序列再使用text embedding的技术获取id的embedding再做召回。

    常见的text Embedding的技术有:

    • 静态向量:word2vec, fasttext, glove
    • 动态向量:ELMO, GPT, BERT

    对于image embedding其实主要是对于有图或者视频的特征,目前计算机视觉模型已经发展的比较成熟了,对于图像与视频的识别都有效果比较好的模型,大部分都是卷积模块通过各种连接技巧搭建的高效模型,可以使用现有的预训练模型提取图像或者视频的向量特征,然后用于召回。
    对于社交网络相关的推荐,进行推荐的用户与用于之间或者商品之间天然的存在某种复杂的图结构的关系,如何利用图中节点与节点之间的关系对其进行向量化是非常关键的,在这种场景下基于序列的text embedding和基于卷积模型的image embedding都显得力不从心,在这样的背景下Graph Embedding逐渐在推荐系统中流行起来。经典的Graph Embedding模型有, Deep Walk, Node2Vec,LINE以及比较新的阿里巴巴2018年公布的EGES graph Embedding模型。

    04. 更多资料

    参考资料

    你不逼自己一把,你永远都不知道自己有多优秀!只有经历了一些事,你才会懂得好好珍惜眼前的时光!
  • 相关阅读:
    Java中Io类-File类的构造方法
    hadoop的wordcount例子运行
    关于“javax.servlet.include.request_uri”属性值
    如何高效地分析框架源码
    代码重构的技巧——合理使用@Deprecated
    spring的事件机制
    在eclipse中使用jetty插件替代m2e开发调试maven web项目
    maven多配目配置总结
    如何禁止anonymous用户访问nexus
    efront二次开发记要
  • 原文地址:https://www.cnblogs.com/zhazhaacmer/p/13843959.html
Copyright © 2011-2022 走看看