推荐系统中排序算法的发展历程总结

2019-10-03 03:29发布

在讲解排序算法发展历程之前,我们先介绍下推荐系统中的数据的特点,排序算法就是针对这种数据特点设计了不同的解决方案,才有了推荐算法的发展。

首先我们先重点介绍下推荐系统中数据的几个鲜明特点:

1、数据主要以离散数据为主,连续数据为辅,其中推荐系统中产生的核心数据绝大部分都是离散数据,所以推荐系统中排序算法就是要怎么解决大规模离散特征的学习;

2、样本收集有限,物品在场景中的出现次数是有限的,而且物品的生命周期比较短,所以收集到的样本数据有限,所以在推荐系统中的排序算法的参数空间不能太大,否则会出现学习欠拟合。

3、特征稀疏,应该说是高度稀疏,比如APP空间有上万或者上十万,但是每个用户常用的APP才几十上百,所以我们在排序算法中需要压缩特征空间。

4、在不同场景和不同上下文中的数据差异明显,所以需要通过设计模型来学习这些特性。

推荐系统中排序算法从90年代发展至今,可以归纳为以下几个阶段:

1、发展初期(2010年前):人工特征+ 线性模型阶段,引用当年流行的一个词概括:专家系统。该阶段的排序模型的主要架构如下图所示。




主要特点:

1)原始输入特征量级在百、千、万之间;

2)经过处理后的特征量级在万、十万、百万、千万级别都有;

3)模型虽然简单,但是参数空间小,性能高,效果好;

4)效果提升需要依赖人工特征建设,基于对业务的理解,通过大量的人工经验和数据分析挖掘有效的特征组合;

2、加速发展期(2010年-2015年):自动特征交叉 + 线性模型阶段,一个词概括:增强记忆。典型代表方法:

1)2010年提出FM

2)2014年提出FFM

3)2014年提出GBDT+LR

4)2014年提出XGBoost

该阶段的排序模型的主要架构如下图所示。



主要特点:

1)有监督自动进行二阶、高阶特征交叉,这样就可以记忆各种有效的特征组合,也就是说我能学习得到用什么样的特征组合能够更好的区分label标签。

2)通过参数可以控制特征交叉的参数空间,比如控制FM隐向量的长度,树模型的棵数和深度。

3)联合学习启蒙,联合低阶、二阶、高阶进行联合训练学习,主要目的是为了在同一个空间中强化记忆每一个特征或者特征组合对预测结果的正向或者负向的影响权重。

4)效果提升显著,而且只需对个别超参数进行人工调整,简单高效;

3、深度发展期(2016年-至今):深度模型阶段,开始将特征映射至多维空间中,然后再通过多层网络去学习特征之间的相关性,一个词概括:深度发展。典型代表方法:

1)2016年提出FNN、PNN、NFM,AFM

2)2016年提出Wide & Deep

3)2016年YouTube提出Deep Neural Networks

4)2017年提出DeepFM

该阶段的排序模型的主要架构如下图所示。



主要特点:

1)离散特征处理向Embedding空间发展,采用低维空间更加合理的表达特征(比如:休闲游戏、射击游戏、购物美妆可以用8维向量表示,而且休闲游戏向量与射击游戏向量距离比较近,射击游戏向量与购物美妆向量距离较远),这里即对特征空间进行了压缩,也对离散特征进行了合理的表示;

2)在各个阶段通过降维减少参数空间量级(需要重点考虑,在有限的样本情况需要用尽量少的参数挖掘数据规律);

3)挖掘上下文与目标之间的关系,比如设计XXX序列特征进行挖掘与目标之间相关性的规律;

4)采用DNN进行高阶特征挖掘;

5)融合低阶、二阶、高阶进行联合学习,低阶和二阶主要强化记忆能力,高阶主要强化泛化能力;

这三个阶段的发展,从特征的表征来看可以归纳为:从单一数据特征表示—>多元数据特征表示—>低维稠密的向量空间表示,这里的发展方向就是如何对:人、物、行为等数据进行向量表示,基于此向量表示再进行与目标之间相关性学习。

文章来源: https://www.toutiao.com/group/6742414337744306701/