2.4 KiB
2.4 KiB
概念异动检测 ML 模块
基于 Transformer Autoencoder 的概念异动检测系统。
环境要求
- Python 3.8+
- PyTorch 2.0+ (CUDA 12.x for 5090 GPU)
- ClickHouse, MySQL, Elasticsearch
数据库配置
当前配置(prepare_data.py):
- MySQL:
192.168.1.5:3306 - Elasticsearch:
127.0.0.1:9200 - ClickHouse:
127.0.0.1:9000
快速开始
# 1. 安装依赖
pip install -r ml/requirements.txt
# 2. 安装 PyTorch (5090 需要 CUDA 12.4)
pip install torch --index-url https://download.pytorch.org/whl/cu124
# 3. 运行训练
chmod +x ml/run_training.sh
./ml/run_training.sh
文件说明
| 文件 | 说明 |
|---|---|
model.py |
Transformer Autoencoder 模型定义 |
prepare_data.py |
数据提取和特征计算 |
train.py |
模型训练脚本 |
inference.py |
推理服务 |
enhanced_detector.py |
增强版检测器(融合 Alpha + ML) |
训练参数
# 完整参数
./ml/run_training.sh --start 2022-01-01 --end 2024-12-01 --epochs 100 --batch_size 256
# 只准备数据
python ml/prepare_data.py --start 2022-01-01
# 只训练(数据已准备好)
python ml/train.py --epochs 100 --batch_size 256 --lr 1e-4
模型架构
输入: (batch, 30, 6) # 30分钟序列,6个特征
↓
Positional Encoding
↓
Transformer Encoder (4层, 8头, d=128)
↓
Bottleneck (压缩到 32 维)
↓
Transformer Decoder (4层)
↓
输出: (batch, 30, 6) # 重构序列
异动判断: reconstruction_error > threshold
6维特征
alpha- 超额收益(概念涨幅 - 大盘涨幅)alpha_delta- Alpha 5分钟变化amt_ratio- 成交额 / 20分钟均值amt_delta- 成交额变化率rank_pct- Alpha 排名百分位limit_up_ratio- 涨停股占比
训练产出
训练完成后,ml/checkpoints/ 包含:
best_model.pt- 最佳模型权重thresholds.json- 异动阈值 (P90/P95/P99)normalization_stats.json- 数据标准化参数config.json- 训练配置
使用示例
from ml.inference import ConceptAnomalyDetector
detector = ConceptAnomalyDetector('ml/checkpoints')
# 实时检测
is_anomaly, score = detector.detect(
concept_name="人工智能",
features={
'alpha': 2.5,
'alpha_delta': 0.8,
'amt_ratio': 1.5,
'amt_delta': 0.3,
'rank_pct': 0.95,
'limit_up_ratio': 0.15,
}
)
if is_anomaly:
print(f"检测到异动!分数: {score}")