littlebot
Published on 2025-04-11 / 2 Visits
0

【源码】基于PyTorch框架的广告受众基础属性预估系统

项目简介

本项目是基于PyTorch框架构建的广告受众基础属性预估系统,围绕赛题展开。赛题以用户91天内的广告点击历史记录作为训练集,目标是预测测试数据集中用户的年龄和性别。项目包含数据下载、预处理、特征提取、模型预训练与训练等环节,借助BERT预训练模型提取文本特征并结合其他特征训练模型,提升预测的准确性与效率。

项目的主要特性和功能

  • 运用BERT预训练模型提取文本特征,结合其他特征进行模型训练。
  • 提供数据预处理和特征提取脚本,实现数据整合与标准化。
  • 采用K折交叉验证训练流程,增强模型泛化能力。
  • 提供训练、验证、预测和结果提交脚本,方便生成提交文件。
  • 融合不同规模的预训练模型,可按需选择。

安装使用步骤

环境配置

确保已安装Pytorch,操作系统为Linux Ubuntu 16.04(256G内存,4*p100),并通过以下命令安装必要依赖库: shell pip install transformers==2.8.0 pandas gensim scikit-learn filelock gdown

数据下载

通过网站下载数据集到data目录,或运行以下命令: shell gdown https://drive.google.com/uc?id=15onAobxlim_uRUNWSMQuK6VxDsmGTtp4 unzip data.zip rm data.zip

数据预处理

运行python src/preprocess.py,将所有文件合并,分为点击记录文件(click.pkl)和用户文件(train_user.pkl/test_user.pkl)。

特征提取

运行python src/extract_features.py提取特征。

预训练Word2Vector与BERT

可选择重新预训练或下载预训练好的权重(二者必须一致):

预训练Word2Vector

  • 重新预训练:运行python src/w2v.py
  • 下载预训练好的: shell gdown https://drive.google.com/uc?id=1SUpukAeXR5Ymyf3wH3SRNdQ3Hl2HazQa unzip w2v.zip cp w2v/* data/ rm -r w2v*

预训练BERT

  • 重新预训练: shell cd BERT mkdir saved_models python run.py \ --output_dir saved_models \ --model_type roberta \ --config_name roberta-base \ --mlm \ --block_size 128 \ --per_gpu_train_batch_size 64 \ --per_gpu_eval_batch_size 64 \ --gradient_accumulation_steps 1 \ --learning_rate 5e-5 \ --weight_decay 0.01 \ --adam_epsilon 1e-6 \ --max_grad_norm 1.0 \ --max_steps 100000 \ --mlm_probability 0.2 \ --warmup_steps 10000 \ --logging_steps 50 \ --save_steps 10000 \ --evaluate_during_training \ --save_total_limit 500 \ --seed 123456 \ --tensorboard_dir saved_models/tensorboard_logs rm -r saved_models/bert-base cp -r saved_models/checkpoint-last saved_models/bert-base rm saved_models/bert-base/optimizer.pt cp saved_models/vocab.pkl saved_models/bert-base/vocab.pkl cd..
  • 下载预训练好的: shell gdown https://drive.google.com/uc?id=1ToAJwl_oRAeRNyYF_FK0B2APVXlPFTlq unzip bert-base.zip mv bert-base BERT/ rm bert-base.zip

训练模型

shell mkdir saved_models mkdir saved_models/log for((i=0;i<5;i++)); do python run.py \ --kfold=5 \ --index=$i \ --train_batch_size=256 \ --eval_steps=5000 \ --max_len_text=128 \ --epoch=5 \ --lr=1e-4 \ --output_path=saved_models \ --pretrained_model_path=BERT/bert-base \ --eval_batch_size=512 2>&1 | tee saved_models/log/$i.txt done 运行python src/merge_submission.py合并结果,生成submission.csv

低配置资源建议

  • 内存不足或只想简单跑完整代码,去掉src/prepocess.py的8、15、22行。
  • 显存不足,下载BERT-small模型,并调整batch size

运行完整过程

可运行bash run.sh,运行整个过程并生成结果;也可按上述步骤依次运行。

下载地址

点击下载 【提取码: 4003】【解压密码: www.makuang.net】