Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
BaiXuePrincess
PaddleRec
提交
fdfce57e
P
PaddleRec
项目概览
BaiXuePrincess
/
PaddleRec
与 Fork 源项目一致
Fork自
PaddlePaddle / PaddleRec
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
P
PaddleRec
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
未验证
提交
fdfce57e
编写于
7月 24, 2020
作者:
C
Chengmo
提交者:
GitHub
7月 24, 2020
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'master' into fix_dis_doc
上级
d86d16e7
e95ea8fc
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
84 addition
and
27 deletion
+84
-27
models/rank/fibinet/README.md
models/rank/fibinet/README.md
+68
-15
models/rerank/listwise/config.yaml
models/rerank/listwise/config.yaml
+16
-12
未找到文件。
models/rank/fibinet/README.md
浏览文件 @
fdfce57e
...
...
@@ -16,13 +16,35 @@
├── config.yaml #配置文件
```
## 简介
注:在阅读该示例前,建议您先了解以下内容:
[
paddlerec入门教程
](
https://github.com/PaddlePaddle/PaddleRec/blob/master/README.md
)
---
## 内容
-
[
模型简介
](
#模型简介
)
-
[
数据准备
](
#数据准备
)
-
[
运行环境
](
#运行环境
)
-
[
快速开始
](
#快速开始
)
-
[
论文复现
](
#论文复现
)
-
[
进阶使用
](
#进阶使用
)
-
[
FAQ
](
#FAQ
)
## 模型简介
[
《FiBiNET: Combining Feature Importance and Bilinear feature Interaction for Click-Through Rate Prediction》
](
https://arxiv.org/pdf/1905.09433.pdf
)
是新浪微博机器学习团队发表在RecSys19上的一篇论文,文章指出当前的许多通过特征组合进行CTR预估的工作主要使用特征向量的内积或哈达玛积来计算交叉特征,这种方法忽略了特征本身的重要程度。提出通过使用Squeeze-Excitation network (SENET) 结构动态学习特征的重要性以及使用一个双线性函数来更好的建模交叉特征。
本项目在paddlepaddle上实现FibiNET的网络结构,并在开源数据集Criteo上验证模型效果。
本项目在paddlepaddle上实现FibiNET的网络结构,并在开源数据集Criteo上验证模型效果, 本模型配置默认使用demo数据集,若进行精度验证,请参考
[
论文复现
](
#论文复现
)
部分。
本项目支持功能
训练:单机CPU、单机单卡GPU、单机多卡GPU、本地模拟参数服务器训练、增量训练,配置请参考
[
启动训练
](
https://github.com/PaddlePaddle/PaddleRec/blob/master/doc/train.md
)
预测:单机CPU、单机单卡GPU ;配置请参考
[
PaddleRec 离线预测
](
https://github.com/PaddlePaddle/PaddleRec/blob/master/doc/predict.md
)
## 数据
下载及预处理
## 数据
准备
数据地址:
[
Criteo
](
https://fleet.bj.bcebos.com/ctr_data.tar.gz
)
...
...
@@ -36,15 +58,33 @@
sh run.sh
```
## 环境
原始的数据格式为13个dense部分特征+离散化特征,用'
\t
'切分, 对应的数据是data/train_data_full data/test_data_full
```
0 1 1 5 0 1382 4 15 2 181 1 2 2 68fd1e64 80e26c9b fb936136 7b4723c4 25c83c98 7e0ccccf de7995b8 1f89b562 a73ee510 a8cd5504 b2cb9c98 37c9c164 2824a5f6 1adce6ef 8ba8b39a 891b62e7 e5ba7672 f54016b9 21ddcdc9 b1252a9d 07b5194c 3a171ecb c5c50484 e8b83407 9727dd16
```
经过get_slot_data.py处理后,得到如下数据, dense_feature中的值会merge在一起,对应net.py中的self._dense_data_var, '1:715353'表示net.py中的self._sparse_data_var[1] = 715353, 对应的数据是data/slot_train_data_full, data/slot_test_data_full
```
click:0 dense_feature:0.05 dense_feature:0.00663349917081 dense_feature:0.05 dense_feature:0.0 dense_feature:0.02159375 dense_feature:0.008 dense_feature:0.15 dense_feature:0.04 dense_feature:0.362 dense_feature:0.1 dense_feature:0.2 dense_feature:0.0 dense_feature:0.04 1:715353 2:817085 3:851010 4:833725 5:286835 6:948614 7:881652 8:507110 9:27346 10:646986 11:643076 12:200960 13:18464 14:202774 15:532679 16:729573 17:342789 18:562805 19:880474 20:984402 21:666449 22:26235 23:700326 24:452909 25:884722 26:787527
```
PaddlePaddle 1.7.2
## 运行环境
python3.7
PaddlePaddle>=1.7.2
PaddleRec
python 2.7/3.5/3.6/3.7
## 单机训练
PaddleRec >=0.1
os : windows/linux/macos
## 快速开始
### 单机训练
CPU环境
...
...
@@ -73,7 +113,7 @@ runner:
phases: [phase1]
```
## 单机预测
##
#
单机预测
CPU环境
...
...
@@ -90,17 +130,15 @@ CPU环境
phases: [phase2]
```
## 运行
### 运行
```
python -m paddlerec.run -m paddlerec.models.rank.fibinet
```
## 模型效果
在样例数据上测试模型
### 结果展示
训练
:
样例数据训练结果展示
:
```
Running SingleStartup.
...
...
@@ -122,7 +160,7 @@ batch: 1800, AUC: [0.85260467], BATCH_AUC: [0.92847032]
epoch 3 done, use time: 1618.1106688976288
```
预测
样例数据预测结果展示
```
load persistables from increment_model/3
...
...
@@ -136,3 +174,18 @@ batch: 1800, AUC: [0.86633785], BATCH_AUC: [0.96900967]
batch: 1820, AUC: [0.86662365], BATCH_AUC: [0.96759972]
```
## 论文复现
用原论文的完整数据复现论文效果需要在config.yaml中修改batch_size=1000, thread_num=8, epoch_num=4
使用gpu p100 单卡训练 60h 测试auc:0.79
修改后运行方案:修改config.yaml中的'workspace'为config.yaml的目录位置,执行
```
python -m paddlerec.run -m /home/your/dir/config.yaml #调试模式 直接指定本地config的绝对路径
```
## 进阶使用
## FAQ
models/rerank/listwise/config.yaml
浏览文件 @
fdfce57e
...
...
@@ -17,29 +17,30 @@ workspace: "paddlerec.models.rerank.listwise"
dataset
:
-
name
:
dataset_train
batch_size
:
5
type
:
DataLoader
data_path
:
"
{workspace}/data/train"
data_converter
:
"
{workspace}/random_reader.py"
-
name
:
dataset_infer
batch_size
:
5
type
:
DataLoader
data_path
:
"
{workspace}/data/test"
data_converter
:
"
{workspace}/random_reader.py"
hyper_parameters
:
optimizer
:
class
:
sgd
learning_rate
:
0.01
strategy
:
async
hidden_size
:
128
user_vocab
:
200
item_vocab
:
1000
item_len
:
5
embed_size
:
16
batch_size
:
1
optimizer
:
class
:
sgd
learning_rate
:
0.01
strategy
:
async
#use infer_runner mode and modify 'phase' below if infer
mode
:
train_runner
#mode: infer_runner
mode
:
[
train_runner
,
infer_runner
]
runner
:
-
name
:
train_runner
...
...
@@ -48,19 +49,22 @@ runner:
epochs
:
3
save_checkpoint_interval
:
2
save_inference_interval
:
4
save_checkpoint_path
:
"
increment"
save_checkpoint_path
:
"
increment
_listwise
"
save_inference_path
:
"
inference"
print_interval
:
1
phases
:
[
train
]
-
name
:
infer_runner
class
:
infer
init_model_path
:
"
increment
/0
"
init_model_path
:
"
increment
_listwise/2
"
device
:
cpu
phases
:
[
infer
]
phase
:
-
name
:
train
model
:
"
{workspace}/model.py"
dataset_name
:
dataset_train
thread_num
:
1
#
- name: infer
#
model: "{workspace}/model.py"
#
dataset_name: dataset_infer
#
thread_num: 1
-
name
:
infer
model
:
"
{workspace}/model.py"
dataset_name
:
dataset_infer
thread_num
:
1
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录