多标签分类问题中的评价指标:准确率,交叉熵代价函数

多标签分类问题中的评价指标:准确率,交叉熵代价函数
参考博客
https://blog.****.net/qq_36396104/article/details/88647634
博客第一部分讲的平方代价函数的缺点,第二部分即论述为什么神经网络会使用交叉熵代价函数。
其中,讲到了交叉熵在多标签分类问题中的应用,这是我之前博客没有提到的,所以我在这篇博客中进行总结。
首先需要说说,评价分类模型进行分类处理是好是坏的几个指标
模型在处理分类问题时,分类结果分为以下四种情况:
True Positive(TP):将正类预测为正类数。
True Negative(TN):将负类预测为负类数。
False Positive(FP):将负类预测为正类数。
False Negative(FN):将正类预测为负类数。
其中TP和TN都属于分类器分类正确的情况,FP和FN都数据分类器分类错误的情况。
常用的几种评价指标有以下三种
准确率
准确率是指分类正确的样本占总样本个数的比例,即
多标签分类问题中的评价指标:准确率,交叉熵代价函数
精确率
精确率是指分类正确的正样本个数占分类器判定为正样本的样本个数的比例,即
多标签分类问题中的评价指标:准确率,交叉熵代价函数
召回率是指分类正确的正样本个数占真正的正样本个数的比例,即
多标签分类问题中的评价指标:准确率,交叉熵代价函数
一般上面这几个指标仅作为评价模型好坏的指标,不作为模型的优化目标函数。
交叉熵代价函数作为模型的优化目标函数出现在机器学习算法中。
交叉熵代价函数表达式如下
多标签分类问题中的评价指标:准确率,交叉熵代价函数
我在之前一篇博客中并没有注意这个代价函数是用在二分类问题中,还是多分类问题中。
看完上述博客后,我意识到不能忽视这个问题。为什么?
在处理多分类问题时,有一个叫做混淆矩阵的东西(混淆矩阵百度百科传送门:https://baike.baidu.com/item/%E6%B7%B7%E6%B7%86%E7%9F%A9%E9%98%B5/10087822?fr=aladdin)
案例参考:https://blog.****.net/Orange_Spotty_Cat/article/details/80520839
多标签分类问题中的评价指标:准确率,交叉熵代价函数
当使用上面的交叉熵代价函数计算交叉熵的值时,以计算Loss(猫)为例
将混淆矩阵处理成下面的矩阵
多标签分类问题中的评价指标:准确率,交叉熵代价函数
那么该矩阵中就仅剩四种情况:10对应TP,45对应TP,3对应FP,8对应FT。
那么该分类器的准确率(猫),精确率,召回率就利用上述公式。
针对交叉熵问题,那么计算出的矩阵就可能是(不是混淆矩阵)

因为是多分类问题,那么交叉熵函数计算出的结果是当前样本的每个类别的可能性,例如下例,这个样本是猫的可能性是0.1,是青蛙的可能性是0.7,是老鼠的可能性是0.8,(上面一篇博客提到了Pred采用的是sigmoid函数计算。将每一个节点的输出归一化到[0,1]之间。所有Pred值的和也不再为1。换句话说,就是每一个Label都是独立分布的,相互之间没有影响。)他解释了为什么Pred的和不为1.此处我并不理解,等实战可能就理解了。
多标签分类问题中的评价指标:准确率,交叉熵代价函数
那么按照上面的表格和交叉熵损失函数
多标签分类问题中的评价指标:准确率,交叉熵代价函数
最后,针对一个batch的交叉熵代价函数值就是
多标签分类问题中的评价指标:准确率,交叉熵代价函数
总结:
1.准确率、精确率等指标在多标签分类问题中的计算公式。
2.交叉熵在多标签分类问题中的计算,需要先单独计算每个类别的交叉熵损失,然后将所有类别的交叉熵损失求和,得到多标签分类的交叉熵损失值。