时间序列分类任务的概率与召回率

数据挖掘 机器学习 分类 时间序列
2022-02-16 12:35:11

我正在研究专注于预测故障的时间序列分类任务。我将问题描述为一个多步预测问题,我的目标是预测y(t+1 hour) = f(X_lagged). 我的目标y要么是 1,要么是 0,问题本质上是一个二元分类问题。在我读过的论文中,recall/precision/f1 指标被用作模型评估指标。但是,如果我想将问题表述为“故障在 1 小时内发生的概率是多少?”,我需要使用什么指标?

2个回答

[编辑]

曲线下面积 (AUC)非常适合此类问题,但它并不完全是标准情况。ROC 曲线是通过根据预测的故障概率对实例进行排名来构建的,例如:

p(faulty)   gold
0.03        0
0.14        1
0.19        0
0.23        0
0.31        1
0.32        0
0.65        1
0.78        1
0.83        0
0.90        1

每个概率级别对应于二元分类问题的一个可能阈值。可以为每个可能的阈值级别计算 True/False Positive/Negative 的数量:

p(faulty)   gold TP TN FP FN
                 5  0  5  0
0.03        0    5  1  4  0
0.14        1    4  1  4  1   
0.19        0    4  2  3  1 
0.23        0    4  3  2  1
0.31        1    3  3  2  2
0.32        0    3  4  1  2
0.65        1    2  4  1  3
0.78        1    1  4  1  4
0.83        0    1  5  0  4
0.90        1    0  5  0  5

在这个阶段,我们可以准确地获得标准 ROC 曲线所需的数据:根据这些值,可以计算每个级别的精度和召回分数,并绘制在 ROC 曲线上。AUC 以通常的方式使用。

该方法在将预测与二进制类匹配时考虑了概率的连续性。使用此评估方法的问题示例:https ://pan.webis.de/clef15/pan15-web/author-identification.html

我以前的项目中也有同样的案例。我更喜欢自定义解决方案:

第一:你有不平衡的类数据集,尝试使用SMOTE或其他上/下采样技术。在那之后(或不这样做)你应该专注于你的预测成本。

例如,如果您有一个工厂的警报系统,并且您创建了一个将停止生产的警报,其成本为 100 万美元,并且不创建信号及其 FN,并且成本为 1 亿美元,那么您应该整合您的错误预测和真实模型评估的预测成本。

您应该使用成本编写自定义网格搜索,并使用不同的阈值(基于predict_proba)调整参数。

如果您有一个平衡的类数据集,我会建议auc-roc然后计算成本,但在您的情况下,您必须优先考虑成本

我希望它清楚。