feat: 论文大幅扩写 — 42页,完整数学公式+实际数据+系统描述
This commit is contained in:
@@ -1,24 +1,24 @@
|
||||
\chapter*{摘要}
|
||||
\addcontentsline{toc}{chapter}{摘要}
|
||||
|
||||
随着全球气候变暖,高温热浪事件频发,对老年群体的健康构成严重威胁。本研究以焦作市和郑州市为研究区域,利用ERA5-Land气象再分析数据和人口健康统计数据,构建了基于LSTM-Attention的多时间尺度高温健康风险预警模型,并开发了可视化大屏系统。
|
||||
随着全球气候变暖,极端高温事件频发且强度持续增加,对公共卫生构成日益严峻的挑战。老年群体(65岁及以上)因体温调节功能减退、慢性病患病率高以及社会隔离等因素,是高温热浪最脆弱的群体之一。本研究以河南省焦作市和郑州市为研究区域,利用ERA5-Land气象再分析数据(2010-2024年),构建了基于机器学习的多时间尺度高温健康风险预警模型,并开发了Web可视化大屏系统。
|
||||
|
||||
本研究主要工作包括:(1)获取并预处理2010-2024年焦作、郑州两市的ERA5-Land气象数据,结合人口普查和卫生统计年鉴数据,构建了温度-健康风险关联数据集;(2)设计了LSTM结合多头自注意力机制的深度学习模型,实现了短期(1-3天)、中期(7天)和长期(30天)三个时间尺度的风险等级预测;(3)以XGBoost作为基线模型进行对比实验,验证了深度学习方法的有效性;(4)基于Flask和ECharts开发了深色科技蓝风格的Web可视化大屏,实现了温度趋势、风险预警、人口概况等信息的多维度展示。
|
||||
本研究主要工作包括:(1)通过Copernicus Climate Data Store (CDS) API获取2010-2024年焦作、郑州两市的ERA5-Land网格气象数据,采用Magnus公式计算相对湿度、NOAA Rothfusz公式计算体感温度,构建了包含19个气象衍生特征的完整数据集;(2)通过滑动窗口方法(窗口14天)生成监督学习样本,构建了包含1,095,758条样本的多时间尺度预测数据集,覆盖短期(3天)、中期(7天)和长期(30天)三个预测窗口;(3)设计了983,628参数的LSTM-Attention深度学习模型,采用双向LSTM提取时序特征、4头自注意力机制捕捉关键时间步,并以Focal Loss缓解类别不平衡;(4)以XGBoost作为基线模型,在164,365条测试样本上进行了系统对比实验;(5)基于Flask和ECharts开发了深色科技蓝风格的Web可视化大屏,包含温度趋势、风险实时展示、人口饼图、预警时间线、暴露-反应曲线和历史回顾六个功能面板。
|
||||
|
||||
实验结果表明,LSTM-Attention模型在短期和中期预警任务上优于传统机器学习方法,能够为高温热浪健康风险管理提供有效的决策支持。
|
||||
实验结果表明,XGBoost模型在三个时间尺度上均取得优异性能:短期(3天)F1-Macro达0.9325、中期(7天)达0.9195、长期(30天)达0.8576。LSTM-Attention模型(F1=0.2404)受样本极度不平衡(低风险类占比94-96\%)制约,经Focal Loss调参、类别加权、加权随机采样等多种优化尝试后仍未能有效收敛。该对比揭示了梯度提升树模型在表格型时序预测任务中相对深度序列模型的优势。本研究构建的可视化大屏系统为面向银发群体的高温健康防护提供了直观的决策支持工具。
|
||||
|
||||
\textbf{关键词:}高温热浪;银发群体;多时间尺度预警;LSTM-Attention;可视化
|
||||
\textbf{关键词:}高温热浪;银发群体;多时间尺度预警;XGBoost;LSTM-Attention;体感温度;可视化
|
||||
|
||||
\newpage
|
||||
|
||||
\chapter*{Abstract}
|
||||
\addcontentsline{toc}{chapter}{Abstract}
|
||||
|
||||
With global warming, frequent heatwave events pose serious threats to the health of the elderly population. This study takes Jiaozuo and Zhengzhou as research areas, utilizes ERA5-Land meteorological reanalysis data and population health statistics to construct an LSTM-Attention based multi-time-scale heat health risk early warning model, and develops a visualization dashboard system.
|
||||
Driven by global warming, extreme heat events are increasing in both frequency and intensity, posing severe public health challenges. The elderly population (aged 65 and above) is among the most vulnerable groups due to diminished thermoregulation, high prevalence of chronic diseases, and social isolation. This study focuses on Jiaozuo and Zhengzhou in Henan Province, utilizing ERA5-Land meteorological reanalysis data (2010--2024) to develop machine-learning-based multi-time-scale heat health risk early warning models, complemented by a web visualization dashboard.
|
||||
|
||||
The main contributions include: (1) acquisition and preprocessing of ERA5-Land meteorological data (2010-2024) for both cities, combined with census and health statistics data; (2) design of a deep learning model combining LSTM with multi-head self-attention for risk prediction at three time scales (short/medium/long term); (3) comparative experiments with XGBoost baseline to validate the deep learning approach; (4) development of a Flask+ECharts web dashboard with dark tech-blue theme for multi-dimensional visualization.
|
||||
The main contributions include: (1) acquisition of 360 monthly ERA5-Land grid files (180 per city) via the CDS API, with Magnus-formula relative humidity and NOAA Rothfusz heat index computation, yielding a dataset with 19 derived meteorological features; (2) construction of 1,095,758 supervised learning samples via a 14-day sliding window, covering short-term (3-day), medium-term (7-day), and long-term (30-day) prediction horizons; (3) design of a 983,628-parameter LSTM-Attention model with bidirectional LSTM layers and 4-head self-attention, trained with Focal Loss for class imbalance mitigation; (4) systematic comparison against XGBoost baselines on 164,365 test samples; (5) development of a Flask+ECharts visualization dashboard featuring six functional panels with dark tech-blue styling.
|
||||
|
||||
Experimental results show that the LSTM-Attention model outperforms traditional methods in short and medium-term early warning tasks, providing effective decision support for heatwave health risk management.
|
||||
Experimental results show that XGBoost achieves excellent performance across all time scales: short-term F1-Macro of 0.9325, medium-term 0.9195, and long-term 0.8576. The LSTM-Attention model (F1=0.2404) suffered from extreme class imbalance (low-risk class: 94--96\%), failing to converge despite extensive optimization attempts including Focal Loss tuning, class weighting, and weighted random sampling. This contrast highlights the advantage of gradient-boosted trees over deep sequence models for tabular time-series prediction tasks. The web visualization dashboard provides an intuitive decision-support tool for elderly-oriented heat health protection.
|
||||
|
||||
\textbf{Keywords:} Heatwave; Elderly Population; Multi-time-scale Early Warning; LSTM-Attention; Visualization
|
||||
\textbf{Keywords:} Heatwave; Elderly Population; Multi-time-scale Early Warning; XGBoost; LSTM-Attention; Heat Index; Visualization
|
||||
\newpage
|
||||
|
||||
@@ -1,35 +1,67 @@
|
||||
\chapter{绪论}
|
||||
|
||||
\section{研究背景与意义}
|
||||
\section{研究背景}
|
||||
|
||||
全球气候变暖导致极端高温事件频发,对公共卫生构成严峻挑战。老年群体(65岁及以上)由于体温调节功能下降、慢性病患病率高等原因,是高温热浪最脆弱的群体之一。焦作市和郑州市地处中原地区,夏季高温天气频繁,老龄化率分别达12.8\%和11.6\%,亟需建立科学的高温健康风险预警体系。
|
||||
全球气候变化是21世纪人类面临的最重大公共卫生挑战之一。根据世界气象组织(WMO)2024年发布的报告,2023年全球平均气温较工业化前水平上升约1.45°C,创下有记录以来的最高值。政府间气候变化专门委员会(IPCC)第六次评估报告指出,全球平均气温每升高0.5°C,极端高温事件的频率和强度将呈非线性增长。在此背景下,高温热浪已从偶发性气象事件演变为常态化的公共卫生威胁。
|
||||
|
||||
本研究的意义在于:(1)利用深度学习技术提升高温健康风险预测的精度和多时间尺度覆盖能力;(2)通过可视化大屏为政府和社区提供直观的决策支持工具;(3)为中原地区高温热浪健康防护提供科学依据。
|
||||
中国是全球受高温热浪影响最为显著的国家之一。中国气象局《2023年中国气候公报》数据显示,2023年全国平均高温日数(日最高气温≥35°C)为11.3天,较常年偏多4.1天,为1961年以来第二多。河南省作为中原腹地,夏季受副热带高压控制,高温天气持续时间长、强度大。2022年6月河南省出现持续性高温天气,多地最高气温突破40°C,郑州、焦作等城市连续高温日数超过10天。
|
||||
|
||||
\section{银发群体的高温脆弱性}
|
||||
|
||||
老年群体(65岁及以上)是高温热浪健康效应最敏感的亚群。其脆弱性根植于生理、社会和经济三个层面:
|
||||
|
||||
\textbf{生理层面:}老年人皮肤血流量减少、出汗率降低,体温调节功能显著退化;同时心血管疾病、糖尿病、慢性呼吸系统疾病等基础病的患病率随年龄递增,高温应激可诱发或加重这些疾病。研究表明,当体感温度(Heat Index)超过32°C时,65岁以上人群的全因死亡风险开始显著上升;当体感温度超过38°C时,心血管疾病死亡风险增加30\%-50\%。
|
||||
|
||||
\textbf{社会层面:}空巢老人比例持续上升,独居状态下高温防护意识和应对能力不足。第七次全国人口普查数据显示,中国65岁及以上人口已达1.91亿(占比13.5\%),其中独居老人超过3,000万。
|
||||
|
||||
\textbf{经济层面:}老年人收入水平普遍偏低,空调等降温设备的使用率受经济条件制约。农村地区老人面临的降温条件更为有限。
|
||||
|
||||
\section{研究区域选择}
|
||||
|
||||
本研究选取焦作市和郑州市作为研究区域,理由如下:
|
||||
|
||||
焦作市位于河南省西北部,总面积4,071 km$^2$,常住人口约352万(2023年),65岁及以上人口占比约12.8\%。焦作地处太行山南麓,地形以山地丘陵为主,夏季高温叠加地形效应使得城区热环境较为复杂。
|
||||
|
||||
郑州市是河南省省会,总面积7,446 km$^2$,常住人口约1,274万(2023年),65岁及以上人口占比约11.6\%。郑州作为国家中心城市和重要的交通枢纽,城镇化率超过78\%,城市热岛效应显著。两市的城镇化率均超过65\%,城市热岛效应与人口老龄化叠加,使得高温健康防护问题尤为突出。
|
||||
|
||||
两市同属暖温带大陆性季风气候,年平均气温14-15°C,7月平均气温27-28°C,极端最高气温超过42°C。两市地理邻近(相距约70 km),气象条件相似但城市规模和人口结构差异明显,形成了有价值的对比研究场景。
|
||||
|
||||
\section{国内外研究现状}
|
||||
|
||||
\subsection{高温热浪健康效应研究}
|
||||
\subsection{高温-健康关联的流行病学研究}
|
||||
|
||||
温度与死亡率的关联通常呈J型或V型曲线,高温端的相对风险显著升高。Gasparrini等(2015)在Lancet发表的多国多城市研究系统揭示了温度-死亡关联的时空特征。Chen等(2018)在Lancet Planetary Health发表了中国多城市研究,为中国人群温度健康风险提供了本土化证据。
|
||||
温度与死亡率的暴露-反应关系是环境流行病学的经典议题。Gasparrini等(2015)在\textit{The Lancet}发表的多国多城市研究(涵盖13个国家384个城市)是里程碑式成果,发现温度-死亡关联通常呈J型或V型曲线,最适温度(Minimum Mortality Temperature, MMT)因地理位置而异,高温端的相对风险(Relative Risk, RR)显著升高。Chen等(2018)在\textit{The Lancet Planetary Health}发表了中国272个城市的研究,为中国人群提供了本土化的温度-死亡暴露-反应曲线,发现在中国北方城市高温效应更为显著。
|
||||
|
||||
\subsection{环境健康预警系统研究}
|
||||
\subsection{高温健康预警系统(HHWS)}
|
||||
|
||||
国际上,多个国家已建立高温健康预警系统(HHWS),如法国国家高温预警计划、美国NOAA高温健康预警等。国内方面,中国气象局发布了高温预警信号体系,上海、深圳等城市开展了高温健康预警试点。
|
||||
国际上,法国在2003年热浪导致约15,000人超额死亡后建立了国家高温健康预警计划(Plan Canicule),采用三色预警体系。美国NOAA开发了HeatRisk原型系统,综合考虑温度、湿度和人口脆弱性。世界卫生组织(WHO)和世界气象组织(WMO)联合发布了HHWS技术指南。
|
||||
|
||||
\subsection{多时间尺度预测方法}
|
||||
国内方面,中国气象局建立了高温预警信号体系(黄色、橙色、红色三级),基于日最高气温阈值。上海、深圳等城市开展了高温健康预警试点,初步将健康终点数据纳入预警逻辑。但总体而言,国内HHWS仍以气象指标为主,缺乏对脆弱人群的精细化评估和多时间尺度的前瞻性预测能力。
|
||||
|
||||
传统的时间序列预测方法包括ARIMA、指数平滑等。随着深度学习的发展,LSTM等循环神经网络在时序预测中展现出优势。Vaswani等(2017)提出的Transformer架构中的自注意力机制能够有效捕捉长时间依赖关系。
|
||||
\subsection{深度学习在环境健康预测中的应用}
|
||||
|
||||
传统时间序列预测方法(ARIMA、指数平滑、VAR)受限于线性和平稳性假设,难以应对气象-健康关联中的非线性效应。随着深度学习发展,LSTM(Hochreiter \& Schmidhuber, 1997)等循环神经网络在气象时序预测中展现出优势。注意力机制(Vaswani等, 2017)进一步增强了模型对长距离时序依赖的捕捉能力。
|
||||
|
||||
在环境健康领域,将深度学习应用于高温健康风险预测的研究尚处于起步阶段。现有工作多聚焦于单一时间尺度的预测,且较少针对银发群体进行特定建模。
|
||||
|
||||
\section{研究目的与意义}
|
||||
|
||||
本研究旨在构建面向银发群体的多时间尺度(短期3天、中期7天、长期30天)高温健康风险预警模型,并通过Web可视化大屏实现预警信息的直观呈现。
|
||||
|
||||
研究意义包括:(1)\textbf{方法创新}——将双向LSTM与多头自注意力机制结合,同时引入Focal Loss解决样本极度不平衡问题,探索深度序列模型在环境健康预测中的适用性与局限性;(2)\textbf{实用价值}——XGBoost模型在三个时间尺度上均取得F1>0.85的优异性能,可直接支撑实际预警决策;(3)\textbf{可视化赋能}——Web大屏将复杂模型输出转化为面向政府管理者、社区工作者和公众的可理解信息,降低预警信息的使用门槛。
|
||||
|
||||
\section{研究内容与技术路线}
|
||||
|
||||
本研究主要内容包括:
|
||||
本研究的工作流程为:数据获取→预处理与特征工程→模型训练与评估→可视化系统构建。具体内容如下:
|
||||
|
||||
\begin{enumerate}
|
||||
\item 多源数据获取与预处理:ERA5气象再分析数据、人口普查数据、卫生统计数据
|
||||
\item 多时间尺度预警模型构建:LSTM-Attention深度学习模型 + XGBoost基线模型
|
||||
\item 预警可视化系统开发:Flask后端 + ECharts前端大屏
|
||||
\item 模型评估与对比分析
|
||||
\item \textbf{多源数据获取}:通过CDS API获取2010-2024年ERA5-Land网格气象数据(2m温度、2m露点温度、地表气压、10m风速U/V分量、总降水量共6变量),结合中国卫生统计年鉴数据构建人口健康基线。
|
||||
\item \textbf{数据预处理与特征工程}:6小时间隔数据聚合为日尺度→K至°C单位转换→Magnus公式计算相对湿度→NOAA Rothfusz公式计算体感温度→构建19维衍生特征(滚动均值、滞后特征、热浪检测、季节编码)。
|
||||
\item \textbf{多时间尺度预警模型}:设计LSTM-Attention深度学习模型(983,628参数)和XGBoost基线模型,分别预测短期(3天)、中期(7天)和长期(30天)高温健康风险等级(0-低、1-中、2-高、3-严重)。
|
||||
\item \textbf{模型评估与对比}:在时间序列分割的测试集(2023-2024年数据,164,365条样本)上系统对比两种模型的性能。
|
||||
\item \textbf{可视化大屏开发}:基于Flask后端和ECharts前端,实现六大功能面板的Web可视化大屏。
|
||||
\end{enumerate}
|
||||
|
||||
\section{论文组织结构}
|
||||
|
||||
本论文共分七章。第一章介绍研究背景和现状;第二章阐述相关理论基础;第三章描述数据获取和预处理过程;第四章详细介绍预警模型设计;第五章展示可视化系统实现;第六章进行实验结果分析;第七章总结全文并展望未来工作。
|
||||
本论文共分七章:第一章阐述研究背景、国内外现状和研究意义;第二章介绍LSTM、注意力机制、XGBoost等核心理论以及高温健康风险相关概念;第三章详述数据来源和预处理管线,包括ERA5数据获取、体感温度计算、特征工程和数据集构建;第四章介绍LSTM-Attention和XGBoost两类预警模型的设计细节;第五章展示Flask+ECharts可视化大屏的架构和实现;第六章进行实验结果分析,包括模型性能对比、混淆矩阵分析和LSTM训练优化记录;第七章总结全文并展望未来工作。
|
||||
|
||||
+154
-18
@@ -2,46 +2,182 @@
|
||||
|
||||
\section{LSTM神经网络}
|
||||
|
||||
长短期记忆网络(Long Short-Term Memory,LSTM)是Hochreiter和Schmidhuber于1997年提出的一种特殊的循环神经网络(RNN)变体,旨在解决传统RNN在处理长序列数据时面临的梯度消失和梯度爆炸问题。
|
||||
|
||||
LSTM的核心思想是引入门控机制(gating mechanism),包括遗忘门(forget gate)、输入门(input gate)和输出门(output gate),通过这三个门的协同工作,LSTM能够选择性地记忆或遗忘信息,从而有效地捕捉时间序列中的长期依赖关系。
|
||||
长短期记忆网络(Long Short-Term Memory, LSTM)由Hochreiter和Schmidhuber于1997年提出,是循环神经网络(RNN)的重要变体。传统RNN在处理长序列时因梯度消失/爆炸问题难以学习远距离依赖,LSTM通过引入门控机制有效解决了这一问题。
|
||||
|
||||
\subsection{LSTM单元结构}
|
||||
|
||||
LSTM单元通过细胞状态(cell state)和隐藏状态(hidden state)进行信息的传递与更新,其前向传播过程由以下公式描述:
|
||||
LSTM单元的核心是一个细胞状态(cell state)$\mathbf{C}_t$,贯穿整个序列的信息传递通道,由三个门控结构(遗忘门、输入门、输出门)进行调控:
|
||||
|
||||
遗忘门控制上一时刻细胞状态的遗忘程度,输入门决定当前输入信息中有多少写入细胞状态,输出门控制细胞状态对当前隐藏状态的输出比例。
|
||||
\begin{equation}
|
||||
\mathbf{f}_t = \sigma(\mathbf{W}_f \cdot [\mathbf{h}_{t-1}, \mathbf{x}_t] + \mathbf{b}_f)
|
||||
\end{equation}
|
||||
\begin{equation}
|
||||
\mathbf{i}_t = \sigma(\mathbf{W}_i \cdot [\mathbf{h}_{t-1}, \mathbf{x}_t] + \mathbf{b}_i)
|
||||
\end{equation}
|
||||
\begin{equation}
|
||||
\tilde{\mathbf{C}}_t = \tanh(\mathbf{W}_C \cdot [\mathbf{h}_{t-1}, \mathbf{x}_t] + \mathbf{b}_C)
|
||||
\end{equation}
|
||||
\begin{equation}
|
||||
\mathbf{C}_t = \mathbf{f}_t \odot \mathbf{C}_{t-1} + \mathbf{i}_t \odot \tilde{\mathbf{C}}_t
|
||||
\end{equation}
|
||||
\begin{equation}
|
||||
\mathbf{o}_t = \sigma(\mathbf{W}_o \cdot [\mathbf{h}_{t-1}, \mathbf{x}_t] + \mathbf{b}_o)
|
||||
\end{equation}
|
||||
\begin{equation}
|
||||
\mathbf{h}_t = \mathbf{o}_t \odot \tanh(\mathbf{C}_t)
|
||||
\end{equation}
|
||||
|
||||
其中,$\sigma$为sigmoid激活函数,$\odot$为逐元素乘积,$\mathbf{f}_t$、$\mathbf{i}_t$、$\mathbf{o}_t$分别为遗忘门、输入门和输出门的激活向量,$\tilde{\mathbf{C}}_t$为候选细胞状态。遗忘门控制前一时刻细胞状态的保留比例,输入门决定新信息的写入量,输出门调节细胞状态对隐藏状态的贡献。
|
||||
|
||||
\subsection{双向LSTM}
|
||||
|
||||
双向LSTM(Bidirectional LSTM, BiLSTM)由前向LSTM和后向LSTM组成,分别从序列的正向和反向读取输入:
|
||||
|
||||
\begin{equation}
|
||||
\overrightarrow{\mathbf{h}}_t = \text{LSTM}_{\text{fwd}}(\mathbf{x}_t, \overrightarrow{\mathbf{h}}_{t-1})
|
||||
\end{equation}
|
||||
\begin{equation}
|
||||
\overleftarrow{\mathbf{h}}_t = \text{LSTM}_{\text{bwd}}(\mathbf{x}_t, \overleftarrow{\mathbf{h}}_{t+1})
|
||||
\end{equation}
|
||||
\begin{equation}
|
||||
\mathbf{h}_t^{\text{bi}} = [\overrightarrow{\mathbf{h}}_t; \overleftarrow{\mathbf{h}}_t]
|
||||
\end{equation}
|
||||
|
||||
BiLSTM在每个时间步同时利用过去和未来的上下文信息,在气象时序预测中特别有用——某一天的温度既受前期天气积累影响,也与后续天气系统的演变有关。
|
||||
|
||||
\section{注意力机制}
|
||||
|
||||
注意力机制(Attention Mechanism)的核心思想源于人类视觉系统对信息的筛选性关注,即在处理大量输入信息时,能够动态地为不同部分分配不同的重要性权重。
|
||||
|
||||
Vaswani等人在2017年提出的Transformer架构中,将注意力机制推向了新的高度。多头自注意力机制(Multi-Head Self-Attention)允许模型从多个不同的表示子空间中联合关注序列中不同位置的信息,从而更全面地捕捉序列内部的复杂依赖关系。
|
||||
注意力机制(Attention Mechanism)由Bahdanau等(2014)首次引入序列到序列学习,其核心思想是动态地为输入序列的不同位置分配不同的重要性权重。Vaswani等(2017)提出的Transformer架构将注意力机制推向了新的高度。
|
||||
|
||||
\subsection{缩放点积注意力}
|
||||
|
||||
缩放点积注意力(Scaled Dot-Product Attention)是多头注意力的基础计算单元,其计算过程为:将查询(Query)和键(Key)进行点积运算,除以维度平方根进行缩放,经Softmax归一化后与值(Value)加权求和。
|
||||
缩放点积注意力(Scaled Dot-Product Attention)是多头注意力的基础计算单元:
|
||||
|
||||
\begin{equation}
|
||||
\text{Attention}(\mathbf{Q}, \mathbf{K}, \mathbf{V}) = \text{softmax}\left(\frac{\mathbf{Q}\mathbf{K}^T}{\sqrt{d_k}}\right)\mathbf{V}
|
||||
\end{equation}
|
||||
|
||||
其中$\mathbf{Q}$(Query)、$\mathbf{K}$(Key)、$\mathbf{V}$(Value)分别为查询、键和值矩阵,$d_k$为键向量的维度。除以$\sqrt{d_k}$的作用是防止点积值过大导致softmax梯度弥散。
|
||||
|
||||
\subsection{多头自注意力}
|
||||
|
||||
多头自注意力将查询、键、值分别通过多个线性投影映射到不同的子空间,在每个子空间中独立计算注意力,最后将各头的输出拼接并线性变换,使得模型能够从多个角度捕捉输入序列的特征。
|
||||
多头自注意力(Multi-Head Self-Attention)将$\mathbf{Q}$、$\mathbf{K}$、$\mathbf{V}$分别通过$h$个不同的线性投影映射到多个子空间,在每个子空间中独立计算注意力:
|
||||
|
||||
\begin{equation}
|
||||
\text{head}_i = \text{Attention}(\mathbf{Q}\mathbf{W}_i^Q, \mathbf{K}\mathbf{W}_i^K, \mathbf{V}\mathbf{W}_i^V)
|
||||
\end{equation}
|
||||
\begin{equation}
|
||||
\text{MultiHead}(\mathbf{Q}, \mathbf{K}, \mathbf{V}) = \text{Concat}(\text{head}_1, \dots, \text{head}_h)\mathbf{W}^O
|
||||
\end{equation}
|
||||
|
||||
在自注意力中,$\mathbf{Q} = \mathbf{K} = \mathbf{V} = \mathbf{X}$(输入序列)。每个注意力头可以从不同的表示子空间中关注序列的不同方面,例如某些头可能专注于温度的急剧变化,另一些头可能捕捉长期趋势。
|
||||
|
||||
\section{XGBoost算法}
|
||||
|
||||
XGBoost(eXtreme Gradient Boosting)是Chen和Guestrin于2016年提出的梯度提升树算法的优化实现,在机器学习竞赛和工业应用中取得了巨大成功。
|
||||
XGBoost(eXtreme Gradient Boosting)由Chen和Guestrin于2016年提出,是梯度提升决策树(GBDT)的高效实现。其核心优势包括:
|
||||
|
||||
XGBoost的核心优势包括:(1)正则化的目标函数,有效防止过拟合;(2)二阶泰勒展开近似损失函数,提升收敛速度;(3)支持列采样和行采样,增强泛化能力;(4)内置交叉验证和早停机制;(5)支持并行化计算和分布式训练。
|
||||
\textbf{正则化目标函数:}XGBoost在目标函数中引入了正则项以控制模型复杂度:
|
||||
|
||||
\section{高温热浪定义与健康风险}
|
||||
\begin{equation}
|
||||
\mathcal{L}(\phi) = \sum_i l(\hat{y}_i, y_i) + \sum_k \Omega(f_k)
|
||||
\end{equation}
|
||||
\begin{equation}
|
||||
\Omega(f) = \gamma T + \frac{1}{2}\lambda \|\mathbf{w}\|^2
|
||||
\end{equation}
|
||||
|
||||
世界气象组织(WMO)将高温热浪定义为日最高气温连续3天以上超过32℃的天气过程。中国气象局的定义为日最高气温达到或超过35℃且持续3天以上。
|
||||
其中$T$为叶节点数量,$\mathbf{w}$为叶节点权重,$\gamma$和$\lambda$为正则化系数。
|
||||
|
||||
\subsection{健康风险等级划分}
|
||||
\textbf{二阶泰勒展开:}使用损失函数的二阶展开近似进行树的分裂增益计算,比传统GBDT的一阶近似更精确:
|
||||
|
||||
参考相关研究和公共卫生实践,高温健康风险等级通常分为:低风险(注意)、中风险(关注)、高风险(警戒)、极高风险(紧急)四个等级,分别对应不同的防护措施和应急预案。
|
||||
\begin{equation}
|
||||
\text{Gain} = \frac{1}{2}\left[\frac{(\sum_{i\in I_L} g_i)^2}{\sum_{i\in I_L} h_i + \lambda} + \frac{(\sum_{i\in I_R} g_i)^2}{\sum_{i\in I_R} h_i + \lambda} - \frac{(\sum_{i\in I} g_i)^2}{\sum_{i\in I} h_i + \lambda}\right] - \gamma
|
||||
\end{equation}
|
||||
|
||||
其中$g_i$和$h_i$分别为损失函数的一阶和二阶梯度。
|
||||
|
||||
\textbf{并行化与特征采样:}XGBoost支持特征级别的并行计算(按特征值排序)和列采样(类似随机森林),在大规模数据集上具有显著的效率优势。
|
||||
|
||||
\section{体感温度计算方法}
|
||||
|
||||
体感温度是高温健康风险评估的核心指标。单纯的空气温度不能完全反映人体对热环境的感知,湿度、风速和辐射等因素同样影响体感温度。本研究采用以下两种经典公式:
|
||||
|
||||
\subsection{Magnus公式——相对湿度计算}
|
||||
|
||||
从ERA5-Land获取的2m温度($T$)和2m露点温度($T_d$)出发,使用Magnus公式计算相对湿度:
|
||||
|
||||
\begin{equation}
|
||||
e_s(T) = \exp\left(\frac{17.27 \cdot T}{237.7 + T}\right)
|
||||
\end{equation}
|
||||
\begin{equation}
|
||||
e_a(T_d) = \exp\left(\frac{17.27 \cdot T_d}{237.7 + T_d}\right)
|
||||
\end{equation}
|
||||
\begin{equation}
|
||||
RH = 100 \times \frac{e_a(T_d)}{e_s(T)} = 100 \times \exp\left(\frac{17.27 \cdot T_d}{237.7 + T_d} - \frac{17.27 \cdot T}{237.7 + T}\right)
|
||||
\end{equation}
|
||||
|
||||
其中$e_s$为饱和水汽压(hPa),$e_a$为实际水汽压(hPa),$RH$为相对湿度(\%),温度单位为°C。
|
||||
|
||||
\subsection{NOAA Rothfusz公式——体感温度}
|
||||
|
||||
美国国家海洋和大气管理局(NOAA)提出的Rothfusz回归公式是体感温度(Heat Index, HI)计算的标准方法。以华氏度为计算单位,最终转换回摄氏度:
|
||||
|
||||
\begin{equation}
|
||||
T_F = T_C \times 1.8 + 32
|
||||
\end{equation}
|
||||
|
||||
当$T_F < 80$°F(约26.7°C)时,使用简化公式:
|
||||
\begin{equation}
|
||||
HI_F = 0.5 \times [T_F + 61.0 + (T_F - 68.0) \times 1.2 + RH \times 0.094]
|
||||
\end{equation}
|
||||
|
||||
当$T_F \geq 80$°F时,使用完整Rothfusz回归:
|
||||
\begin{equation}
|
||||
\begin{aligned}
|
||||
HI_F &= -42.379 + 2.04901523 \times T_F + 10.14333127 \times RH \\
|
||||
&- 0.22475541 \times T_F \times RH - 6.83783 \times 10^{-3} \times T_F^2 \\
|
||||
&- 5.481717 \times 10^{-2} \times RH^2 + 1.22874 \times 10^{-3} \times T_F^2 \times RH \\
|
||||
&+ 8.5282 \times 10^{-4} \times T_F \times RH^2 - 1.99 \times 10^{-6} \times T_F^2 \times RH^2
|
||||
\end{aligned}
|
||||
\end{equation}
|
||||
|
||||
随后进行NOAA标准修正(当RH<13\%且80°F<T<112°F时调整),最终转回摄氏度:
|
||||
\begin{equation}
|
||||
HI_C = (HI_F - 32) / 1.8
|
||||
\end{equation}
|
||||
|
||||
\section{高温健康风险等级划分}
|
||||
|
||||
参考世界气象组织(WMO)和中国气象局的高温预警标准,结合老年人群体的生理特征,本研究定义四级高温健康风险等级:
|
||||
|
||||
\begin{table}[H]
|
||||
\centering
|
||||
\caption{高温健康风险等级划分标准}
|
||||
\begin{tabular}{cccc}
|
||||
\toprule
|
||||
\textbf{风险等级} & \textbf{标签} & \textbf{体感温度阈值} & \textbf{对应措施} \\
|
||||
\midrule
|
||||
低风险(0级) & 低 & HI < 32°C & 正常户外活动,注意补水 \\
|
||||
中风险(1级) & 中 & 32°C ≤ HI < 35°C & 减少午后户外活动,保持室内通风 \\
|
||||
高风险(2级) & 高 & 35°C ≤ HI < 38°C & 避免户外活动,开启降温设备 \\
|
||||
严重风险(3级) & 严重 & HI ≥ 38°C & 停止一切户外活动,社区入户巡查 \\
|
||||
\bottomrule
|
||||
\end{tabular}
|
||||
\end{table}
|
||||
|
||||
\section{Focal Loss损失函数}
|
||||
|
||||
在高温健康风险预测中,极端风险事件(高风险和严重风险)的发生频率远低于正常天气条件(低风险),导致严重的类别不平衡问题。传统交叉熵损失在此场景下会使模型偏向预测多数类。
|
||||
|
||||
Focal Loss由Lin等(2017)在目标检测领域提出,通过调制因子降低易分类样本的损失贡献,迫使模型聚焦于困难样本:
|
||||
|
||||
\begin{equation}
|
||||
\text{FL}(p_t) = -\alpha (1 - p_t)^\gamma \log(p_t)
|
||||
\end{equation}
|
||||
|
||||
其中$p_t$为模型对正确类别的预测概率,$\alpha$为类别平衡因子,$\gamma$为聚焦参数。当$\gamma=0$时退化为加权交叉熵损失;$\gamma>0$时,对已正确分类的高置信度样本($p_t$接近1)施加更大的衰减,从而将梯度信号集中于难分类的样本。本研究采用$\alpha=0.5, \gamma=2.0$作为默认参数。
|
||||
|
||||
\section{Flask框架与ECharts可视化}
|
||||
|
||||
Flask是一个轻量级的Python Web框架,以其简洁性和灵活性著称,适合中小型Web应用的快速开发。本研究使用Flask作为后端服务框架,提供RESTful API接口。
|
||||
Flask是Python生态中最广泛使用的轻量级Web框架之一,遵循WSGI标准,以路由装饰器和Jinja2模板引擎为核心特性。其\"微框架\"(microframework)设计理念使得开发者可自由组合扩展组件。本研究使用Flask提供4个RESTful API端点(预测、历史、统计、主页),前后端通过JSON格式进行数据交换。
|
||||
|
||||
ECharts是百度开源的基于JavaScript的数据可视化库,支持丰富的图表类型和高度的交互性,广泛应用于数据大屏和商业智能领域。本研究使用ECharts实现Web端的多维度可视化展示。
|
||||
ECharts是Apache基金会旗下的开源JavaScript可视化库(原为百度开发),支持折线图、柱状图、饼图、热力图、仪表盘等数十种图表类型。其声明式配置语法和丰富的交互特性(数据缩放、tooltip、图例切换)使其成为数据大屏开发的主流选择。本研究基于ECharts 5.5构建6个可视化面板。
|
||||
|
||||
+142
-43
@@ -1,71 +1,170 @@
|
||||
\chapter{数据获取与预处理}
|
||||
|
||||
\section{研究区域概况}
|
||||
本章详细描述从原始ERA5-Land再分析数据到机器学习就绪数据集的全流程管线,包括数据获取、质量控制、体感温度计算、特征工程和序列化构建。
|
||||
|
||||
本研究选取焦作市和郑州市作为研究区域。两市位于河南省中部偏北,属于暖温带大陆性季风气候,夏季炎热多雨,冬季寒冷干燥,年平均气温约14-15℃,7月平均气温可达27-28℃,极端高温超过40℃。
|
||||
\section{研究区域与数据时空范围}
|
||||
|
||||
焦作市总面积4071平方公里,常住人口约352万,其中65岁及以上人口占比约12.8\%。郑州市作为河南省省会,总面积7446平方公里,常住人口约1274万,老龄化率约11.6\%。两市的城镇化率均超过65\%,城市热岛效应与人口老龄化叠加,使得高温健康防护问题尤为突出。
|
||||
本研究选取焦作市(35.24°N, 113.22°E)和郑州市(34.75°N, 113.62°E)为研究区域,两市同属暖温带大陆性季风气候,夏季炎热特征显著。数据覆盖2010年1月1日至2024年12月31日共15年(180个月),时间分辨率为6小时(每日00:00、06:00、12:00、18:00 UTC)。
|
||||
|
||||
ERA5-Land数据集的原始空间分辨率为0.1°×0.1°(约9 km),本研究以城市坐标为中心,截取±0.5°范围的网格区域(约11×11网格点),覆盖城区及近郊范围,兼顾城区热岛效应和郊区对照。
|
||||
|
||||
\section{数据来源}
|
||||
|
||||
\subsection{ERA5-Land气象再分析数据}
|
||||
|
||||
ERA5-Land是欧洲中期天气预报中心(ECMWF)提供的全球陆地表面再分析数据集,空间分辨率为0.1°×0.1°(约9 km),时间分辨率最高为1小时。本研究通过Copernicus Climate Data Store (CDS) API获取2010-2024年间焦作市和郑州市的网格点气象数据。
|
||||
ERA5-Land是欧洲中期天气预报中心(ECMWF)生产的全球陆地表面再分析数据集,是ERA5的增强版本,在陆地变量上具有更高的空间分辨率(0.1° vs 0.25°)。数据通过Copernicus Climate Data Store (CDS) API获取,使用cdsapi Python库(v0.7.7)逐月下载。
|
||||
|
||||
获取的气象变量包括:
|
||||
\begin{itemize}
|
||||
\item 2m温度(2m temperature)
|
||||
\item 2m露点温度(2m dewpoint temperature)
|
||||
\item 地表气压(surface pressure)
|
||||
\item 10m风速U分量和V分量
|
||||
\item 总降水量(total precipitation)
|
||||
\item 地表太阳辐射(surface solar radiation downwards)
|
||||
\end{itemize}
|
||||
本研究获取以下6个气象变量:
|
||||
|
||||
\begin{table}[H]
|
||||
\centering
|
||||
\caption{ERA5-Land获取变量一览}
|
||||
\begin{tabular}{cccc}
|
||||
\toprule
|
||||
\textbf{NetCDF变量名} & \textbf{中文名称} & \textbf{单位} & \textbf{原始时间分辨率} \\
|
||||
\midrule
|
||||
t2m & 2m气温 & K & 6小时 \\
|
||||
d2m & 2m露点温度 & K & 6小时 \\
|
||||
sp & 地表气压 & Pa & 6小时 \\
|
||||
u10 & 10m风速U分量 & m/s & 6小时 \\
|
||||
v10 & 10m风速V分量 & m/s & 6小时 \\
|
||||
tp & 总降水量 & m & 6小时(累积) \\
|
||||
\bottomrule
|
||||
\end{tabular}
|
||||
\end{table}
|
||||
|
||||
每城市每月生成1个NetCDF文件,两城市共360个文件,数据总量约76 MB。经ZIP解压后得到标准NetCDF4格式,使用h5netcdf后端通过xarray库进行读取和拼接。每个文件包含约124个时间步(31天×4时次/天),单个城市15年拼接后共21,916个时间步。
|
||||
|
||||
\subsection{人口与健康数据}
|
||||
|
||||
人口数据来源于第七次全国人口普查公报(2020年),包括分年龄段人口结构、老龄化率等基础指标。健康统计数据来源于河南省卫生健康统计年鉴,包括各月死亡人数、门急诊就诊人次等。
|
||||
人口数据来源于第七次全国人口普查公报(2020年)以及河南省统计年鉴,包括分年龄段人口结构(0-14岁、15-64岁、65岁及以上)、老龄化率等基础指标。暴露-反应关系参考Chen等(2018)发表的中国多城市温度-死亡关联曲线,构建了13点暴露-反应映射表(温度-相对风险)。
|
||||
|
||||
\subsection{高温预警与极端天气历史记录}
|
||||
\section{数据预处理管线}
|
||||
|
||||
收集焦作市和郑州市2010-2024年高温预警发布记录和极端天气事件记录,用于标注和验证模型预警的准确性。
|
||||
预处理管线包含8个顺序步骤,由Python脚本\texttt{src/data/preprocess.py}实现,自动遍历焦作和郑州两个城市。
|
||||
|
||||
\section{数据预处理}
|
||||
\subsection{步骤1:多文件加载与拼接}
|
||||
|
||||
\subsection{时间分辨率统一}
|
||||
使用xarray的\texttt{open\_mfdataset}函数,以\texttt{by\_coords}模式沿valid\_time维度拼接同城市的所有月度NetCDF文件。拼接后按时间排序并去重,确保时间轴的连续性和单调性。
|
||||
|
||||
原始ERA5-Land数据为小时级别,需将其聚合为日尺度数据。对于温度变量,计算日最大值、最小值和平均值;对于降水量、太阳辐射等累积变量,计算日总量。
|
||||
\subsection{步骤2:日聚合与单位转换}
|
||||
|
||||
\subsection{缺失值处理}
|
||||
|
||||
由于CDS API下载过程中可能产生网络中断导致部分时段数据缺失,采用线性插值和前后日平均值填充相结合的方法处理缺失值。若连续缺失超过30天,则使用历史同期多年平均值进行填充。
|
||||
|
||||
\subsection{异常值检测}
|
||||
|
||||
对温度数据中的异常值进行检测和修正。温度超出历史同期均值±3倍标准差范围的被视为异常值,采用前后值线性插值修正。
|
||||
|
||||
\subsection{特征工程}
|
||||
|
||||
在基础气象变量的基础上,构建以下衍生特征:
|
||||
将6小时间隔数据按valid\_time重采样为日平均值,并执行单位转换:
|
||||
\begin{itemize}
|
||||
\item 热浪指数:日最高温度连续超过阈值(32℃/35℃)的天数
|
||||
\item 昼夜温差:日最高温度与日最低温度之差
|
||||
\item 连续高温天数:日最高温度超过35℃的连续天数
|
||||
\item 湿热指数:结合温度和湿度计算的体感温度
|
||||
\item 季节编码:月份的正弦/余弦编码
|
||||
\item 滞后特征:前1天、前3天、前7天的温度值
|
||||
\item 温度变量:K $\rightarrow$ °C($T_C = T_K - 273.15$)
|
||||
\item 降水量:m $\rightarrow$ mm($\times 1000$),ERA5降水变量存储的是日均累积值
|
||||
\item 列重命名:t2m→temp\_mean, d2m→dewpoint\_mean, sp→pressure\_mean, u10→u\_wind, v10→v\_wind, tp→precip
|
||||
\end{itemize}
|
||||
|
||||
\section{数据集构建}
|
||||
单个城市日聚合后生成约5,479条日记录(15年×365天,扣除闰年差异和非完整日)。
|
||||
|
||||
\subsection{样本构造}
|
||||
\subsection{步骤3:相对湿度计算}
|
||||
|
||||
采用滑动窗口方法构造监督学习样本。以历史N天的气象特征序列为输入,以未来T天的健康风险等级为目标变量。分别构建短期(输入7天,输出1-3天)、中期(输入30天,输出7天)和长期(输入90天,输出30天)三个时间尺度的数据集。
|
||||
利用Magnus公式从气温和露点温度计算相对湿度(详见第2.4.1节式2.17-2.19)。湿度值是体感温度计算的关键输入,也是独立的气候特征。
|
||||
|
||||
\subsection{训练集与测试集划分}
|
||||
\subsection{步骤4:体感温度计算}
|
||||
|
||||
采用时间序列划分方法,使用2010-2019年数据作为训练集,2020-2022年数据作为验证集,2023-2024年数据作为测试集,以模拟真实预测场景。
|
||||
利用NOAA Rothfusz公式计算每日体感温度(Heat Index,详见第2.4.2节式2.20-2.24)。体感温度融合了气温和湿度的联合效应,是高温健康风险评估的核心指标。当气温低于26.7°C时使用简化线性公式,高于此阈值时使用完整Rothfusz回归,并进行NOAA标准湿度修正。
|
||||
|
||||
\subsection{数据归一化}
|
||||
\subsection{步骤5:特征工程}
|
||||
|
||||
对所有数值型特征采用Z-score标准化(均值为0,标准差为1),标准化参数基于训练集计算并应用于验证集和测试集。
|
||||
在6个基础气象变量+相对湿度+体感温度共8个直接变量的基础上,构建以下衍生特征(共19维):
|
||||
|
||||
\begin{table}[H]
|
||||
\centering
|
||||
\caption{特征工程构建的衍生特征(共19维)}
|
||||
\begin{tabular}{cll}
|
||||
\toprule
|
||||
\textbf{序号} & \textbf{特征名} & \textbf{说明} \\
|
||||
\midrule
|
||||
1-2 & latitude, longitude & 网格中心经纬度 \\
|
||||
3 & temp\_mean & 日均气温(°C) \\
|
||||
4 & dewpoint\_mean & 日均露点温度(°C) \\
|
||||
5 & pressure\_mean & 日均地表气压(hPa) \\
|
||||
6 & u\_wind & 10m风速U分量 \\
|
||||
7 & v\_wind & 10m风速V分量 \\
|
||||
8 & precip & 日均降水量(mm) \\
|
||||
9 & rh & 日均相对湿度(\%),Magnus公式 \\
|
||||
10 & heat\_index & 体感温度(°C),NOAA公式 \\
|
||||
11 & temp\_7d\_avg & 7天滚动平均气温 \\
|
||||
12 & temp\_14d\_avg & 14天滚动平均气温 \\
|
||||
13 & temp\_lag\_0 & 当前温度(同temp\_mean) \\
|
||||
14 & temp\_lag\_1 & 前1天温度滞后 \\
|
||||
15 & temp\_lag\_3 & 前3天温度滞后 \\
|
||||
16 & temp\_lag\_7 & 前7天温度滞后 \\
|
||||
17 & heatwave & 热浪标识(≥3天HI>32°C) \\
|
||||
18 & heatwave\_strength & 热浪强度(连续高温天数) \\
|
||||
\bottomrule
|
||||
\end{tabular}
|
||||
\end{table}
|
||||
|
||||
滞后特征用于捕捉温度的短期自回归效应——今天的风险不仅取决于今天的温度,还受前期热量累积的影响。热浪标识和强度特征则捕捉持续性高温事件的叠加效应。
|
||||
|
||||
\subsection{步骤6:风险标签计算}
|
||||
|
||||
基于日均体感温度(Heat Index),按照第2.4.3节定义的阈值将每条日记录标注为0-3级风险标签。对于多时间尺度预测任务,标签为未来窗口内的众数风险等级(多数投票法)。
|
||||
|
||||
\subsection{步骤7:滑动窗口序列构建}
|
||||
|
||||
采用长度为14天的滑动窗口,从日特征数据中生成监督学习样本:
|
||||
|
||||
\begin{itemize}
|
||||
\item \textbf{输入X}:连续14天×19特征的矩阵,形状为(14, 19)
|
||||
\item \textbf{输出y}:三元组(短期标签, 中期标签, 长期标签),分别对应未来3天、7天和30天的众数风险等级
|
||||
\end{itemize}
|
||||
|
||||
滑动窗口从第14天开始滑动至倒数第30天(为长期预测保留足够的未来标签),单个城市约生成547,879条样本。
|
||||
|
||||
\subsection{步骤8:数据集保存与合并}
|
||||
|
||||
将每个城市的序列数据保存为压缩NPZ格式,同时生成合并数据集:
|
||||
|
||||
\begin{table}[H]
|
||||
\centering
|
||||
\caption{预处理产出文件}
|
||||
\begin{tabular}{lcc}
|
||||
\toprule
|
||||
\textbf{文件} & \textbf{样本数} & \textbf{说明} \\
|
||||
\midrule
|
||||
jiaozuo\_sequences.npz & 547,879 & 焦作市序列数据,X(14,19), y(3,) \\
|
||||
zhengzhou\_sequences.npz & 547,879 & 郑州市序列数据,X(14,19), y(3,) \\
|
||||
sequences\_combined.npz & 1,095,758 & 两市合并序列数据 \\
|
||||
features\_jiaozuo.csv & 547,893 & 焦作日特征CSV \\
|
||||
features\_zhengzhou.csv & 547,893 & 郑州日特征CSV \\
|
||||
features\_combined.csv & 1,095,786 & 两市合并日特征CSV \\
|
||||
\bottomrule
|
||||
\end{tabular}
|
||||
\end{table}
|
||||
|
||||
\section{类别分布与数据不平衡}
|
||||
|
||||
预处理后的风险标签分布呈现极度的类别不平衡:
|
||||
|
||||
\begin{table}[H]
|
||||
\centering
|
||||
\caption{训练集风险等级分布(基于y\_short标签)}
|
||||
\begin{tabular}{lccc}
|
||||
\toprule
|
||||
\textbf{风险等级} & \textbf{焦作市} & \textbf{郑州市} & \textbf{占比} \\
|
||||
\midrule
|
||||
0级(低风险) & 529,142 (96.6\%) & 515,007 (94.0\%) & 约94-97\% \\
|
||||
1级(中风险) & 10,437 (1.9\%) & 17,118 (3.1\%) & 约2-3\% \\
|
||||
2级(高风险) & 5,921 (1.1\%) & 11,098 (2.0\%) & 约1-2\% \\
|
||||
3级(严重风险)& 2,379 (0.4\%) & 4,656 (0.9\%) & <1\% \\
|
||||
\bottomrule
|
||||
\end{tabular}
|
||||
\end{table}
|
||||
|
||||
这一极度不平衡(多数类比少数类多两个数量级以上)是机器学习建模面临的核心挑战,直接影响了后续损失函数的选择(Focal Loss vs Cross-Entropy)和模型训练的收敛行为。
|
||||
|
||||
\section{数据集划分}
|
||||
|
||||
采用严格的时间序列划分(不打乱样本),以模拟真实预测场景「用历史数据训练、预测未来」:
|
||||
|
||||
\begin{itemize}
|
||||
\item \textbf{训练集:}70\%(约767,030条),对应2010年至约2020年中期
|
||||
\item \textbf{验证集:}15\%(约164,363条),对应约2020年中期至2022年中期
|
||||
\item \textbf{测试集:}15\%(约164,365条),对应约2022年中期至2024年12月
|
||||
\end{itemize}
|
||||
|
||||
时间序列划分确保测试集中的数据在时间上完全晚于训练集,避免数据泄露(Data Leakage)。所有标准化参数(均值、标准差)仅基于训练集计算,然后应用于验证集和测试集。
|
||||
|
||||
+146
-28
@@ -1,62 +1,180 @@
|
||||
\chapter{多时间尺度预警模型设计}
|
||||
|
||||
本章详细阐述LSTM-Attention深度学习模型和XGBoost基线模型的设计细节、训练策略和评估框架。
|
||||
|
||||
\section{模型总体架构}
|
||||
|
||||
本研究设计了基于LSTM-Attention的多时间尺度高温健康风险预警模型,整体架构包括四个主要模块:输入层(多维气象特征序列)、LSTM编码层(时序特征提取)、多头自注意力层(关键时间步加权)和输出层(多时间尺度风险预测)。
|
||||
本研究设计的LSTM-Attention模型采用「编码器-注意力-多任务输出」的架构范式,整体分为四个功能模块:
|
||||
|
||||
\section{LSTM编码层}
|
||||
\begin{enumerate}
|
||||
\item \textbf{输入投影层}:将19维气象特征向量线性映射至128维隐藏空间
|
||||
\item \textbf{双向LSTM编码层}:2层BiLSTM(隐藏维度128),从输入序列中提取时序模式
|
||||
\item \textbf{多头自注意力层}:4头自注意力机制,捕捉序列中不同时间步之间的依赖关系
|
||||
\item \textbf{多任务输出层}:3个独立的全连接头,分别输出短期、中期和长期风险等级预测
|
||||
\end{enumerate}
|
||||
|
||||
\subsection{时序特征提取}
|
||||
模型总参数量为983,628,其中LSTM层约占75\%(740K参数),注意力层约占8\%(79K参数),输出头约占17\%。模型实现基于PyTorch 2.12.0框架,在NVIDIA GeForce RTX 4060 Laptop GPU(8GB VRAM)上进行训练。
|
||||
|
||||
LSTM编码层接收经过标准化的多维气象特征序列,通过两层堆叠的LSTM网络逐步提取时序中的高级特征表示。第一层LSTM以50个隐藏单元对输入序列进行初步编码,第二层LSTM以50个隐藏单元对第一层的输出进行更深层次的时序模式挖掘。
|
||||
\section{输入投影层}
|
||||
|
||||
\subsection{Dropout正则化}
|
||||
输入投影层将19维原始气象特征通过一个全连接层映射至128维隐藏空间:
|
||||
|
||||
在每层LSTM之后加入Dropout层,丢弃概率设为0.3,以防止模型在训练集上过拟合。
|
||||
\begin{equation}
|
||||
\mathbf{X}' = \mathbf{X}\mathbf{W}_{\text{proj}} + \mathbf{b}_{\text{proj}}
|
||||
\end{equation}
|
||||
|
||||
其中$\mathbf{X} \in \mathbb{R}^{B \times 14 \times 19}$为输入批次($B$为batch size),$\mathbf{W}_{\text{proj}} \in \mathbb{R}^{19 \times 128}$为投影矩阵。投影层的作用是在LSTM处理之前将特征维度提升至与隐藏状态维度一致,避免LSTM在低维输入上的信息瓶颈。
|
||||
|
||||
\section{双向LSTM编码层}
|
||||
|
||||
\subsection{层结构与参数}
|
||||
|
||||
LSTM编码器由2层堆叠的双向LSTM组成:
|
||||
|
||||
\begin{itemize}
|
||||
\item 输入维度:128(经投影层的特征向量)
|
||||
\item 隐藏维度:128
|
||||
\item 层数:2(堆叠式,第一层的输出作为第二层的输入)
|
||||
\item 方向:双向(bidirectional),每层前向和后向LSTM各128维隐藏状态
|
||||
\item Dropout:0.3(层间dropout,防止过拟合)
|
||||
\end{itemize}
|
||||
|
||||
由于是双向LSTM,每个时间步的输出维度为$2 \times 128 = 256$(前向+后向拼接)。经过LSTM编码后,输入序列$\mathbf{X}' \in \mathbb{R}^{B \times 14 \times 128}$被转换为时序特征$\mathbf{H} \in \mathbb{R}^{B \times 14 \times 256}$。
|
||||
|
||||
\subsection{LSTM投影层}
|
||||
|
||||
在LSTM输出之后、注意力层之前,插入一个线性投影层将256维双向输出映射回128维:
|
||||
|
||||
\begin{equation}
|
||||
\mathbf{H}' = \mathbf{H}\mathbf{W}_{\text{lstm\_proj}} + \mathbf{b}_{\text{lstm\_proj}}
|
||||
\end{equation}
|
||||
|
||||
投影至128维是为了匹配后续多头注意力层的输入期望,同时降低计算量。
|
||||
|
||||
\section{多头自注意力层}
|
||||
|
||||
\subsection{注意力计算}
|
||||
\subsection{层配置}
|
||||
|
||||
在LSTM编码器的输出之上,应用多头自注意力机制(head=4),使模型能够自动学习输入序列中不同时间步对预测目标的重要性权重。通过注意力机制,模型可以重点关注高温连续天数、温度突变点等对健康风险影响较大的关键时段。
|
||||
多头自注意力机制在时序维度上操作,允许模型动态地关注14天窗口中的关键时间步:
|
||||
|
||||
\begin{itemize}
|
||||
\item 头数($h$):4
|
||||
\item 每个头的维度($d_k$):32(总嵌入维度128 / 4个头)
|
||||
\item 位置编码:无需显式位置编码,LSTM的输出已包含时序位置信息
|
||||
\end{itemize}
|
||||
|
||||
\subsection{残差连接与层归一化}
|
||||
|
||||
参照Transformer架构,在多头注意力子层后加入残差连接和层归一化,以加速训练收敛并提升模型稳定性。
|
||||
参照Transformer的后归一化(post-norm)架构,在多注意力子层后加入残差连接和层归一化:
|
||||
|
||||
\begin{equation}
|
||||
\mathbf{Z} = \text{LayerNorm}(\mathbf{H}' + \text{MultiHead}(\mathbf{H}', \mathbf{H}', \mathbf{H}'))
|
||||
\end{equation}
|
||||
|
||||
残差连接确保梯度可以绕过注意力层直接回传至LSTM,缓解深层网络的梯度消失问题。层归一化稳定了训练过程中的激活分布。
|
||||
|
||||
\subsection{全局平均池化}
|
||||
|
||||
对注意力输出沿时间维度进行全局平均池化,得到固定长度的序列级特征表示:
|
||||
|
||||
\begin{equation}
|
||||
\mathbf{z} = \frac{1}{14}\sum_{t=1}^{14} \mathbf{Z}_{t,:}
|
||||
\end{equation}
|
||||
|
||||
池化后的向量$\mathbf{z} \in \mathbb{R}^{128}$作为三个输出头的共享输入。
|
||||
|
||||
\section{多任务输出层}
|
||||
|
||||
考虑到短期、中期和长期预警任务之间的关联性,输出层采用多任务学习(Multi-Task Learning)架构,共享LSTM编码层和注意力层的特征表示,通过三个独立的全连接头分别输出不同时间尺度的风险等级预测。
|
||||
考虑到短期、中期和长期预警任务之间的内在关联(都依赖于相同的底层天气-健康关联机制),采用多任务学习(Multi-Task Learning)架构。三个输出头共享LSTM和注意力层的特征表示,通过参数共享实现知识迁移和正则化。
|
||||
|
||||
每个输出头包括两个全连接层:第一层将注意力池化后的特征映射到32维,第二层输出目标时间尺度的预测结果。
|
||||
每个输出头由两个全连接层组成:
|
||||
|
||||
\section{损失函数与优化器}
|
||||
\begin{equation}
|
||||
\mathbf{h}_{\text{head}}^{(k)} = \text{ReLU}(\mathbf{z}\mathbf{W}_1^{(k)} + \mathbf{b}_1^{(k)}), \quad k \in \{\text{short}, \text{medium}, \text{long}\}
|
||||
\end{equation}
|
||||
\begin{equation}
|
||||
\hat{\mathbf{y}}^{(k)} = \mathbf{h}_{\text{head}}^{(k)}\mathbf{W}_2^{(k)} + \mathbf{b}_2^{(k)}
|
||||
\end{equation}
|
||||
|
||||
\subsection{损失函数}
|
||||
其中第一层为128→32维(带ReLU激活),第二层为32→4维(输出4个风险等级的对数几率logits)。三个头的输出经softmax归一化后得到各风险等级的概率分布。
|
||||
|
||||
对于多分类风险等级预测任务,采用交叉熵损失函数(Cross-Entropy Loss)。三个任务的损失按相等权重加权求和,总损失定义为:
|
||||
\section{损失函数:Focal Loss}
|
||||
|
||||
\[
|
||||
\mathcal{L}_{\text{total}} = \mathcal{L}_{\text{short}} + \mathcal{L}_{\text{medium}} + \mathcal{L}_{\text{long}}
|
||||
\]
|
||||
鉴于训练集中极度不平衡的类别分布(低风险类占94-97\%),传统交叉熵损失会导致模型倾向于始终预测低风险类。本研究采用Focal Loss(详见第2.5节式2.26)作为损失函数,设置$\alpha=0.5, \gamma=2.0$。
|
||||
|
||||
\subsection{优化器与学习率策略}
|
||||
三个预测头的总损失定义为等权重求和:
|
||||
|
||||
使用Adam优化器,初始学习率设为0.001。训练过程中采用ReduceLROnPlateau学习率衰减策略,当验证损失连续10个epoch未下降时,学习率减半。同时设置早停(Early Stopping)策略,验证损失连续25个epoch未下降时终止训练。
|
||||
\begin{equation}
|
||||
\mathcal{L}_{\text{total}} = \frac{1}{3}\left(\mathcal{L}_{\text{short}} + \mathcal{L}_{\text{medium}} + \mathcal{L}_{\text{long}}\right)
|
||||
\end{equation}
|
||||
|
||||
\section{基线模型:XGBoost}
|
||||
各头使用Focal Loss独立计算损失,权重相等以平衡三个时间尺度的重要性。
|
||||
|
||||
为评估深度学习方法的有效性,选用XGBoost作为基线模型进行对比实验。XGBoost输入为展平后的特征向量(所有时间步特征拼接),输出与LSTM-Attention模型保持一致。
|
||||
\section{优化器与训练策略}
|
||||
|
||||
XGBoost的关键超参数包括:树的数量(n\_estimators=200)、最大深度(max\_depth=6)、学习率(learning\_rate=0.1)和子采样率(subsample=0.8),通过5折交叉验证在训练集上选择最优超参数。
|
||||
\subsection{优化器配置}
|
||||
|
||||
使用AdamW优化器(Adam的权重衰减修正版),参数设置如下:
|
||||
\begin{itemize}
|
||||
\item 初始学习率(lr):$1 \times 10^{-3}$
|
||||
\item 权重衰减(weight\_decay):$1 \times 10^{-4}$
|
||||
\item $\beta_1 = 0.9, \beta_2 = 0.999$
|
||||
\end{itemize}
|
||||
|
||||
\subsection{学习率调度}
|
||||
|
||||
采用ReduceLROnPlateau策略,当验证损失连续5个epoch未下降时,学习率乘以0.5:
|
||||
|
||||
\begin{equation}
|
||||
lr_{\text{new}} = lr_{\text{old}} \times 0.5 \quad \text{if} \quad \Delta_{\text{val\_loss}} \leq 0 \text{ for 5 consecutive epochs}
|
||||
\end{equation}
|
||||
|
||||
\subsection{早停与梯度裁剪}
|
||||
|
||||
\textbf{早停(Early Stopping):}验证损失连续15个epoch未改善时终止训练,防止过拟合并节省计算资源。
|
||||
|
||||
\textbf{梯度裁剪(Gradient Clipping):}将梯度的全局范数限制在1.0以内,防止梯度爆炸:
|
||||
|
||||
\begin{equation}
|
||||
\|\mathbf{g}\|_{\text{new}} = \min\left(1.0 / \|\mathbf{g}\|, 1\right) \cdot \mathbf{g}
|
||||
\end{equation}
|
||||
|
||||
\subsection{训练配置}
|
||||
|
||||
\begin{itemize}
|
||||
\item Batch size:32
|
||||
\item 最大训练轮数:50 epoch
|
||||
\item 数据加载:随机打乱(shuffle=True),不使用加权采样器
|
||||
\item 设备:NVIDIA RTX 4060 Laptop GPU(CUDA 12.6)
|
||||
\item 每轮训练时间:约2.5分钟(batch\_size=32时约24,000个batch/epoch)
|
||||
\end{itemize}
|
||||
|
||||
\section{XGBoost基线模型}
|
||||
|
||||
为评估深度学习方法的有效性,选择XGBoost作为传统机器学习基线。XGBoost的核心优势在于其基于树的集成结构天然适合表格型数据,且对类别不平衡具有较好的鲁棒性。
|
||||
|
||||
\subsection{模型配置}
|
||||
|
||||
\begin{itemize}
|
||||
\item 估计器数量(n\_estimators):200
|
||||
\item 最大树深度(max\_depth):6
|
||||
\item 学习率(learning\_rate):0.05
|
||||
\item 设备:CUDA(GPU加速)
|
||||
\item 分类器数量:3个(分别对应短期、中期、长期预测)
|
||||
\end{itemize}
|
||||
|
||||
\subsection{输入处理}
|
||||
|
||||
XGBoost不直接处理三维时序数据,将(N, 14, 19)的输入序列展平为(N, 266)的二维特征矩阵(14×19=266维)。这种「时间展平」策略将时序信息转换为空间特征,适合基于树的模型处理。
|
||||
|
||||
\section{评估指标}
|
||||
|
||||
采用以下指标评估模型性能:
|
||||
针对多分类任务和类别不平衡特性,采用以下指标:
|
||||
|
||||
\begin{itemize}
|
||||
\item 准确率(Accuracy):预测正确的样本占总样本的比例
|
||||
\item 精确率(Precision):被预测为某风险等级的样本中真正属于该等级的比例
|
||||
\item 召回率(Recall):某风险等级的样本中被正确预测的比例
|
||||
\item F1分数(F1-Score):精确率与召回率的调和平均
|
||||
\item 宏平均(Macro Average):各类别指标的算术平均,适用于类别不均衡场景
|
||||
\item \textbf{准确率(Accuracy):}$\text{Acc} = \frac{TP + TN}{TP + TN + FP + FN}$
|
||||
\item \textbf{宏平均F1分数(Macro F1-Score):}各类别F1分数的算术平均,给予少数类与多数类同等权重,是评估不平衡分类任务的核心指标
|
||||
\item \textbf{混淆矩阵(Confusion Matrix):}$\mathbf{C} \in \mathbb{R}^{4 \times 4}$,$C_{ij}$为真实类别$i$被预测为类别$j$的样本数
|
||||
\end{itemize}
|
||||
|
||||
宏平均F1是本研究的首要评估指标,因为它不受类别不平衡的干扰,能够真实反映模型在各风险等级、特别是高风险等级上的预测能力。
|
||||
|
||||
+105
-45
@@ -1,75 +1,135 @@
|
||||
\chapter{预警可视化系统设计与实现}
|
||||
\chapter{预警可视化大屏系统}
|
||||
|
||||
本章介绍基于Flask后端和ECharts前端的Web可视化大屏系统的设计、架构和实现。
|
||||
|
||||
\section{系统需求分析}
|
||||
|
||||
\subsection{功能需求}
|
||||
|
||||
高温健康风险预警可视化系统的主要功能需求包括:实时气象数据展示、温度变化趋势分析、多时间尺度风险预警展示、人口与健康数据概览、历史数据查询和预警发布管理。
|
||||
高温健康风险预警可视化系统面向政府管理者、社区工作者和公众三类用户,核心功能需求包括:
|
||||
|
||||
\begin{enumerate}
|
||||
\item \textbf{实时温度与风险展示}:以图表形式展示当前及未来数日的温度变化趋势和风险等级预测
|
||||
\item \textbf{多时间尺度覆盖}:同时呈现短期(3天)、中期(7天)和长期(30天)三个时间尺度的预警信息
|
||||
\item \textbf{人口脆弱性概览}:展示老年人口比例和暴露-反应关系,辅助风险评估
|
||||
\item \textbf{历史数据回溯}:支持查看过去90天的温度、体感温度和风险等级历史记录
|
||||
\item \textbf{年度统计摘要}:提供各年份的高温天数、平均温度等汇总统计
|
||||
\end{enumerate}
|
||||
|
||||
\subsection{非功能需求}
|
||||
|
||||
系统应具备以下非功能特性:(1)响应式布局,适配不同尺寸的显示设备;(2)数据更新延迟不超过5分钟;(3)可视化渲染流畅,页面加载时间不超过3秒;(4)界面采用深色科技蓝风格,符合数据大屏的视觉规范。
|
||||
\begin{itemize}
|
||||
\item 深色科技蓝风格,符合数据大屏的视觉规范
|
||||
\item 页面首次加载时间不超过3秒
|
||||
\item 支持1920×1080及以上分辨率显示
|
||||
\item 自动刷新数据(30分钟周期),确保大屏长时间运行时信息不过时
|
||||
\item 模型不可用时自动降级为默认预测,保证系统可用性
|
||||
\end{itemize}
|
||||
|
||||
\section{系统架构设计}
|
||||
|
||||
系统采用B/S(Browser/Server)架构,分为三层:
|
||||
系统采用经典的B/S(Browser/Server)架构,前后端分离:
|
||||
|
||||
\begin{itemize}
|
||||
\item \textbf{数据层}:负责气象数据、人口数据和模型预测结果的存储与管理
|
||||
\item \textbf{服务层}:基于Flask框架的Web后端,提供RESTful API,包括数据查询、模型推理和预警推送
|
||||
\item \textbf{展示层}:基于HTML+CSS+JavaScript的Web前端,使用ECharts进行数据可视化
|
||||
\item \textbf{后端(Python Flask):}负责数据查询、模型推理(LSTM/XGBoost)、JSON响应封装。启动时延迟加载模型文件,减少初始内存占用
|
||||
\item \textbf{前端(HTML5 + CSS3 + JavaScript):}单页架构,使用ECharts 5.5进行图表渲染,通过fetch API异步请求后端数据
|
||||
\item \textbf{数据流:}前端定时请求 → Flask路由分发 → 模型推理/数据查询 → JSON序列化 → 前端ECharts渲染
|
||||
\end{itemize}
|
||||
|
||||
\section{后端实现}
|
||||
系统部署于开发服务器(Flask内置Werkzeug),监听所有网络接口(0.0.0.0:5005),支持局域网内多设备访问。
|
||||
|
||||
\subsection{Flask应用结构}
|
||||
\section{后端API设计}
|
||||
|
||||
Flask应用采用蓝图(Blueprint)模块化组织,主要模块包括:
|
||||
Flask后端提供4个核心RESTful API端点:
|
||||
|
||||
\subsection{预测接口 GET /api/predict}
|
||||
|
||||
返回三个时间尺度的风险预测结果。响应JSON结构包含:
|
||||
\begin{itemize}
|
||||
\item \texttt{api/data}:气象和人口数据接口
|
||||
\item \texttt{api/predict}:模型预测与预警接口
|
||||
\item \texttt{api/history}:历史数据查询接口
|
||||
\item \texttt{city}:当前预测城市(焦作/郑州)
|
||||
\item \texttt{date}:预测基准日期
|
||||
\item \texttt{predictions}:包含\texttt{short}、\texttt{medium}、\texttt{long}三个子对象
|
||||
\item 每个子对象包含:\texttt{level}(风险等级0-3)、\texttt{label}(中文标签)、\texttt{probabilities}(4维概率向量)、\texttt{confidence}(置信度0-1)、\texttt{suggestions}(防护建议字符串列表)、\texttt{color}(CSS颜色码)
|
||||
\item \texttt{risk\_population}:估算的风险暴露老年人口数
|
||||
\end{itemize}
|
||||
|
||||
\subsection{数据接口设计}
|
||||
当模型文件不可用时,接口返回基于均匀概率的fallback默认预测。
|
||||
|
||||
API采用JSON格式进行数据交互,统一响应格式为:
|
||||
\subsection{历史接口 GET /api/history}
|
||||
|
||||
返回JSON数组,包含最近90天每日的温度、体感温度、风险等级和热浪标识,供前端趋势图表使用。
|
||||
|
||||
\subsection{统计接口 GET /api/stats}
|
||||
|
||||
返回年度汇总JSON,包含各年份平均温度数组、热浪天数数组、最高温度数组,以及焦作(12.8\%)和郑州(11.6\%)的固定老龄化率。
|
||||
|
||||
\subsection{主页 GET /}
|
||||
|
||||
返回包含完整前端代码的HTML页面(单文件架构)。
|
||||
|
||||
\section{前端可视化面板}
|
||||
|
||||
前端为单HTML文件,使用CSS Grid定义响应式布局,包含六个功能面板:
|
||||
|
||||
\subsection{面板1:温度变化趋势}
|
||||
|
||||
双Y轴折线图,蓝色线表示日均气温(temp\_mean)、橙色线表示体感温度(heat\_index)。背景标注三条水平阈值线:绿色虚线(32°C,中风险阈值)、黄色虚线(35°C,高风险阈值)、红色虚线(38°C,严重风险阈值)。X轴为日期,时间跨度90天,底部支持dataZoom缩放。
|
||||
|
||||
\subsection{面板2:多时间尺度风险展示}
|
||||
|
||||
三个并列卡片,分别展示短期(3天)、中期(7天)和长期(30天)的风险预测结果。每个卡片包含风险等级大字号中文标签(低风险/中风险/高风险/严重风险)、对应颜色圆点、置信度进度条和具体防护建议。
|
||||
|
||||
\subsection{面板3:老年人口结构}
|
||||
|
||||
饼图展示焦作市和郑州市的65岁及以上人口与65岁以下人口的比例,中心文本显示「65岁及以上:XX\%」。数据来源第七次全国人口普查(2020年)。
|
||||
|
||||
\subsection{面板4:预警时间线}
|
||||
|
||||
堆叠柱状图,X轴为月份(1-12月),Y轴为天数,不同颜色堆叠表示各风险等级。直观展示夏季(6-8月)高风险天数集中爆发的季节性特征。
|
||||
|
||||
\subsection{面板5:暴露-反应曲线}
|
||||
|
||||
折线图展示基于Chen等(2018)文献构建的温度-相对风险(RR)暴露-反应曲线,X轴为日平均温度(°C),Y轴为相对风险。标注最适温度(MMT)参考线(RR=1.0),以及95\%置信区间的上下界。
|
||||
|
||||
\subsection{面板6:历史数据表格}
|
||||
|
||||
近7天的每日明细表格,列包括日期、平均温度(°C)、体感温度(°C)、风险等级、热浪标识。支持垂直滚动。
|
||||
|
||||
\section{前端技术实现}
|
||||
|
||||
\subsection{配色方案}
|
||||
|
||||
深色科技蓝主题:
|
||||
\begin{itemize}
|
||||
\item 页面背景:\texttt{\#0a1632}(深蓝黑)
|
||||
\item 面板背景:\texttt{rgba(255, 255, 255, 0.05)}(半透明白色毛玻璃)
|
||||
\item 边框:\texttt{rgba(0, 212, 255, 0.15)}(青色低透明度)
|
||||
\item 图表强调色:青色\texttt{\#00d4ff}、蓝色\texttt{\#1e90ff}、金色\texttt{\#ffd700}
|
||||
\item 风险配色:绿色(低)、黄色(中)、橙色(高)、红色(严重)
|
||||
\end{itemize}
|
||||
|
||||
\subsection{CSS Grid布局}
|
||||
|
||||
使用CSS Grid定义6个面板区域:
|
||||
\begin{verbatim}
|
||||
{
|
||||
"code": 200,
|
||||
"message": "success",
|
||||
"data": { ... }
|
||||
}
|
||||
grid-template-areas:
|
||||
"temp trend temp risk pop stats"
|
||||
"temp history temp timeline curve table"
|
||||
\end{verbatim}
|
||||
|
||||
主要API端点包括:获取当前温度数据、获取温度历史趋势、获取风险预警等级、获取人口统计数据、获取高温天数统计等。
|
||||
每个面板使用\texttt{backdrop-filter: blur(10px)}实现背景毛玻璃效果,\texttt{border-radius: 8px}圆角边框,\texttt{padding: 16px}内边距。
|
||||
|
||||
\subsection{模型部署与推理}
|
||||
\subsection{ECharts初始化}
|
||||
|
||||
训练完成的PyTorch模型导出为TorchScript格式,在Flask应用启动时加载。推理请求到达时,将输入数据预处理后传入模型,获取预测结果并返回前端。
|
||||
所有6个图表通过\texttt{echarts.init()}独立初始化,使用\texttt{option}配置对象的JSON声明式语法进行渲染。全局设置dark背景主题和统一的\texttt{textStyle.color: '\#e0e6ed'}浅色文本。
|
||||
|
||||
\section{前端实现}
|
||||
\section{系统运行}
|
||||
|
||||
\subsection{页面布局}
|
||||
启动命令:
|
||||
\begin{verbatim}
|
||||
python -m src.web.app
|
||||
\end{verbatim}
|
||||
|
||||
可视化大屏采用典型的4+1布局方案:上方为标题栏,中部左侧为温度变化趋势图,中部右侧为风险预警面板,下部左侧为人口数据概览,下部右侧为高温天数统计,中央区域展示关键预警信息。
|
||||
启动后在浏览器访问\texttt{http://localhost:5005}即可查看大屏。开发模式(debug=True)支持代码热更新。生产环境建议使用Gunicorn或Waitress作为WSGI服务器。
|
||||
|
||||
\subsection{图表设计}
|
||||
|
||||
使用ECharts实现以下主要图表:
|
||||
\begin{itemize}
|
||||
\item 温度变化折线图:展示日最高/最低/平均温度的时序变化
|
||||
\item 风险等级仪表盘:以仪表盘形式展示当前风险等级
|
||||
\item 预警时间轴:以时间轴形式展示未来预警信息
|
||||
\item 人口结构饼图:展示老龄化人口分布
|
||||
\item 高温天数柱状图:展示每月高温天数统计
|
||||
\item 热力图:展示温度与健康风险的关联模式
|
||||
\end{itemize}
|
||||
|
||||
\subsection{深色科技蓝风格实现}
|
||||
|
||||
配色方案以深蓝色(\#0a1628)为背景主色调,辅以青蓝色(\#00d4ff)、亮蓝色(\#1e90ff)和渐变色作为数据可视化配色。图表采用半透明深色容器、发光边框和毛玻璃效果,营造科技感和专业感。
|
||||
|
||||
\section{系统部署}
|
||||
|
||||
系统通过Gunicorn作为WSGI服务器进行生产环境部署,绑定端口为5005。前端静态文件由Flask直接托管,无需额外配置Nginx。系统启动后可通过浏览器直接访问\url{http://localhost:5005}。
|
||||
系统当前为原型版本,使用开发服务器运行。未来可扩展方向包括:接入实时气象数据流、增加预警信息自动推送(邮件/短信)、支持多城市切换、添加用户认证和操作日志。
|
||||
|
||||
@@ -2,44 +2,46 @@
|
||||
|
||||
\section{工作总结}
|
||||
|
||||
本研究以焦作市和郑州市为研究区域,针对银发群体高温健康风险预警问题,开展了多时间尺度预警模型构建和可视化系统开发工作,取得了以下主要成果:
|
||||
本研究以河南省焦作市和郑州市为研究区域,针对银发群体高温健康风险预警问题,系统开展了数据获取、特征工程、模型构建与对比、可视化系统开发等工作,取得了以下主要成果:
|
||||
|
||||
\begin{enumerate}
|
||||
\item \textbf{构建了多源数据集}:获取并预处理了2010-2024年焦作、郑州两市的ERA5-Land气象再分析数据,结合人口普查和卫生统计数据,构建了温度-健康风险关联数据集,为后续模型训练提供了数据基础。
|
||||
\item \textbf{构建了高质量的ERA5-Land气象数据集}:通过CDS API获取2010-2024年焦作、郑州两市的ERA5-Land网格气象数据(360个月度NetCDF文件),经ZIP解压、日聚合、单位转换后,使用Magnus公式计算相对湿度、NOAA Rothfusz公式计算体感温度,构建了包含19个气象衍生特征的完整数据集。最终生成1,095,758条滑动窗口序列样本,覆盖短期(3天)、中期(7天)和长期(30天)三个预测窗口。
|
||||
|
||||
\item \textbf{设计了LSTM-Attention预警模型}:结合LSTM的时序特征提取能力和多头自注意力机制的关键时间步加权能力,构建了多时间尺度(短期/中期/长期)健康风险预警模型。实验结果表明,该模型在短期和中期预警任务上优于XGBoost等传统机器学习方法。
|
||||
\item \textbf{设计并实现了LSTM-Attention深度学习预警模型}:模型包含2层双向LSTM(隐藏维度128)、4头自注意力机制和3个独立的多任务输出头,总参数量983,628。采用Focal Loss($\alpha=0.5, \gamma=2.0$)作为损失函数以缓解极度类别不平衡,配合AdamW优化器、ReduceLROnPlateau学习率调度和早停策略进行训练。
|
||||
|
||||
\item \textbf{实现了可视化大屏系统}:基于Flask和ECharts开发了深色科技蓝风格的Web可视化大屏,实现了温度趋势、风险等级、人口数据和高温统计等多维度的直观展示,为决策者提供了便捷的信息获取渠道。
|
||||
\item \textbf{进行了系统的模型对比实验}:以XGBoost作为基线模型,在164,365条测试样本上进行了严格对比。XGBoost在三个时间尺度上均取得优异性能——短期F1-Macro 0.9325、中期0.9195、长期0.8576。LSTM-Attention模型(F1=0.2404)受样本极度不平衡(低风险类占比94-96\%)的制约,尽管进行了Focal Loss调参、类别加权、加权随机采样等多项优化尝试(共6轮实验),仍未能有效收敛。这一对比结果为环境健康预测任务中「表格数据+树模型vs序列数据+深度模型」的技术路线选择提供了有价值的实证参考。
|
||||
|
||||
\item \textbf{验证了注意力机制的有效性}:通过注意力权重可视化和消融实验,证明了注意力机制在提升模型性能和可解释性方面的积极作用。
|
||||
\item \textbf{开发了Web可视化大屏系统}:基于Flask后台(4个RESTful API端点)和ECharts 5.5前端,实现了包含温度趋势、风险实时展示、人口饼图、预警时间线、暴露-反应曲线和历史回溯六个功能面板的深色科技蓝风格数据大屏,为高温健康防护提供了直观的决策支持工具。
|
||||
\end{enumerate}
|
||||
|
||||
\section{研究不足}
|
||||
|
||||
本研究存在以下不足和局限性:
|
||||
本研究存在以下局限:
|
||||
|
||||
\begin{enumerate}
|
||||
\item \textbf{数据粒度限制}:ERA5-Land数据的空间分辨率为0.1°(约9 km),无法捕捉城市内部的微气候差异,对精细化的社区级预警支持有限。
|
||||
\item \textbf{数据粒度限制}:ERA5-Land数据的空间分辨率为0.1°(约9 km),无法捕捉城市内部的微气候差异(如不同城区的热岛强度差异),对社区级别的精细化预警支持有限。
|
||||
|
||||
\item \textbf{健康数据的间接性}:受限于数据可获取性,本研究的健康风险数据主要来源于宏观统计年鉴,缺乏个体级别的健康记录数据,风险标注的精细度有待提升。
|
||||
\item \textbf{健康终点数据的间接性}:受限于健康数据的可获取性,本研究的风险等级划分基于体感温度阈值和文献暴露-反应曲线,而非直接的个体级健康结局数据(如死亡记录、急诊就诊人次的时间序列)。温度-健康关联存在显著的人群异质性和地域差异,直接使用文献曲线可能引入一定偏差。
|
||||
|
||||
\item \textbf{模型局限性}:LSTM-Attention模型在长期(30天)预测任务上的性能仍有较大提升空间,长期气象预测本质上具有较强的混沌性和不确定性。
|
||||
\item \textbf{气象变量范围的有限性}:本研究仅使用了ERA5-Land的6个基础气象变量(温度、露点、气压、风速、降水),未纳入辐射通量、边界层高度、土壤湿度等可能与高温健康效应相关的变量。
|
||||
|
||||
\item \textbf{系统功能待完善}:当前可视化系统主要侧重于数据展示和预警呈现,尚未集成预警自动推送、多级联动响应等高级功能。
|
||||
\item \textbf{LSTM模型训练不充分}:深度序列模型在极端类别不平衡条件下的训练是一个公认的难题。本研究尝试的优化策略(Focal Loss、类别权重、加权采样)均未能使LSTM模型收敛,可能存在未探索的更优策略(如SMOTE过采样、两阶段训练、对抗训练等)。
|
||||
|
||||
\item \textbf{系统功能待完善}:当前可视化系统主要为原型版本,尚未集成预警自动推送、多级联动响应、用户认证和操作审计等功能。
|
||||
\end{enumerate}
|
||||
|
||||
\section{未来展望}
|
||||
|
||||
基于本研究的成果和不足,未来可以从以下方向继续深入:
|
||||
基于本研究的成果和经验,未来可从以下方向继续深入:
|
||||
|
||||
\begin{enumerate}
|
||||
\item \textbf{引入更高分辨率数据}:结合地面气象观测站数据和卫星遥感数据,提升数据空间分辨率,支持更精细的城市内部风险评估。
|
||||
\item \textbf{多源数据融合}:引入地面气象站观测数据(提高时间分辨率和局部精度)、卫星遥感地表温度(LST,捕捉城市热岛空间格局)、社会经济普查数据(建筑年代、空调普及率、社区绿化率等脆弱性因子)以及社交媒体和健康服务大数据,构建更全面的风险画像。
|
||||
|
||||
\item \textbf{融合更多模态数据}:引入社交媒体数据、120急救呼叫数据、医院急诊就诊数据等多源信息,构建更全面的健康风险评估体系。
|
||||
\item \textbf{深度模型训练策略改进}:针对极度类别不平衡问题,探索SMOTE和ADASYN等合成少数类过采样技术、基于对比学习的预训练策略、以及将XGBoost作为教师模型进行知识蒸馏(Knowledge Distillation),引导深度模型学习有判别力的特征表示。
|
||||
|
||||
\item \textbf{探索更先进的模型架构}:尝试引入Transformer、Informer、Autoformer等更先进的时序预测模型,进一步提升长期预警精度。
|
||||
\item \textbf{更先进的模型架构}:尝试Informer、Autoformer等专为长序列预测设计的Transformer变体,以及图神经网络(GNN)用于多城市联合建模。同时,探索概率预测方法(如DeepAR、概率Transformer)以提供预测不确定性估计,增强预警的可信度。
|
||||
|
||||
\item \textbf{完善系统功能}:在可视化系统的基础上,开发预警自动推送、多级联动响应、应急预案管理等高级功能,提升系统的实用性和智能化水平。
|
||||
\item \textbf{系统功能增强与部署}:完善预警推送机制(短信、微信小程序、社区广播),建立多级预警响应流程(蓝/黄/橙/红四级联动),添加用户角色管理和操作日志,支持多城市切换和历史预警复盘分析。
|
||||
|
||||
\item \textbf{扩展研究区域}:将研究方法和系统推广至河南省其他城市乃至全国范围,为更广泛的老年群体提供高温健康防护服务。
|
||||
\item \textbf{研究区域推广}:将本研究的管线和方法推广至河南省其他城市乃至整个中原城市群,为更大范围内的银发群体提供高温健康防护服务。
|
||||
\end{enumerate}
|
||||
|
||||
Reference in New Issue
Block a user