具有不平衡数据集的分类问题的性能度量

时间:2019-05-13 13:16:23

标签: machine-learning classification roc auc precision-recall

我有一个异常检测问题,健康数据和异常数据之间存在很大差异(即,针对<30个异常,> 20.000个健康数据点)。

当前,我仅使用精度,召回率和f1分数来衡量模型的性能。但是我没有设置阈值参数的好方法。但这不是目前的问题。

我想测量模型是否能够独立于阈值区分两个类别。我读过,如果数据不平衡(https://medium.com/usf-msds/choosing-the-right-metric-for-evaluating-machine-learning-models-part-2-86d5649a5428),则可以使用ROC-AUC度量。但是根据我的数据,即使模型出现异常,即使模型输出的分数很低,我的ROC-AUC分数也很高(> 0.97)。

也许有人知道更好的性能衡量标准,还是我应该坚持ROC-AUC分数?

我尝试为我的问题添加一个示例:

我们考虑有20448个数据点的情况。该数据中有26个异常。使用我的模型,我得到以下异常分数:

[1.26146367, 1.90735495, 3.08136725, 1.35184909, 2.45533306,
   2.27591039, 2.5894709 , 1.8333928 , 2.19098432, 1.64351134,
   1.38457746, 1.87627623, 3.06143893, 2.95044859, 1.35565042,
   2.26926566, 1.59751463, 3.1462369 , 1.6684134 , 3.02167491,
   3.14508974, 1.0376038 , 1.86455995, 1.61870919, 1.35576177,
   1.64351134]

如果我现在输出多少个数据点的异常得分较高,例如1.38457746,那么我将获得281个数据点。从我的角度来看,这看起来像是一个糟糕的表现。但最后ROC AUC分数仍为0.976038。

len(np.where(scores > 1.38457746)[0]) # 281

0 个答案:

没有答案