2024年10月混淆矩阵可以用来评估哪些模型(分类器模型评估指标之混淆矩阵(二分类/多分类))

 更新时间:2024-10-12

  ⑴混淆矩阵可以用来评估哪些模型(分类器模型评估指标之混淆矩阵(二分类/多分类

  ⑵分类器模型评估指标之混淆矩阵(二分类/多分类

  ⑶混淆矩阵也称误差矩阵,是表示精度评价的一种标准格式,用n行n列的矩阵形式来表示。在人工智能中,混淆矩阵(confusionmatrix是可视化工具,特别用于监督学习,在无监督学习一般叫做匹配矩阵(matchingmatrix。混淆矩阵的每一列代表了预测类别,每一列的总数表示预测为该类别的数据的数目;每一行代表了数据的真实归属类别,每一行的数据总数表示该类别的数据实例的数目。混淆矩阵中,永远是真实值在前,预测值在后。(以下说明都是以二分类为例,如果涉及多分类则会标注????在二分类混淆矩阵中,可以很容易看出,和的对角线就是全部预测正确的,和的对角线就是全部预测错误的。基于混淆矩阵,我们有六个不同的模型评估指标,这些评估指标的范围都在之间,所有以和为分子的指标都是越接近越好,所有以和为分子的指标都是越接近越好。首先解释几个接下来需要的概念:对于所有的指标,我们用橙色表示分母,用绿色表示分子,则我们有:(模型整体效果:准确率(Auracy准确率Auracy就是所有预测正确的所有样本除以总样本,通常来说越接近越好。【三分类中/多分类中】Auracy=(精确度/查准率Precision精确度Precision,又叫查准率,表示所有被我们预测为是正类的样本中,真正的正类所占的比例。分母是列总和。【三分类中/多分类中】(类Precision=;???????????????????????????????(类Precision=;???????????????????????????????(类Precision=;(召回率/真正率Recall/TPR召回率Recall,又被称为敏感度(sensitivity),真正率,查全率,表示所有正样本中,被我们真实预测正确的样本所占的比例。分母是行总和。【三分类中/多分类中】(类Recall=;???????????????????(类Recall=;???????????????????(类Recall=;注意召回率和精确度的分子是相同的,只是分母不同。而召回率和精确度是此消彼长的。(精确度和召回率平衡综合性指标:Fmeasure为了同时兼顾精确度和召回率,我们创造了两者的调和平均数作为考量两者平衡的综合性指标,称之为Fmeasure。两个数之间的调和平均倾向于靠近两个数中比较小的那一个数,因此我们追求尽量高的Fmeasure,能够保证我们的精确度和召回率都比较高。Fmeasure在之间分布,越接近越好。(假负率(FalseNegativeRateFNR假负率用于衡量所有真实为正的样本中,被错误判断为负的,它等于-Recall。???????????????????????????举例:FNR=?(二分类(真负率(TrueNegativeRateTNR?特异度(Specificity)表示所有负样本中,被真实预测为负的样本所占的比例。【三分类中/多分类中】(类TNR=???????????????????(类TNR=???????????????????(类TNR=(假正率(FalsePositiveRateFPR假负率用于衡量所有真实为负的样本中,被错误判断为正的,它等于-TNR。??????????????????????????举例:FPR=(二分类假正率其实类似于Precision的反向指标。总结:FPR(假正率+TNR(真负率=;FNR(假负率+TPR(真正率=求出真正率/召回率和真负率/特异度,就可以得到假正率和假负率。以上多分类例子是以三分类为例,四分类五分类多分类都是一样的性质。对于多分类,假使针对类别,那,类都算是负类;针对类别,那么,类都算是负类;针对类别,那么,类都算是负类。真实预测????????????????????????????????????????????????????????????????分类讨论以上混淆矩阵类别、类别和类别的FP、TP、FN、TN。答案如下:对于类别的FP=TP=FN=??TN=对于类别的FP=TP=FN=TN=对于类别的FP=?TP=?FN=TN=最后,另附一篇比较好的混淆矩阵相关参考博文:一人做事一人当小马做事响当当今天也要开心的度过鸭~

  ⑷交叉验证能返回混淆矩阵吗

  ⑸交叉验证能返回混淆矩阵。混淆矩阵是一种用于评估分类器的性能的统计工具,它可以用来检查分类器的准确率。混淆矩阵可以用来计算查准率,查全率,F值等指标,这些指标可以用来衡量分类器的性能。交叉验证是一种有效的模型评估方法,它可以用来划分训练集和测试集,并通过测试集来评估模型的性能。因此,交叉验证可以用来计算混淆矩阵,从而评估模型的准确性。

  ⑹机器学习混淆矩阵的简单概述!

  ⑺混淆矩阵(ConfusionMatrix),也成为误差矩阵,是用n行n列矩阵形式来表示的表,这张表通过对比已知分类结果的测试数据的预测值和真实值表来描述衡量分类器的性能。在二分类的情况下,混淆矩阵是展示预测值和真实值四种不同结果组合的表,多分类问题的混淆矩阵可以帮助你确认错误模式。在人工智能中,混淆矩阵是可视化工具,特别用于监督学习,在无监督学习一般叫做匹配矩阵。在图像精度评价中,主要用于比较分类结果和实际测得值,可以把分类结果的精度显示在一个混淆矩阵里面。混淆矩阵是通过将每个实测像元的位置和分类与分类图像中的相应位置和分类相比较计算的,是数据科学、数据分析和机器学习中总结分类模型预测结果的情形分析表,以矩阵形式将数据集中的记录按照真实的类别与分类模型作出的分类判断两个标准进行汇总。

  ⑻快速可视化借助图形化的手段,形象地显示数据和信息。介绍快速可视化工具能帮助你方便的了解特征之间的相关性,特征的分布,和对模型的性能进行评估等。功能介绍下面展示各种可视化图形,包括皮尔森热力图,混淆矩阵等。皮尔森热力图皮尔森热力图显示特征之间的相关性,它使用皮尔森相关系数来表示相关性。该系数是用来反映两个变量线性相关程度的统计量,使用公式:Cov(X,Y)是协方差,分母分别为变量X的标准差,变量Y的标准差。皮尔森相关系数在,越接近或-,表明正/反线性关系越强,为则表示两个变量间没有线性关系,下面我们可以根据方块的颜色来判断相关性强弱。在此图表中,我们看到?temp?和?feellike?具有强烈的相关性。通过查看皮尔森热力图可以进行特征的选择,比如:season和month具有很强的相关性,可以理解为它们基本提供相同的信息,所以我们可以去除season或者month特征。混淆矩阵混淆矩阵也称误差矩阵,是表示精度评价的一种标准格式,常用于分类问题,通过混淆矩阵进行模型的评估,进行预测值和真实值的比较。混淆矩阵的每一列代表了预测类别,每一列的总数表示预测为该类别的数据的数目;每一行代表了数据的真实归属类别?,每一行的数据总数表示该类别的数据实例的数目。通过上图我们可以看出,一共有个样本数据,其中,,类各为个。第一行说明为类的个样本全都预测正确。第二行说明有个属于第一类的样本被正确预测,有个被错误预测为第二类。第三行说明有个属于第二类的样本被正确预测,有个被错误预测为第一类。正则化参数选择机器学习中,如果参数过多,模型过于复杂,容易造成过拟合(overfit。即模型在训练样本数据上表现的很好,但在实际测试样本上表现的较差,不具备良好的泛化能力。为了避免过拟合,最常用的一种方法是使用使用正则化。正则化的目的是限制参数过多或者过大,避免模型更加复杂。例如,使用多项式模型,如果使用阶多项式,模型可能过于复杂,容易发生过拟合。所以,为了防止过拟合,我们可以将其高阶部分的权重w限制为,这样,就相当于从高阶的形式转换为低阶。由上图可以看出alpha取.时,误差最小。所以我们取正则化参数alpha为.来获得更好的模型性能。数据不平衡在学术研究与教学中,很多算法都有一个基本假设,那就是数据分布是均匀的。当我们把这些算法直接应用于实际数据时,大多数情况下都无法取得理想的结果。因为实际数据往往分布得很不均匀,都会存在“长尾现象”。解决这一问题的基本思路是让正负样本在训练过程中拥有相同的话语权,比如利用采样与加权等方法。由上图可知:三类样本的数目趋于平衡。如果数据不平衡,那么我们需要采取过采样,欠采样和阈值调整等方法来调整样本数据。分类问题的模型评估对模型的泛化性能进行评估,不仅需要有效可行的实验估计方法,还需要有衡量模型泛化能力的评价标准,这就是性能度量。在分类问题通常使用精确率,召回率,准确率还有F等指标。上图可以看出:对于类样本,预测为类的样本,有.%实际为类。对于类样本,实际为类样本中,有.%预测为类。特征重要性评估在特征的选择过程中,如果学习器是树模型的话,可以根据特征的重要性来筛选有效的特征,特征重要性是通过对数据集中的每个特征进行计算,并进行排序得到。在单个决策树中通过每个特征分裂点改进性能度量的量来计算属性重要性,由节点负责加权和记录次数。也就说一个特征对分裂点改进性能度量越大(越靠近根节点,权值越大;被越多提升树所选择,特征越重要。由上图可知:特征具有最高的重要性,特征具有最低的重要性。联合图联合图包括散点图和直方图,散点图是指在回归分析中,数据点在直角坐标系平面上的分布图,散点图表示因变量随自变量而变化的大致趋势,据此可以分析特征之间的相关性。它既能用来呈现数据点的分布,表现两个特征的相关性,也能像折线图一样表示时间推移下的发展趋势。直方图的优点是能够快速了解每个特征分布情况。直方图将同一特征的数据分到相同的柱体中,并统计每个柱体的数据量。根据直方图的形状,可以快速了解特征是高斯分布、倾斜分布还是指数分布等。通过直方图还可以观察到数据中的异常值。由上图可以看出特征temp和feelslike具有很强的相关性,同时也显示出两个特征的直方图分布。可以看出temp在.-.之间出现异常值,可以通过去除异常值以提高模型的性能。

  ⑼用于评估预测模型的矩阵的称为什么

  ⑽在机器学习领域,混淆矩阵(confusionmatrix,又称为可能性表格或是错误矩阵。它是一种特定的矩阵用来呈现算法性能的可视化效果,通常是监督学习(非监督学习,通常用匹配矩阵:matchingmatrix。其每一列代表预测值,每一行代表的是实际的类别。这个名字来源于它可以非常容易的表明多个类别是否有混淆(也就是一个class被预测成另一个class。

  ⑾假设有一个用来对猫(cats、狗(dogs、兔子(rabbits进行分类的系统,混淆矩阵就是为了进一步分析性能而对该算法测试结果做出的总结。假设总共有??只动物:只猫,?条狗,?只兔子。结果的混淆矩阵如下图:

  ⑿在这个混淆矩阵中,实际有?只猫,但是系统将其中只预测成了狗;对于?条狗,其中有?条被预测成了兔子,条被预测成了猫。从混淆矩阵中我们可以看出系统对于区分猫和狗存在一些问题,但是区分兔子和其他动物的效果还是不错的。所有正确的预测结果都在对角线上,所以从混淆矩阵中可以很方便直观的看出哪里有错误,因为他们呈现在对角线外面。

  ⒀混淆矩阵是衡量分类模型准确度中最基本、直观,计算最简单的方法。混淆矩阵就是一张表,展示预测值各类归对、归错的个数。下面放个小例子。

  ⒁上面的小例子是分类问题中最简单的二分类,只需要判断结果是还是,或者说是negative还是positive。

  ⒂表中已经给出四种结果,这四种是混淆矩阵的四个基础指标:

  ⒃将这四个指标一起呈现在表格中,就能得到混淆矩阵(ConfusionMatrix,如下图。

  ⒄sklearn.metrics.confusion_matrix(y_true,y_pred,labels=None,sample_weight=None)

  ⒅在二分类问题中,我们可以提取TruePositive等值,如下所示。

  ⒆其中,Precision和Recall可以看下面的具体例子。

  ⒇四种指标的公式和含义见下表。

  ⒈其中,将Precision和Recall组合计算可以得到一个称为Fscore的指标,如果召回和精确度都很高,分类器将获得高F分数。

  ⒉都看到最后了,要不~点个赞?加波关注?

  ⒊数据可视化-混淆矩阵(confusionmatrix)

  ⒋在基于深度学习的分类识别领域中,经常采用统计学中的混淆矩阵(confusionmatrix来评价分类器的性能。它是一种特定的二维矩阵:混淆矩阵的对角线值越高越好,表明许多正确的预测。特别是在各分类数据的数量不平衡的情况下,混淆矩阵可以直观的显示分类模型对应各个类别的准确率。依赖:keras,matplotlib,numpy,seaborn,tensorflow,sklearn

  ⒌二分类评估,从混淆矩阵说起

  ⒍在《理解交叉验证》一文中,我们谈到了使用AUC来对比不同模型的好坏,那么AUC是什么?它是如何衡量一个模型的好坏的呢?除了AUC以外,还有其他评估手段吗?本文我们就来探讨下这几个问题。

  ⒎要了解AUC,我们需要从另外一个概念——混淆矩阵(ConfusionMatrix说起,混淆矩阵是一个维方阵,它主要用于评估二分类问题(例如:预测患或未患心脏病、股票涨或跌等这种只有两类情况的问题的好坏。你可能会问多分类问题怎么办?实际上,多分类问题依然可以转换为二分类问题进行处理。下图是一个用于评判是否患有心脏病的混淆矩阵:

  ⒏纵向看混淆矩阵,它体现了真实情况下,患病和未患病的人数,上图中,真实患心脏病的人数为TruePositive+FalseNegative,未患心脏病的人数为FalsePositive+TrueNegative;类似的,横向看混淆矩阵,它体现了模型预测出来患心脏病的人数为TruePositive+FalsePositive,而预测未患心脏病的人数为FalseNegative+TrueNegative。

  ⒐两个方向一起看,预测患病且实际也患病,我们称它为真阳性(TruePositive),预测未患病且实际也未患病,被称为真阴性(TrueNegative),这两个区域是模型预测正确的部分;模型预测错误也分两种情况,假阳性(FalsePositive)表示预测患病,但实际却未患病,假阴性(FalseNegative)表示预测未患病,但实际却患了病的情况。

  ⒑概念有点多,但并不难记,可以看到,这些名词都是围绕着预测来命名的——预测患病时被称为「True/FalsePositive」,预测未患病时被称为「True/FalseNegative」。

  ⒒上图中,模型预测正确的部分用绿色填充,它所占的比例又被称为准确率(Auracy):单靠准确率这一项,并不足以评估模型的好坏,例如下面这种情况,虽然准确率可以达到%,但在实际患病的人群中,该模型的预测成功率只有%,很明显它不是一个好模型。

  ⒓所以,我们需要引入更多的衡量指标,Sensitivity(或Recall)表示实际患者中,预测患病成功的概率,同时Sensitivity这个词也有“过敏“的意思,和患病对应,这样关联起来比较好记:既然有衡量患病(正样例的指标,那肯定也有衡量未患病(负样例的指标,Specificity就是用来表示实际未患病的人群中,预测未患病成功的概率,即Specificity这个词有“免疫“的意思,能和未患病相关联,所以也很好记。

  ⒔这两个指标的出现,能更好的帮你比较模型间的差异,并在其中做出取舍。例如当两个模型的Auracy相近时,如果你更看重于预测患病的效果,你应该选Sensitivity值较高的;相反,如果你更看重于预测未患病的效果,你就应该选择Specificity较高的。

  ⒕更进一步,我们还可以通过将这些指标图形化,以获得更直观的评估结果,ROC(ReceiverOperatingCharacteristic)曲线就是其中常用的一种。

  ⒖我们知道,分类模型(例如“逻辑回归”的结果是一个大于且小于的概率,此时我们还需要一个阈值,才能界定是否患病,通常我们把阈值设为.,这样当结果大于.时可判定为患病,否则判定为未患病。

  ⒗而阈值可以取到之间的任意一个值,对每一个阈值,都有一个混淆矩阵与之对应,有了混淆矩阵,我们就可以求出一对Sensitivity和Specificity,通过这两个数,我们就可以在一个以-Specificity为横坐标,Sensitivity为纵坐标的坐标系上画一个点,把所有可能的阈值所产出的点连起来,就是ROC曲线。

  ⒘下面我们来看一个具体的例子,假设我们对老鼠做研究,希望通过老鼠的体重来预测其患心脏病的概率,我们采用逻辑回归算法来建模,下图是预测结果,图中有个老鼠样本点,其中红色点代表实际健康的老鼠,蓝色点代表实际患病的老鼠,这些点用一条逻辑回归曲线拟合,图中还有一条P=.的直线用来表示阈值为.,可以看出,高于P=.的只老鼠被预测为患病,而其他只老鼠被预测为健康,预测成功率(Auracy为%:

  ⒙下面我们通过以上数据,来画一条ROC曲线。首先取阈值为,此时所有的老鼠都被预测为未患病,根据样本真实患病情况,我们可以得到如下混淆矩阵

  ⒚根据上述混淆矩阵,我们就可以算出一组Sensitivity和Specificity的值。接着我们不断调整阈值,以获得所有的Sensitivity和Specificity对,因为这里我们的样本点较少,所以让阈值根据样本点来采样即可,依然用横线表示阈值,则所有阈值的采样情况如下:

  ⒛我们把这些阈值对应的混淆矩阵都列出来:

  然后,计算这些混淆矩阵对应的Sensitivity和-Specificity:

  根据该表格,以-Specificity为横轴,Sensitivity为纵轴作图,通常,在画ROC曲线时,我们把-Specificity对应的坐标轴记为FPR(FalsePositiveRate),把Sensitivity对应的坐标轴记为TPR(TruePositiveRate),如下:

  ROC曲线有以下特点:

  根据ROC曲线的第个特点:「曲线越靠近左上角,模型的效果越好」,意味着一个更好模型,其曲线下方的面积更大,我们把ROC曲线下方的面积称为AUC(AreaUnderCurve),有了这个概念后,只需一个数值就可以衡量模型的好坏了,上面示例模型的AUC如下:

  通常情况下我们都使用AUC来评估模型,既然是”通常”,那肯定就有例外:当患病率(或正样本占比)非常小时,TureNegative就会非常大,这个值就会使影响FPR,使FPR较小,为了避免这种影响,我们可以将FPR用另一个指标代替:PrecisionPrecision的含义是预测患病的样本中,实际也患病的比例;这样,将Precision和Sensitivity结合起来,会让我们更专注于患病(正样本)的预测效果,而机器学习中的另一个效果指标:FScore,就是专门负责这件事儿的上面的公式中,Recall等价于Sensitivity,和AUC一样,两个模型互相比较,FScore越大者,预测效果越好,而且FScore能更好的衡量正样本的预测效果。

  本文通过一个医学例子——是否患心脏病——来讲述什么是混淆矩阵、ROC曲线、AUC及FScore,其中,我们还一起学习了ROC曲线是如何画出来的,最后,我们还谈到了AUC和FScore以及它们之间细微的差别。

  需要注意的是,二分类评估并不限于对患病及未患病这两种情况的分类,考虑到通用性,你完全可以将本文中的患心脏病替换为正样本、把未患心脏病替换为负样本。

  你应该知道的模型评估的五个方法

  你应该知道的模型评估的五个方法好久没更新了,我怕再不更,我要掉粉了,这次来更新的是模型评估的常见的五个方法:、混淆矩阵。、提升图&洛伦兹图。、基尼系数、ks曲线、roc曲线。混淆矩阵混淆矩阵不能作为评估模型的唯一标准,混淆矩阵是算模型其他指标的基础,后面会讲到,但是对混淆矩阵的理解是必要的。模型跑出来的“Y”值为每个客户的预测违约概率,可以理解为客户的有多大的可能违约。把概率等分分段,y坐标为该区间的人数,可以得到这样子一个图表。可以看到图中这条线,一切下去,在左边就算是违约的客户,那么右边就是正常的客户,本身模型没办法百分百的判断客户的状态,所以cd就算是会误判的,d本来是是左边这个小山的客户,那就是坏客户,但是模型预测他的概率比较高别划分到了好客户的这边了,所以d就是被预测为好客户的坏客户,同样的道理,c就是被预测为坏客户的好客户。提升图&洛伦兹图假设我们现在有个的样本,违约率是%,我们算出这的样本每个客户的违约概率之后降序分为每份都是的记录,那么在左图中,第一份概率最高的个客户中有个违约的。违约客户占了全部的.。如果不对客户评分,按照总体的算,这个分组;理论上有个人是违约的。把刚才的图,每组中的随机违约个数以及模型违约个数化成柱形图,可以看到假设现在是p值越大的客户,违约概率越大,那就是说这里第一组的个人就是概率倒序排序之后的前个人。那么可以看到通过模型,可以识别到第一组的客户违约概率是最高的,那么在业务上运用上可以特别注意这部分客户,可以给予拒绝的处理。那么洛伦兹图就是将每一组的一个违约客户的个数累计之后连接成一条线,可以看到在组的时候,违约人数的数量上升是一个比较明显的状态,但是越到后面的组,违约人数上升的越来越少了。那么在衡量一个模型的标准就是这个条曲线是越靠近y轴的位置越好,那样子就代表着模型能预测的违约客户集中在靠前的几组,所以识别客户的效果就是更好。基尼系数洛伦茨曲线是把违约概率降序分成等分,那么基尼统计量的上图是把违约概率升序分成等分,基尼统计量的定义则为:G的值在到之间,在随机选择下,G取。G达到.以上即可接受。ks值ks曲线是将每一组的概率的好客户以及坏客户的累计占比连接起来的两条线,ks值是当有一个点,好客户减去坏客户的数量是最大的。那么ks的值的意义在于,我在那个违约概率的点切下去,创造的效益是最高的,就图中这张图来说就是我们大概在第三组的概率的中间的这个概率切下,我可以最大的让好客户进来,会让部分坏客户进来,但是也会有少量的坏客户进来,但是这已经是损失最少了,所以可以接受。那么在建模中是,模型的ks要求是达到.以上才是可以接受的。roc灵敏度可以看到的是判断正确的违约客户数,这里给他个名字为违约客户正确率(tpr),误判率就是判断错误的正常客户数(fpr。特殊性就是正常客户的正确率,那么roc曲线是用误判率和违约客户数画的一条曲线。这里就需要明确一点就是,我们要的效果是,tpr的越高越好,fpr是越低越好。ROC曲线就是通过在-之间改变用于创建混淆矩阵的临界值,绘制分类准确的违约记录比例与分类错误的正常记录比例。具体我们来看图。我们首先来看A,B点的含义,A点的TPR大概为.左右,FPR大概是.左右,那么就是说假设我错误的将%坏客户判断是坏的,那么可以识别%的客户肯定坏的。B点的TPR大概为.左右,FPR大概是.左右,那就是我错误的将%好客户当做坏客户,只能得到%的客户是确定坏客户。所以这么说的话,点越靠近左上方,模型就是越好的,对于曲线也是一样的。总结我个人建议,要依据不同的业务目的,选取不同的评估方式,基尼系数、提升图可以用于用人工审批情况的业务目的,不同的分组突出客户的质量的高低,ks、roc可以用于线上审批审核的情况,根据最小损失公式,计算出概率点。

您可能感兴趣的文章:

相关文章