精度计算中的异常

时间:2018-04-12 15:25:26

标签: matlab confusion-matrix

我使用预训练的VGG19对具有四个类的数据集进行分类。为了计算准确性,我使用了这个公式:

accuracy = sum(predictedLabels==testLabels)/numel(predictedLabels) - 等式1

然后我使用以下方法计算了混淆矩阵:

confMat = confusionmat(testLabels, predictedLabels) **--Eq 2**

我从中得到了一个包含4行4列的矩阵,因为我有4个类。

现在,我们知道准确度公式也是:

Accuracy=TP+TN/(TP+TN+FP+FN) **Eq-3**

所以我也通过上面 Eq。形成的混淆矩阵计算了准确度。 2 即可。哪里 TP=value in (row==column), FP=sum of column-TP, FN=sum of row-TP, TN=sum of the diagonal-TP

如果我正在做上述步骤,那么我的困惑是我从两种方法 Eq 1和Eq 3 获得不同的准确度。我用Eq获得的准确度。 1相当于公式TP/(TP+TN)。所以,如果是这种情况,那么Eq。 1是计算精度的错误公式。但是,这个公式已经在所有matlab深度学习代码中使用。 所以,MATLAB做错了(我知道概率为0)或者我做错了。但是,不幸的是,我无法确定我的错误。

现在,问题是,

我做错了吗?我错过了哪一步?怎么纠正呢?这个异常的逻辑解释是什么?

修改

由于类不平衡问题,这种精度计算异常发生。也就是说,每个班级都有不同数量的样本。因此,方程中的常规精度公式。 3在这种情况下不起作用。

1 个答案:

答案 0 :(得分:0)

主要问题是消极和积极是预测(这是一只猫还是不是),而你正在使用两个以上的类别进行分类。分类器不会给你正面和负面(因为它是一个猫预测),因此不可能将答案与真正的正面或误面面等相关联。因此,等式3是没有意义的,因此方法也是如此。计算TP,TN等。例如,如果TP是您定义的row = column,那么这些是confMat对角线中的准确值。但什么是TN?根据你的定义,它是TP(对角线)减去对角线。我希望这有助于把事情放在写作轨道上。