---
phase: 11-predictv3
plan: 02
subsystem: prediction
tags: [confidence, prediction, evaluation, metrics]
dependencies:
  requires: [11-01]
  provides: [confidence_evaluation]
  affects: [getPredictionV3]
tech_stack:
  added: [confidence_calculation, weighted_scoring]
  patterns: [multi_dimension_weighted_average, data_threshold_check]
key_files:
  created: []
  modified:
    - path: application/admin/model/History.php
      changes:
        - 新增 _calculateConfidence 方法
        - 新增 _getHistoricalHitRateByRank 方法
        - 新增 _getScoreDistributionConfidence 方法
        - 新增 _getScoreConcentration 方法
        - getPredictionV3 新增 confidence 字段返回
key_decisions:
  - 三维度加权公式: 0.4*历史命中率 + 0.3*得分分布 + 0.3*集中度
  - 数据量阈值设为50期，不足时返回警告并使用估算
  - 置信度阈值: >=70%高、50-70%中、<50%低
  - 无回测数据时使用排名估算公式: 1 - (rank-1)*0.15
metrics:
  duration: 5min
  tasks_completed: 2
  files_modified: 1
  lines_added: 180
completed_at: "2026-05-01T07:15:00Z"
---

# Phase 11 - Plan 02: 置信度评估实现 Summary

## 一句话总结

为预测结果添加三维度加权置信度评估，帮助用户判断预测可靠性。

## 实现内容

### Task 1: 置信度核心计算方法

在 `History.php` 中新增 4 个方法:

| 方法 | 功能 |
|------|------|
| `_calculateConfidence` | 主计算方法，返回置信度分数和整体置信度 |
| `_getHistoricalHitRateByRank` | 基于历史排名统计命中率 |
| `_getScoreDistributionConfidence` | 计算得分在 Top5 中的分布比例 |
| `_getScoreConcentration` | 计算得分集中度（与平均值的差距） |

**加权公式:**
```
confidence = 0.4 * 历史命中率 + 0.3 * 得分分布 + 0.3 * 得分集中度
```

**数据量检查:**
- 回测数据不足 50 期时返回 `data_warning` 警告
- 无回测数据时使用估算公式: `1 - (rank-1) * 0.15`

### Task 2: getPredictionV3 集成

在 `getPredictionV3` 返回结构中新增 `confidence` 字段:

```php
return [
    'predictions' => $predictions,
    // ... 其他字段 ...
    'confidence' => $confidence  // 新增
];
```

`confidence` 结构:
```php
[
    'confidence_scores' => [...],  // 各号码置信度详情
    'overall_confidence' => 65.5,  // Top5 平均置信度
    'data_warning' => null        // 数据不足警告
]
```

## Deviations from Plan

None - plan executed exactly as written.

## Verification Results

所有验收标准满足:

- `_calculateConfidence` 方法已实现
- `_getHistoricalHitRateByRank` 方法已实现
- `_getScoreDistributionConfidence` 方法已实现
- `_getScoreConcentration` 方法已实现
- `minDataThreshold` 参数存在（50期阈值）
- `score_concentration` 在返回结构中存在
- `getPredictionV3` 返回结构包含 `confidence` 字段
- 所有方法包含函数级注释

## Self-Check: PASSED

- 文件已修改: application/admin/model/History.php
- 提交已创建: 663d83c
- 所有方法已实现并包含注释