CostPrediction/docs/dev/design.md

9.0 KiB
Raw Blame History

装备成本估算系统设计方案

一、系统概述

本系统旨在通过装备的技术参数,利用机器学习方法对装备成本进行估算。系统采用前后端分离架构,主要包含数据预处理、特征分析、模型训练和成本预测等模块。

二、系统架构

1. 技术架构

  • 前端Vue.js + Element UI
  • 后端Python Flask
  • 数据库: Mysql
  • 机器学习框架TensorFlow, Scikit-learn

2. 系统模块

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)
  • 特点:

    • 使用二阶导数进行优化,收敛更快
    • 支持自定义损失函数
    • 内置正则化,防止过拟合
    • 支持特征重要性评估
  • 配置:

    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'  # 回归任务
    )
    
  1. LightGBM (Light Gradient Boosting Machine)
  • 特点:

    • 基于直方图的决策树算法,训练速度快
    • 支持类别特征的直接输入
    • 叶子优先的生长策略
    • 内存占用小
  • 配置:

    LGBMRegressor(
        n_estimators=100,
        learning_rate=0.1,
        max_depth=3,
        num_leaves=8,          # 控制树的复杂度
        subsample=0.8,
        colsample_bytree=0.8,
        objective='regression'
    )
    
  1. GBDT (Gradient Boosting Decision Tree)
  • 特点:

    • 经典的梯度提升算法
    • 较好的可解释性
    • 对异常值不敏感
    • 预测稳定性好
  • 配置:

    GradientBoostingRegressor(
        n_estimators=100,
        learning_rate=0.1,
        max_depth=3,
        subsample=0.8
    )
    
  1. Random Forest (随机森林)
  • 特点:

    • Bagging集成方法
    • 训练过程可并行化
    • 不易过拟合
    • 对特征尺度不敏感
  • 配置:

    RandomForestRegressor(
        n_estimators=100,
        max_depth=3,
        min_samples_split=3,
        min_samples_leaf=2
    )
    

2.2 模型选择策略

  1. 交叉验证
  • 小样本数据集使用留一法LOO交叉验证
  • 大样本数据集使用5折交叉验证
  1. 模型评估指标
  • R²分数评估拟合优度
  • 标准差:评估预测稳定性
  • MAE评估预测误差
  • MSE惩罚较大误差
  1. 自动模型选择
  • 对每个模型进行交叉验证评估
  • 选择R²分数最高的模型
  • 保存模型训练历史记录

2.3 特征工程与模型优化

  1. 特征选择
  • 使用模型的特征重要性评分
  • 基于互信息的特征筛选
  • 相关性分析去除冗余特征
  1. 参数优化
  • 针对小样本:
    • 减小模型复杂度(树的深度和数量)
    • 增加正则化强度
    • 使用较大的学习率
  • 针对大样本:
    • 增加模型复杂度
    • 减小学习率
    • 使用特征采样
  1. 集成策略
  • 模型投票:综合多个模型的预测结果
  • 置信区间使用bootstrap方法估计预测不确定性
  • 异常检测:识别并处理异常预测值

3. 成本预测模块

  • 数据标准化处理
  • 模型预测流程
  • 置信区间计算
  • 预测评估指标
    • MAE(平均绝对误差)
    • MSE(均方误差)
    • RMSE(均方根误差)
    • R²(决定系数)

4. 数据管理模块

4.1 数据查询优化

  1. 特殊参数查询策略
  • 使用子查询替代 JOIN 操作,避免数据重复和空值问题
  • 使用 COALESCE 确保返回空数组而不是 NULL
  • 在 WHERE 子句中添加条件确保只获取有效参数
  • 简化查询结构,移除不必要的 GROUP BY 子句
  1. 查询性能优化
  • 数据结构清晰,每个装备保持单一记录
  • 特殊参数组织在 JSON 数组中
  • 避免空值和无效数据的显示
  • 优化查询性能,减少复杂的 JOIN 和 GROUP BY 操作

4.2 数据展示

  1. 基本信息展示
  • 装备基本参数表格展示
  • 支持搜索和过滤功能
  • 分类显示不同类型装备数据
  1. 特殊参数展示
  • 在详情页面显示装备特有参数
  • 支持特殊参数的格式化显示
  • 根据参数类型自动添加单位
  • 区分数值类型和文本类型参数
  1. 数据编辑功能
  • 支持基本参数和特殊参数的编辑
  • 根据参数类型提供不同的编辑控件
  • 数值类型参数支持精度控制
  • 保存时进行数据验证

4.3 数据维护

  1. 数据导入导出
  • 支持 Excel 模板导入
  • 提供数据模板下载
  • 导入时进行数据验证和错误提示
  1. 数据删除
  • 级联删除相关数据
  • 删除前进行确认
  • 删除后自动刷新数据列表
  1. 数据更新
  • 支持单条记录更新
  • 保存时进行数据完整性验证
  • 更新后实时刷新显示

4.4 扩展性设计

  1. 参数管理
  • 支持动态添加特殊参数
  • 参数定义包含名称、单位、说明等
  • 支持参数值类型定义
  1. 数据结构
  • 采用灵活的数据模型设计
  • 支持不同类型装备的差异化参数
  • 便于后续功能扩展
  1. 接口设计
  • 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. 文档完善