Detecting Beneficial Feature Interactions for Recommender Systems (AAAI’21)

这篇的motivation和method都更自然一些,就是有的地方写的不太清楚。

Motivation

DeepFM等一系列模型注重于挖掘高阶特征,但是这些模型只管挖不管筛。对于一个样本有 JJJ 个特征,二阶组合特征就有 J(J−1)/2J(J-1)/2J(J1)/2 个,大量的特征组合自然也有大量无用特征,会降低模型质量和速度,所以怎么合理对特征组合进行剪枝,是本文所研究的问题。这篇文章只考虑二阶特征组合。

同样地,这篇文章以特征作为节点建立Graph,把识别重要特征交互任务看作图上的 Link Prediction 任务,然后把 CTR 任务看作图分类任务。

所以从大的角度上看,这篇可以看作在Fi-GNN的基础上剪枝邻接矩阵。

Method:L0L_0L0-SIGN

image-20220218130048595

每个节点有两套embedding viev_{i}^{e}vieui{u}_{i}ui,分别用于L0模块和SIGN模块。SIGN模块的作用类似于DCN、DeepFM中的特征交互模块,L0模块的作用则是为SIGN模块剪枝。

L0L_0L0 Edge Prediction Model

最简单的Edge Prediction方案就是MF,这里用一个MLP的模型 fepf_{e p}fep 来识别节点 iii 和节点 $ j$ 之间是否存在边:
fep(vie,vje)=W2eRe⁡LU(W1e(vie⊙vje)+b1e)+b2e:R2×b→Z2f_{e p}\left(v_{i}^{e}, v_{j}^{e}\right) = W_{2}^{e} \operatorname{Re} L U\left(W_{1}^{e}\left(v_{i}^{e} \odot v_{j}^{e}\right)+b_{1}^{e}\right)+b_{2}^{e}: \mathbb{R}^{2 \times b} \rightarrow \mathbb{Z}_{2} fep(vie,vje)=W2eReLU(W1e(vievje)+b1e)+b2e:R2×bZ2
viev_{i}^{e}vievjev_{j}^{e}vje 是节点 i, j 的bbb维的embedding, fep(vie,vje)f_{ep}(v_{i}^{e}, v_{j}^{e})fep(vie,vje) 的输出 eij′∈{0,1}e_{i j}^{\prime} \in \{0,1\}eij{0,1}。训练中再对 fepf_{ep}fep 加上 L0L_0L0 正则化,促使更加稀疏。

SIGN(Statistical Interaction Graph neural Network)

eij′=1e_{i j}^{\prime}=1eij=1 时,计算特征节点iii 和特征节点 jjj 的边权重(建模特征交互)
zij=h(ui,uj):R2×d→Rd\boldsymbol{z}_{i j} = h\left(\boldsymbol{u}_{i}, \boldsymbol{u}_{j}\right): \mathbb{R}^{2 \times d} \rightarrow \mathbb{R}^{d} zij=h(ui,uj):R2×dRd
ui,uj\boldsymbol{u}_{i}, \boldsymbol{u}_{j}ui,uj 就是节点 i, j 的ddd维的embedding 。那 eij′=0e_{i j}^{\prime}=0eij=0的就表示被剪枝掉了,不用建模特征 i 和特征 j 的交互,所以任意两个特征的交互表征可以表示为:
sij=eij′zij\boldsymbol{s}_{i j}=e_{i j}^{\prime} \boldsymbol{z}_{i j} sij=eijzij
image-20220218133425486

这样看是不是很像在Fi-GNN剪枝。

然后用一个线性聚合函数 ψ:vi′=ψ(ςi)\psi: \boldsymbol{v}_{i}^{\prime}=\psi\left(\varsigma_{i}\right)ψ:vi=ψ(ςi) 聚合邻居节点,更新节点表征。

然后用一个线性加权函数 g:Rd→Rg: \mathbb{R}^{d} \rightarrow \mathbb{R}g:RdR 将节点的表征向量转换成数值。

然后用一个线性聚合函数 ϕ\phiϕ 聚合图上所有节点的数值,得到最终输出:
fLS(G;w,θ)=ϕ({g(φ({fep(vie,vje)h(ui,uj)}j∈X))}i∈X)f_{L S}(G ; w, \theta)=\phi\left(\left\{g\left(\varphi\left(\left\{f_{e p}\left(v_{i}^{e}, v_{j}^{e}\right) h\left(u_{i}, u_{j}\right)\right\}_{j \in X}\right)\right)\right\}_{i \in X}\right) fLS(G;w,θ)=ϕ({g(φ({fep(vie,vje)h(ui,uj)}jX))}iX)
loss由三部分组成:
R(θ,ω)=1N∑n=1N(L(FLS(Gn;ω,θ),yn)+λ1∑i,j∈Xn(πn)ij+λ2∥zn∥2)θ∗,ω∗=arg⁡min⁡θ,ωR(θ,ω),\begin{aligned} \mathcal{R}(\boldsymbol{\theta}, \boldsymbol{\omega})=& \frac{1}{N} \sum_{n=1}^{N}\left(\mathcal{L}\left(F_{L S}\left(G_{n} ; \boldsymbol{\omega}, \boldsymbol{\theta}\right), y_{n}\right)\right.\\ &\left.+\lambda_{1} \sum_{i, j \in X_{n}}\left(\pi_{n}\right)_{i j}+\lambda_{2}\left\|\boldsymbol{z}_{n}\right\|_{2}\right) \\ \boldsymbol{\theta}^{*}, \boldsymbol{\omega}^{*} &=\underset{\boldsymbol{\theta}, \boldsymbol{\omega}}{\arg \min } \mathcal{R}(\boldsymbol{\theta}, \boldsymbol{\omega}), \end{aligned} R(θ,ω)=θ,ωN1n=1N(L(FLS(Gn;ω,θ),yn)+λ1i,jXn(πn)ij+λ2zn2=θ,ωargminR(θ,ω),

分别是模型预估偏差损失、对图的L0正则项和 和对模型参数的L2 正则项。

思考

这篇文章的优点是motivation更合理一些,比如下图,Gmail和Workday、Morning的组合就很有道理。

image-20220218135101727

缺点是由于文章做的是二阶特征,GNN的意思就很淡,更没有Deep GNN的事,所以文章标题里是Detecting Beneficial Feature Interactions。

【GCN-CTR】剪枝特征:Detecting Beneficial Feature Interactions for Recommender Systems (AAAI‘21)相关推荐

  1. Feature Engineering 特征工程 3. Feature Generation

    文章目录 1. 组合特征 2. 过去7天的数据 3. 上一个相同类型的项目的时间 4. 转换数值特征 learn from https://www.kaggle.com/learn/feature-e ...

  2. OpenCV中的特征匹配(Feature Matching)

    OpenCV中的特征匹配(Feature Matching) 1. 效果图 2. 原理 3. 源码 3.1 SIFT关键点检测+Knn近邻匹配 3.2 ORB关键点检测+蛮力特征匹配 3.3 SIFT ...

  3. QIIME 2用户文档. 13训练特征分类器Training feature classifiers(2019.7)

    前情提要 NBT:QIIME 2可重复.交互和扩展的微生物组数据分析平台 1简介和安装Introduction&Install 2插件工作流程概述Workflow 3老司机上路指南Experi ...

  4. QIIME 2教程. 13训练特征分类器Training feature classifiers(2020.11)

    文章目录 训练特征分类器 下载并导入参考序列 提取参考序列 训练分类集 测试分类集 分类真菌ITS序列 译者简介 译者简介 Reference 猜你喜欢 写在后面 训练特征分类器 Training f ...

  5. QIIME 2用户文档. 12训练特征分类器Training feature classifiers(2018.11)

    文章目录 前情提要 训练特征分类器 下载并导入参考序列 提取参考序列 训练分类集 测试分类集 分类真菌ITS序列 Reference 译者简介 猜你喜欢 写在后面 前情提要 QIIME 2可重复.交互 ...

  6. R语言使用caret包的findCorrelation函数批量删除相关性冗余特征、实现特征筛选(feature selection)、剔除高相关的变量

    R语言使用caret包的findCorrelation函数批量删除相关性冗余特征.实现特征筛选(feature selection).剔除高相关的变量 目录

  7. R语言常用线性模型特征筛选(feature selection)技术实战:基于前列腺特异性抗原(PSA)数据

    R语言常用线性模型特征筛选(feature selection)技术实战 目录 R语言常用线性模型特征筛选(feature selection)技术实战

  8. R语言基于线性回归(Linear Regression)进行特征筛选(feature selection)

    R语言基于线性回归(Linear Regression)进行特征筛选(feature selection) 对一个学习任务来说,给定属性集,有些属性很有用,另一些则可能没什么用.这里的属性即称为&qu ...

  9. R语言基于LASSO进行特征筛选(feature selection)

    R语言基于LASSO进行特征筛选(feature selection) 对一个学习任务来说,给定属性集,有些属性很有用,另一些则可能没什么用.这里的属性即称为"特征"(featur ...

  10. R语言基于Boruta进行机器学习特征筛选(Feature Selection)

    R语言基于Boruta进行机器学习特征筛选(Feature Selection) 对一个学习任务来说,给定属性集,有些属性很有用,另一些则可能没什么用.这里的属性即称为"特征"(f ...

最新文章

  1. Java面试笔试题大汇总一(最全+详细答案)
  2. android79 Fragment生命周期
  3. 从零开始学python网络爬虫-从零开始学Python 三(网络爬虫)
  4. Linux服务器上配置anaconda环境
  5. sqlite的控制台中文显示问题
  6. 一个简单的HTTP通讯的例子,使用了CInternetSession,CHttpConnection,CHttpFile三个类
  7. 【已解答】Linux ./configure --prefix 命令是什么意思?
  8. C#中二进制和流之间的各种相互转换
  9. Windows Phone 7 系统主题颜色RGB和Hex值
  10. leaflet 结合 Echarts4 实现散点图(附源码下载)
  11. SpringBoot项目如何进行打包部署
  12. 女生适合做程序员吗?
  13. javascript:Location对象的使用简介
  14. python爬取微信运动_用 Python 修改微信(支付宝)运动步数,轻松 TOP1
  15. 如何设计一款IRR计算器
  16. 心理声学模型在感知音频编码中的应用
  17. 微信企业号和手机关联的方式
  18. 【前端面试题】01—42道常见的HTML5面试题(附答案)
  19. Java程序员进阶全过程
  20. layui 登录页面样式+短信接口

热门文章

  1. SpringCloud Gateway gatewayRequestUrl is missing
  2. deepin访问不了网页
  3. 介绍identity matrices
  4. Linux 下的IP/子网计算器:ipcalc
  5. 上海黄山自游二日游攻略
  6. 购买《哈利波特》书籍
  7. cubieboard服务器系统,cubieboard 搭建家用服务器
  8. MyBatis:choose标签的用法
  9. win10开启快速启动,关机时电源键一直亮着无法正常关机。。。
  10. python爬虫、爬取百度图片保存到本地