机器学习之类别不平衡问题 (1) —— 各种评估指标 - massquantity - 博客园
欠采样(undersampling)和过采样(oversampling)会对模型带来怎样的影响?
详解类别不平衡问题 - 天地辽阔 - 博客园

类别不平衡(class-imbalance)

惯例
在二分类问题中,一般将数目少的类别视为正例,数目多的类别视为负例

也叫数据倾斜,数据不平衡指分类任务中不同类别的训练样例数目差别很大的情况。

各种评估指标

机器学习之类别不平衡问题 (1) —— 各种评估指标 - massquantity - 博客园

混淆矩阵图

  • True Positive(真正例,TP):实例为正例,预测为正例
  • False Negative (假负例,FN):实际为正例,预测为负例。
  • True Negative (真负例,TN):实际为负例,预测为负例。
  • False Positive (假正例,FP):实际为负例,预测为正例。
  1. Precision (查准率) = TPTP+FP ,Precision衡量的是所有被预测为正例的样本中有多少是真正例但Precision并没有表现有多少正例是被错判为了负例(即FN),举个极端的例子,分类器只将一个样本判为正例,其他所有都判为负例,这种情况下Precision为100%,但其实遗漏了很多正例,所以Precision常和下面的Recall (TPR) 相结合。
  2. True Positive Rate (TPR,真正例率) = TPTP+FN ,又称__Recall__(查全率,召回率),Sensitivity(灵敏性)。Recall (TPR)衡量的是所有的正例中有多少是被正确分类了,也可以看作是为了避免假负例(FN)的发生即将真正例分类到真正中而不是通过假负来判断的,因为TPR高意味着FN低。Recall的问题和Precision正相反,没有表现出有多少负例被错判为正例(即FP),若将所有样本全划为正例,则Recall为100%,但这样也没多大用。
  3. True Negative Rate (TNR,真负例率) = TNTN+FP ,又称Specificity(特异性)。Specificity衡量的是所有的负例中有多少是被正确分类了,由于类别不平衡问题中通常关注正例能否正确被识别,Specificity高则FP低,意味着很少将正例错判为负例,即该分类器对正例的判别具有“特异性”,在预测为正例的样本中很少有负例混入
  4. False Positive Rate (FPR,假正例率) = FPTN+FP = 1− $TNR$ , 由混淆矩阵可以看出该指标的着眼点在于负例,意为有多少负例被错判成了正例。在ROC曲线中分别以TPR和FPR作为纵、横轴作图,显示出一种正例与负例之间的“博弈”,在下篇文章中详解。

F1 score = 21 recall +1 precision =2× precision × recall  precision + recall 

F1分数(F1-Score),又称为平衡F分数(BalancedScore),是一个综合指标,它被定义为精确率和召回率的调和平均数 (harmonic mean),数值上一般接近于二者中的较小值,因此如果F1 score比较高的话,意味着Precision和Recall都较高。

知识补充
调和平均数(harmonic mean)又称倒数平均数,是总体各统计变量倒数的算术平均数的倒数。调和平均数是平均数的一种。
算数平均数中,重要性取决于绝对值大的一方(强),而在调和平均数中,重要性取决于绝对值小的一方(弱)。

FP和FN还有个还有个与之相关的概念,那就是统计假设检验中的第一类错误 (Type I error)和第二类错误 (Type II error) 。由于我们比较关心正例,所以将负例视为零假设,正例视为备选假设,则第一类错误为错误地拒绝零假设 (负例),选择备选假设,则为FP;第二类错误为错误地接受零假设,则为FN。

知识补充
零假设的内容一般是希望证明其错误的假设。


上面介绍的这些指标都没有考虑检索结果的先后顺序,而像搜索问题中我们通常希望第一个结果是与查询最相关的,第二个则是次相关的,以此类推,因而有时候不仅要预测准确,对于相关性的顺序也非常看重。所以最后介绍两个广泛应用的排序指标

Mean Average Precision (MAP,平均准确率均值),对于单个信息需求,返回结果中在每篇相关文档上 Precision 的平均值被称为 Average Precision (AP),然后对所有查询取平均得到 MAP。
AP=k=1nP(k)×rel(k)M
MAP=q=1QAPqQ
其中 P(k) 为前 k 个结果的 Precision,又可写为P@k。 rel(k) 表示第 k 个结果是否为相关文档,相关为1不相关为0,M 表示所有相关文档的数量,n 表示所有文档数量。如果只关心前 K 个查询的情况,则是下式:
AP@K=k=1KP(k)×rel(k)MK
MAP@K=q=1QAPq@KQ
这里的 MK 为前 K 个结果中相关文档的数量。

对于单个信息需求来说,Average Precision 是 PR 曲线下面积的近似值,因此 MAP 可粗略地认为是某个查询集合对应的多条 PR 曲线下面积的平均值。

Normalized Discounted Cumulative Gain (NDCG,归一化折扣累计增益) 。如果说 MAP 是基于 0/1 二值描述相关性,那么 NDCG 则是可将相关性分为多个等级的指标
对于信息检索和推荐之类的问题,每一个返回的结果都被赋予一个相关性分数 rel,则 NDCG 中的 CG 表示前 k 个结果的分数之和,即累计增益 :
CGk=i=1kreli

CG 没有考虑推荐的次序,所以在此基础上引入对结果顺序的考虑,即相关性高的结果若排在后面则会受更多的惩罚,于是就有了 DCG (discounted CG),折扣累积增益。公式如下:
DCGk=i=1k2reli-1log2(i+1)

i 表示一个结果在结果集中的顺序,如果该结果 rel 很高,但排在后面,意味着分母 log2(i+1) 会变大,则相应的总体 DCG 会变小 (注意这里的 log 是以 2 为底的)。

对于不同的查询,往往会返回不同的结果集,而不同结果集之间因为大小不同难以直接用 DCG 进行比较,所以需要进行归一化,这其实和机器学习中不同特征因量纲不同要进行归一化差不多意思。这个归一化后的指标就是 NDCG :
NDCGk=DCGkIDCGk
其中 IDCG 表示 Ideal DCG, 指某个查询所能返回的最好结果集,IDCG 的值也是结果集中最大的。将所有结果按相关性大小排序,计算出的 DCG 即为前 k 个结果的 IDCG:
IDCGk=i=1|REL|2reli-1log2(i+1)
其中 |REL| 表示按相关性顺序排列的结果集。因此 DCG 的值介于 (0, IDCG] ,故 NDCG 的值介于(0,1],这样就起到了归一化的效果。不同查询或用户的 NDCG 平均起来可以用以评估一个搜索引擎或推荐系统的整体效果。

NDCG 的缺点是需要预先指定每一个返回结果的相关性,这个超参数需要人为指定。

常用的评估方法

ROC曲线

概述

ROC曲线常用于二分类问题中的模型比较,主要表现为一种真正例率 (TPR) 假正例率 (FPR) 的权衡。

概述: 是在不同的分类阈值 (threshold) 设定下分别以TPR和FPR为纵、横轴作图。由ROC曲线的两个指标,TPR=TPP=TPTP+FNFPR=FPN=FPFP+TN 可以看出,当一个样本被分类器判为正例,若其本身是正例,则TPR增加;若其本身是负例,则FPR增加,因此ROC曲线可以看作是随着阈值的不断移动,所有样本中正例与负例之间的“对抗”。曲线越靠近左上角,意味着越多的正例优先于负例,模型的整体表现也就越好

ROC曲线

AUC (Area Under the Curve)

ROC space

先看一下ROC曲线中的随机线,图中[0,0]到[1,1]的虚线即为随机线,该线上所有的点都表示该阈值下TPR=FPR
根据定义,TPR=TPP,表示所有正例中被预测为正例的概率;FPR=FPN,表示所有负例中被被预测为正例的概率。若二者相等,意味着无论一个样本本身是正例还是负例,分类器预测其为正例的概率是一样的,这等同于随机猜测(注意这里的“随机”不是像抛硬币那样50%正面50%反面的那种随机)。

上图中B点就是一个随机点,无论是样本数量和类别如何变化,始终将75%的样本分为正例。

ROC曲线围成的面积 (即AUC)可以解读为:从所有正例中随机选取一个样本A,再从所有负例中随机选取一个样本B,分类器将A判为正例的概率比将B判为正例的概率大的可能性。可以看到位于随机线上方的点(如图中的A点)被认为好于随机猜测。在这样的点上TPR总大于FPR,意为正例被判为正例的概率大于负例被判为正例的概率。
从另一个角度看,由于画ROC曲线时都是先将所有样本按分类器的预测概率排序,所以AUC反映的是分类器对样本的排序能力,依照上面的例子就是A排在B前面的概率。AUC越大,自然排序能力越好,即分类器将越多的正例排在负例之前。

ROC曲线的绘制方法:假设有P个正例,N个反例,首先拿到分类器对于每个样本预测为正例的概率,根据概率对所有样本进行逆序排列,然后将分类阈值设为最大,即把所有样本均预测为反例,此时图上的点为 (0,0)。然后将分类阈值依次设为每个样本的预测概率,即依次将每个样本划分为正例,如果该样本为真正例,则TP+1,即TPR+1P; 如果该样本为负例,则FP+1,即FPR+1N。最后的到所有样本点的TPR和FPR值,用线段相连。

massquantity/Class-Imbalance: 《机器学习之类别不平衡问题》文章代码

ROC的优点

混淆矩阵图

  1. 兼顾正例和负例的权衡。因为TPR聚焦于正例,FPR聚焦于与负例,使其成为一个比较均衡的评估方法。

  2. ROC曲线选用的两个指标,TPR=TPP=TPTP+FNFPR=FPN=FPFP+TN,都不依赖于具体的类别分布。

    注意TPR用到的TP和FN同属P列,FPR用到的FP和TN同属N列,所以即使P或N的整体数量发生了改变,也不会影响到另一列。也就是说,即使正例与负例的比例发生了很大变化,ROC曲线也不会产生大的变化,而像Precision使用的TP和FP就分属两列,则易受类别分布改变的影响。

参考文献中举了个例子,负例增加了10倍,ROC曲线没有改变,而PR曲线则变了很多。作者认为这是ROC曲线的优点,即具有鲁棒性,在类别分布发生明显改变的情况下依然能客观地识别出较好的分类器。

代码验证
相关资料

ROC的缺点

  1. 上文提到ROC曲线的优点是不会随着类别分布的改变而改变,但这在某种程度上也是其缺点。因为负例N增加了很多,而曲线却没变,这等于产生了大量FP。像信息检索中如果主要关心正例的预测准确性的话,这就不可接受了。
  2. 在类别不平衡的背景下,负例的数目众多致使FPR的增长不明显,导致ROC曲线呈现一个过分乐观的效果估计。ROC曲线的横轴采用FPR,根据FPR=FPN=FPFP+TN,当负例N的数量远超正例P时,FP的大幅增长只能换来FPR的微小改变。结果是虽然大量负例被错判成正例,在ROC曲线上却无法直观地看出来。(当然也可以只分析ROC曲线左边一小段)
    举个例子,假设一个数据集有正例20,负例10000,开始时有20个负例被错判,FPR=2020+9980=0.002,接着又有20个负例错判,FPR2=4040+9960=0.004,在ROC曲线上这个变化是很细微的。而与此同时Precision则从原来的0.5下降到了0.33,在PR曲线上将会是一个大幅下降。

PR(Precision Recall)曲线

PR曲线展示的是Precision vs Recall的曲线,PR曲线与ROC曲线的相同点是都采用了TPR (Recall),都可以用AUC来衡量分类器的效果。不同点是ROC曲线使用了FPR,而PR曲线使用了Precision,因此PR曲线的两个指标都聚焦于正例类别不平衡问题中由于主要关心正例,所以在此情况下PR曲线被广泛认为优于ROC曲线。

PR曲线的绘制与ROC曲线类似,PR曲线的AUC面积计算公式为:

n(Rn-Rn-1)Pn

massquantity/Class-Imbalance: 《机器学习之类别不平衡问题》文章代码

使用场景

  1. ROC曲线由于兼顾正例与负例,所以适用于评估分类器的整体性能,相比而言PR曲线完全聚焦于正例
  2. 如果有多份数据且存在不同的类别分布,比如信用卡欺诈问题中每个月正例和负例的比例可能都不相同,这时候如果只想单纯地比较分类器的性能且剔除类别分布改变的影响,则ROC曲线比较适合,因为类别分布改变可能使得PR曲线发生变化时好时坏,这种时候难以进行模型比较;反之,如果想测试不同类别分布下对分类器的性能的影响,则PR曲线比较适合。
  3. 如果想要评估在相同的类别分布下正例的预测情况,则宜选PR曲线。
  4. 类别不平衡问题中,ROC曲线通常会给出一个乐观的效果估计,所以大部分时候还是PR曲线更好。
  5. 最后可以根据具体的应用,在曲线上找到最优的点,得到相对应的precision,recall,f1 score等指标,去调整模型的阈值,从而得到一个符合具体应用的模型。

采样方法

前提:章节二三主要谈的是类别不平衡的评估指标,因此我们可以选择选择具体的类别不平衡问题的方法。

采样方法大致可分为过采样 (oversampling)欠采样 (undersampling) ,虽然过采样和降采样主题思想简单,但这些年来研究出了很多变种,本篇挑一些来具体阐述。见下思维导图:

采样方法

过采样

  1. 随机过采样

随机过采样顾名思义就是从样本少的类别中随机抽样,再将抽样得来的样本添加到数据集中。然而这种方法如今已经不大使用了,因为重复采样往往会导致严重的过拟合,因而现在的主流过采样方法是通过某种方式人工合成一些少数类样本,从而达到类别平衡的目的,而这其中的鼻祖就是SMOTE。

  1. SMOTE

SMOTE (synthetic minority oversampling technique) 的思想概括起来就是在少数类样本之间进行插值来产生额外的样本。具体地,对于一个少数类样本Xi使用K近邻法(k值需要提前指定),求出离Xi距离最近的k个少数类样本,其中距离定义为样本之间n维特征空间的欧氏距离。然后从k个近邻点中随机选取一个,使用下列公式生成新样本:
xnew =xi+x^i-xi×δ
其中 X^ 为选出的k近邻点,δ∈[0,1]是一个随机数。下图就是一个SMOTE生成样本的例子,使用的是3-近邻,可以看出SMOTE生成的样本一般就在xix^i相连的直线上:

SMOTE生成的样本

SMOTE会随机选取少数类样本用以合成新样本,而不考虑周边样本的情况,这样容易带来两个问题

  1. 如果选取的少数类样本周围也都是少数类样本,则新合成的样本不会提供太多有用信息。这就像支持向量机中远离margin的点对决策边界影响不大。
  2. 如果选取的少数类样本周围都是多数类样本,这类的样本可能是噪音,则新合成的样本会与周围的多数类样本产生大部分重叠,致使分类困难。

总的来说我们希望新合成的少数类样本能处于两个类别的边界附近,这样往往能提供足够的信息用以分类。而这就是下面的 Border-line SMOTE 算法要做的事情。

知识补充k近邻法–统计学习方法总结_lemonaha的博客-CSDN博客
k近邻法(k-nearest neighbor, k-NN)是一种基本分类与回归方法。这里只讨论分类问题中的k近邻法。k近邻法的输入为实例的特征向量,对应于特征空间的点;输出为实例的类别,可以取多类。k近邻法假设给定一个训练数据集,其中的实例类别已定。分类时,对新的实例,根据其k个最近邻的训练实例的类别,通过多数表决等方法进行预测。因此,k近邻法不具有显式的学习过程。k近邻法实际上利用训练数据集对特征向量空间进行划分,并作为其分类的“模型”。**k值的选择、距离度量及分类决策规则是k近邻法的三个基本要素**。

  1. Border-line SMOTE

这个算法会先将所有的少数类样本分成三类,如下图所示:

  • “noise” : 所有的k近邻个样本都属于多数类
  • “danger” : 超过一半的k近邻样本属于数类
  • “safe”: 超过一半的k近邻样本属于数类

Border-line SMOTE

Border-line SMOTE算法只会从处于”danger“状态的样本中随机选择,然后用SMOTE算法产生新的样本。处于”danger“状态的样本代表靠近”边界“附近的少数类样本,而处于边界附近的样本往往更容易被误分类。因而 Border-line SMOTE 只对那些靠近”边界“的少数类样本进行人工合成样本,而 SMOTE 则对所有少数类样本一视同仁。

Border-line SMOTE 分为两种: Borderline-1 SMOTE 和 Borderline-2 SMOTE。 Borderline-1 SMOTE 在合成样本时,是式中的x^是一个少数类样本,而 Borderline-2 SMOTE 中的x^则是k近邻中的任意一个样本。

  1. ADASYN

ADASYN名为自适应合成抽样(adaptive synthetic sampling),其最大的特点是采用某种机制自动决定每个少数类样本需要产生多少合成样本,而不是像SMOTE那样对每个少数类样本合成同数量的样本。具体流程如下:

  1. 首先计算需要合成的样本总量:
    G=Smaj-Smin×β
    其中Smaj为多数类样本数量,Smin为少数类样本数量,β∈[0,1]为系数。G即为总共想要合成的少数类样本数量,如果β=1则是合成后各类别数目相等。

  2. 对于每个少类别样本xi,找出其K近邻个点,并计算:
    Γi=Δi/KZ
    其中Δi为K近邻个点中多数类样本的数量,Z为规范化因子以确保 Γ 构成一个分布。这样若一个少数类样本xi的周围多数类样本越多,则其 Γi 也就越高。

  3. 最后对每个少类别样本xi计算需要合成的样本数量gi,再用SMOTE算法合成新样本:
    gi=Γi×G
    可以看到ADASYN利用分布Γ来自动决定每个少数类样本所需要合成的样本数量,这等于是给每个少数类样本施加了一个权重,周围的多数类样本越多则权重越高。ADASYN的缺点是易受离群点的影响,如果一个少数类样本的K近邻都是多数类样本,则其权重会变得相当大,进而会在其周围生成较多的样本。

下面利用sklearn中的 make_classification 构造了一个不平衡数据集,各类别比例为{0:54, 1:946}。原始数据,SMOTE,Borderline-1 SMOTE,Borderline-2 SMOTE和ADASYN的比较见下图,左侧为过采样后的决策边界右侧为过采样后的样本分布情况可以看到过采样后原来少数类的决策边界都扩大了,导致更多的多数类样本被划为少数类了

知识补充
决策边界顾名思义就是需要分类的数据中,区分不同类别的边界。

    原始数据

原始数据
SMOTE
SMOTE过采样
Borderline-1 SMOTE
Borderline-1 SMOTE
Borderline-2 SMOTE
Borderline-2 SMOTE
ADASYN
ADASYN

从上图我们也可以比较几种过采样方法各自的特点。用 SMOTE 合成的样本分布比较平均,而Border-line SMOTE合成的样本则集中在类别边界处。ADASYN的特性是一个少数类样本周围多数类样本越多,则算法会为其生成越多的样本,从图中也可以看到生成的样本大都来自于原来与多数类比较靠近的那些少数类样本。

欠采样

  1. 随机欠采样

    随机欠采样的思想同样比较简单,就是从多数类样本中随机选取一些剔除掉。这种方法的缺点是被剔除的样本可能包含着一些重要信息,致使学习出来的模型效果不好。

  2. EasyEnsemble 和 BalanceCascade
    EasyEnsemble和BalanceCascade采用集成学习机制来处理传统随机欠采样中的信息丢失问题。

  • EasyEnsemble将多数类样本随机划分成n个子集,每个子集的数量等于少数类样本的数量,这相当于欠采样。接着将每个子集与少数类样本结合起来分别训练一个模型,最后将n个模型集成,这样虽然每个子集的样本少于总体样本,但集成后总信息量并不减少。
  • 如果说EasyEnsemble是基于无监督的方式从多数类样本中生成子集进行欠采样,那么BalanceCascade则是采用了有监督结合Boosting的方式。在第n轮训练中,将从多数类样本中抽样得来的子集与少数类样本结合起来训练一个基学习器H,训练完后多数类中能被H正确分类的样本会被剔除。在接下来的第n+1轮中,从被剔除后的多数类样本中产生子集用于与少数类样本结合起来训练,最后将不同的基学习器集成起来。BalanceCascade的有监督表现在每一轮的基学习器起到了在多数类中选择样本的作用,而其Boosting特点则体现在每一轮丢弃被正确分类的样本,进而后续基学习器会更注重那些之前分类错误的样本。

知识补充基学习器
机器学习算法之Boosting – 标点符
同质集成中的个体学习器又称为基学习器(base learner),相应的学习算法也被称为基学习算法(base learning algorithm)。

  1. NearMiss

NearMiss本质上是一种原型选择(prototype selection)方法,即从多数类样本中选取最具代表性的样本用于训练,主要是为了缓解随机欠采样中的信息丢失问题。NearMiss采用一些启发式的规则来选择样本,根据规则的不同可分为3类:

  • NearMiss-1:选择到最近的K个少数类样本平均距离最近的多数类样本
  • NearMiss-2:选择到最远的K个少数类样本平均距离最近的多数类样本
  • NearMiss-3:对于每个少数类样本选择K个最近的多数类样本,目的是保证每个少数类样本都被多数类样本包围

NearMiss-1和NearMiss-2的计算开销很大,因为需要计算每个多类别样本的K近邻点。另外,NearMiss-1易受离群点的影响,如下面第二幅图中合理的情况是处于边界附近的多数类样本会被选中,然而由于右下方一些少数类离群点的存在,其附近的多数类样本就被选择了。相比之下NearMiss-2和NearMiss-3不易产生这方面的问题。

图一Oniginal data

图二Resampling using Nearmiss-1

图三Resampling using Nearmiss-2

图四Resampling using Nearmiss-3

  1. 数据清洗方法 (data cleaning tichniques)

这类方法主要通过某种规则来清洗重叠的数据,从而达到欠采样的目的,而这些规则往往也是启发性的,下面进行简要阐述:

  • Tomek Link:Tomek Link表示不同类别之间距离最近的一对样本,即这两个样本互为最近邻且分属不同类别。这样如果两个样本形成了一个Tomek Link,则要么其中一个是噪音,要么两个样本都在边界附近。这样通过移除Tomek Link就能“清洗掉”类间重叠样本,使得互为最近邻的样本皆属于同一类别,从而能更好地进行分类。

      下图一上为原始数据,图二上为SMOTE后的数据,图三虚线标识出Tomek Link,图四为移除Tomek Link后的数据集,可以看到不同类别之间样本重叠减少了很多。
    

图一

图二

图三

图四

  • Edited Nearest Neighbours(ENN):对于属于多数类的一个样本,如果其K个近邻点有超过一半都不属于多数类,则这个样本会被剔除。这个方法的另一个变种是所有的K个近邻点都不属于多数类,则这个样本会被剔除。、

最后,数据清洗技术最大的缺点是无法控制欠采样的数量。由于都在某种程度上采用了K近邻法,而事实上大部分多数类样本周围也都是多数类,因而能剔除的多数类样本比较有限。

过采样和欠采样结合

上文中提到SMOTE算法的缺点是生成的少数类样本容易与周围的多数类样本产生重叠难以分类,而数据清洗技术恰好可以处理掉重叠样本,所以可以将二者结合起来形成一个pipeline,先过采样再进行数据清洗。主要的方法是 SMOTE + ENNSMOTE + Tomek ,其中 SMOTE + ENN 通常能清除更多的重叠样本,如下图:

Resampling using Original

Resampling using SMOTE

Resampling using SMOTE + ENN

Resampling using SMOTE + TOMEK


★ 采样方法的效果

机器学习之类别不平衡问题 (3) —— 采样方法 - massquantity - 博客园

省心的方法

主动收集数据

针对少量样本数据,可以尽可能去扩大这些少量样本的数据集,或者尽可能去增加他们特有的特征来丰富数据的多样性(尽量转化成情况1)。譬如,如果是一个情感分析项目,在分析数据比例时发现负样本(消极情感)的样本数量较少,那么我们可以尽可能在网站中搜集更多的负样本数量,或者花钱去买,毕竟数据少了会带来很多潜在的问题。

将任务转换成异常检测问题、

如果少数类样本太少,少数类的结构可能并不能被少数类样本的分布很好地表示,那么用平衡数据或调整算法的方法不一定有效。如果这些少数类样本在特征空间中再分布的比较散,情况会更加糟糕。这时候不如将其转换为无监督的异常检测算法,不用过多的去考虑将数据转换为平衡问题来解决。

调整权重

可以简单的设置损失函数的权重,让模型增加对多数类的惩罚,更多的关注少数类。在python的scikit-learn中我们可以使用class_weight参数来设置权重。

另外,调整权重方法也适合于这种情况:不同类型的错误所造成的后果不同。例如在医疗诊断中,错误地把健康人诊断为患者可能会带来进一步检查的麻烦,但是错误地把患者诊断为健康人,则可能会丧失了拯救生命的最佳时机;再如,门禁系统错误地把可通行人员拦在门外,将使得用户体验不佳,但错误地把陌生人放进门内,则会造成严重的安全事故;在信用卡盗用检查中,将正常使用误认为是盗用,可能会使用户体验不佳,但是将盗用误认为是正常使用,会使用户承受巨大的损失。为了权衡不同类型错误所造成的不同损失,可为错误赋予“非均等代价”(unequal cost)。

阈值调整(threshold moving)

直接基于原始训练集进行学习,但在用训练好的分类器进行预测时,将原本默认为0.5的阈值调整到 |P|(|P|+|N|)即可。(大部分是负样本,因此分类器倾向于给出较低的分数)

类别不平横影响模型的输出

许多模型的输出是基于阈值的,大部分模型的默认阈值为输出值的中位数。比如逻辑回归的输出范围为[0,1],当某个样本的输出大于0.5就会被划分为正例,反之为反例。在数据的类别不平衡时,采用默认的分类阈值可能会导致输出全部为反例,产生虚假的高准确度,导致分类失败。