【GCN-CTR】剪枝特征:Detecting Beneficial Feature Interactions for Recommender Systems (AAAI‘21)
Detecting Beneficial Feature Interactions for Recommender Systems (AAAI’21)
这篇的motivation和method都更自然一些,就是有的地方写的不太清楚。
Motivation
DeepFM等一系列模型注重于挖掘高阶特征,但是这些模型只管挖不管筛。对于一个样本有 JJJ 个特征,二阶组合特征就有 J(J−1)/2J(J-1)/2J(J−1)/2 个,大量的特征组合自然也有大量无用特征,会降低模型质量和速度,所以怎么合理对特征组合进行剪枝,是本文所研究的问题。这篇文章只考虑二阶特征组合。
同样地,这篇文章以特征作为节点建立Graph,把识别重要特征交互任务看作图上的 Link Prediction 任务,然后把 CTR 任务看作图分类任务。
所以从大的角度上看,这篇可以看作在Fi-GNN的基础上剪枝邻接矩阵。
Method:L0L_0L0-SIGN
每个节点有两套embedding viev_{i}^{e}vie 和 ui{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)=W2eReLU(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(vie⊙vje)+b1e)+b2e:R2×b→Z2
viev_{i}^{e}vie 和 vjev_{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×d→Rd
,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=eij′zij
这样看是不是很像在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:Rd→R 将节点的表征向量转换成数值。
然后用一个线性聚合函数 ϕ\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)}j∈X))}i∈X)
loss由三部分组成:
R(θ,ω)=1N∑n=1N(L(FLS(Gn;ω,θ),yn)+λ1∑i,j∈Xn(πn)ij+λ2∥zn∥2)θ∗,ω∗=argminθ,ω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=1∑N(L(FLS(Gn;ω,θ),yn)+λ1i,j∈Xn∑(πn)ij+λ2∥zn∥2⎠⎞=θ,ωargminR(θ,ω),
分别是模型预估偏差损失、对图的L0正则项和 和对模型参数的L2 正则项。
思考
这篇文章的优点是motivation更合理一些,比如下图,Gmail和Workday、Morning的组合就很有道理。
缺点是由于文章做的是二阶特征,GNN的意思就很淡,更没有Deep GNN的事,所以文章标题里是Detecting Beneficial Feature Interactions。
【GCN-CTR】剪枝特征:Detecting Beneficial Feature Interactions for Recommender Systems (AAAI‘21)相关推荐
- Feature Engineering 特征工程 3. Feature Generation
文章目录 1. 组合特征 2. 过去7天的数据 3. 上一个相同类型的项目的时间 4. 转换数值特征 learn from https://www.kaggle.com/learn/feature-e ...
- OpenCV中的特征匹配(Feature Matching)
OpenCV中的特征匹配(Feature Matching) 1. 效果图 2. 原理 3. 源码 3.1 SIFT关键点检测+Knn近邻匹配 3.2 ORB关键点检测+蛮力特征匹配 3.3 SIFT ...
- QIIME 2用户文档. 13训练特征分类器Training feature classifiers(2019.7)
前情提要 NBT:QIIME 2可重复.交互和扩展的微生物组数据分析平台 1简介和安装Introduction&Install 2插件工作流程概述Workflow 3老司机上路指南Experi ...
- QIIME 2教程. 13训练特征分类器Training feature classifiers(2020.11)
文章目录 训练特征分类器 下载并导入参考序列 提取参考序列 训练分类集 测试分类集 分类真菌ITS序列 译者简介 译者简介 Reference 猜你喜欢 写在后面 训练特征分类器 Training f ...
- QIIME 2用户文档. 12训练特征分类器Training feature classifiers(2018.11)
文章目录 前情提要 训练特征分类器 下载并导入参考序列 提取参考序列 训练分类集 测试分类集 分类真菌ITS序列 Reference 译者简介 猜你喜欢 写在后面 前情提要 QIIME 2可重复.交互 ...
- R语言使用caret包的findCorrelation函数批量删除相关性冗余特征、实现特征筛选(feature selection)、剔除高相关的变量
R语言使用caret包的findCorrelation函数批量删除相关性冗余特征.实现特征筛选(feature selection).剔除高相关的变量 目录
- R语言常用线性模型特征筛选(feature selection)技术实战:基于前列腺特异性抗原(PSA)数据
R语言常用线性模型特征筛选(feature selection)技术实战 目录 R语言常用线性模型特征筛选(feature selection)技术实战
- R语言基于线性回归(Linear Regression)进行特征筛选(feature selection)
R语言基于线性回归(Linear Regression)进行特征筛选(feature selection) 对一个学习任务来说,给定属性集,有些属性很有用,另一些则可能没什么用.这里的属性即称为&qu ...
- R语言基于LASSO进行特征筛选(feature selection)
R语言基于LASSO进行特征筛选(feature selection) 对一个学习任务来说,给定属性集,有些属性很有用,另一些则可能没什么用.这里的属性即称为"特征"(featur ...
- R语言基于Boruta进行机器学习特征筛选(Feature Selection)
R语言基于Boruta进行机器学习特征筛选(Feature Selection) 对一个学习任务来说,给定属性集,有些属性很有用,另一些则可能没什么用.这里的属性即称为"特征"(f ...
最新文章
- Java面试笔试题大汇总一(最全+详细答案)
- android79 Fragment生命周期
- 从零开始学python网络爬虫-从零开始学Python 三(网络爬虫)
- Linux服务器上配置anaconda环境
- sqlite的控制台中文显示问题
- 一个简单的HTTP通讯的例子,使用了CInternetSession,CHttpConnection,CHttpFile三个类
- 【已解答】Linux ./configure --prefix 命令是什么意思?
- C#中二进制和流之间的各种相互转换
- Windows Phone 7 系统主题颜色RGB和Hex值
- leaflet 结合 Echarts4 实现散点图(附源码下载)
- SpringBoot项目如何进行打包部署
- 女生适合做程序员吗?
- javascript:Location对象的使用简介
- python爬取微信运动_用 Python 修改微信(支付宝)运动步数,轻松 TOP1
- 如何设计一款IRR计算器
- 心理声学模型在感知音频编码中的应用
- 微信企业号和手机关联的方式
- 【前端面试题】01—42道常见的HTML5面试题(附答案)
- Java程序员进阶全过程
- layui 登录页面样式+短信接口