CostPrediction/docs/design.md
2024-11-08 23:43:57 +08:00

434 lines
9.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 装备成本估算系统设计方案
## 一、系统概述
本系统旨在通过装备的技术参数,利用机器学习方法对装备成本进行估算。系统采用前后端分离架构,主要包含数据预处理、特征分析、模型训练和成本预测等模块。
## 二、系统架构
### 1. 技术架构
- 前端Vue.js + Element UI
- 后端Python Flask
- 数据库: Mysql
- 机器学习框架TensorFlow, Scikit-learn
### 2. 系统模块
```mermaid
graph TD
A[装备成本估算系统] --> B[数据预处理模块]
A --> C[特征分析模块]
A --> D[模型训练模块]
A --> E[成本预测模块]
A --> F[系统管理模块]
```
## 三、数据模型设计
### 1. 数据库表结构
#### 装备基本信息表(equipment)
- id: 主键
- name: 装备名称
- type: 装备类型
- manufacturer: 制造商
- created_at: 创建时间
#### 技术参数表(technical_params)
##### 尺寸参数
- length_m: 总长(m)
- width_m: 宽度(m)
- height_m: 高度(m)
- weight_standard_kg: 标准重量(kg)
- weight_combat_kg: 战斗重量(kg)
##### 火力参数
- firing_angle_horizontal: 方向射界(度)
- firing_angle_vertical: 高低射界(度)
- rocket_length_m: 火箭弹长度(m)
- rocket_diameter_mm: 弹体直径(mm)
- rocket_weight_kg: 火箭弹重量(kg)
##### 性能参数
- max_speed_ms: 最大速度(m/s)
- max_range_km: 最大射程(km)
- warhead_weight_kg: 战斗部重量(kg)
##### 其他参数
- mobility_type: 机动性类型
- wheel_arrangement: 轮式布局
- amphibious: 两栖能力
#### 成本数据表(cost_data)
- equipment_id: 装备ID
- actual_cost: 实际成本
- predicted_cost: 预测成本
- prediction_date: 预测日期
## 四、核心功能模块设计
### 1. 特征工程模块
- 数据预处理
- 数据清洗
- 缺失值处理
- 异常值检测
- 数据标准化
- 特征衍生
- 功重比(power_weight_ratio)
- 体积(volume)
- 射程速度比(range_speed_ratio)
- 战斗部比例(warhead_rocket_ratio)
- 特征选择
- 方差分析
- 相关性分析
- 互信息分析
- 一致性分析
- rwg值计算组内一致性
- ICC值计算组内相关系数
### 2. 模型训练模块
#### 2.1 集成学习模型
1. XGBoost (eXtreme Gradient Boosting)
- 特点:
- 使用二阶导数进行优化,收敛更快
- 支持自定义损失函数
- 内置正则化,防止过拟合
- 支持特征重要性评估
- 配置:
```python
XGBRegressor(
n_estimators=100, # 树的数量适中,避免过拟合
learning_rate=0.1, # 较大的学习率,加快收敛
max_depth=3, # 较小的树深度,防止过拟合
min_child_weight=3, # 控制过拟合
subsample=0.8, # 随机采样,增加模型鲁棒性
colsample_bytree=0.8, # 特征采样,防止过拟合
objective='reg:squarederror' # 回归任务
)
```
2. LightGBM (Light Gradient Boosting Machine)
- 特点:
- 基于直方图的决策树算法,训练速度快
- 支持类别特征的直接输入
- 叶子优先的生长策略
- 内存占用小
- 配置:
```python
LGBMRegressor(
n_estimators=100,
learning_rate=0.1,
max_depth=3,
num_leaves=8, # 控制树的复杂度
subsample=0.8,
colsample_bytree=0.8,
objective='regression'
)
```
3. GBDT (Gradient Boosting Decision Tree)
- 特点:
- 经典的梯度提升算法
- 较好的可解释性
- 对异常值不敏感
- 预测稳定性好
- 配置:
```python
GradientBoostingRegressor(
n_estimators=100,
learning_rate=0.1,
max_depth=3,
subsample=0.8
)
```
4. Random Forest (随机森林)
- 特点:
- Bagging集成方法
- 训练过程可并行化
- 不易过拟合
- 对特征尺度不敏感
- 配置:
```python
RandomForestRegressor(
n_estimators=100,
max_depth=3,
min_samples_split=3,
min_samples_leaf=2
)
```
#### 2.2 模型选择策略
1. 交叉验证
- 小样本数据集使用留一法LOO交叉验证
- 大样本数据集使用5折交叉验证
2. 模型评估指标
- R²分数评估拟合优度
- 标准差:评估预测稳定性
- MAE评估预测误差
- MSE惩罚较大误差
3. 自动模型选择
- 对每个模型进行交叉验证评估
- 选择R²分数最高的模型
- 保存模型训练历史记录
#### 2.3 特征工程与模型优化
1. 特征选择
- 使用模型的特征重要性评分
- 基于互信息的特征筛选
- 相关性分析去除冗余特征
2. 参数优化
- 针对小样本:
- 减小模型复杂度(树的深度和数量)
- 增加正则化强度
- 使用较大的学习率
- 针对大样本:
- 增加模型复杂度
- 减小学习率
- 使用特征采样
3. 集成策略
- 模型投票:综合多个模型的预测结果
- 置信区间使用bootstrap方法估计预测不确定性
- 异常检测:识别并处理异常预测值
### 3. 成本预测模块
- 数据标准化处理
- 模型预测流程
- 置信区间计算
- 预测评估指标
- MAE(平均绝对误差)
- MSE(均方误差)
- RMSE(均方根误差)
- R²(决定系数)
### 4. 数据管理模块
#### 4.1 数据查询优化
1. 特殊参数查询策略
- 使用子查询替代 JOIN 操作,避免数据重复和空值问题
- 使用 COALESCE 确保返回空数组而不是 NULL
- 在 WHERE 子句中添加条件确保只获取有效参数
- 简化查询结构,移除不必要的 GROUP BY 子句
2. 查询性能优化
- 数据结构清晰,每个装备保持单一记录
- 特殊参数组织在 JSON 数组中
- 避免空值和无效数据的显示
- 优化查询性能,减少复杂的 JOIN 和 GROUP BY 操作
#### 4.2 数据展示
1. 基本信息展示
- 装备基本参数表格展示
- 支持搜索和过滤功能
- 分类显示不同类型装备数据
2. 特殊参数展示
- 在详情页面显示装备特有参数
- 支持特殊参数的格式化显示
- 根据参数类型自动添加单位
- 区分数值类型和文本类型参数
3. 数据编辑功能
- 支持基本参数和特殊参数的编辑
- 根据参数类型提供不同的编辑控件
- 数值类型参数支持精度控制
- 保存时进行数据验证
#### 4.3 数据维护
1. 数据导入导出
- 支持 Excel 模板导入
- 提供数据模板下载
- 导入时进行数据验证和错误提示
2. 数据删除
- 级联删除相关数据
- 删除前进行确认
- 删除后自动刷新数据列表
3. 数据更新
- 支持单条记录更新
- 保存时进行数据完整性验证
- 更新后实时刷新显示
#### 4.4 扩展性设计
1. 参数管理
- 支持动态添加特殊参数
- 参数定义包含名称、单位、说明等
- 支持参数值类型定义
2. 数据结构
- 采用灵活的数据模型设计
- 支持不同类型装备的差异化参数
- 便于后续功能扩展
3. 接口设计
- RESTful API 设计
- 统一的响应格式
- 完善的错误处理机制
## 五、API接口设计
### 1. 成本预测接口
- 路径POST /api/predict
- 必要参数:
- length_m: 总长
- width_m: 宽度
- height_m: 高度
- weight_standard_kg: 标准重量
- weight_combat_kg: 战斗重量
- max_range_km: 最大射程
- max_speed_ms: 最大速度
- 响应数据:
- predicted_cost: 预测成本
- confidence_interval: 置信区间(上下限)
### 2. 特征分析接口
- 路径POST /api/analyze-features
- 响应数据:
- important_features: 重要特征列表
- correlation_analysis: 相关性分析结果
## 六、部署要求
### 1. 环境要求
- Python 3.8+
- PostgreSQL 12+
- Node.js 14+
### 2. 依赖包
- Flask
- NumPy
- Pandas
- Scikit-learn
- TensorFlow
- SQLAlchemy
### 3. 部署步骤
1. 数据库初始化
- 创建数据库
- 执行表结构脚本
- 导入基础数据
2. 后端服务部署
- 安装依赖包
- 配置环境变量
- 启动服务
3. 前端部署
- 安装依赖
- 构建生产版本
- 配置Nginx
## 七、后续优化建议
### 1. 特征工程优化
- 增加更多领域特征
- 火力密度指标
- 机动性综合指标
- 作战效能指标
- 优化特征选择算法
- 增强数据清洗能力
### 2. 模型优化
- 引入集成学习方法
- Random Forest
- XGBoost
- LightGBM
- 实现模型自动调优
- 增加在线学习能力
### 3. 系统优化
- 增加批量处理能力
- 实现模型版本管理
- 提升预测结果可解释性
- 优化系统性能
- 数据库索引优化
- 缓存策略
- API性能优化
### 4. 安全性优化
- 数据加密存储
- API访问认证
- 操作日志记录
- 数据备份策略
## 八、项目进度规划
### 第一阶段基础功能开发4周
1. 数据库设计和实现
2. 特征工程模块开发
3. 基础API实现
### 第二阶段模型开发4周
1. 数据预处理
2. 模型训练与优化
3. 预测功能实现
### 第三阶段系统集成3周
1. 前端开发
2. 系统集成测试
3. 性能优化
### 第四阶段系统测试与部署2周
1. 系统测试
2. 部署上线
3. 文档完善