docs(11-04): complete plan 11-04 - 权重网格搜索优化
This commit is contained in:
@@ -0,0 +1,119 @@
|
||||
---
|
||||
phase: 11-predictv3
|
||||
plan: 04
|
||||
subsystem: predictV3
|
||||
tags:
|
||||
- 权重优化
|
||||
- 网格搜索
|
||||
- 回测
|
||||
- 参数调优
|
||||
dependencies:
|
||||
requires:
|
||||
- 11-01
|
||||
- 11-02
|
||||
provides:
|
||||
- optimizeWeights API
|
||||
- _optimizeWeightsGridSearch method
|
||||
affects:
|
||||
- History.php model
|
||||
- History.php controller
|
||||
tech_stack:
|
||||
added:
|
||||
- 权重网格搜索优化
|
||||
- 综合评分公式
|
||||
- 超时保护机制
|
||||
patterns:
|
||||
- 预定义配置集
|
||||
- 批量回测比较
|
||||
key_files:
|
||||
created: []
|
||||
modified:
|
||||
- path: application/admin/model/History.php
|
||||
changes: 新增 _optimizeWeightsGridSearch 方法(约160行)
|
||||
- path: application/admin/controller/History.php
|
||||
changes: 新增 optimizeWeights 接口入口,更新 noNeedRight 数组
|
||||
decisions:
|
||||
- 采用5种预定义权重配置进行网格搜索,而非随机参数空间搜索
|
||||
- 综合评分公式:hit_rate * 0.6 + ndcg_5 * 100 * 0.4,命中率权重更高
|
||||
- 超时保护默认60秒,允许用户自定义10-120秒范围
|
||||
metrics:
|
||||
duration: 2min
|
||||
completed_date: 2026-05-01
|
||||
task_count: 2
|
||||
file_count: 2
|
||||
---
|
||||
|
||||
# Phase 11 Plan 04: 权重网格搜索优化
|
||||
|
||||
## Summary
|
||||
|
||||
实现权重网格搜索优化功能,通过5种预定义权重配置批量回测,找出最优权重配置,提升算法预测准确性。
|
||||
|
||||
## Changes
|
||||
|
||||
### Model: _optimizeWeightsGridSearch 方法
|
||||
|
||||
在 `application/admin/model/History.php` 新增私有方法,实现权重网格搜索优化:
|
||||
|
||||
- **5种预定义配置**:
|
||||
- 遗漏优先型:omit_regression=0.25(最高)
|
||||
- 转移概率优先型:transition_prob=0.25(最高)
|
||||
- 走势方向优先型:trend_direction=0.25(最高)
|
||||
- 平衡型:各维度权重较均衡
|
||||
- 组合特征优先型:combination=0.20(最高)
|
||||
|
||||
- **优化目标**:综合得分 = hit_rate * 0.6 + ndcg_5 * 100 * 0.4
|
||||
|
||||
- **超时保护**:默认60秒,超时后停止剩余配置测试,返回已完成结果
|
||||
|
||||
- **返回结构**:
|
||||
```php
|
||||
[
|
||||
'best_weights' => [], // 最优权重配置
|
||||
'best_hit_rate' => float, // 最优命中率
|
||||
'best_ndcg' => float, // 最优NDCG
|
||||
'best_combined_score' => float, // 最优综合得分
|
||||
'all_results' => [], // 所有配置测试结果(按得分降序)
|
||||
'periods' => int,
|
||||
'backtest_count' => int,
|
||||
'timeout_seconds' => int,
|
||||
'timed_out' => bool, // 是否超时中断
|
||||
'elapsed_time' => float // 实际耗时
|
||||
]
|
||||
```
|
||||
|
||||
### Controller: optimizeWeights 接口
|
||||
|
||||
在 `application/admin/controller/History.php` 新增公开方法:
|
||||
|
||||
- **参数验证**:
|
||||
- periods:统计期数,范围50-500,默认200
|
||||
- backtest:回测期数,范围10-100,默认30
|
||||
- timeout:超时秒数,范围10-120,默认60
|
||||
|
||||
- **超时警告**:超时时返回警告消息和已完成测试数量
|
||||
|
||||
- **权限配置**:已添加到 noNeedRight 数组
|
||||
|
||||
## Verification
|
||||
|
||||
```bash
|
||||
# grep 验证
|
||||
grep -n "_optimizeWeightsGridSearch" application/admin/model/History.php
|
||||
# 结果:3924行,方法签名存在
|
||||
|
||||
grep -n "optimizeWeights" application/admin/controller/History.php
|
||||
# 结果:25行(noNeedRight)、506行(方法定义)、526行(方法调用)
|
||||
```
|
||||
|
||||
## Deviations from Plan
|
||||
|
||||
None - plan executed exactly as written.
|
||||
|
||||
## Known Stubs
|
||||
|
||||
None.
|
||||
|
||||
## Threat Flags
|
||||
|
||||
None.
|
||||
Reference in New Issue
Block a user