晓得嘛?混合推荐系统速览和技巧锦囊

Posted 搜索与推荐Wiki

tags:

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

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

5.1 什么是混合推荐系统

混合推荐系统的含义

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

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

混合推荐系统的算法分类

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

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

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

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

特征处理方法

数值特征处理

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

离散化处理

  • One-Hot编码
    • 稀疏表示,减小存储,同时在一定程度上起到扩充特征的作用
  • 特征哈希
    • 目标是把原始的高维特征向量压缩成较低维特征向量,且尽量不损失原始特征的表达能力,是一种快速且很节省空间的特征向量化方法
  • 时间特征处理
    • 通常方案是按照业务逻辑以及业务目的进行相关业务处理
    • Christ.M 提出了一种层次化处理时间特征的方案
      • Step 1: 对时间窗口统计特征进行聚合
        • 最大值、最小值、均值、分位数
      • Step 2: 利用标签相关性进行特征选择
    • Python tsfresh工具可以进行特征提取

特征选择方法

单变量特征选择

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

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

常见的方法:

1、皮尔逊相关系数

皮尔逊相关系数表示两个变量之间的协方差和标准差的商
ρ X , Y = E [ ( X − μ x ) ( Y − μ y ) ] σ x σ y \\rho_X,Y = \\frac E[(X - \\mu x)(Y - \\mu y)] \\sigma x \\sigma y ρX,Y=σxσyE[(Xμx)(Yμy)]

2、距离相关系数

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

D c o r ( X , Y ) = d C o v ( X , Y ) ( ( d C o v 2 ( X , X ) ) 1 / 2 ( d C o v 2 ( Y , Y ) ) 1 / 2 ) 1 / 2 Dcor(X,Y) = \\frac dCov(X,Y) ((dCov^2(X,X))^1/2 (dCov^2(Y,Y))^1/2)^1/2 Dcor(X,Y)=((dCov2(X,X))1/2(dCov2(Y,Y))1/2)1/2dCov(X,Y)

3、卡方检验

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

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

基于模型的特征选择

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

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

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

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

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

5.3 常见的预测模型

基于逻辑回归的模型

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

基于支持向量机的模型

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

基于梯度提升树的模型

熵介绍

信息量

事件发生概率带来的惊喜度, I = − l o g 2 p i I=-log_2 p_i I=log2pi,只有小概率的事件才有信息量

信息熵

信息量的期望, H ( x ) = − ∑ i = 1 n p ( x i ) l o g 2 p ( x i ) H(x) = -\\sum_i=1^n p(x_i)log_2p(x_i) H(x)=i=1np(xi)log2p(xi)

条件熵

H ( x ∣ y ) = − ∑ i = 1 n p ( x i ∣ y ) l o g 2 p ( x i ∣ y ) H(x|y) = -\\sum_i=1^n p(x_i|y)log_2p(x_i|y) H(xy)=i=1np(xiy)log2p(xiy)

信息增益

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

信息增益:定义:特征 A A A对训练数据集 D D D的信息增益 g ( D , A ) g(D,A) g(D,A),定义为集合 D D D的经验熵 H ( D ) H(D) H(D)与特征 A A A在条件下 D D D的经验条件熵 H ( D ∣ A ) H(D|A) H(DA)之差。 g ( D , A ) = H ( D ) − H ( D ∣ A ) g(D,A) = H(D) - H(D|A) g(D,A)=H(D)H(DA)

信息增益: D D D根据特征 A A A分为 n n n D 1 , D 2 , . . . , D n D_1, D_2, ..., D_n D1,D2,...,Dn,那么 H ( D ∣ A ) H(D|A) H(DA)就是所有 H ( D i ) H(D_i) H(Di)的期望(平均值), H ( D ∣ A ) = ∑ i = 1 n ∣ D i ∣ ∣ D ∣ H ( D i ) H(D|A) = \\sum_i=1^n \\frac|D_i||D| H(D_i) H(DA)=i=1nDDiH(Di)

信息增益比

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

信息增益比定义:特征 A A A对训练数据集 D D D的信息增益比 g R ( D , A ) g_R(D,A) g解决浏览器兼容问题的两个锦囊

Java设计模式

聚类算法指标整理

聚类算法指标整理

老码农的「锦囊」:10个编程技巧5个纠错步骤,让你的编程之路少点坎坷

聚类算法指标整理