表格Transformer用于建模多变量时间序列
此仓库提供了表格Transformer(TabFormer)的pytorch源代码和数据。详细内容请参见将在ICASSP 2021上展示的论文表格Transformer用于建模多变量时间序列。
摘要
- 层级Transformer用于表格数据的模块
- 一个合成的信用卡交易数据集
- 修改后的自适应Softmax以处理掩码
- 修改后的_DataCollatorForLanguageModeling_用于表格数据
- 模块基于HuggingFace的transformer构建。(HuggingFace是❤️)
需求
- Python (3.7)
- Pytorch (1.6.0)
- HuggingFace / Transformer (3.2.0)
- scikit-learn (0.23.2)
- Pandas (1.1.2)
(X) 表示代码测试的版本。
可以通过运行以下命令使用yaml安装这些依赖:
conda env create -f setup.yml
信用卡交易数据集
合成的信用卡交易数据集位于./data/credit_card中。该数据集有2400万条记录和12个字段。
你需要git-lfs才能访问数据。如果遇到LFS带宽问题,可以使用这个直接链接来访问数据。然后你可以在git clone ..
命令前加上GIT_LFS_SKIP_SMUDGE=1
忽略git-lfs文件。
PRSA数据集
对于PRSA数据集,你需要从Kaggle下载并将其放置在./data/card目录中。
表格BERT
要在信用卡交易或PRSA数据集上训练表格BERT模型,请运行:
$ python main.py --do_train --mlm --field_ce --lm_type bert \
--field_hs 64 --data_type [prsa/card] \
--output_dir [output_dir]
表格GPT2
要为某一特定用户ID在信用卡交易数据上训练表格GPT2模型,请运行:
$ python main.py --do_train --lm_type gpt2 --field_ce --flatten --data_type card \
--data_root [path_to_data] --user_ids [user-id] \
--output_dir [output_dir]
选项描述(更多内容请见_args.py
_):
--data_type
选项有prsa
和card
,分别对应北京PM2.5数据集和信用卡交易数据集。--mlm
用于掩码语言模型;用于BERT的transformer训练器选项--field_hs
字段级transformer的隐藏层大小--lm_type
选项有bert
和gpt2
--user_ids
选项用于选择特定用户ID的交易。
引用
@inproceedings{padhi2021tabular,
title={Tabular transformers for modeling multivariate time series},
author={Padhi, Inkit and Schiff, Yair and Melnyk, Igor and Rigotti, Mattia and Mroueh, Youssef and Dognin, Pierre and Ross, Jerret and Nair, Ravi and Altman, Erik},
booktitle={ICASSP 2021-2021 IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP)},
pages={3565--3569},
year={2021},
organization={IEEE},
url={https://ieeexplore.ieee.org/document/9414142}
}