\chapter{实验结果与分析}

\section{实验环境}

本研究实验环境配置如下：
\begin{itemize}
    \item 操作系统：Windows 11 Home China
    \item 编程语言：Python 3.13
    \item 深度学习框架：PyTorch 2.12.0 (CUDA 12.6)
    \item GPU：NVIDIA GeForce RTX 4060 Laptop GPU (8 GB VRAM)
    \item 机器学习框架：XGBoost 2.0+，Scikit-learn 1.3+
    \item 内存：16 GB DDR4
    \item 环境管理：uv（虚拟环境 .venv）
\end{itemize}

\section{模型训练过程}

\subsection{数据集规模与划分}

经数据预处理管线处理后，共生成1,095,758条有效样本（焦作547,879 + 郑州547,879）。时间顺序分割：训练集767,030条（70\%），对应2010至约2020年中期；验证集164,363条（15\%），约2020-2022年中期；测试集164,365条（15\%），约2022-2024年。

每条样本包含14天×19个气象特征的输入序列（X），以及短（3天）、中（7天）、长（30天）三类预测目标（y）。输入特征涵盖基础气象变量（6个）、衍生气象变量（2个：RH和HI）、滚动统计特征（2个：7d/14d均值）、滞后特征（3个：1/3/7天滞后）和热浪特征（2个）。

\subsection{LSTM-Attention训练}

LSTM-Attention模型包含983,628个可训练参数，采用Focal Loss（$\alpha=0.5, \gamma=2.0$）作为损失函数。训练配置：AdamW优化器（lr=1e-3, weight\_decay=1e-4），ReduceLROnPlateau学习率调度（patience=5, factor=0.5），梯度裁剪（max\_norm=1.0），早停patience=15，最大50 epoch。在RTX 4060 GPU上每epoch约2.5分钟（batch\_size=32，约24,000步/epoch）。

\subsection{XGBoost训练}

三个独立XGBoost分类器（n\_estimators=200, max\_depth=6, learning\_rate=0.05）在GPU上训练。输入为展平的266维特征（14×19），训练时间约2分钟/分类器。XGBoost无需特征标准化（树模型对单调变换不变），且原生支持缺失值处理。

\section{模型性能对比}

\subsection{整体对比}

模型在测试集（164,365条样本）上的整体性能如表\ref{tab:model_comparison}所示。

\begin{table}[H]
\centering
\caption{LSTM-Attention vs XGBoost整体性能对比}
\label{tab:model_comparison}
\begin{tabular}{lcccc}
\toprule
\textbf{时间尺度} & \multicolumn{2}{c}{\textbf{LSTM-Attention}} & \multicolumn{2}{c}{\textbf{XGBoost}} \\
& Accuracy & F1-Macro & Accuracy & F1-Macro \\
\midrule
短期（3天）  & 0.9263 & 0.2404 & \textbf{0.9908} & \textbf{0.9325} \\
中期（7天）  & 0.9259 & 0.2404 & \textbf{0.9886} & \textbf{0.9195} \\
长期（30天） & 0.9260 & 0.2404 & \textbf{0.9782} & \textbf{0.8576} \\
\bottomrule
\end{tabular}
\end{table}

\subsection{混淆矩阵分析}

\begin{figure}[H]
\centering
\includegraphics[width=\textwidth]{../outputs/figures/model_comparison.png}
\caption{模型性能对比柱状图}
\label{fig:model_comparison}
\end{figure}

\begin{figure}[H]
\centering
\includegraphics[width=\textwidth]{../outputs/figures/confusion_matrix_comparison.png}
\caption{混淆矩阵对比（左侧3列：XGBoost，右侧3列：LSTM-Attention；行：short/medium/long时间尺度）}
\label{fig:confusion_matrix}
\end{figure}

XGBoost的混淆矩阵（图\ref{fig:confusion_matrix}左侧）显示：
\begin{itemize}
    \item \textbf{0级（低风险）}：几乎完美分类（>99\%），符合预期——低风险天气条件下气象特征高度一致
    \item \textbf{1级（中风险）}：部分与0级和2级混淆。中风险天气（32-35°C）覆盖了从正常夏日到高温预警边界的过渡带，特征模糊性较大
    \item \textbf{2级（高风险）}和\textbf{3级（严重风险）}：召回率较高（>80\%），误报主要流向邻近类别（如3级误报为2级），而非跳跃至0级。这表示模型对「风险大小」的相对排序是正确的
\end{itemize}

\subsection{XGBoost逐类性能分析}

\begin{table}[H]
\centering
\caption{XGBoost短期预测逐类性能（测试集）}
\begin{tabular}{lcccc}
\toprule
\textbf{风险等级} & \textbf{Precision} & \textbf{Recall} & \textbf{F1-Score} & \textbf{样本数} \\
\midrule
0级（低风险） & 0.9977 & 0.9932 & 0.9954 & 156,803 \\
1级（中风险） & 0.8283 & 0.9056 & 0.8630 & 4,528 \\
2级（高风险） & 0.8638 & 0.6881 & 0.7660 & 2,096 \\
3级（严重风险）& 0.7656 & 0.9073 & 0.8304 & 938 \\
\bottomrule
\end{tabular}
\end{table}

XGBoost在少数类上的precision和recall均达到可接受水平（>0.76），证明了梯度提升方法在类别不平衡条件下的鲁棒性。严重风险（3级）的recall达0.9073——模型能够捕获90\%以上的极端高温事件，漏报率<10\%。

\subsection{时间尺度效应分析}

短期（3天）F1最高（0.9325），长期（30天）F1最低（0.8576），符合直觉预期——预测窗口越长，气象要素的预测不确定性越大，风险等级的可预判性越低。然长期F1仍维持在0.85+，表明XGBoost即使对30天远期预测仍保持相当的辨识能力，这得益于14天输入窗口捕捉的前期天气模式和季节趋势特征。

\section{城市分层分析}

\begin{table}[H]
\centering
\caption{XGBoost短期预测城市分层性能}
\begin{tabular}{lccc}
\toprule
\textbf{城市} & \textbf{Accuracy} & \textbf{F1-Macro} & \textbf{样本数} \\
\midrule
焦作 & 0.9915 & 0.9466 & 82,183 \\
郑州 & 0.9901 & 0.9189 & 82,182 \\
\bottomrule
\end{tabular}
\end{table}

焦作市的F1略高于郑州（0.947 vs 0.919），可能原因：郑州高风险天数更多、风险分布更分散，增加了分类难度。两市性能差异不大（<3\%），表明模型具有较好的域内泛化能力，可适用于邻近城市而无需重新训练。

\section{XGBoost特征重要性分析}

XGBoost内置的特征重要性（由信息增益累积计算）揭示了哪些特征对风险等级预测贡献最大。排名前10的特征为：

\begin{enumerate}
    \item heat\_index（体感温度）：核心驱动变量，直接定义风险等级
    \item temp\_mean（日均气温）：基础气象指标
    \item rh（相对湿度）：高湿度放大高温健康效应
    \item temp\_lag\_1（前1天气温）：短期自回归，反映热量累积
    \item temp\_7d\_avg（7天滚动均温）：中长期趋势
    \item temp\_14d\_avg（14天滚动均温）：基线气候态
    \item temp\_lag\_3（前3天气温）：中期滞后
    \item heatwave\_strength（热浪强度）：持续性高温
    \item dewpoint\_mean（露点温度）：湿度替代指标
    \item pressure\_mean（地表气压）：大尺度天气系统
\end{enumerate}

体感温度（HI）作为温度和湿度的综合指标在各时间尺度上始终排名第一，验证了采用NOAA Rothfusz公式计算体感温度而非直接使用气温作为风险判定基础的合理性。滞后和滚动特征的高排名表明热量累积效应在风险预测中不可忽略。

\section{典型案例分析：2022年6月河南高温事件}

2022年6月15-25日，河南省出现大范围持续性高温天气，郑州连续11天日最高气温超过37°C，6月25日最高气温达42.3°C（逼近历史极值）。焦作同期连续10天超过37°C。

以2022年6月15日为基准日，模型预测：

\begin{table}[H]
\centering
\caption{2022年6月15日模型预测结果}
\begin{tabular}{lccc}
\toprule
\textbf{预测窗口} & \textbf{预测等级} & \textbf{实际等级} & \textbf{是否正确} \\
\midrule
短期（3d, 6/16-18） & 3级（严重） & 3级 & ✓ \\
中期（7d, 6/16-22） & 3级（严重） & 3级 & ✓ \\
长期（30d, 6/16-7/15）& 1级（中风险）& 2级（高风险）& ✗（低判1级） \\
\bottomrule
\end{tabular}
\end{table}

短期和中期预测正确识别了严重风险，长期预测将风险低估了1级（预测中风险，实际高风险）。低估的可能原因：长期窗口中后段（7月上中旬）温度回落，拉低了30天众数风险等级，而实际7月仍出现了若干高风险日。这表明基于众数聚合的长期标签对窗口内温度波动敏感，未来可考虑采用分位数标签或风险值累计替代众数。

\section{LSTM训练优化实验记录}

为改善LSTM模型性能，进行了6轮系统调优实验（详见表\ref{tab:lstm_tuning}，第4.3.3节）。LSTM模型在所有轮次中均未能实现有效收敛：无权重/采样时收敛至全预测0类（Acc=0.940, F1=0.240）；有权重/采样时过度预测3类（Acc=0.025）。两类极端之间的中间状态在优化过程中无法稳定维持。

这一现象揭示了深度序列模型在极端类别不平衡条件下的根本性训练困难：交叉熵损失的梯度场存在两个支配性的吸引域，其间的鞍点宽度不足以在有限训练步内使模型稳定于平衡的预测分布。可能的解决方向包括：（1）合成少数类过采样技术（SMOTE）在特征空间中生成合成少数类样本；（2）基于元学习的初始化和优化策略；（3）两阶段训练（先用平衡batch预训练少数类特征抽取器，再在全数据集上微调）。

\section{讨论}

\subsection{XGBoost优势分析}

XGBoost在各项指标上大幅领先LSTM，优势根源于：（1）树模型对特征尺度和分布的鲁棒性——无需标准化的特征工程；（2）Boosting框架天然的难例聚焦能力——每轮迭代重点关注上一轮的残差；（3）集成多样性——200棵不同结构的树从不同角度拟合数据，综合决策对少数类有更好的覆盖。

\subsection{LSTM局限分析}

LSTM的局限并非源于模型架构（BiLSTM+MHA的组合在理论上具有强大的时序建模能力），而是源于训练数据分布与优化目标之间的失配。Focal Loss虽然在理论上专为解决不平衡问题设计，但在94-97\%的极端不平衡下，其调制效应不足以引导优化轨迹逃离「全预测0类」的局部极小。

\subsection{实践启示}

对于面向表格型时序特征的环境健康预测任务，XGBoost（以及可能的LightGBM、CatBoost等同类梯度提升方法）是实用性和性能均出色的首选方案。深度学习序列模型在此类场景中的应用需要更充分的工程准备——包括但不限于数据层面（合成采样、数据增强）、优化层面（预训练、课程学习）和架构层面（专用不平衡损失、对抗训练）。

\section{系统可视化效果}

基于Flask+ECharts构建的可视化大屏系统（详见第5章），共6个功能面板，运行于端口5005。系统支持每30分钟自动刷新数据，模型降级机制确保极端情况下系统仍可提供基础信息展示。深色科技蓝配色方案和毛玻璃面板设计在1920×1080分辨率下呈现良好的视觉效果。
