问题描述
最近用深度学习做临床体征信号分类,都是些一维数据,在输出统计指标时,发现一个很奇怪的现象,困扰了很久:各种统计指标,什么混淆矩阵、精确度、召回率和F1值都很好看,唯独画ROC曲线时特别难看,怎么改也没用,甚至试过网上的对预测概率排序后再输入(或只输入概率较高的部分),均无济于事。
问题所在
用于计算ROC的测试集数据里面,预测值有很多效果不好,比如很多预测概率在0.5~0.6,将概率从小到大排序输出一下就可以发现,输入如图所示:
# 预测概率从小到大排序,打印输出前100个
sort = np.argsort(label_prob) # 返回从小到大排序的索引
label_true = label_true[sort]
label_pred = label_pred[sort]
label_prob = label_prob[sort]
print('label_true is ',label_true[:100])
print('label_prob is ',label_prob[:100])
# 之所以ROC这么难看,是因为有些样本的预测概率很低。
statistics_show(label_true=label_true, label_pred=label_pred, label_prob=label_prob)
最后
多debug和print检查一下,就会发现问题所在,最终还是要回到ROC绘图和计算的原理本身。所以导致这个问题的,还是模型预测效果不佳,尚有改进空间。
Notes
新手上路,学术菜鸡一个,如有错误,还请不吝指出~