#import "../template/template.typ": *

= 问题二的模型建立与求解
== 问题分析
为了深入探讨洪水概率的分布特性，本组采用了$K-m e a n s$聚类算法对洪水概率进行了分析。通过设定$K=3$，算法将数据集划分为三个具有不同风险等级的集群，并确定了相应的中心点，从而形成了三个等风险级。这一步骤为后续的风险评估提供了坚实的基础。

基于$K-m e a n s$聚类的结果，本研究进一步采用$X G B o o s t$算法对三个风险等级进行了模型构建。$X G B o o s t(e X t r e m e G r a d i e n t B o o s t i n g)$是一种高效的梯度提升决策树算法，它能够集成多个弱学习器，通过迭代优化，逐步减少模型的偏差和方差，最终形成强学习器#cite(<rf1>)。该算法在处理分类问题中展现出了强大的性能，因此非常适合用于构建洪水不同风险的预警评价模型。在构建模型的过程中，我们针对每个风险等级选取了合适的指标，确保模型能够准确地反映各个等级的风险特征。随后，通过将数据集代入模型进行训练，不断调整模型#cite(<rf2>) ，我们得到了针对不同风险等级的预警评价模型。

为了评估模型的有效性和稳定性，本研究还进行了模型的灵敏度分析。灵敏度分析是模型评估中的重要环节，它可以帮助研究者了解模型对于输入数据的微小变化的敏感程度，从而判断模型的稳健性。在本研究中，我们通过调整数据集中的参数，观察模型输出的变化情况，以评估模型的灵敏度。

其具体思路流程图如下：
#img(
  image("../figures/3.jpg", width: 80%),
  caption: "预警模型构建流程图"
)

== 洪水风险预警模型构建
=== 洪水概率分级
首先提取附件中提供的`train.csv`中的洪水发生概率的数据集：$X={x_1,x_2,dots,x_n}$，并进行相应的数据处理，检验并排除异常数据后，将得到的数据集导入$K-m e a n s$聚类算法中，将洪水分为$A、B、C$三类，分别对应洪水发生概率：高风险、中风险、低风险三种风险等级。即将数据集$X$分成$3$个不同的簇$G={g_1,g_2,g_3}$，使得簇心位置不发生显著变化。
#table(
  columns: (1fr,)*4,
  stroke: none,
  align: center + horizon,
  table.hline(stroke: 1.5pt),
  table.header()[*风险等级*][*$A$级*][*$B$级*][*$C$级*],
  table.hline(stroke: 0.8pt),
  [质心点],[$0.568401$],[$0.504591$],[$0.442312$],
  table.hline(stroke: 1.5pt),
)
=== 分析各级指标特征
针对每个风险级别的洪水事件，本组首先计算了各个指标的平均值、中位数和标准差等基本统计量。这些统计量的计算为后续的风险评估提供了数据支持。

在模型构建过程中，我们首先计算了每个聚类的平均洪水概率。这一步骤使得我们能够了解不同聚类在洪水概率上的分布情况。随后，我们对聚类按照平均洪水概率进行了排序，从而确定了各个聚类在风险等级上的排列顺序。为了进一步细化风险评估，我们定义了一个风险等级列表，并设置了选择的特征数量。在本问题中，我们决定对每个风险级别选取个特征数量。这一决策是基于特征选择的复杂性和模型准确性之间的权衡考虑。最后，我们遍历了排序后的聚类索引，并对每个聚类找到了其特征值最大的前个指标特征。这一步骤确保了我们所选的特征能够有效地代表各个聚类的风险特点，从而提高了模型的预测能力。

通过以上步骤，我们选取了若干个洪水预测的指标：
#table(
  columns: (1fr,)*4,
  stroke: none,
  align: center + horizon,
  table.hline(stroke: 1.5pt),
  table.header()[*风险等级*][*$A$级*][*$B$级*][*$C$级*],
  table.hline(stroke: 0.8pt),
  [指标一],[大坝质量],[海岸脆弱性],[海岸脆弱性],
  [指标二],[基础设施恶化],[大坝质量],[侵蚀],
  [指标三],[河流管理],[侵蚀],[排水系统],
  [指标四],[季风强度],[无效防灾],[城市化],
  table.hline(stroke: 1.5pt),
)
=== 建立预警模型
基于聚类分析的结果，基于$2.2.2$节所选指标特征，选取与洪水发生概率密切相关的指标。接着，我们利用$X G B o o s t$算法（梯度提升决策树算法），来计算模型中各指标的权重。该算法的优势在于它能自动学习特征的重要性，从而准确地为每个指标赋予合适的权重。在$X G B o o s t$模型训练过程中，算法会评估每个指标对模型预测贡献的大小，并据此分配权重。权重较大的指标对洪水发生概率的预测具有更大的影响力，从而在预警模型中占据更重要的位置。结合选定的指标和通过$X G B o o s t$计算出的权重，我们建立了一个用于预测不同风险等级的洪水预警模型。该模型通过整合指标的加权值来评估洪水发生的风险等级，为决策者提供了一个量化的、基于数据驱动的决策工具。
$ Y=sum_(i=1)^m w_i dot x_i $
=== 灵敏度分析
为评估洪水风险预警模型的灵敏性，采用了交叉验证的方法，将数据集`train.csv`导入训练模型中。通过这种方法，我们能够确保模型在不同子集上的表现具有一致性，并且减少模型过拟合的风险。基于先前的$K-m e a n s$聚类分析识别出的三个不同风险等级，对数据集进行分层抽样，以确保每个风险等级都得到充分的代表性。

在交叉验证的过程中，数据集被分为多个子集，每个子集都有机会作为测试集来评估模型的性能，而其余的子集合并为训练集用于模型的训练。这种反复的训练和测试，使我们能够全面地评价模型的预测能力。

在完成交叉验证后，我们将统计模型的精准度。这包括计算模型在各个风险等级上的准确率、召回率以及$F_1$分数等指标。这些指标能够为我们提供模型精准度的量化度量，从而让我们可以比较模型在不同风险等级上的表现差异。

基于上述灵敏度分析，最终得出模型准确率为$96.515%$。
\ 
\