readme.md 4.0 KB
Newer Older
M
gnn  
malin10 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76
# GNN

## 快速开始
PaddleRec中每个内置模型都配备了对应的样例数据,用户可基于该数据集快速对模型、环境进行验证,从而降低后续的调试成本。在内置数据集上进行训练的命令为:
```
python -m paddlerec.run -m paddlerec.models.recall.gnn 
```

## 数据处理
- Step1: 原始数据数据集下载,本示例提供了两个开源数据集:DIGINETICA和Yoochoose,可选其中任意一个训练本模型。
    ```
    cd data && python download.py diginetica     # or yoochoose
    ```
    > [Yoochooses](https://2015.recsyschallenge.com/challenge.html)数据集来源于RecSys Challenge 2015,原始数据包含如下字段:
    1. Session ID – the id of the session. In one session there are one or many clicks.
    2. Timestamp – the time when the click occurred.
    3. Item ID – the unique identifier of the item.
    4. Category – the category of the item.

    > [DIGINETICA](https://competitions.codalab.org/competitions/11161#learn_the_details-data2)数据集来源于CIKM Cup 2016 _Personalized E-Commerce Search Challenge_项目。原始数据包含如下字段:
    1. sessionId - the id of the session. In one session there are one or many clicks.
    2. userId - the id of the user, with anonymized user ids.
    3. itemId - the unique identifier of the item.
    4. timeframe - time since the first query in a session, in milliseconds.
    5. eventdate - calendar date.

- Step2: 数据预处理
    ```
    cd data && python preprocess.py --dataset diginetica   # or yoochoose
    ```
    1. 以session_id为key合并原始数据集,得到每个session的日期,及顺序点击列表。
    2. 过滤掉长度为1的session;过滤掉点击次数小于5的items。
    3. 训练集、测试集划分。原始数据集里最新日期七天内的作为测试集,更早之前的数据作为测试集。

- Step3: 数据整理。 将训练文件统一放在data/train目录下,测试文件统一放在data/test目录下。
    ```
    cat data/diginetica/train.txt | wc -l >> data/config.txt    # or yoochoose1_4 or yoochoose1_64
    rm -rf data/train/*
    rm -rf data/test/*
    mv data/diginetica/train.txt data/train
    mv data/diginetica/test.txt data/test
    ```
数据处理完成后,data/train目录存放训练数据,data/test目录下存放测试数据,data/config.txt中存放数据统计信息,用以配置模型超参。

方便起见, 我们提供了一键式数据处理脚本:
```
sh data_prepare.sh diginetica      # or yoochoose1_4 or yoochoose1_64
```

## 实验配置

为在真实数据中复现论文中的效果,你还需要完成如下几步,PaddleRec所有配置均通过修改模型目录下的config.yaml文件完成:

1. 真实数据配置。config.yaml中数据集相关配置见`dataset`字段,数据路径通过`data_path`进行配置。用户可以直接将workspace修改为当前项目目录的绝对路径完成设置。
2. 超参配置。
    - batch_size: 修改config.yaml中dataset_train数据集的batch_size为100。
    - epochs: 修改config.yaml中runner的epochs为5。
    - sparse_feature_number: 不同训练数据集(diginetica or yoochoose)配置不一致,diginetica数据集配置为43098,yoochoose数据集配置为37484。具体见数据处理后得到的data/config.txt文件中第一行。
    - corpus_size: 不同训练数据集配置不一致,diginetica数据集配置为719470,yoochoose数据集配置为5917745。具体见数据处理后得到的data/config.txt文件中第二行。

## 训练
在完成[实验配置](##实验配置)后,执行如下命令完成训练:
```
python -m paddlerec.run -m ./config.yaml
```

## 测试
开始测试前,你需要完成如下几步配置:
1. 修改config.yaml中的mode,为infer_runner。
2. 修改config.yaml中的phase,为phase_infer,需按提示注释掉phase_trainer。
3. 修改config.yaml中dataset_infer数据集的batch_size为100。

完成上面两步配置后,执行如下命令完成测试:
```
python -m paddlerec.run -m ./config.yaml
```