readme.md 9.5 KB
Newer Older
Y
yaoxuefeng 已提交
1
# 排序模型库
Y
yaoxuefeng 已提交
2 3

## 简介
Y
yaoxuefeng 已提交
4
我们提供了常见的排序任务中使用的模型算法的PaddleRec实现, 单机训练&预测效果指标以及分布式训练&预测性能指标等。实现的排序模型包括 [logistic regression](logistic_regression)[多层神经网络](dnn)[FM](fm)[FFM](ffm)[PNN](pnn)[多层神经网络](dnn)[Deep Cross Network](dcn)[DeepFM](deepfm)[xDeepFM](xdeepfm)[NFM](nfm)[AFM](afm)[Deep Interest Network](din)[Wide&Deep](wide_deep)[FGCNN](fgcnn)
Y
yaoxuefeng 已提交
5 6 7 8 9

模型算法库在持续添加中,欢迎关注。

## 目录
* [整体介绍](#整体介绍)
Z
zengkai 已提交
10
    * [模型列表](#模型列表)
Y
yaoxuefeng 已提交
11 12 13 14 15 16 17 18 19 20
* [使用教程](#使用教程)
    * [数据处理](#数据处理)
    * [训练](#训练)
    * [预测](#预测)
* [效果对比](#效果对比)
    * [模型效果列表](#模型效果列表)
* [分布式](#分布式)
    * [模型性能列表](#模型性能列表)

## 整体介绍
Z
zengkai 已提交
21
### 模型列表
Y
yaoxuefeng 已提交
22 23 24 25

|       模型        |       简介        |       论文        |
| :------------------: | :--------------------: | :---------: |
| DNN | 多层神经网络 | -- |
Y
yaoxuefeng 已提交
26 27
| Logistic Regression | 逻辑回归 | -- |
| FM | 因子分解机 | [Factorization Machine](https://ieeexplore.ieee.org/abstract/document/5694074)(2010) |
Y
yaoxuefeng 已提交
28
| FFM | Field-Aware FM | [Field-aware Factorization Machines for CTR Prediction](https://dl.acm.org/doi/pdf/10.1145/2959100.2959134)(2016) |
Y
yaoxuefeng 已提交
29 30
| FNN | Factorisation-Machine Supported Neural Networks | [Deep Learning over Multi-field Categorical Data](https://arxiv.org/pdf/1601.02376.pdf)(2016) |
| Deep Crossing | Deep Crossing | [Deep Crossing: Web-Scale Modeling without Manually Crafted Combinatorial Features](https://www.kdd.org/kdd2016/papers/files/adf0975-shanA.pdf)(2016) |
Y
yaoxuefeng 已提交
31
| PNN | Product Network | [Product-based Neural Networks for User Response Prediction](https://arxiv.org/pdf/1611.00144.pdf)(2016) |
Z
zengkai 已提交
32 33 34
| wide&deep | Deep + wide(LR) | [Wide & Deep Learning for Recommender Systems](https://dl.acm.org/doi/pdf/10.1145/2988450.2988454)(2016) |
| DeepFM | DeepFM | [DeepFM: A Factorization-Machine based Neural Network for CTR Prediction](https://arxiv.org/pdf/1703.04247.pdf)(2017) |
| DCN | Deep Cross Network | [Deep & Cross Network for Ad Click Predictions](https://dl.acm.org/doi/pdf/10.1145/3124749.3124754)(2017) |
Y
yaoxuefeng 已提交
35 36
| NFM | Neural Factorization Machines | [Neural Factorization Machines for Sparse Predictive Analytics](https://dl.acm.org/doi/pdf/10.1145/3077136.3080777)(2017) |
| AFM | Attentional Factorization Machines | [Attentional Factorization Machines: Learning the Weight of Feature Interactions via Attention Networks](https://arxiv.org/pdf/1708.04617.pdf)(2017) |
Z
zengkai 已提交
37 38
| xDeepFM | xDeepFM | [xDeepFM: Combining Explicit and Implicit Feature Interactions for Recommender Systems](https://dl.acm.org/doi/pdf/10.1145/3219819.3220023)(2018) |
| DIN | Deep Interest Network | [Deep Interest Network for Click-Through Rate Prediction](https://dl.acm.org/doi/pdf/10.1145/3219819.3219823)(2018) |
Y
yaoxuefeng 已提交
39
| FGCNN | Feature Generation by CNN | [Feature Generation by Convolutional Neural Network for Click-Through Rate Prediction](https://arxiv.org/pdf/1904.04447.pdf)(2019) |
O
fix bug  
overlordmax 已提交
40
| FIBINET | Combining Feature Importance and Bilinear feature Interaction | [《FiBiNET: Combining Feature Importance and Bilinear feature Interaction for Click-Through Rate Prediction》]( https://arxiv.org/pdf/1905.09433.pdf) |
Z
zengkai 已提交
41

Z
zengkai 已提交
42
下面是每个模型的简介(注:图片引用自链接中的论文)
Z
zengkai 已提交
43

Z
zengkai 已提交
44
[wide&deep](https://dl.acm.org/doi/pdf/10.1145/2988450.2988454):
O
fix bug  
overlordmax 已提交
45

Z
zengkai 已提交
46
<p align="center">
Z
zengkai 已提交
47
<img align="center" src="../../doc/imgs/wide&deep.png">
Z
zengkai 已提交
48 49
<p>
[DeepFM](https://arxiv.org/pdf/1703.04247.pdf):
O
fix bug  
overlordmax 已提交
50

Z
zengkai 已提交
51
<p align="center">
Z
zengkai 已提交
52
<img align="center" src="../../doc/imgs/deepfm.png">
Z
zengkai 已提交
53 54
<p>
[XDeepFM](https://dl.acm.org/doi/pdf/10.1145/3219819.3220023):
O
fix bug  
overlordmax 已提交
55

Z
zengkai 已提交
56
<p align="center">
Z
zengkai 已提交
57
<img align="center" src="../../doc/imgs/xdeepfm.png">
Z
zengkai 已提交
58 59
<p>
[DCN](https://dl.acm.org/doi/pdf/10.1145/3124749.3124754):
O
fix bug  
overlordmax 已提交
60

Z
zengkai 已提交
61
<p align="center">
Z
zengkai 已提交
62
<img align="center" src="../../doc/imgs/dcn.png">
Z
zengkai 已提交
63 64
<p>
[DIN](https://dl.acm.org/doi/pdf/10.1145/3219819.3219823):
O
fix bug  
overlordmax 已提交
65

Z
zengkai 已提交
66
<p align="center">
Z
zengkai 已提交
67
<img align="center" src="../../doc/imgs/din.png">
Z
zengkai 已提交
68
<p>
O
fix bug  
overlordmax 已提交
69 70 71 72 73
[FIBINET](https://arxiv.org/pdf/1905.09433.pdf):

<p align="center">
<img align="center" src="../../doc/imgs/fibinet.png">
<p>
Y
yaoxuefeng 已提交
74

Y
yaoxuefeng 已提交
75
## 使用教程(快速开始)
O
fix bug  
overlordmax 已提交
76

Y
yaoxuefeng 已提交
77 78 79 80 81 82 83 84 85 86 87
使用样例数据快速开始,参考[训练](###训练) & [预测](###预测)
## 使用教程(复现论文)
为了方便使用者能够快速的跑通每一个模型,我们在每个模型下都提供了样例数据,并且调整了batch_size等超参以便在样例数据上更加友好的显示训练&测试日志。如果需要复现readme中的效果请按照如下表格调整batch_size等超参,并使用提供的脚本下载对应数据集以及数据预处理。
|       模型       |       batch_size      |       thread_num      |       epoch_num      |
| :------------------: | :--------------------: | :--------------------: | :--------------------: |
|       DNN        |       1000       |        10       |        1       |
|       DCN        |       512       |       20       |        2       |
|       DeepFM     |       100       |       10       |        30       |
|       DIN        |       32       |       10       |        100       |
|       Wide&Deep  |       40       |       1       |        40       |
|       xDeepFM        |       100       |       1       |        10       |
Y
yaoxuefeng 已提交
88
### 数据处理
Y
yaoxuefeng 已提交
89
参考每个模型目录数据下载&预处理脚本
X
fix  
xjqbest 已提交
90 91 92 93 94

```
sh run.sh
```

X
fix  
xjqbest 已提交
95 96
数据读取默认使用core/reader.py

Y
yaoxuefeng 已提交
97
### 训练
Y
yaoxuefeng 已提交
98
```
Y
yaoxuefeng 已提交
99 100
cd modles/rank/dnn # 进入选定好的排序模型的目录 以DNN为例
python -m paddlerec.run -m paddlerec.models.rank.dnn # 使用内置配置
Y
yaoxuefeng 已提交
101 102 103
# 如果需要使用自定义配置,config.yaml中workspace需要使用改模型目录的绝对路径
# 自定义修改超参后,指定配置文件,使用自定义配置
python -m paddlerec.run -m ./config.yaml
Y
yaoxuefeng 已提交
104
```
Y
yaoxuefeng 已提交
105
### 预测
Y
yaoxuefeng 已提交
106
```
Y
yaoxuefeng 已提交
107 108
# 修改对应模型的config.yaml,mode配置infer_runner
# 示例: mode: runner1 -> mode: infer_runner
C
Chengmo 已提交
109
# infer_runner中 class配置为 class: infer
Y
yaoxuefeng 已提交
110
# 如果训练阶段和预测阶段的模型输入一致,phase不需要改动,复用train的即可
Y
yaoxuefeng 已提交
111 112 113

# 修改完config.yaml后 执行:
python -m paddlerec.run -m ./config.yaml # 以DNN为例
Y
yaoxuefeng 已提交
114
```
Y
yaoxuefeng 已提交
115

T
tangwei 已提交
116 117
## 效果对比
### 模型效果 (测试)
Y
yaoxuefeng 已提交
118

T
tangwei 已提交
119
|       数据集        |       模型       |       loss        |       auc          |       acc         |       mae          |
Y
yaoxuefeng 已提交
120 121
| :------------------: | :--------------------: | :---------: |:---------: | :---------: |:---------: |
|       Criteo        |       DNN       |       --        |       0.79395          |       --          |       --          |
F
frankwhzhang 已提交
122 123
|       Criteo        |       DeepFM       |       0.44797        |       0.80460          |       --          |       --          |
|       Criteo        |       DCN       |       0.44704        |       0.80654          |       --          |       --          |
Y
yaoxuefeng 已提交
124
|       Criteo        |       xDeepFM       |       0.48657        |       --          |       --          |       --          |
F
frankwhzhang 已提交
125 126
|       Census-income Data        |       Wide&Deep       |       0.76195         |       0.90577          |       --          |       --          |
|       Amazon Product        |       DIN       |       0.47005        |       0.86379         |       --          |       --          |
Y
yaoxuefeng 已提交
127

128

T
tangwei 已提交
129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148
## 分布式
### 模型训练性能 (样本/s)
|       数据集        |       模型       |       单机        |       同步 (4节点)          |       同步 (8节点)          |  同步 (16节点)          |  同步 (32节点)          |
| :------------------: | :--------------------: | :---------: |:---------: |:---------: |:---------: |:---------: |
|       Criteo        |       DNN       |       99821        |       148788          |       148788          |  507936          |  856032          |
|       Criteo        |       DeepFM       |       --        |       --          |       --          |   --          |   --          |
|       Criteo        |       DCN       |       --        |       --          |       --          |  --          |  --          |
|       Criteo        |       xDeepFM       |       --        |       --          |       --          |  --          |  --          |
|       Census-income Data        |       Wide&Deep       |       --        |       --          |       --          |  --          |  --          |
|       Amazon Product        |       DIN       |       --        |       --          |       --          |  --          |  --          |

----

|       数据集        |       模型       |       单机        |       异步 (4节点)          |       异步 (8节点)          |  异步 (16节点)          |  异步 (32节点)          |
| :------------------: | :--------------------: | :---------: |:---------: |:---------: |:---------: |:---------: |
|       Criteo        |       DNN       |       99821        |       316918          |       602536          |  1130557          |  2048384          |
|       Criteo        |       DeepFM       |       --        |       --          |       --          |   --          |   --          |
|       Criteo        |       DCN       |       --        |       --          |       --          |  --          |  --          |
|       Criteo        |       xDeepFM       |       --        |       --          |       --          |  --          |  --          |
|       Census-income Data        |       Wide&Deep       |       --        |       --          |       --          |  --          |  --          |
Z
zengkai 已提交
149
|       Amazon Product        |       DIN       |       --        |       --          |       --          |  --          |  --          |