二分类模型评估(二分类模型是什么意思)
大家好!今天让创意岭的小编来大家介绍下关于二分类模型评估的问题,以下是小编对此问题的归纳整理,让我们一起来看看吧。
开始之前先推荐一个非常厉害的Ai人工智能工具,一键生成原创文章、方案、文案、工作计划、工作报告、论文、代码、作文、做题和对话答疑等等
只需要输入关键词,就能返回你想要的内容,越精准,写出的就越详细,有微信小程序端、在线网页版、PC客户端
创意岭作为行业内优秀的企业,服务客户遍布全球各地,如需了解SEO相关业务请拨打电话175-8598-2043,或添加微信:1454722008
本文目录:
一、分类评估指标
# 准确率(Accuracy,ACC)
最常用、最经典的评估指标之一,计算公式为:
$ACC = \frac{预测准确的样例数}{总预测数}$
由此可见,准确率是类别无关的,衡量整个数据集的准确情况,即预测正确的样本所占的比例。
by the way,有时人们也会用错误率(Error Rate, ERR),与准确率定义相反,表示分类错误的样本所占的比例,计算公式为:
$ERR = 1 - ACC$
**存在问题**
在类别不平衡数据集中,ACC不能客观反映模型的能力。比如在三分类中,样本数量分布为(9800,100,100),那么模型只要无脑将所有样例都预测为A类即可以有98%的准确率,然而事实是模型根本没有分辨ABC的能力。因此下面引入精确率和召回率的概念。
# 概念定义
介绍精确率和召回率之前,我们先来了解几个概念:
| 名称 | 定义 |
| ------ | ------ |
| TP(True Positives,真阳性样本数) | 被正确预测为正类别的样本个数 |
| FP(False Positives,假阳性样本数) | 被错误预测为正类别的样本个数 |
| FN(False Negatives,假阴性样本数) | 被错误预测为负类别的样本个数 |
| TN(True Negatives,真阴性样本数) | 被正常预测为负类别的样本个数 |
注意:
* 第一个字母代表预测是否正确,第二个字母代表预测结果。Ground Truth(标签,数据的类别的真实情况,GT)则需要通过玩家组合这两个字母进行推理:预测正确则代表GT和预测结果一致,即TP的样本是正类别,TN的样本是负类别;反之FP的样本是负类别,FN的样本是正类别。搞清楚这个对精确率和召回率的了解会更加容易。
* 对于二分类而言,只要规定了正类别和负类别,这4个值是唯一的(负类别的TP等于正类别的TN,负类别的FP等于正类别的FN,负类别的FN等于正类别的FP,负类别的TN等于正类别的TP,因此对于二分类问题衡量正类别的指标就够了,因为两个类别是对等的)。对于多分类而言,用**One VS Others**的思想,将其中一类看作正类别,其他类看作负类别,**则每个类别都有这4个值,即这4个值在多分类中是与类别强相关的,每个类别的这几个值都不一样。**
# 混淆矩阵
混淆矩阵是所有分类算法模型评估的基础,它展示了模型预测结果和GT的对应关系。
| 推理类别/真实类别 | A | B | C | D |
| :----: | :----: | :----: | :----: | :----: |
| A | 56 | 5 | 11 | 0 |
| B | 5 | 83 | 0 | 26 |
| C | 9 | 0 | 28 | 2 |
| D | 1 | 3 | 6 | 47 |
其中矩阵所有元素之和为样本总数,每一行代表**预测为某类别的样本在真实类别中的分布**,每一列代表**某真实类别的样本在预测类别中的分布**。以A类为例,第一行代表预测为A的有72个样本(即TP+FP,56+5+11+0),第一列表示真实类别为A的有71个样本(即TP+FN,56+5+9+1)。其中TP为56,FP为16(行,5+11+0),FN为15(列,5+9+1),TN为195(即除第一行和第一列外所有的值之和)。样本总数等于混淆矩阵所有元素之和,即282。
如果用符号E来表示$B \cup C \cup D$,那么对于A来说,混淆矩阵可以改写如下:
| 推理类别/真实类别 | A | E |
| :----: | :----: | :----: |
| A | 56 | 16 |
| E | 15 | 195 |
由此可见,对于二分类来说,混淆矩阵的值与TP等指标对应如下:
| 推理类别/真实类别 | Positives(正类别) | Negatives(负类别) |
| :----: | :----: | :----: |
| Positives(正类别) | TP | FP |
| Negatives(负类别) | FN | TN |
对应多分类,可以用不同颜色来对应TP等指标的区域,使可视化效果更好,更方便理解。后续再更新。
# 精确率(Precision,$P$)
**对于某一类别而言**,预测为该类别样本中确实为该类别样本的比例,计算公式为:
$ P = \frac{TP}{TP+FP}$
以A、E的混淆矩阵为例:$ P_A = \frac{56}{56+16}=0.78, P_E = \frac{195}{15+195}=0.93$
以ABCD的混淆矩阵为例:$ P_A = 0.78, P_B = \frac{83}{5+83+0+26} = 0.73, P_C = \frac{28}{9+0+28+2}=0.72, P_D = \frac{47}{1+3+6+47} = 0.83$
可以观察到,精确率的分母是混淆矩阵的行和,分子在对角线上。
# 召回率(Recall,$R$)
**对于某一类别而言**,在某类别所有的真实样本中,被预测(找出来,召回)为该类别的样本数量的比例,计算公式为:
$ R = \frac{TP}{TP+FN}$
以A、E的混淆矩阵为例:$ R_A = \frac{56}{56+15} = 0.79, R_E = \frac{195}{16+195} = 0.92$
以ABCD的混淆矩阵为例:$ R_A = 0.79, R_B = \frac{83}{5+83+0+3} = 0.91, R_C = \frac{28}{11+0+28+6} = 0.62, R_D = \frac{47}{0+26+2+47} = 0.63$
可以观察到,召回率的分母是混淆矩阵的列和,分子在对角线上。
# F1
刚才提到,用ACC衡量模型的能力并不准确,因此要同时衡量精确率和召回率,遗憾的是,**一个模型的精确率和召回率往往是此消彼长的**。用西瓜书上的解释就是:挑西瓜的时候,如果希望将好瓜尽可能多地选出来(提高召回率),则可以通过增加选瓜的数量来实现(),如果将所有西瓜都选上(),那么所有的好瓜也必然被选上了,但是这样的策略明显精确率较低;若希望选出的瓜中好瓜比例可能高,则可只挑选最有把握的瓜,但这样就难免会漏掉不少好瓜,使得召回率较低。通常只有在一些简单任务中,才可能使得召回率和精确率都很高。因此我们引入F1来评价精确率和召回率的综合效果,F1是这两个值的调和平均(harmonic mean,与算数平均$\frac{P+R}{2}$和几何平均$\sqrt{P*R}$相比,调和平均更重视较小值),定义如下:
$ \frac{1}{F1} = \frac{1}{2}*(\frac{1}{P}+\frac{1}{R})$
化简得:
$ F1 = \frac{2*P*R}{P+R}$
在一些应用中,对精确率和召回率的重视程度有所不同。例如在商品推荐系统中,为了尽可能少打扰用户,更希望推荐内容的确是用户感兴趣的,此时精确率更重要;而在逃犯信息检索系统中,更希望尽可能少漏掉逃犯,此时召回率更重要。$F1$的一般形式————$F_\beta$,能让我们表达出对精确率和召回率的不同偏好,它定义为:
$F_\beta = \frac{(1+\beta^2)*P*R}{(\beta^2*P)+R}$
其中$\beta > 0$度量了召回率对精确率的相对重要性。$\beta=1$时退化为标准$F1$;$\beta>1$时召回率有更大影响;$\beta<1$时精确率有更大影响。
以AE的混淆矩阵为例:
$F1_A = \frac{2 * P_A * R_A}{P_A + R_A} = \frac{2 * 0.78 * 0.93}{0.78+0.93} = 0.85$
$F1_E = \frac{2 * P_E * R_E}{P_E + R_E} = \frac{2 * 0.93 * 0.92}{0.93+0.92} = 0.92$
以ABCD的混淆矩阵为例:
$ F1_A = 0.85 $
$ F1_B = \frac{2 * P_B * R_B}{P_B + R_B} = \frac{2 * 0.73 * 0.91}{0.73+0.91} = 0.81$
$ F1_C = \frac{2 * P_C * R_C}{P_C + R_C} = \frac{2 * 0.72 * 0.62}{0.72+0.62} = 0.67$
$ F1_D = \frac{2 * P_D * R_D}{P_D + R_D} = \frac{2 * 0.83 * 0.63}{0.83+0.63} = 0.72$
# 多分类
以上指标除了准确率,其他指标都是类别相关的。要对模型做出总体评价,就需要算出所有类别综合之后的总体指标。求总体指标的方法有两种:宏平均(Macro Average)和微平均(Micro Average)。
**宏平均**
计算各个类对应的指标的算术平均
例,$F1_{macro} = \frac{F1_A+F1_B+F1_C+F1_D}{4} = \frac{0.85+0.81+0.67+0.72}{4} = 0.7625$
所谓宏,就是从更宏观的角度去平均,即粒度是在类以上的。
**微平均**
先平均每个类别的TP、FP、TN、FN,再计算他们的衍生指标
例,
$TP_{micro} = \frac{TP_A+TP_B+TP_C+TP_D}{4} = \frac{56+83+28+47}{4} = 53.5$
$FP_{micro} = \frac{FP_A+FP_B+FP_C+FP_D}{4} = \frac{16+31+11+10}{4} = 17$
$FN_{micro} = \frac{FN_A+FN_B+FN_C+FN_D}{4} = \frac{15+8+17+28}{4} = 17$
$TN_{micro} = \frac{TN_A+TN_B+TN_C+FN_D}{4} = \frac{195+160+226+197}{4}=194.5$
$P_{micro} = \frac{TP_{micro}}{TP_{micro}+FP_{micro}} = \frac{53.5}{53.5+17} = 0.7589$
$R_{micro} = \frac{TP_{micro}}{TP_{micro}+FN_{micro}} = \frac{53.5}{53.5+17} = 0.7589$
$F1_{micro} = \frac{2 * P_{micro}* R_{micro}}{P_{micro} + R_{micro}} = \frac{2 * 0.7589 *0.7589}{0.7589+0.7589} = 0.7589$
# 参考资料
1. 《西瓜书》
2. 《ModelArts人工智能应用开发指南》
如有错误,欢迎指出。下一期继续探讨ROC曲线、AUC曲线和PR曲线
二、支持向量机
支持向量机(support vector machines,SVM)是一种二分类模型,它的基本模型是定义在特征空间上的 间隔最大的线性分类器 ,间隔最大使它有别于感知机;SVM还包括 核技巧 ,这使它成为实质上的非线性分类器。 SVM的学习策略就是间隔最大化 ,可形式化为一个求解凸二次规划的问题,也等价于正则化的损失函数最小值问题。SVM的学习算法就是求解凸二次规划的最优算法。
它在手写识别数字和人脸识别中应用广泛,在文本和超文本的分类中举足轻重,因为SVM可以大量减少标准归纳和转换设置中对标记训练实例的需求。同时, SVM也被用来执行图像的分类,并用于图像分割系统 。实验结果表明,在仅仅三到四轮相关反馈之后,SVM就能实现比传统的查询细化方案高出一大截的搜索精度。除此之外,生物学和许多其他学科都是SVM的青睐者,SVM现在已经广泛用于 蛋白质分类 ,现在化合物分类的业界平均水平可以达到90%以上的准确率。在生物科学的尖端研究中,人们还使用支持向量机来识别用于模型预测的各种特征,以找出各种基因表现结果的影响因素。
SVM学习的基本想法是求解能够正确划分训练数据集并且几何间隔最大的分离超平面 。如下图所示, 即为分离超平面,对于线性可分的数据集来说,这样的超平面有无穷多个(即感知机), 但是几何间隔最大的分离超平面却是唯一的。
超平面与最近数据点之间的距离成为边距。可以将两个类分开的最佳或最佳超平面是具有最大边距的线。只有这些点与定义超平面和分类器的构造有关。这些点称为支持向量。他们支持或定义超平面。实际上,优化算法用于找到使裕度最大化的系数的值。
SVM的三层理解:
(1)线性可分支持向量机、硬间隔
(2)线性支持向量机、软间隔
(3)非线性支持向量机、Kernel SVM
支持向量机模型存在三宝:
(1)间隔:是指样本点到超平面的距离。 硬间隔 是指对给定的样本数据集中所以的样本都能正确分类。对于线性不可分的样本集,无法满足线性可分支持向量机的不等式约束,也就是不存在对所有样本都能正确分类的超平面。这种情况可能是因为问题本身是非线性的,也可能问题是线性可分的,但个别样本点标记错误或存在误差而导致样本集线性不可分。
因此,我们可以允许对少量的样本分类错误, 容忍特异点的存在,而对于去除特异点的样本集是线性可分的,这时称为软间隔 。
(2)对偶
(3)核技巧
支持向量机和感知机在某些方面很相似,其相同点 :
(1)都是二分类模型
(2)都是通过一个分离超平民啊对特征进行分类
不同点:
(1)SVM是特殊的感知机
(2)感知机是用误分类最小的策略,求得分离超平面,这时存在无穷个解,感知机利用间隔最大化求得最优分离超平面。如下图所示。
图中的蓝色和黄色圆点分别表示正负样本,对于这个二分类,从图中我们可知,在最上面的黄线和最下面的绿线之间的线条都是可以把训练样本集完全分开的,这就是感知机的原理,通过这些分离超平面把训练集分开,这样的分离超平面存在很多条,比如图中的虚线,从视觉上中间那条实线应该是众多线条中最优的一条,感知机对于学习的分离超平面由于优化算法、学习率等不同因素,会随机地学习到这众多分离超平面的一条,当学习到的是靠近上下边缘的分离超平面是,对于一个未知样本,当这个样本稍微浮动一下,模型就很可能对他进行误分类了,因此鲁棒性很低,而支持向量机的目标是找到图中中间那条最优的分离超平面。
为求解支持向量机的最优化问题,我们将公式10作为原始问题,应用拉格朗日对偶性,通过求解对偶问题得到原始问题的最优解,这就是支持向量机的对偶算法。 在约束最优化问题中,常常利用拉格朗日对偶性将原始问题转换为对偶问题,通过解对偶问题而得到原始问题的解(最优解是反的,值是一样的 ) 。这是因为:
1)对偶问题的对偶是原问题
2)无论原始问题与约束条件是否是凸的,对偶问题都是凹问题,加个负号就变成凸问题了,凸问题容易优化。
3)对偶问题可以给出原始问题一个下界
4)当满足一定条件时,原始问题与对偶问题的解是完全等价的
LinearSVC()类的主要参数:
(1)C: float, default=1.0, 惩罚系数,必须大于0,默认值1.0。用于设置对错误分类的惩罚强度,对于设置对错误分类的惩罚强度,对于完全线性可分的硬间隔问题不需要设置。
(2)fit_intercept: boolean, optional(default=True):是否计算截距,默认为True。如果数据均值为0,则可以选择False不计算截距。
(3)multi_class: string,”ovr“ or "crammer_singer"(default='ovr'):多类别分类策略开关。对于多元分类问题,选择'ovr'将使用多类别策略(one-vs-set)直接对多个类别进行分类(默认方法);选择"crammer_singer"将主次进行二值分类。
(4)class_weight:dict or "balanced", default=None,特征变量的加权系数。用于为某个特征变量设置权重,默认所有特征变量的权重相同。
结论:1)线性核,尤其是多项式核函数在高次项时计算非常缓慢。
2)rbf和多项式核函数都不擅长处理量纲不统一的数据集
这两个缺点都可以由数据无量纲化来解决。因此,SVM执行之前,非常推荐先进行数据的无量纲化!
svc.score(): 返回给定测试数据和标签的平均准确度。
首先,分类模型天生会倾向于多数的类,让多数类更容易被判断正确,少数类被牺牲掉 。因为对于模型而言,样本量越大的标签可以学习的信息越多,算法就会更加依赖于从多数类中学到的信息来进行判断。如果我们希望捕获少数类,模型就会失败。 其次,模型评估指标会失去意义 。这种分类状况下,即便模型什么也不做,全把所有人都当成不会犯罪的人,准确率也能非常高,这使得模型评估指标accuracy变得毫无意义,根本无法达到我们的“要识别出会犯罪的人”的建模目的。
所以现在,我们首先要让算法意识到数据的标签是不均衡的,通过施加一些惩罚或者改变样本本身,来让模型向着捕获少数类的方向建模。然后,我们要改进我们的模型评估指标,使用更加针对于少数类的指标来优化模型。 要解决第一个问题,我们在逻辑回归中已经介绍了一些基本方法,比如上采样下采样 。但这些采样方法会增加样本的总数,对于支持向量机这个样本总是对计算速度影响巨大的算法来说,我们完全不想轻易地增加样本数量。况且,支持向量机中的决策仅仅受到决策边界的影响,而决策边界仅仅受到参数C和支持向量的影响,单纯地增加样本数量不仅会增加计算时间,可能还会增加无数对决策边界无影响的样本点。因此在支持向量机中,我们要大力依赖我们调节样本均衡的参数:SVC类的class_weight和接口fit可以设定的sample_weight。
混淆矩阵是二分类问题的多维衡量指标体系,在样本不平衡时极其有用。在混淆矩阵中,我们将少数类认为是正例,多数类认为是负例。在决策树,随机森林这些普通的分类算法里,即是说少数类是1,多数类是0。在SVM里,就是说少数类是1,多数类是-1。普通的混淆矩阵,一般使用{0,1}来表示。混淆矩阵中,永远是真实值在前,预测值在后。
ROC曲线及相关问题
基于混淆矩阵,总共有六个指标:准确率Accuracy,精确度Precision,召回率Recall,精确度和召回度的平衡指标F measure, 特异度Specificity,以及假正率FPR。
其中,假正率有一个非常重要的应用:我们在追求较高的Recall的时候,Precision会下降,就是说随着更多的少数类被捕捉出来,会有更多的多数类被判断错误,但我们很好奇,随着Recall的逐渐增加,模型将多数类判断错误的能力如何变化呢?我们希望理解,我每判断正确一个少数类,就有多少个多数类会被判断错误。假正率正好可以帮助我们衡量这个变化。相对的,Precision无法判断这些判断错误的多数类在全部多数类中究竟占多大的比例,所以无法在提升Recall的过程中也顾及到模型整体的Accuracy。因此, 我们可以使用Recall和FPR之间的平衡,来替代Recall和Precision之间的平衡,让我们衡量模型在尽量捕捉少数类的时候,误伤多数类的情况如何变化,这就是我们的ROC曲线衡量的平衡 。
ROC曲线,全称The Receiver Operating Characteristic Curve。这是一条以下不同阈值下的假正率FPR为横坐标,不同阈值下的召回率Recall为纵坐标的曲线。
优点:
(1)有严格的数学理论支持,可解释性强,不依靠统计方法,从而简化了通常的分类和回归问题
(2)解决小样本下机器学习问题;
(3)能找出对任务至关重要的关键样本(即:支持向量)
(4)采用核技巧之后,可以处理非线性分类/回归任务;可以解决高维问题,即大型特征空间;
(5)最终决策函数只由少数的支持向量所确定,计算的复杂性取决于支持向量的数目,而不是样本空间的维数,这在某种意义上避免了”维数灾难“。
缺点:
(1)训练时间长。当采用SMO算法时,由于每次都需要挑选一对参数,因此时间复杂度 ,其中N为训练样本的数量;
(2)当采用核技巧时,如果需要存储核矩阵,则空间复杂度为 。对非线性问题没有通用解决方案,有时候很难找到一个合适的核函数;
(3)对于核函数的高维映射解释力不强,尤其是径向基函数;
(4)模型预测时,预测时间与支持向量的个数成正比。当支持向量的数量较大时,预测计算复杂度较高。
(5) 对缺失数据敏感;
因此支持向量机目前只适合小批量样本的任务,无法适应百万条甚至上亿样本的任务 。
SVM主要用于分类问题,主要的应用场景有字符识别、面部识别、行人检测、文本分类等领域。 在机器学习领域,SVM是有监督的学习模型,通常用来进行模式识别、分类(异常值检测)以及回归分析 。
三、与简单的线性回归模型相比,如何评估逻辑回归模型?
逻辑回归:y=sigmoid(w'x)
线性回归
:y=w'x
也就是逻辑回归比线性回归多了一个
sigmoid函数
,sigmoid(x)=1/(1+exp(-x)),其实就是对x进行
归一化
操作,使得sigmoid(x)位于0~1
逻辑回归通常用于二分类模型,
目标函数
是二类
交叉熵
,y的值表示属于第1类的概率,用户可以自己设置一个分类阈值。
线性回归用来拟合数据,目标函数是
平法
和误差
四、关于机器学习应用不得不思考哪些问题?
机器学习是一种能够赋予机器学习的能力以此让它完成直接编程无法完成的功能的方法。但从实践的意义上来说,机器学习是一种通过利用数据,训练出模型,然后使用模型预测的一种方法。
让我们具体看一个例子。
图4房价的例子
拿国民话题的房子来说。现在我手里有一栋房子需要售卖,我应该给它标上多大的价格?房子的面积是100平方米,价格是100万,120万,还是140万?
很显然,我希望获得房价与面积的某种规律。那么我该如何获得这个规律?用报纸上的房价平均数据么?还是参考别人面积相似的?无论哪种,似乎都并不是太靠谱。
我现在希望获得一个合理的,并且能够最大程度的反映面积与房价关系的规律。于是我调查了周边与我房型类似的一些房子,获得一组数据。这组数据中包含了大大小小房子的面积与价格,如果我能从这组数据中找出面积与价格的规律,那么我就可以得出房子的价格。
对规律的寻找很简单,拟合出一条直线,让它“穿过”所有的点,并且与各个点的距离尽可能的小。
通过这条直线,我获得了一个能够最佳反映房价与面积规律的规律。这条直线同时也是一个下式所表明的函数:房价=面积*a+b
上述中的a、b都是直线的参数。获得这些参数以后,我就可以计算出房子的价格。
假设a=0.75,b=50,则房价=100*0.75+50=125万。这个结果与我前面所列的100万,120万,140万都不一样。由于这条直线综合考虑了大部分的情况,因此从“统计”意义上来说,这是一个最合理的预测。
在求解过程中透露出了两个信息:
1.房价模型是根据拟合的函数类型决定的。如果是直线,那么拟合出的就是直线方程。如果是其他类型的线,例如抛物线,那么拟合出的就是抛物线方程。机器学习有众多算法,一些强力算法可以拟合出复杂的非线性模型,用来反映一些不是直线所能表达的情况。
2.如果我的数据越多,我的模型就越能够考虑到越多的情况,由此对于新情况的预测效果可能就越好。这是机器学习界“数据为王”思想的一个体现。一般来说(不是绝对),数据越多,最后机器学习生成的模型预测的效果越好。
通过我拟合直线的过程,我们可以对机器学习过程做一个完整的回顾。首先,我们需要在计算机中存储历史的数据。接着,我们将这些数据通过机器学习算法进行处理,这个过程在机器学习中叫做“训练”,处理的结果可以被我们用来对新的数据进行预测,这个结果一般称之为“模型”。对新数据的预测过程在机器学习中叫做“预测”。“训练”与“预测”是机器学习的两个过程,“模型”则是过程的中间输出结果,“训练”产生“模型”,“模型”指导“预测”。
以上就是关于二分类模型评估相关问题的回答。希望能帮到你,如有更多相关问题,您也可以联系我们的客服进行咨询,客服也会为您讲解更多精彩的知识和内容。
推荐阅读: