推荐系统笔记4-建立大规模分类模型

分类问题就是寻找一个超平面,分开不同标签的数据集。

一、分类模型应用

1.1、点击率预估模型
1.1.1、 传统的以统计特征来做点击率预估,即用前几天的统计来做下一天的点击率预测,如下式所示:
推荐系统笔记4-建立大规模分类模型
其中ad_ctr表示历史的具体广告点击,cate_ctr表示一个具体的属性类别,可能包含多个ad类别,显然,当具体的广告数过小时,点击率不具备统计意义,所以需要用cate_ctr代表ad_ctr;
1.1.2、 模型做点击率预估,包括Logistic regression或者DNN等等,如下图所示:
推荐系统笔记4-建立大规模分类模型
1.1.3、 一般线上CTR预估系统示例如下:
推荐系统笔记4-建立大规模分类模型
也就是将一些数值特征用GBDT做离散化处理(GBDT具备组合特征能力),然后拼接原来的类别特征,使用FM训练模型并提取高阶特征,再次用LR训练ctr模型;

1.2、用户偏好预测
基于ItemCF的推荐算法调用示意图如下:
推荐系统笔记4-建立大规模分类模型
上述推荐算法的核心是三个部分,match->rank->rerank,其中这个算法会存在一个Trigger Selection Problem(触发选择问题)?这个问题是指物品冷启动吗(这里不甚理解)?那么我们可以借助用户偏好模型来帮助解决上面的问题;
用户偏好模型的作用主要是预测用户下⼀个浏览或者购买的类目、用户性别预测、用户年龄预测等,假设是物品冷启动问题,且预测用户下一个浏览的类别是A,如果新物品B和A相似,那么将B推荐给用户;
那么如何构造用户偏好模型呢?可以将其抽象化为基于时序行为的二分类模型(用户-商品对,标签喜欢-不喜欢),对于二分类模型,就涉及到特征部分,一般作如下处理:

  • 统计量、变化类特征(人工组合)、序列类模型(部分自动组合).

  • 分析先行:比如对于⼀些商品trends变化和目标相关性进行分析.

    • 人工组合特征:x1x2,x1/x2x1*x2, x1/x2…
    • 部分自动组合方式>GBDT/RF/FM/NN->GBDT/RF/FM/NN.
  • 模型⽤法:做独立model;做进feature.

二、模型构建

2.1、低维线性模型: 最经典的便是LR模型了,如下:推荐系统笔记4-建立大规模分类模型
2.2、非线性模型: CART、RF、GBDT、FM、DNN等等;
其中对于FM模型做个简单总结(其他模型应该都很熟悉了),其公式如下:y^(x)=w0+i=1pwixi+i=1pj=i+1p<vi,vj>xixj\hat y(x) = {w_0} + \sum\limits_{i = 1}^p {{w_i}{x_i} + } \sum\limits_{i = 1}^p {\sum\limits_{j = i + 1}^p { < {v_i},{v_j} > } } {x_i}{x_j}

  • FM 受到前面所有的分解模型(如MF、SVD、SVD++等)的启发;
  • 每个特征都表示成embedding vector,并且构造二阶关系;
  • FM 允许更多的特征公程,比如可以使用上下文信息、环境信息作为特征加入特征矩阵;

2.3、模型融合: 比如经典的GBDT+LR,以及DNN+GBDT(原文paper),如下所示:推荐系统笔记4-建立大规模分类模型
2.4、特征介绍:
2.4.1: 特征分类:
推荐系统笔记4-建立大规模分类模型
2.4.2:特征组合
Dense特征组合

  • A. 将⼀个特征与其本⾝或其他特征相乘(称为特征组合)(⼆阶或者⾼阶)。
  • B. 两个特征相除。
  • C. 对连续特征进行分桶,以分为多个区间分箱。

ID特征之间的组合

  • D. 笛卡尔积:假如拥有⼀个特征A,A有两个可能值{A1,A2}。拥有⼀个特征B,存在{B1,B2}等可能值。然后,A&B之间的交叉特征如下:{(A1,B1),(A1,B2),(A2,B1),(A2,B2)}。

2.4.3、特征选择
为什么要做特征选择:

  • 剩下的特征与目标target应该更加相关
  • 剩下的特征之间冗余度低

特征选择方法分为3种:

  • Filter:过滤法,按照发散性或者相关性对各个特征进行评分,设定阈值或者待选择阈值的个数,选择特征。
  • Wrapper:包装法,根据目标函数(通常是预测效果评分),每次选择若干特征,或者排除若干特征。
  • Embedded:嵌入法,先使用某些机器学习的算法和模型进行训练,得到各个特征的权值系数,根据系数从大到小选择特征。类似于Filter⽅方法,但是是通过训练来确定特征的优劣。

总结常用的特征工程如下图所示:
推荐系统笔记4-建立大规模分类模型
举一个今日头条开源的特征工程示例(传送门):

  • 第一类是相关性特征,就是评估内容的属性和与用户是否匹配。显性的匹配包括关键词匹配、分类匹配、来源匹配、主题匹配等。像FM模型中也有一些隐性匹配,从用户向量与内容向量的距离可以得出。
  • 第二类是环境特征,包括地理位置、时间。这些既是bias特征,也能以此构建一些匹配特征。
  • 第三类是热度特征,包括全局热度、分类热度,主题热度,以及关键词热度等。内容热度信息在大的推荐系统特别在用户冷启动的时候非常有效。
  • 第四类是协同特征,它可以在部分程度上帮助解决所谓算法越推越窄的问题。协同特征并非考虑用户已有历史。而是通过用户行为分析不同用户间相似性,比如点击相似、兴趣分类相似、主题相似、兴趣词相似,甚至向量相似,从而扩展模型的探索能力。

在结束以前,我想介绍一下16年google开源的一篇论文关于Wide & deep learning for recommender systems(给个传送门),其典型结构如下:
推荐系统笔记4-建立大规模分类模型
对于谷歌所使用具体训练模型如下图:
推荐系统笔记4-建立大规模分类模型
deep部分使用Embedding+Relu三层DNN训练,Wide部分使用交互特征,最后使用sigmoid函数并用logloss来进行BP反向误差传播;具体的实现细节可参考论文和(该笔记)。