预测雷暴旋转的基础机器学习:分类 - 评估

目录

本文翻译自 AMS 机器学习 Python 教程,并有部分修改。

Lagerquist, R., and D.J. Gagne II, 2019: “Basic machine learning for predicting thunderstorm rotation: Python tutorial”. https://github.com/djgagne/ams-ml-python-course/blob/master/module_2/ML_Short_Course_Module_2_Basic.ipynb.

本文接上一篇文章。

预测雷暴旋转的基础机器学习:分类 - 属性图

本文在前面三篇介绍评估图形的文章基础上评估示例分类问题。

评估

评估训练集

training_probabilities = plain_log_model.predict_proba(
    training_predictor_table.values
)[:, 1]
training_event_frequency = np.mean(
    training_target_table[BINARIZED_TARGET_NAME].values
)

eval_binary_classifn(
    observed_labels=training_target_table[BINARIZED_TARGET_NAME].values,
    forecast_probabilities=training_probabilities,
    training_event_frequency=training_event_frequency,
    dataset_name='training'
)
Training Max Peirce score (POD - POFD) = 0.639
Training AUC (area under ROC curve) = 0.897
Training Max CSI (critical success index) = 0.375
Training Brier score = 0.064
Training Brier skill score (improvement over climatology) = 0.293

评估验证集

validation_probabilities = plain_log_model.predict_proba(
    validation_predictor_table.values
)[:, 1]

eval_binary_classifn(
    observed_labels=validation_target_table[BINARIZED_TARGET_NAME].values,
    forecast_probabilities=validation_probabilities,
    training_event_frequency=training_event_frequency,
    dataset_name='validation'
)
Validation Max Peirce score (POD - POFD) = 0.649
Validation AUC (area under ROC curve) = 0.902
Validation Max CSI (critical success index) = 0.383
Validation Brier score = 0.063
Validation Brier skill score (improvement over climatology) = 0.307

列联表

大多数用于二元分类的评估方法都是基于列联表 (contingency table)(或混淆矩阵 (confusion matrix)),如下所示。

  • a = 真正例的数目 (forecast = label = “yes”)
  • b = 假正例的数目 (forecast = “yes” but label = “no”)
  • c = 假反例的数目 (forecast = “no” but label = “yes”)
  • d = 真反例的数目 (forecast = label = “no”)

问题:大多数分类模型(包括逻辑回归)都输出概率,而不是 yes 和 no。

解决方法:确定(determinize)概率

“确定”只是说“将概率变成是和不是”的一种奇特的方式。

可以通过以下等式完成,其中 p = 概率;p* = 阈值;\hat{y} 是得到的确定性预测。

最佳的阈值通常不是 0.5

记住 p* 是一个超参数,所以应该使用验证集优化。

下面的评分可以由列联表计算得到:

ROC 曲线

ROC Curve

ROC 曲线绘制了随阈值 p* 变化的 POD(probability of detection)与 POFD(probability of false detection)的关系图。

曲线上的每个点代表一个 p* 值。

  • 对于 p* = 0,POD = POFD = 1
  • 对于 p* = 1,POD = POFD = 0

可以使用两个数字来总结 ROC 曲线的优度:

  • 所有阈值的最大 Peirce 评分 (Peirce score, POD - POFD)
  • 曲线下面积 (Area under the curve, AUC)

通常 AUC >= 0.9 被认为是“优秀” (excellent)

AUC = 0.5 (灰色虚线)表示随机模型

性能图

Performance Diagram

性能图绘制了 POD (probability of detection) 与 success ratio (1 - FAR) 的关系图。

同样,每个点代表一个 p* 值

  • 对于 p* = 0,POD = 1 并且 success ratio 最小
  • 对于 p* - 1,POD = 0 并且 success ratio 最大

CSI (critical success index) 和 frequency bias 在背景中绘制轮廓。 它们可以在 POD–success-ratio 空间中表示如下。

\begin{equation*} \textrm{bias} = \frac{\textrm{POD}}{\textrm{SR}} \end{equation*}

\begin{equation*} \textrm{CSI}^{-1} = \textrm{POD}^{-1} + \textrm{SR}^{-1} - 1 \end{equation*}

可以使用一些指标来总结性能图的优度:

  • 最大 CSI
  • 最大 CSI 的 frequency bias (应该接近 1.0)
  • AUC

但是,与 ROC 曲线不同,这些指标对类别分布非常敏感。 因此,“好”和“坏”的阈值取决于类别分布。 对于某些罕见事件,最大 CSI 为 0.10 可能非常好;对于常见事件,最大 CSI 为 0.8 可能很差。

属性图

Attributes diagram

属性图是用于二进制分类的可靠性曲线,在背景中还有一些参考线。

绘制预测概率 (forecast probability) 与条件平均频率 (conditional mean frequency) 的关系图。

这回答了一个问题:“给定预测概率 p,事件发生的可能性有多大?”

对于完美的可靠性,条件事件频率始终等于预测概率。

这由对角灰线 (x=y) 表示,称为“完美可靠性线 (perfect-reliability line)”。

垂直的灰色线是“气候线 (climatology line)”,代表训练数据中的事件频率,简称为“气候 (climatology)”。 在我们的案例中,气候值为 10%。 如果该模型始终预测气候值,则可靠性曲线将崩溃到该线上的单个点。

水平的灰线是“no-resolution line”,也是基于训练集的气候值。 如果模型是完全随机的,则可靠性曲线将大致沿着这条线。

蓝色阴影是“positive-skill area”,其中 Brier 技能得分 > 0

Brier技能分数 (BSS) 是相对于气候值的 Brier 分数 (BS)。

\begin{equation*} \textrm{BS} = \frac{1}{N} \sum\limits_{i = 1}^{N} (p_i - y_i)^2 \end{equation*}

\begin{equation*} \textrm{BSS} = \frac{\textrm{BS}{\textrm{climo}} - \textrm{BS}}{\textrm{BS}{\textrm{climo}}} \end{equation*}

参考

https://github.com/djgagne/ams-ml-python-course

AMS 机器学习课程

数据预处理:

AMS机器学习课程:数据分析与预处理

实际数据处理:

AMS机器学习课程:预测雷暴旋转的基础机器学习 - 数据

线性回归:

AMS机器学习课程:预测雷暴旋转的基础机器学习 - 线性回归

AMS机器学习课程:预测雷暴旋转的基础机器学习 - 正则化

AMS机器学习课程:预测雷暴旋转的基础机器学习 - 超参数试验

逻辑回归:

预测雷暴旋转的基础机器学习:分类 - 训练

预测雷暴旋转的基础机器学习:分类 - ROC 曲线

预测雷暴旋转的基础机器学习:分类 - 性能图

预测雷暴旋转的基础机器学习:分类 - 属性图