推荐系统相关资料
一、一般推荐系统的构建流程
一般推荐系统的架构分为三个部分:在线部分,近线部分和离线部分。
- 理解业务问题,比如是分类、回归、聚类问题
- 选取特征:数值型、分类型
- 训练模型、导出模型文件、模型部署
二、召回阶段
三、排序阶段
(1)、LR
(2)、FM/FFM
在LR的模型中加入二阶特征的组合,即任意两个特征进行组合作为新的特征,这种组合的方式和多项式核方法SVM是等价的,然而在实际的业务中它有个潜在的问题,在大规模稀疏特征的场景下,模型的泛化能力很弱。
为什么说FM模型泛化能力强?
(3)、GBDT+LR融合模型
一般说要训练推荐打分或者分类模型,99%的人会想到经典的逻辑回归(以下称LR),的确,LR的优点很明显:
- 搭建简单:无论你是使用Python或者Scala,简单易用的接口让你分分钟能搭好一个分类模型
- 结果容易解释:输出的结果介于[0,1]之间,用来打分或者分类妥妥的
- 易大规模并行:其分布式优化算法SGD、LBFGS已经很成熟
但是它的缺点也是明显的,也就是往往特征工程的好坏决定了LR表现的上限,工程师在选取特征、组合特征需要耗费大量的人力不说,效果好不好还不一定。为了解决这个问题,2014Facebook发表的一篇论文提出了一种结合了GBDT和LR的融合模型,其思路简单来说就是利用GBDT来代替人工组合特征的过程,GBDT组合好的特征再输入到LR中完成分类或者预测任务。如下图,样本点经过GBDT时,遍历三棵树之后样本点会分别落入三棵树的叶子节点上,图中样本x分别落入了Tree1中的第一个叶节点、Tree2的第三个叶节点、Tree3的第一个叶节点,我们规定样本点落入了哪个叶子节点那个叶子节点就取1,否则取0,因此我们得到的新的特征向量为[1,0,0,0,0,1,0,1,0]
,这个特征向量可以作为LR模型的输入。新的特征向量的长度等于GBDT模型里所有树包含的叶子节点数之和。
因此,我们可以将GBDT+LR的核心思想归纳为:首先用已有特征训练好一个GBDT模型,然后用GBDT模型去预测数据,从GBDT模型的树中去获取叶子节点,从叶子节点构造新的特征,最后把新的特征加入原有的特征一起放入LR之中。关于GBDT+LR的实现请看我的另一篇文章:Kaggle电信客户流失预测——基于GBDT融合LR,实现的思路是将连续型的特征训练得到一个gbdt的预测模型,然后用该模型去预测连续型特征所得到的离散特征,然后再将原始的离散特征和预测得到的离散特征合并,转换成DataFrame给LR训练和预测。
GBDT+LR相关文章
- spark实现gbdt和lr - 算法之道
- 基于Spark的GBDT + LR模型实现 - justcodeit - 博客园
- 机器学习在个性化push中的应用 - 华繁的博客
- Spark实现GBDT+LR基于电商母婴潜在人群预测实例
- GBDT+LR算法解析及Python实现 - Bo_hemian - 博客园
(四)、Wide & Deep
推荐系统需要考虑的问题
- LR+FM 混合模型具体怎么做?
- 数据清洗采用的是什么技术?用过 ETL 工具吗?
- Spark 跟 Hadoop 的区别是什么?为什么要使用 Spark?
- FM 中的 k 表示什么?
- Spark 在贵公司的实际应用场景有哪些?Sparkmlib 是否比 skitlearn 和 TensorFlow 更实用一些?
- Java Web 程序员如何转型推荐系统算法工程师?
- 请问为何不使用深度学习来推荐?如何做的特征筛选?FM 是 sparkmlib 自带的包还是自己实现的?以及用户画像是怎么实现的?
- 推荐系统有做 abtest 吗?
- 请问模型是实时训练的吗?
- 设备 ID 到用户 ID 转换,扩展未登录场景,请问怎么扩展到未登录场景,比如 H5 未必存在获取到设备信息?怎么设计推荐评测系统进行验证,以便不断优化推荐算法?
- 美团推荐的召回是怎么做的,精排只用了 FM+LR 吗,重排是怎么做的?
- 美图推荐的用户画像有多少个特征,如果特征很大,怎么进行性能优化?
- 美团新接入一个推荐场景,需要耗多少人力,算法与工程的人力配比是多少,算法与工程的分工是什么样的?
- 请问如何评估推荐系统?
- 请问 XGBoost、FM 是跑在 Spark 上的吗?FM 是自己实现的还是用的第三方库?
- 统计类特征受回流的日志是否正常,错误的日志得到错误的统计类特征,是否推荐算法不是实时的?