This project is now organized into 3 steps only:
- Data Preprocessing
- Pretraining (PEBG)
- Training (PEBG+DKT)
Supported datasets:
assist09assist17statics2011xes3g5m
- Python 3.8+
- PyTorch
- NumPy
- SciPy
- pandas
- scikit-learn
- tqdm
Install:
pip install torch numpy scipy pandas scikit-learn tqdmUse the unified preprocessing entry:
python preprocess.py --dataset <dataset_name>Examples:
python preprocess.py --dataset assist09
python preprocess.py --dataset assist17
python preprocess.py --dataset statics2011
python preprocess.py --dataset xes3g5mWhat Step 1 does internally:
- Runs dataset-specific raw preprocessing script in
Data/ - Converts intermediate files to PEBG format (
prepare_dataset.py) - Builds graph similarity files (
extract.py)
Step 1 output directory:
datasets/assist09datasets/assist17datasets/statics2011datasets/xes3g5m
Each prepared dataset directory includes:
<dataset_name>.npzpro_feat.npzpro_skill_sparse.npzpro_pro_sparse.npzskill_skill_sparse.npzskill_id_dict.txt
Optional args for Step 1:
python preprocess.py --dataset assist17 --max-len 200 --min-len 3 --split allRun PEBG pretraining:
python pebg.py --data-dir datasets/<dataset_name> --epochs 200Example:
python pebg.py --data-dir datasets/assist17 --epochs 200Outputs:
datasets/<dataset_name>/embedding_200.npzdatasets/<dataset_name>/pebg_model/pebg_*.pt
For large datasets, start with faster settings:
python pebg.py --data-dir datasets/assist09 --epochs 20 --batch-size 2048 --neg-k 10 --skill-sample-size 512Train downstream KT model:
python pebg_dkt.py \
--data-dir datasets/<dataset_name> \
--dataset-name <dataset_name> \
--use-pretrain \
--embedding-file embedding_200.npz \
--epochs 200 \
--save-root runsExample:
python pebg_dkt.py --data-dir datasets/assist17 --dataset-name assist17 --use-pretrain --embedding-file embedding_200.npz --epochs 200 --save-root runsPer epoch output:
- train loss
- test AUC
- test ACC
Saved model/logs (per dataset):
runs/<dataset_name>/best_model.ptruns/<dataset_name>/metrics.csv
best_model.pt is selected by best test AUC.
Using assist17:
python preprocess.py --dataset assist17
python pebg.py --data-dir datasets/assist17 --epochs 200
python pebg_dkt.py --data-dir datasets/assist17 --dataset-name assist17 --use-pretrain --embedding-file embedding_200.npz --epochs 200 --save-root runs- Missing raw CSV files in
Data/<DATASET_DIR>/
- Put dataset files into expected locations under
Data/first.
- Missing
embedding_200.npz
- Finish Step 2 before Step 3.
- If you used different pretrain epochs, set matching
--embedding-file.
- Slow pretraining on very large datasets
- Reduce epochs for smoke test
- Increase
--batch-sizeif memory allows - Reduce
--neg-kand--skill-sample-size