混合推荐系统速览和技巧锦囊

Posted 小小挖掘机

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了混合推荐系统速览和技巧锦囊相关的知识,希望对你有一定的参考价值。

本文为《推荐系统与深度学习》第五章的复习笔记,只记录了一些要点,希望能够快速的进行复习,如果发现哪一个点不明白的话,可以自行展开学习或者加小编微信进行技术交流。

5.1 什么是混合推荐系统

混合推荐系统的含义

海量数据推荐系统中通常存在三部分:

  • 在线系统(Online)
    • 直接与用户进行交互,具有高性能、高可用的特性,通常利用缓存系统,处理热门请求的重复计算
  • 近在线系统(Nearline)
    • 接受在线系统的请求,执行比较复杂的推荐算法,缓存在线系统的结果,并及时收集用户的反馈,快速调整结果
  • 离线系统(Offline)
    • 利用海量用户的行为日志进行挖掘,进行高质量的推荐,通常运算周期长,资源消耗大
  • 经典的Netflix推荐架构:离线、近在线、 在线

混合推荐系统的算法分类

从混合技术看,Robin Burke 在其不同混合推荐算法设计方案的调研报告中将其分为:

  • 加权型
  • 切换型
  • 交叉型
  • 特征组合型
  • 瀑布型
  • 特征递增型
  • 元层次型

5.2 推荐系统特征的处理方法

数据和特征决定了模型的上限,而模型算法则为逼近这个上限

特征处理方法

数值特征处理

  • 无量纲处理
    • z-score规范化
    • max-min标准化
    • 标准化是将值整合到 0~1,规范化的结果可能会在 0,1之外( 两者实验效果差别不大)
  • 非线性变换
    • 对特征进行非线性变换,增加模型复杂度
    • 常见的变换手段有
      • 基于多项式
      • 基于指数函数
      • 基于对数函数
    • 一般对数变换后特征分布更平稳,对数变换能够很好的解决随着自变量的增加,因变量的方差增大的问题
    • 将非线性的数据通过对数变换,转换为线性数据,便于使用线性模型进行学习
  • 离散化
    • 离散化的好处
      • 离散化后的特征对异常数据有 很强的鲁棒性 (比如年龄 > 30岁 为1,否则为0,如果没有经过离散化,异常数据,年龄为100岁,就会带来很大的干扰)
      • 特征离散化后,可以进行交叉,特征内积乘法运输速度快,进一步引入非线性,提升表达能力,计算结果方便存储,容易扩展
      • 特征离散化后,模型更加稳定(比如20-30岁为一个区间,这样不会因为用户年龄增长了一岁就完全变成一个不同的人)
    • 离散化的方式
      • 无监督离散化
        • 等宽度离散化:对异常值较敏感,倾向于将特征不均匀的分到各个箱中,会破坏特征的决策能力。需要指定区间个数
        • 等频度离散化:会避免等宽离散化的坏处,会把相同标签的特征划分到不同的箱中,同样会造成特征决策能力下降。需要指定区间个数
        • 基于聚类分析的离散化方法
      • 有监督离散化
        • 基于熵的离散化方法
        • 基于卡方的离散化方法
        • MDLP方法(最小描述距离长度法则)

离散化处理

  • One-Hot编码
    • 稀疏表示,减小存储,同时在一定程度上起到扩充特征的作用
  • 特征哈希
    • 目标是把原始的高维特征向量压缩成较低维特征向量,且尽量不损失原始特征的表达能力,是一种快速且很节省空间的特征向量化方法
  • 时间特征处理
    • 通常方案是按照业务逻辑以及业务目的进行相关业务在处理

    • Christ.M 提出了一种层次化处理时间特征的方案
      • Step 1: 对时间窗口统计特征进行聚合
        • 最大值、最小值、均值、分位数
      • Step 2: 利用标签相关性进行特征选择
    • Python tsfresh工具可以进行特征提取

特征选择方法

单变量特征选择

对每一个特征进行测试,衡量该特征和响应变量之间的关系。

优点:易于运行,易于理解,通常对于理解数据有较好的结果,但其与设计的算法模型无关。

常见的方法:

1、皮尔逊相关系数

皮尔逊相关系数表示两个变量之间的协方差和标准差的商

2、距离相关系数

基于距离协方差进行变量间相关性度量

3、卡方检验

思想:通过观察实际值与理论值的偏差来确定理论的正确与否

具体做法:假设两个变量独立,然后观察实际值与理论值的偏差程度,如果偏差足够小,则认为是正常误差,如果偏差大到一定程度,则认为两者相关。

基于模型的特征选择

  • 方法1、基于逻辑回归和正则化的特征选择

    • 逻辑回归中越是重要的特征在模型中对应的系数就会越大,而跟输出变量越是无关的特征对应的系数就会越接近于0
    • 正则化将系数 范数作为惩罚项加到损失函数上,由于正则项非0,迫使那些弱的特征所对应的系数变成0,因此 正则化往往会使学到的模型很稀疏(系数 经常为0),这个特性使得 正则化成为一种很好的特征选择方法。
    • 正则化像非正则化线性模型一样也是不稳定的,如果特征集合中具有相关联的特征,当数据发生细微变化时也有可能导致很大的模型差异。
    • 正则化将稀疏向量的 范数添加到了损失函数中。 正则化会让系数的取值变得平均。对于相关联的特征,意味着他们能够获得更相近的对应系数。
    • 正则化对于特征选择来说是一种稳定的模型, 正则化对于特征理解来说更加有用,表示能力强的特征对应的系数是非零。
    • 防止模型过拟合。
  • 方法2、随机森林特征选择

    • mean decrease impurity(平均不纯度减少,对于分类问题通常采用基尼不纯度或者信息增益。对于回归问题,通常采用方差或者最小二乘拟合。)
    • mean decrease accuracy(平均精确度减少)
    • 准确率高、鲁棒性好、易于使用等优点
    • 随机森林提供了两种特征选择方法:
  • 方法3、XGBoost特征选择

    • 某个特征的重要性(feature score)等于它被选中为树节点分裂特征的次数的和
  • 方法4、基于深度学习的特征选择

    • 深度学习具有很强的自动特征抽取能力

5.3 常见的预测模型

基于逻辑回归的模型

  • 模型满足二项式分布
  • 通常使用最大似然函数求解(最大似然函数求负对数)

基于支持向量机的模型

  • 支持向量机:Support Vector Algorithm,SVM
  • 支持向量机模型把训练样本映射到高维空间中,以使不同类别的样本能够清晰的被超平面分割出来,而后,新样本同样被映射到高维空间,基于其落在哪一面,决定其类别
  • SVM是非概率的线性模型

基于梯度提升树的模型

熵介绍

信息量

事件发生概率带来的惊喜度, ,只有小概率的事件才有信息量

信息熵

信息量的期望,

条件熵:

信息增益

分类前,数据中可能出现多种类别数据,比较混乱,不确定性强,熵比较高,分类后,不同类的数据得到了比较好的划分,比较有序,不确定性降低,熵比较低,信息增益就是用于这种熵的变化。

信息增益:定义:特征 对训练数据集 的信息增益 ,定义为集合 的经验熵 与特征 在条件下 的经验条件熵 之差。

信息增益: 根据特征 分为 ,那么 就是所有 的期望(平均值),

信息增益比

单纯的信息增益只是一个相对值,因为其依赖于 的大小,而信息增益比更能客观地反映信息增益。

信息增益比定义:特征 对训练数据集 的信息增益比 ,定义为其信息增益 与分裂信息熵 之比:

其中

基尼

基尼定义:

是某个分区内第 个标签的频率, 是该分区中的类别总数量。基尼(Gini)不纯度度量是类型被分错的可能性(类型的概率乘以分错的概率)

方差

方差不纯度定义:

是某个实例的标签, 是实例的总数, 是所有实例的均值。

决策树

  • 决策树学习的本质是从训练数据集上归纳出一组分类规则,通常采用启发式的方法,即局部最优
  • 决策树学习的三个步骤:特征选择、决策树的生成、决策树的剪枝
  • 选择最佳分裂特征的标准式找出局部最优的特征,常用的方法有:熵、基尼、方差,前两个针对分类,后者针对回归
  • 三种常见的决策树算法
    • ID3:使用信息增益寻找最佳分裂特征
    • C4.5:使用信息增益比寻找最佳分裂特征
    • CART:全称是Classification And Regression Tree,即可用于分类,也可以用于回归,使用基尼系数寻找最佳分裂特征
  • 决策树的优缺点
    • 缺点:

      • 容易发生过拟合(随机森林)可以在很大程度上减少过拟合
      • 容易忽略数据集中属性的相互关联
      • 对于那些各类别样本数量不一致的数据,在决策树中,进行属性划分时,不同的判定准则会带来不同的属性选择倾向;信息增益准则对可取数目较多的属性有所偏好(典型代表ID3算法),而增益率准则(CART)则对可取数目较少的属性有所偏好,但CART进行属性划分时候不再简单地直接利用增益率进行划分,而是采用一种启发式规则)(只要是使用了信息增益,都有这个缺点,如RF)
      • ID3算法计算信息增益时结果偏向数值比较多的特征
    • 优点:

      • 决策树易于理解和解释,可以可视化分析,容易提取出规则
      • 可以同时处理标称型(分类变量)和数值型(回归变量)数据
      • 比较适合处理有缺失值的样本
      • 能够处理不相关的特征
      • 测试数据集时,运行速度比较快
      • 在较短时间内,能够对大型数据源进行处理,并取得不错的效果

GBDT

  • GBDT是一种加法模型(Additive Tree Model),属于Boosting家族的一员,同样类似的树模型有XGBoost、LightGBM
  • 利用前一轮迭代的误差来更新训练集的权重,校正前一轮迭代被错误分类的样本,下一轮迭代会将重心放在上一轮分错的样本上
  • GBDT理论公式推导可参考:Greedy FUnction Approximation:A Gradient Boosting Machine和Stochastic Gradient Boosting。

5.4 排序学习

基于排序的指标来优化

  • 排序学习:Learning To Rank,L2R
  • 经典的回归预测的评价指标是:RMSE(均方根误差)
  • 实际的推荐系统场景中,更加关注的是头部推荐结果是否准确,Top N个结果的偏序关系是否满足用户需求。
  • 作为排序任务,优化的目标是维持一个相对偏序关系,对预测的分数的绝对值不那么敏感
  • 经典的排序指标:MRR(Mean Reciprocal Rank)、MAP(Mean Average Precision)
  • NDCG(Normalized Discounted Cumulative Gain)是一个常用的指标

L2R算法的三种情况

L2R的三类算法:Point-wise、Pair-wise、List-wise

更加详细的介绍可以参考:

Point-wise

  • 基于单个样本进行优化,排序问题退化成通用的回归/分类问题,一般是一个二分类的任务,是机器学习的典型判别问题。
  • 对于用户(query) ,两个商品 ,排序模型的核心是根据两个商品的特征来学习一个分数映射 ,使得 可以是一些手工特征,也可以是一些其他模型的结果放进来集成学习
  • 可以是一个逻辑回归模型、迭代决策树GBDT、也可以是一个多层的神经网络
  • 问题:对于头部商品不敏感,无法有效的容忍某个用户或者某个物品的偏置

Pair-wise

  • pair-wise将排序问题约减成一个对偏序对的二分类问题,即偏序对关系正确还是错误
  • 在给定查询 的场景下,文档对的差值归一化成一个概率分布(其实就是一个二项分布,包含预测偏序关系成立和不成立的两个概率),然后根据该分布与目标标签的差异(例如交叉熵损失)来通过标准梯度下降方法进行优化
  • 把两个分数的差值 通过 函数归一化到0~1(满足概率的定义),它的含义为 更好的概率
  • 定义损失函数为交叉熵损失函数,其中 是实际的标签,所以上式 必有一个是零项,也就是下式只有一项不为0,然后按照标准的梯度下降就可以优化损失函数
  • 评价指标:NDCG

List-wise

  • 基于整个排序列表去优化,对于单个用户(query)而言,把整个需要排序的列表当成一个学习样本(instance),直接通过NDCG等指标来优化
  • eg:AdaRank和ListNet,直接使用定义在一个排序结果列表上的损失函数
  • AdaRank直接针对每一个query对整个排序列表计算与理想列表的差异,然后通过boost策略来调节不同query的权重
  • 一般来说,给予list-wise比pair-wise更有效,而pair-wise比point-wise更有效,实际经验上的结果或许会有部分差异



创作不易,点个 “在 看”鼓励鼓励吧

以上是关于混合推荐系统速览和技巧锦囊的主要内容,如果未能解决你的问题,请参考以下文章

混合推荐系统就是多个推荐系统“大杂烩”吗?

混合推荐系统介绍

电影推荐系统(037~039)

推荐系统实用分析技巧

工业界推荐系统实用分析技巧

推荐系统简介(1~3)