kt-hyperopt Skill
使用 Wandb Sweep 进行 pyKT 模型超参数自动调优的工具集。
何时使用此技能
当您需要:
- •自动搜索最优超参数:使用贝叶斯优化寻找最佳配置
- •系统性调参实验:对比不同参数组合的效果
- •与 kt-experiment 集成:用最优配置运行交叉验证
快速开始
1. 运行超参数搜索
bash
# 使用 DKT 配置运行搜索 python scripts/run_sweep.py --config configs/dkt_sweep.yaml --dataset assist2009 # 自定义搜索次数 python scripts/run_sweep.py --config configs/akt_sweep.yaml --dataset assist2015 --count 30
2. 分析搜索结果
bash
# 分析 sweep 结果 python scripts/analyze_sweep.py --sweep_id xxx --output ./analysis
3. 提取最佳配置并运行 CV
bash
# 提取最佳参数并运行 5-fold CV python scripts/find_best.py --sweep_id xxx --model dkt --datasets assist2009,assist2015
脚本参考
run_sweep.py - 执行超参数搜索
参数:
| 参数 | 短 | 必需 | 默认 | 描述 |
|---|---|---|---|---|
--config | -c | 是 | - | Sweep 配置文件 |
--dataset | -d | 是 | - | 数据集名称 |
--count | -n | 否 | 无限制 | 最大运行次数 |
--project | -p | 否 | 默认 | W&B 项目名 |
示例:
bash
# 基本用法 python run_sweep.py --config configs/dkt_sweep.yaml --dataset assist2009 # 限制运行次数 python run_sweep.py --config configs/akt_sweep.yaml --dataset assist2015 --count 20 # 指定项目名 python run_sweep.py --config configs/dkt_sweep.yaml --dataset assist2009 --project my_kt
analyze_sweep.py - 分析搜索结果
参数:
| 参数 | 短 | 必需 | 默认 | 描述 |
|---|---|---|---|---|
--sweep_id | -s | 是 | - | W&B Sweep ID |
--output | -o | 否 | ./sweep_analysis.json | 输出文件 |
--top_n | -n | 否 | 20 | 分析前 N 个结果 |
示例:
bash
# 基本分析 python analyze_sweep.py --sweep_id xxx # 保存结果 python analyze_sweep.py --sweep_id xxx --output ./analysis/results.json --top_n 10
输出:
json
{
"results": [
{
"run_id": "xxx",
"learning_rate": 0.001,
"emb_size": 200,
"dropout": 0.1,
"validauc": 0.8234,
"validacc": 0.7567
}
]
}
find_best.py - 提取最佳配置并运行 CV
参数:
| 参数 | 短 | 必需 | 默认 | 描述 |
|---|---|---|---|---|
--sweep_id | -s | 是 | - | W&B Sweep ID |
--model | -m | 是 | - | 模型名称 |
--datasets | -d | 否 | assist2009 | 数据集列表 |
--folds | -f | 否 | 5 | 交叉验证折数 |
--top_k | -k | 否 | 3 | 测试的 Top K 配置 |
示例:
bash
# 提取最佳配置并运行 CV python find_best.py --sweep_id xxx --model dkt --datasets assist2009 # 多数据集 python find_best.py --sweep_id xxx --model akt --datasets assist2009,assist2015 --folds 5
配置文件
预定义配置
| 文件 | 模型 | 描述 |
|---|---|---|
configs/dkt_sweep.yaml | DKT | 搜索 emb_size, dropout, learning_rate |
configs/akt_sweep.yaml | AKT | 搜索 d_model, n_blocks, learning_rate |
configs/simplekt_sweep.yaml | SimpleKT | 搜索 d_model, n_blocks, dropout |
configs/template_sweep.yaml | 通用 | 可自定义的模板 |
配置结构
yaml
# DKT 配置示例
program: ../pykt-toolkit/examples/wandb_train.py
method: bayes # bayes, grid, random
metric:
goal: maximize
name: validauc
parameters:
learning_rate:
distribution: log_uniform
min: 1e-4
max: 1e-2
emb_size:
values: [64, 128, 200, 256]
dropout:
min: 0.0
max: 0.3
command:
- ${env}
- python
- ${program}
- --model_name
- dkt
- --learning_rate
- ${learning_rate}
# ...
early_terminate:
type: hyperband
min_iter: 10
集成 kt-experiment
find_best.py 会自动调用 kt-experiment 来运行交叉验证:
code
find_best.py
↓
kt-experiment/scripts/run_cv.py
↓
5-fold CV on optimal config
常见问题
Q1: Wandb 未安装?
bash
pip install wandb wandb login
Q2: Sweep 创建失败?
bash
# 检查配置
python -c "import yaml; yaml.safe_load(open('configs/dkt_sweep.yaml'))"
# 检查程序路径
ls ../pykt-toolkit/examples/wandb_train.py
Q3: 如何选择搜索方法?
| 方法 | 适用场景 |
|---|---|
bayes | 连续参数,搜索空间大(推荐) |
grid | 少量离散参数 |
random | 快速探索,大规模搜索 |
相关技能
- •kt-experiment: 运行交叉验证实验
- •kt-model-dev: 开发新模型
- •dataset-prep: 准备数据
Last updated: 2026-02-02