深度学习二分类指标

之前学习了训练模型的一些原理,包括特征工程,算法原理和一些超参数。 那么生成了一个模型后我们如何评估这个模型的好坏呢。 今天主要讲一下二分类模型的一些评估方法。

混淆矩阵

准确率(accuracy):对于给定的测试数据集,分类器正确分类的样本数与总样本数的之比。单纯地使用“准确率accuracy”是没法判断模型的好坏的,比如这个例子:健康的人有99个(y=0),得癌症的病人有1个(y=1)。我们用一个特别糟糕的模型,永远都输出y=0,就是让所有的病人都是健康的。这个时候我们的“准确率”accuracy=99%,判断对了99个,判断错了1个,但是很明显地这个模型相当糟糕。因此需要一种很好的评测方法,来把这些“作弊的”模型给揪出来。 所以我们先来讲一下混淆矩阵.

对于一个二分类问题来说,将实例分为正类(Positive/+)或负类(Negative/-),但在使用分类器进行分类时会有四种情况

  • 一个实例是正类,并被预测为正类,记为真正类(True Positive TP/T+)
  • 一个实例是正类,但被预测为负类,记为假负类(False Negative FN/F-)
  • 一个实例是负类,但被预测为正类,记为假正类(False Positive FP/F+)
  • 一个实例是负类,但被预测为负类,记为真负类(True Negative TN/F-) 为了全面的表达所有二分问题中的指标参数,下列矩阵叫做混淆矩阵 - Confusion Matrix

 

上面是我们先知平台的二分类模型评估报告中的混淆矩阵。我们知道二分类算法的激活函数是Sigmoid,它除了为线性函数增加非线性效果之外,还可以把与测试转换成0~1的数字。 这样有利于我们做二分类。 如上图我们把预测值的阈值设置为0.23,也就是说预测值大于0.23我们判定为正例,小于0.23我们判定为负例。在这个前提下算出上面的混淆矩阵。

评估指标

精准率(precision)

根据混淆矩阵我们可以算出一些指标来评估模型。 首先是精准率(precision)。还是拿刚才的癌症的例子说。精准率(precision)就是说,所有被查出来得了癌症的人中,有多少个是真的癌症病人。公式是TP/TP+FP

召回率(recall)

召回率就是说,所有得了癌症的病人中,有多少个被查出来得癌症。公式是:TP/TP+FN。 意思是真正类在所有正样本中的比率,也就是真正类率(TPR)。

TNR (specificity)

TNR, 就是true negative rate的简写。 真负类比率。公式是:TN/TN+FP。 也就是所有健康的人中,有多少是被预测为健康的。

NPV

NPV, 也就是negative predictive value的缩写。 公式是:TN/TN+FN. 也就是被查出健康的人中,有多少个是真的健康的。

F1 Score

我们主要评估召回率和精准率。它们是一对。拥有高精准率或者高召回率的模型是一个好模型。注意:我们是对稀有类别使用的查准率或者召回率,而且我们会将这个“稀有类别”设置成y=1!!!我们希望对于某个模型而言,在precision越高的情况下,recall也会越高,但是有些情况下这两者是矛盾的,现在来考虑下面情况。
第一种情况:当且仅当非常确信他得癌症了,才确诊他得了癌症,即:

 


这个时候,就是要“高的精准率”,结果导致了“低的召回率”。第二种情况:只要怀疑他得了癌症,就确诊他得了癌症,即:


这个时候,就是要“高的召回率”,结果导致了“低的精准率”。我们需要一个标准可以综合这二者指标的评估指标,用于综合反映整体的指标,其中一种标准就是F1 score。 比如,当precision或者recall中有一个特别差的时候,F1会特别低。 当precision和recall都特别好的时候,F1也会特别好

评估指标图

下图是一个demo, 在当前混淆矩阵下的评估指标趋势

 

ROC

ROC是评估一个模型的重要指标。 那什么是ROC呢?ROC曲线和混淆矩阵息息相关。它的横坐标:FPR假正类率,纵坐标:TPR真正类率。 具体看下图:

 

按照这种方法来分析ROC曲线:

  • 第一个点:(0,1),FPR=0 TPR=1 ,这意味着所有的正类全部分类正确,或者说这是一个完美的分类器,将所有的样本都分类正确了
  • 第二个点:(1,0), FPR=1 TPR=0 ,和第一个点比较,这是第一个点的完全反面,意味着是个最糟糕的分类器,将所有的样本都分类错误了(但其实可以直接取反,就是最好的模-型,因为是二分类问题)
  • 第三个点:(0,0),FPR=0 TPR=0 也就是原点,这个点表示的意思是,分类器预测所有的样本都为负类
  • 第四个点:(1,1),FPR=1 TPR=1,和第三个点对应,表示分类器预测所有的样本都为正类一条线:y=x。这条对角线上的点实际上就是一个采用随机猜测策略的分类器的结果

总结来说,ROC曲线的面积越大,模型的效果越好;ROC曲线光滑以为着过拟合越少

AUC

AUC - Area Under Curve被定义为ROC曲线下的面积。AUC值越大,证明这个模型越好。 AUC是我们最重要的评估指标。ROC不好量化,而AUC在0.5~1之间。 值越大越好。非常容易量化模型好坏

结尾

关于二分类评估方法还有k-s图,lift图等,i不过我还没研究明白。 以后研究明白了再写

  • 1
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
对于使用PyTorch进行二分类问题的深度学习,你可以按照以下步骤进行: 1. 数据准备:首先,你需要准备好你的训练数据和测试数据。确保数据已经被正确标记,并且已经分为训练集和测试集。 2. 数据加载:使用PyTorch的DataLoader模块加载数据集。可以使用自定义的Dataset类来加载数据,并使用DataLoader将其转化为可供模型使用的小批量数据。 3. 搭建模型:定义一个神经网络模型。可以使用PyTorch提供的nn.Module类来创建自己的模型。对于二分类问题,通常使用一个带有一层输出的全连接层。 4. 定义损失函数:选择合适的损失函数来度量模型预测结果与真实标签之间的差异。对于二分类问题,可以使用二元交叉熵损失函数(Binary Cross Entropy Loss)。 5. 选择优化器:选择一个优化器来更新模型参数。常见的优化器包括随机梯度下降(SGD)、Adam、RMSprop等。根据需求选择合适的优化器。 6. 训练模型:使用训练数据对模型进行训练。通过迭代训练数据的小批量样本,计算损失并反向传播更新模型参数。 7. 测试模型:使用测试数据评估模型的性能。计算模型在测试数据上的准确率、精确率、召回率等指标。 8. 调整超参数:根据模型在测试集上的性能,可以调整模型的超参数(如学习率、批量大小等)以获得更好的性能。 9. 预测新样本:使用训练好的模型对新样本进行预测。将新样本输入模型中,得到预测结果。 以上是一个基本的流程,你可以根据自己的需求进行相应的调整和扩展。希望对你有所帮助!
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值