最近处理一个从3维MRI图像中分割海马体的任务,发现使用acc来衡量网络的性能实在是没什么意义,主要是我把这个分割任务看做一个二分类任务,而属于海马体类的像素仅占了整个空间的0.03%,也就意味着class 1 仅占1%都不到,这可以说是一个相当不均衡的数据集了,所以使用acc来衡量分类器是毫无意义的。
所以搜索整理了一些网上的资料,学习了一些适于处理这些情况(不均衡二分类)的性能指标:
混淆矩阵 confusion matrix
又称为可能性表格或是错误矩阵。它是一种特定的矩阵,被用来实现算法性能的可视化。
盗来一张图
真阳性(True Positives):预测为1,实际为1
假阳性(False Positives):预测为1,实际为0
真阴性(True Negatives) :预测为0,实际为0
假阴性(False Negatives) :预测为0,实际为1
于是乎就有了
精确率
precision=TP/(TP+FP)
召回率
recall = TP/(TP+FN)
F1分数
F-score=2 × precison × recall/(precision+recall)
F1是前两者的调和均值,当然我很奇怪我什么在Keras里它会一直是NAN,前两个的计算都没问题。
ROC曲线
有两个新的概念
灵敏度
sensitivity=recall
特异度
specificity = TN/(FP+TN)
此外灵敏度又被称为真阳性率(TPR),特异度又被称为真阴性率(TNR)
ROC曲线以1-specificity为横坐标,sensitivity为纵坐标。
又盗一张图
图二的曲线越接近(0,1)说明性能越好
AUC
AUC指ROC曲线下的面积,面积越大分类器效果越好。
AUC的物理意义为,随机给定一个正样本,一个负样本,使用分类器进行预测,设判断正样本为正的概率为P1,判断负样本为正的概率为P2,P1>P2的概率就是AUC值。
AUC的取值区间为[0.5 , 1],为0.5表明AUC猜错与猜对的几率对半分,即完全随机的预测,1则代表完美分类器。