者:一元
公众号:炼丹笔记

昨天看非常多的群友在讨论该篇文章,很是好奇,今天就读了一下,个人感觉本文的co-action操作还是第一次碰到,但该方案在amazu等数据集上对比的方案还是较为弱的,所以是否效果比xDeepFM和NFFM等要好,还是一个问好,但是新的表示co-action的方案还是很值得思考的。有任何问题欢迎最后入群交流。好了下面进入正文,Let's Go!

目前基于特征交互的模型可以大致分为三类:

  1. Aggregation based方法:聚合用户的历史行为序列来获得CTR预估的判别表示;
  2. Graph based方法: 将特征作为节点, 通过有向和无向图的方式连接, 在这种情况下,特征协同作用作为信息沿边缘传播的边缘权重;
  3. Combinatorial embedding方法:直接明显的组合特征的embedding;

基于Aggregation的方法和基于Graph的方法只通过边的权值对特征的协同作用进行建模,但是边缘只用于信息聚合,而不用于信息扩充。组合嵌入方法,另一方面,结合两个特征的嵌入来建立特征的共同作用,但组合嵌入法的问题在于, 嵌入负责表示学习和协同作用建模,而表示学习和协同建模可能会互相冲突最终使我们的效果受限。

本文提出了feature Co-Action Network(CAN)捕获在输入阶段的特征的co-action并且利用交互和共同信息来对最终模型的效果进行提升。

回顾CTR预测问题的特征Co-action

Co-Action网络

CAN的整体框架如上,用户和商品的特征可以被分为两种形式:

Co-Action网络的最终结构为:

最终,我们通过最小化cross-entropy:

Co-Action 单元

其中H表示特征的co-action.对于用户序列特征例如用户的点击序列等,co-action单元会被应用到每个商品上,之后再使用一个sum-pool。

多阶(Multi-order) Enhancement

此处我们使用下面的方式进行高阶的特征组合:

其中C是阶的个数, 此处我们使用SeLU作为激活函数(当C=1的时候),同时我们使用tanh来避免数值问题。

多层(Multi-level)独立性

  • 第一层:参数独立性, 我们的方法将表示学习和co-action建模区分,参数的独立性是CAN的基础;
  • 第二层:组合独立性,特征的co-action随着特征组合的增加而线性增长,假设有M个weight-side和N个input-side的嵌入,
  • 第三层:oders的独立性,为了进一步提升在multi-order的输入co-action建模的便利,我们的方法对不同的oder的商品

在不同的输入顺序下,进一步提高了不同输入顺序下的嵌入灵活性。weight-side嵌入的大小相应地增加了orders倍。注意,由于MLP在不同的顺序项中没有参数,因此之前的近似值不可行。

实验

效果比较

  • CAN在这两个数据集上都优于其他最先进的方法。与基础模型DIEN相比,其AUC分别提高了1.7%和2.1%。
  • 该方法在很大程度上优于其他协同作用方法,证明了本文方法在协同作用建模中的有效性。
  • 值得注意的是,作为纯表示学习方法,笛卡尔积方法与PNN、NCF、DeepFM等其他组合嵌入方法相比,可以取得更好的性能,这说明虽然这些组合嵌入方法可以提取一些协同作用特征信息,他们真的可以通过出色的表现和合作学习嵌入。相比之下,CAN比笛卡尔积和结合嵌入的方法取得了更好的效果,这意味着基于网络的CAN机制可以同时学习表示能力和协作能力

解耦研究

  • Multi orders:多阶数对性能增益的影响很小,因此在实际应用中,2或3个power项是合适的。
  • MLP depth:8层的MLP可以拿到最好的结果;
  • 激活函数:Tanh的激活函数可以获得最好的效果;

模型的普遍性和泛化(Universality and Generalization)

Universality: CAN比大多数方法的效果要好,和cartesian乘积效果差不大;

在真实的商业场景中,每天都会出现无数的功能组合,这就要求CTR模型能够快速响应。推广对于实际应用具有重要意义。为此,我们从测试集中移除包含现有特征组合的样本。通过这种方法,我们得到了一个新的测试集,其特征组合对于一个经过良好训练的模型来说是全新的。请注意,我们只要求特征组合为zero-shot快照,而不是所有特性。

  • Generalization: CAN还是工作的非常好, 具有非常好的泛化性。

工业数据集上的表现

CAN在工业数据集上A/B Test上得到了非常大的提升。

小结

在笛卡尔产品模型的启发下,我们提出了一种新的特征交叉范式:Co-Action network,CAN。通过一个灵活的模块,co-action单元,可以将表示学习和co-action行为建模分离开来。在co-action单元中引入了多阶增强和多层次独立性,进一步提高了特征协同建模的能力。实验表明,该算法的性能优于之前的研究成果,对新的特征组合具有更好的泛化能力。


weixin.qq.com/r/XSjP1zr (二维码自动识别)

推荐系统炼丹笔记:阿里推荐算法特征交叉新方式CAN相关推荐

  1. 推荐系统炼丹笔记:推荐算法特征交叉新方式CAN

    作 者:一元 公众号:炼丹笔记 昨天看非常多的群友在讨论该篇文章,很是好奇,今天就读了一下,个人感觉本文的co-action操作还是第一次碰到,但该方案在amazu等数据集上对比的方案还是较为弱的,所 ...

  2. 推荐系统炼丹笔记:聊一聊特征交叉新方式CAN

    作 者:一元 公众号:炼丹笔记 昨天看非常多的群友在讨论该篇文章,很是好奇,今天就读了一下,个人感觉本文的co-action操作还是第一次碰到,但该方案在amazu等数据集上对比的方案还是较为弱的,所 ...

  3. 推荐系统炼丹笔记:RecSys2020-SSE-PT解锁序列数据挖掘新姿势

    作 者:一元 公众号:炼丹笔记 背景 现在诸多的推荐算法在处理时间信息上, 除了在自然语言常用的RNN,CNN等模型, 就是基于Transformer的模型,但是和SASRec类似, 效果不错,但是缺 ...

  4. 推荐系统(7)——推荐算法4(深度学习时代来临:模型结构上的突破)ACF、DIN、DIEN、DRN

    文章目录 1 ACF,DIN--注意力机制在推荐上的应用 1.1 AFM--NFM的交叉特征+Attention得分 1.2 DIN--淘系广告商品推荐的业务角度 1.3 注意力机制对于推荐系统的启发 ...

  5. 【推荐系统】协同过滤推荐算法

    [推荐系统]协同过滤推荐算法 原创 魏晓蕾 最后发布于2018-08-28 10:41:42 阅读数 9633 收藏 发布于2018-08-28 10:41:42 分类专栏: Recommender ...

  6. 推荐系统炼丹笔记:EdgeRec阿里边缘计算推荐系统

    作者:一元 公众号:炼丹笔记 背景 推荐系统(RS)已经成为大多数web应用程序的关键模块.最近,大多数RSs都是基于云到边缘框架的瀑布式的,其中推荐的结果通过在云服务器中预先计算传送到edge(例如 ...

  7. 推荐系统炼丹笔记:阿里边缘计算+奉送20个推荐系统强特

    作者:一元 公众号:炼丹笔记 背景 推荐系统(RS)已经成为大多数web应用程序的关键模块.最近,大多数RSs都是基于云到边缘框架的瀑布式的,其中推荐的结果通过在云服务器中预先计算传送到edge(例如 ...

  8. 推荐系统炼丹笔记:令人着迷的时间动态CF算法

    作 者:一元 公众号:炼丹笔记 背景 本文是一篇较老的文章,是Yahoo的研究员关于协同过滤中时间动态建模的最为细致的讨论. 顾客对产品的偏好随着时间的推移而变化.随着新选择的出现,产品的认知和受欢迎 ...

  9. 推荐系统炼丹笔记:大规模推荐Deep Retrieval

    作 者:十方 公众号:炼丹笔记 (1)Why Deep Retrieval? 一个规模较大的推荐系统,需要解决的核心问题就是如何从百万甚至亿级别的候选集中快速找到最相关的top-k个候选.以前的解决方 ...

最新文章

  1. “机器人迟钝一点,会更有人情味”,迪士尼提出新型人机交互系统
  2. Oracle数据库asm原理,Oracle数据库中ASM功能解剖
  3. 最长回文子串python_最长回文子串(Python)
  4. CCS5连接调试C64X系列DSP核
  5. php如何写回调函数,php – 如何使用类方法作为回调函数?
  6. api 规则定义_API有规则,而且功能强大
  7. java调用 restapi 乱码_Java HttpURLConnection模拟请求Rest接口解决中文乱码问题
  8. 计算机内存知识txt,计算机内存基础知识专题
  9. 这个充电宝用起来好方便!
  10. 【Gym-101775 C】Traffic Light【思维】
  11. Spring框架之演示JDBC的模板类
  12. 11.4.2 内存映射的相关接口
  13. 最全整理反面角色谁更适合饰演老大角色,你认识多少?(已收藏)
  14. python中rename函数_Python3 os.rename() 方法
  15. 设计师必备,6个PNG素材网站
  16. php trim /r/n,「php中trim函数使用」- 海风纷飞Blog
  17. 猜数字游戏(c语言实现)
  18. [文摘20070308]中国历史朝代歌
  19. android 圆形渐变背景,android实现圆形渐变进度条
  20. 直角三角形面积Java_利用Eclipse编写第一个简单的Java程序,实现如下功能。 键盘输入:直角三角形两直角边a, b,根据勾股定理计算斜边的平方值。并输出。 例如:运行效果如下...

热门文章

  1. 关于MonoDevelop自动缩进的设置
  2. 第二十二章 李逵为什么不可爱
  3. 各种好用的代码生成器
  4. ASP.NET MVC3 + Ninject.Mvc3 依赖注入原来可以这么简单
  5. 【转】ADO.NET对数据库操作经典类
  6. [Visual Stuido SDK] VSPackages
  7. python集合类型_Python 的集合(set)类型
  8. python教程怎么读_python怎么读本地文件
  9. Anaconda简介及其下载 安装 配置 使用 卸载
  10. C语言 | 编程实现4