精华内容
下载资源
问答
  • 不平衡数据
    万次阅读 多人点赞
    2018-11-04 12:59:50

    目录

    1、不平衡(均衡)数据集

    (1)不平衡数据集定义

    (2)不平衡数据集举例

    (3)不平衡数据集实例

    (4)不平衡数据集导致的问题

    (5)不平衡数据集的主要处理方法

    2、不平衡(均衡)数据集常用的处理方法

    (1)扩充数据集

    (2)对数据集进行重采样

    (3)人造数据

    (4)改变分类算法

    3、将数据集划分为训练数据集和测试数据集

    4、使用K折交叉验证评估模型性能

    (1)K折交叉验证

    (2)分层k折交叉验证


    1、不平衡(均衡)数据集

    (1)不平衡数据集定义

    不平衡数据集指的是数据集各个类别的样本数目相差巨大。以二分类问题为例,假设正类的样本数量远大于负类的样本数量,这种情况下的数据称为不平衡数据

    (2)不平衡数据集举例

    ① 在二分类问题中,训练集中class 1的样本数比上class 2的样本数的比值为60:1。使用逻辑回归进行分类,最后结果是其忽略了class 2,将所有的训练样本都分类为class 1。

    ② 在三分类问题中,三个类别分别为A,B,C,训练集中A类的样本占70%,B类的样本占25%,C类的样本占5%。最后我的分类器对类A的样本过拟合了,而对其它两个类别的样本欠拟合。

    (3)不平衡数据集实例

    训练数据不均衡是常见并且合理的情况,比如:

    ① 在欺诈交易识别中,绝大部分交易是正常的,只有极少部分的交易属于欺诈交易。

    ② 在客户流失问题中,绝大部分的客户是会继续享受其服务的(非流失对象),只有极少数部分的客户不会再继续享受其服务(流失对象)。

    (4)不平衡数据集导致的问题

    如果训练集的90%的样本是属于同一个类的,而我们的分类器将所有的样本都分类为该类,在这种情况下,该分类器是无效的,尽管最后的分类准确度为90%。所以在数据不均衡时,准确度(Accuracy)这个评价指标参考意义就不大了。实际上,如果不均衡比例超过4:1,分类器就会偏向于大的类别。

    (5)不平衡数据集的主要处理方法

    ① 从数据的角度出发,主要方法为采样,分为欠采样过采样以及对应的一些改进方法。

    ② 从算法的角度出发,考虑不同误分类情况代价的差异性对算法进行优化,主要是基于代价敏感学习算法(Cost-Sensitive Learning),代表的算法有adacost。

    另外可以将不平衡数据集的问题考虑为一分类(One Class Learning)或者异常检测(Novelty Detection)问题,代表的算法有One-class SVM。

    从数据角度出发的不平衡数据集的处理方法对应的python库(imblearn)

    不平衡数据的学习即需要在分布不均匀的数据集中学习到有用的信息。

    2、不平衡(均衡)数据集常用的处理方法

    (1)扩充数据集

    首先想到能否获得更多数据,尤其是小类(该类样本数据极少)的数据,更多的数据往往能得到更多的分布信息。

    (2)对数据集进行重采样

    过采样(over-sampling)

    对小类的数据样本进行过采样来增加小类的数据样本个数,即采样的个数大于该类样本的个数。

    # -*- coding: utf-8 -*-
    from imblearn.over_sampling import RandomOverSampler
    ros=RandomOverSampler(random_state=0) #采用随机过采样(上采样)
    x_resample,y_resample=ros.fit_sample(trainset,labels)

    欠采样(under-sampling)

    对大类的数据样本进行欠采样来减少大类的数据样本个数,即采样的个数少于该类样本的个数。

    采样算法容易实现,效果也不错,但可能增大模型的偏差(Bias),因为放大或者缩小某些样本的影响相当于改变了原数据集的分布。对不同的类别也要采取不同的采样比例,但一般不会是1:1,因为与现实情况相差甚远,压缩大类的数据是个不错的选择。

    # -*- coding: utf-8 -*-
    from imblearn.under_sampling import RandomUnderSampler
    #通过设置RandomUnderSampler中的replacement=True参数, 可以实现自助法(boostrap)抽样
    #通过设置RandomUnderSampler中的rratio参数,可以设置数据采样比例
    rus=RandomUnderSampler(ratio=0.4,random_state=0,replacement=True) #采用随机欠采样(下采样)
    x_resample,y_resample=rus.fit_sample(trainset,labels)

    (3)人造数据

    ① 属性值随机采样

    在该类下所有样本的每个属性特征的取值空间中随机选取一个组成新的样本,即属性值随机采样。此方法多用于小类中的样本,不过它可能破坏原属性的线性关系。如在图像中,对一幅图像进行扭曲得到另一幅图像,即改变了原图像的某些特征值,但是该方法可能会产生现实中不存在的样本。

    ② SMOTE(Synthetic Minority Over-sampling Technique)

    SMOTE是一种过采样算法,它构造新的小类样本而不是产生小类中已有的样本的副本。它基于距离度量选择小类别下两个或者更多的相似样本,然后选择其中一个样本,并随机选择一定数量的邻居样本对选择的那个样本的一个属性增加噪声,每次处理一个属性。这样就构造了许多新数据。

    (4)改变分类算法

    ① 使用代价函数时,可以增加小类样本的权值,降低大类样本的权值(这种方法其实是产生了新的数据分布,即产生了新的数据集),从而使得分类器将重点集中在小类样本身上。刚开始,可以设置每个类别的权值与样本个数比例的倒数,然后可以使用过采样进行调优。

    ② 可以把小类样本作为异常点(outliers),把问题转化为异常点检测问题(anomaly detection)。此时分类器需要学习到大类的决策分界面,即分类器是一个单个类分类器(One Class Classifier)。

    ③ 由Robert E. Schapire提出的”The strength of weak learnability”方法,该方法是一个boosting算法,它递归地训练三个弱学习器,然后将这三个弱学习器结合起形成一个强的学习器。

    3、将数据集划分为训练数据集和测试数据集

    # -*- coding: utf-8 -*-
    from collections import Counter
    from sklearn.model_selection import train_test_split  #数据集划分
    #参数test_size表示数据集和测试集的划分比例
    x_train,x_test,y_train,y_test = train_test_split(datasets,labels,test_size=0.1,random_state=0) #数据集划分
    print(len(x_train))
    print(len(x_test))
    print(Counter(x_train))#统计训练集中不同类别的数量

    4、使用K折交叉验证评估模型性能

    (1)K折交叉验证

    在k折交叉验证中,我们不重复地随机将训练数据集划分为k个,其中k-1个用于模型的训练,剩余的1个用于测试。重复此过程k次,我们就得到了k个模型及对模型性能的评价。

    k折交叉验证的一个特例就是留一(leave-one-out,LOO)交叉验证法。在LOO中,我们将数据子集划分的数量等同于样本数(k=n),这样每次只有一个样本用于测试。当数据集非常小时,建议使用此方法进行验证。

    # -*- coding: utf-8 -*-
    from sklearn.model_selection import KFold   #交叉验证
    import numpy as np
    kf=KFold(n_splits=10)
    for train_index,test_index in kf.split(datasets,labels):
        x_train = np.array(datasets)[train_index]
        y_train = np.array(datasets)[train_index]
        x_test = np.array(datasets)[test_index]
        y_test = np.array(labels)[test_index]

    (2)分层k折交叉验证

    分层k折交叉验证对标准k折交叉验证做了稍许改进,它可以获得偏差和方差都较低的评估结果,特别是类别比例相差较大时。在分层交叉验证中,类别比例在每个分块中得以保持,这使得每个分块中的类别比例与训练数据集的整体比例一致。(分层k折交叉验证参考论文)

    # -*- coding: utf-8 -*-
    from sklearn.model_selection import StratifiedKFold #分层k折交叉验证
    import numpy as np
    kf = StratifiedKFold(n_splits=10, shuffle=True)
    for train_index, test_index in kf.split(datasets, labels):
        x_train = np.array(datasets)[train_index]
        y_train = np.array(datasets)[train_index]
        x_test = np.array(datasets)[test_index]
        y_test = np.array(labels)[test_index]

    参考文献:

    【1】 机器学习︱非平衡数据处理方式与评估

    【2】分类中的训练数据集不均衡问题处理

    【3】不均衡学习的抽样方法

    【4】不均衡数据的机器学习

    【5】imblearn不平衡算法学习

    本人博文NLP学习内容目录:

    一、NLP基础学习

    1、NLP学习路线总结

    2、TF-IDF算法介绍及实现

    3、NLTK使用方法总结

    4、英文自然语言预处理方法总结及实现

    5、中文自然语言预处理方法总结及实现

    6、NLP常见语言模型总结

    7、NLP数据增强方法总结及实现

    8、TextRank算法介绍及实现

    9、NLP关键词提取方法总结及实现

    10、NLP词向量和句向量方法总结及实现

    11、NLP句子相似性方法总结及实现

    12、NLP中文句法分析

    二、NLP项目实战

    1、项目实战-英文文本分类-电影评论情感判别

    2、项目实战-中文文本分类-商品评论情感判别

    3、项目实战-XGBoost与LightGBM文本分类

    4、项目实战-TextCNN文本分类实战

    5、项目实战-Bert文本分类实战

    6、项目实战-NLP中文句子类型判别和分类实战

    交流学习资料共享欢迎入群:955817470(群一),801295159(群二)

    更多相关内容
  • 不平衡数据(Imbalanced Datasets)分类的例子对不平衡数据的处理朴素随机过采样(上采样,over-sampling)朴素随机欠采样(下采样,under-sampling)随机采样的优缺点过采样的改进:SMOTE与ADASYNSMOTESMOTE的改进:...



    不平衡数据(Imbalanced Datasets)

    所谓的不平衡数据集指的是数据集各个类别的样本量极不均衡。以二分类问题为例,假设正类的样本数量远大于负类的样本数量,通常情况下通常情况下把多数类样本的比例接近100:1这种情况下的数据称为不平衡数据。不平衡数据的学习即需要在分布不均匀的数据集中学习到有用的信息。

    不平衡数据集的处理方法主要分为两个方面:

    1. 从数据的角度出发,主要方法为采样,分为欠采样和过采样以及对应的一些改进方法。

    2. 从算法的角度出发,考虑不同误分类情况代价的差异性对算法进行优化,主要是基于代价敏感学习算法(Cost-Sensitive Learning),代表的算法有adacost;

    另外可以将不平衡数据集的问题考虑为一分类(One Class Learning)或者异常检测(Novelty Detection)问题,代表的算法有One-class SVM。

    分类的例子

    在这个例子中,我们要求进行分类,左边是红色的,右边是蓝色的。这里有两种分类方法A和B;

    • A:采用A分类法,正确率达到了95%
    • B:采用B分类法,正确率达到了90%

    A分类法的正确率 > B分类法的正确率,那是不是说A分类法比B分类法好呢?我们可以用G-mean指标来看一下 G − m e a n = R e c a l l ∗ S p e c i f i c i t y G-mean = \sqrt[]{Recall*Specificity} Gmean=RecallSpecificity

    对于A分类法,因为我们分类的左边并没有任何数据,所以此时的Specificity很明显是0,即准确度是0。即使你右边准确度再高,G-mean依然是0。

    对不平衡数据的处理

    朴素随机过采样(上采样,over-sampling)

    针对不平衡数据, 最简单的一种方法就是生成少数类的样本, 这其中最基本的一种方法就是: 从少数类的样本中进行随机采样来增加新的样本。
    在这里插入图片描述

    对应Python库中函数为RandomOverSampler:

    from imblearn.over_sampling import RandomOverSampler
    
    ros = RandomOverSampler(random_state=0)
    X_resampled, y_resampled = ros.fit_sample(X, y)
    

    朴素随机欠采样(下采样,under-sampling)

    与过采样相反,欠采样是从多数类样本中随机选择少量样本,再合并原有少数类样本作为新的训练数据集。

    随机欠采样有两种类型分别为有放回和无放回两种,无放回欠采样在对多数类某样本被采样后不会再被重复采样,有放回采样则有可能。

    对应Python库中函数为RandomUnderSampler,通过设置RandomUnderSampler中的replacement=True参数, 可以实现自助法(boostrap)抽样。

    from imblearn.under_sampling import RandomUnderSampler
    
    rus=RandomUnderSampler(random_state=0,replacement=True) 
    x_resample,y_resample=rus.fit_sample(x,y)
    

    随机采样的优缺点

    随机采样最大的优点是简单,但缺点也很明显。

    • 上采样后的数据集中会反复出现一些样本,训练出来的模型会有一定的过拟合;
    • 而下采样的缺点显而易见,那就是最终的训练集丢失了数据,模型只学到了总体模式的一部分。

    上采样会把小众样本复制多份,一个点会在高维空间中反复出现,这会导致一个问题,那就是运气好就能分对很多点,否则分错很多点。

    为了解决这一问题,可以在每次生成新数据点时加入轻微的随机扰动,经验表明这种做法非常有效,但是这一方式会加重过拟合。

    过采样的改进:SMOTE与ADASYN

    相对于采样随机的方法进行过采样, 还有两种比较流行的过采样的改进方式:

    1. Synthetic Minority Oversampling Technique(SMOTE)

    2. Adaptive Synthetic (ADASYN)


    SMOTE

    SMOTE算法的基本思想是对少数类样本进行分析并根据少数类样本人工合成新样本添加到数据集中,具体下图所示,算法流程如下:

    1. 对于少数类中每一个样本x,计算该点与少数类中其他样本点的距离,得到最近的k个近邻(即对少数类点进行KNN算法)。
    2. 根据样本不平衡比例设置一个采样比例以确定采样倍率,对于每一个少数类样本x,从其k近邻中随机选择若干个样本,假设选择的近邻为x’。
    3. 对于每一个随机选出的近邻x’,分别与原样本按照如下的公式构建新的样本:
      x n e w = x + r a n d ( 0 , 1 ) ∗ ( x ′ − x ) x_{new}=x+rand(0,1) ∗ (x^′−x) xnew=x+rand(0,1)(xx)

    但是SMOTE算法缺点也十分明显:一方面是增加了类之间重叠的可能性(由于对每个少数类样本都生成新样本,因此容易发生生成样本重叠(Overlapping)的问题),

    另一方面是生成一些没有提供有益信息的样本。

    在这里插入图片描述

    对应Python库中函数为SMOTE:

    from imblearn.over_sampling import SMOTE
    
    X_resampled_smote, y_resampled_smote = SMOTE().fit_sample(X, y)
    

    SMOTE的改进:Borderline-SMOTE

    Borderline-SMOTE与原始SMOTE不同的地方在于,原始的SMOTE是对所有少数类样本生成新样本。而改进的方法则是先根据规则判断出少数类的边界样本,再对这些样本生成新样本。

    判断边界的一个简单的规则为:K近邻中有一半以上多数类样本的少数类为边界样本。直观地讲,只为那些周围大部分是多数类样本的少数类样本生成新样本。

    假设a为少数类中的一个样本,此时少数类的样本分为三类,如下图所示:

    1. 噪音样本(noise), 该少数类的所有最近邻样本都来自于不同于样本a的其他类别:

    2. 危险样本(in danger), 至少一半的最近邻样本来自于同一类(不同于a的类别);

    3. 安全样本(safe), 所有的最近邻样本都来自于同一个类。

    在这里插入图片描述
    对应的Python库中的实现有三种可以选择的规则:

    SMOTE函数中的kind参数控制了选择哪种规则:

    1. borderline1:最近邻中的随机样本与该少数类样本a来自于不同的类;

    2. borderline2:最近邻中的随机样本可以是属于任何一个类的样本;

    3. svm:使用支持向量机分类器产生支持向量然后再生成新的少数类样本。

    具体实现如下:

    from imblearn.under_sampling import ClusterCentroids
    
    cc = ClusterCentroids(random_state=0)
    X_resampled, y_resampled = cc.fit_sample(X, y)
    

    ADASYN

    这种改进方法的主要思想是根据数据分布情况为不同的少数类样本生成不同数量的新样本。首先根据最终的平衡程度设定总共需要生成的新少数类样本数量 ,然后为每个少数类样本x计算分布比例。

    对应Python库中函数为ADASYN:

    from imblearn.over_sampling import ADASYN
    
    X_resampled_adasyn, y_resampled_adasyn = ADASYN().fit_sample(X, y)
    

    基于聚类的过采样方法

    以二分类为例,该方法是首先分别对正负例进行聚类,在聚类之后进行再进行上述的过采样方法。例如:有一个二分类数据集,其正负类比例为:1000:50。首先通过kmeans算法对正负类分别聚类,

    得到正类:600,300,100;负类:30,20。然后使用过采样的方法分别对所有类别进行过采样得到正类:600,600,600;对于负类的上采样个数为:(600+600+600)/2 = 900,即负类为:900,900。

    最终得到的数据集为正类1800,负类1800。基于聚类的过采样方法的优点是不仅可以解决类间不平衡问题,而且还能解决类内部不平衡问题。

    欠采样的改进:EasyEnsemble、BalanceCascade与NearMiss

    随机欠采样的问题主要是信息丢失,为了解决信息丢失的问题提出了以下几种改进的方式:

    EasyEnsemble,利用模型融合的方法(Ensemble)

    多次过采样(放回采样,这样产生的训练集才相互独立)产生多个不同的训练集,进而训练多个不同的分类器,通过组合多个分类器的结果得到最终的结果。简单的最佳实践是建立n个模型,每个模型使用少数类的所有样本和多数类的n个不同样本。假设二分类数据集的正负类比例为50000:1000,最后要得到10个模型,那么将保留负类的1000个样本,并随机采样得到10000个正类样本。
    然后,将10000个样本成10份,每一份与负类样本组合得到新的子训练集,训练10个不同的模型。

    EasyEnsemble方法对应Python库中函数为EasyEnsemble,有两个很重要的参数:

    1. n_subsets控制的是子集的个数
    2. replacement决定是有放回还是无放回的随机采样
    from imblearn.ensemble import EasyEnsemble
    
    ee = EasyEnsemble(random_state=0, n_subsets=10)
    X_resampled, y_resampled = ee.fit_sample(X, y)
    

    BalanceCascade,利用增量训练的思想(Boosting)

    先通过一次下采样产生训练集,训练一个分类器,对于那些分类正确的多数类样本不放回,然后对这个更小的多数类样本下采样产生训练集,训练第二个分类器,以此类推,最终组合所有分类器的结果得到最终结果。

    BalanceCascade方法对应Python库中函数为BalanceCascade,有三个很重要的参数:

    1. estimator是选择使用的分类器
    2. n_max_subset控制的是子集的个数
    3. bootstrap决定是有放回还是无放回的随机采样
    from imblearn.ensemble import BalanceCascade
    from sklearn.linear_model import LogisticRegression
    
    bc = BalanceCascade(random_state=0,
                 estimator=LogisticRegression(random_state=0),
                 n_max_subset=4)
    X_resampled, y_resampled = bc.fit_sample(X, y)
    

    NearMiss,利用KNN试图挑选那些最具代表性的多数类样本

    首先计算出每个样本点之间的距离,通过一定规则来选取保留的多数类样本点。因此该方法的计算量通常很大。

    NearMiss方法对应Python库中函数为NearMiss,通过version来选择使用的规则:

    1. NearMiss-1:选择离N个近邻的负样本的平均距离最小的正样本;

    2. NearMiss-2:选择离N个负样本最远的平均距离最小的正样本;

    3. NearMiss-3:是一个两段式的算法。 首先,对于每一个负样本, 保留它们的M个近邻样本;接着, 那些到N个近邻样本平均距离最大的正样本将被选择。

    from imblearn.under_sampling import NearMiss 
    
    nm1 = NearMiss(random_state=0, version=1)
    X_resampled_nm1, y_resampled = nm1.fit_sample(X, y) 
    

    不平衡问题其他的处理方式

    除了上述提到的过采样与欠采样的方法之外,还可以将多种方法进行组合使用。

    另外还可以通过为不同的样本点赋予不同的权重的方式来处理不平衡问题(与改进损失函数的方式有所类似)。

    在算法层面除了对算法本身的改进之外,还需要关注模型的评价指标,来确认使用的方法是否有效。

    个人实践发现,组合方法的结果会比单一某种方法会好很多,例如SMOTEENN和SMOTETomek。

    展开全文
  • 不平衡数据采样方法整理

    千次阅读 2019-04-02 11:14:51
    不平衡数据采样方法整理 在实际的分类问题中,数据集的分布经常是均衡的。虽然均衡的数据在分类时常常能得到较高的分类准确率,但对于某些情况而言,准确率的意义并不大,并能提供任何有用的信息。 从数据...

    不平衡数据采样方法整理

    在实际的分类问题中,数据集的分布经常是不均衡的。虽然不均衡的数据在分类时常常能得到较高的分类准确率,但对于某些情况而言,准确率的意义并不大,并不能提供任何有用的信息。
    从数据层面上而言,对于不平衡数据主要通过重采样的方法对数据集进行平衡。重采样方法是通过增加小众训练样本数的上采样和减少大众样本数的下采样使不平衡样本分布变平衡,从而提高分类器对小众的识别率。

    1.上采样

    (1)朴素随机上采样算法

    算法流程:
    从小众样本中进行随机采样来增加新的样本。
    优缺点:
    随机采样最大的优点是简单,但由于小众样本被复制了多份,因此训练出来的模型会有一定的过拟合。
    实现方法:
    R:Sample;
    Python:imblearn.over_sampling-RandomOverSampler;
    参考资料:
    https://www.cnblogs.com/kamekin/p/9824294.html

    (2)SMOTE算法

    SMOTE算法是一种简单有效的上采样方法,它利用小众样本在特征空间的相似性来人工合成新样本。
    算法流程:
    第一,对于小众中每一个样本x_i,计算该点与小众中其他样本点的距离,得到最近的k个近邻(即对小众点进行KNN算法)。
    第二,根据样本不平衡比例设置一个采样比例以确定采样倍率,对于每一个小众样本x_i,从其k近邻中随机选择若干个样本,假设选择的近邻为(x_i ) ̂;
    第三,对于每一个随机选出的近邻(x_i ) ̂,分别与原样本按照如下的公式构建新的样本:
    x_new=x_i+((x_i ) ̂-x_i )×δ δ∈[0,1]
    在这里插入图片描述
    优缺点:
    虽然加强了原始数据中小众的占比,但增加了类之间重叠的可能性,模糊了正负类边界,且容易生成一些没有提供有益信息的样本。
    实现方法:
    R:DmWR-Smote;
    Python:imblearn.over_sampling-SMOTE;
    参考资料:
    N. V. Chawla, K. W. Bowyer. SMOTE: Synthetic Minority Over-sampling Technique
    https://www.jianshu.com/p/e83a3ce2c837
    https://blog.csdn.net/nlpuser/article/details/81265614

    (3)Borderline-SMOTE算法

    原始的SMOTE算法对所有的小众样本都是一视同仁的,但实际建模过程中发现那些处于边界位置的样本更容易被错分,因此利用边界位置的样本信息产生新样本可以给模型带来更大的提升。Borderline-SMOTE是一种自适应综合过采样方法,其解决思路是只为那些K近邻中有一半以上大众样本的小众样本生成新样本,因为这些样本往往是边界样本。在确定了为哪些小众样本生成新样本后,再利用SMOTE生成新样本。
    Borderline SMOTE有两个版本:Borderline SMOTE-1和Borderline SMOTE-2。
    算法流程:
    Borderline SMOTE-1算法流程:
    记整个训练集合为T,小众样本集合为P,大众样本集合为N。对P中的每一个样本pi,在整个训练集合T中搜索得到其最近的m个样本,记其中小众样本数量为m’,若m’= m, 则p是一个噪声,不做任何操作;若0 ≤m’ ≤m/2, 则说明p很安全,不做任何操作;若m/2 ≤ m’≤ m, 那么点p为危险点,需要在这个点附近利用SMOTE方法生成一些新的小众点。
    在这里插入图片描述
    Borderline SMOTE-2算法流程:
    前半部分与Borderline SMOTE-1相同,在判断出哪些小众样本点属于危险集后,在危险集中的点不仅从P集中求最近邻并生成新的小众点,而且在N集中求最近邻,并生成新的小众点。首先从小众样本集合P和大众样本集合N中分别得到k个最近邻样本Pk和Nk。设定一个比例α,在Pk中选出α比例的样本点和xi作随机的线性插值产生新的小众样本,方法同Borderline SMOTE-1;在Nk中选出1−α比例的样本点和xi作随机的线性插值产生新的小众样本,此处的随机数范围选择的是(0,0.5),即使得产生的新的样本点更靠近小众样本。
    优缺点:
    两种Borderline SMOTE方法都可以加强边界处模糊样本的存在感,且Borderline SMOTE-2又能在此基础上使新增样本更加靠近真实值。
    实现方法:
    Python:imblearn.over_sampling-SMOTE,kind参数中可选borderline1或borderline2;
    参考资料:
    Hui Han1, Wen-Yuan Wang1, Bing-Huan Mao2.Borderline-SMOTE: A New Over-Sampling Method in Imbalanced Data Sets Learning
    https://sci2s.ugr.es/keel/keel-dataset/pdfs/2005-Han-LNCS.pdf
    https://blog.csdn.net/Scc_hy/article/details/84190080

    (4)ADASYN算法

    ADASYN是一种自适应综合过采样方法,其解决思路是根据数据分布情况为不同的小众样本生成不同数量的新样本。
    算法流程:
    第一,计算需要生成的新小众样本数量G,G=(|S_maj |-|S_min |)×β,其中,βϵ[0,1],表示期望在合成数据之后想要达到的平衡度;
    第二,对于每个小众类中的样本,计算每个小众样本周围大众样本的比例r_i,r_i=Δ_i/K,其中,Δ_i表示距离最近的K个样本点中大众类的样本数量。再利用Γ_i=r_i/∑▒r_i 将r_i归一化处理,使得Γ_i满足条件:∑▒Γ_i =1。
    第三.对于小众类中的每个样本,计算需要生成的合成数据的数量g_i,g_i=G×Γ_i;
    第四,在每个待合成的小众样本周围k个邻居中选择1个小众样本,利用线性插值法x_new=x_i+(x ̂-x_i )×δ进行合成直至达到目标合成数目为止。
    优缺点:
    能够自适应的决定每个小众样本的合成数量,但不能抵抗噪声的干扰。
    实现方法:
    Python:imblearn.over_sampling-ADASYN
    参考资料:
    Xuchun Li,Lei Wang,Eric Sung.AdaBoost with SVM-based component classifiers.
    https://blog.csdn.net/weixin_40118768/article/details/80226423
    https://blog.csdn.net/hren_ron/article/details/81172044

    (5)KM-SMOTE算法

    KM-SMOTE算法是将K-means聚类与SMOTE相结合,增加小众样本数量的算法。
    算法流程:
    第一,选择小众样本数据对其进行K-means聚类,聚为K类,并记录每一类的簇心{c_1,c_2,⋯,c_n};
    第二,利用每一类的簇心进行插值,得到
    x_new=c_i+(X-c_i )×rand(0,1)
    其中,x_new为新插值的样本;c_i 为簇心;X是以c_i 为簇心聚类中的原始样本数据;rand(0,1)表示0到1之间的随机数。
    优缺点:
    KM-SMOTE以聚类为区域进行插值,有助于数据集形成以簇为中心的数据集群,帮助有针对性的插值,能够有效的防止插值泛化;且插值的数据在簇心和原始数据点的连线上,不会出现泛边界的数据。
    实现方法:
    R:kmeans+smote
    参考资料:
    陈斌,苏一丹,黄山,基于km-smote和随机森林的不平衡数据分类
    https://www.docin.com/p-1660963834.html

    2.下采样

    (1)朴素随机下采样算法

    算法流程:
    从大众样本中随机选择少量样本(分为有放回和无放回两种),再合并原有小众样本作为新的训练数据集。
    优缺点:
    在去除大众样本的时候,容易去除重要的样本信息。
    实现方法:
    Python:imblearn.under_sampling-RandomUnderSampler;
    参考资料:
    https://www.cnblogs.com/kamekin/p/9824294.html

    (2)EasyEnsemble算法

    算法流程:
    第一,从大众类样本数据中有放回的随机采样T次,每次选取与小众样本数目近似的样本,得到T个样本集合{s_1,s_2,⋯,s_T}。
    第二,将每一份抽取的大众样本与小众样本结合组成一组训练样本,得到{D_1,D_2,⋯,D_n},并在每一组训练样本上训练一个adaboost分类器H_i,每个H_i都是由s_i个弱分类器h_(i,j)组成,每个弱分类器的权重为α_(i,j),阈值为θ_i。
    在这里插入图片描述
    第三,当所有被抽出的子集都训练完成时,综合所有训练器,得到最终的集成分类器。
    在这里插入图片描述
    优缺点:
    EasyEnsemble算法有效解决了数据不均衡问题,且减少了欠采样造成的大众样本信息损失。但该算法未考虑小众样本极度欠缺的情况,当小众样本数远小于正确训练分类器所需的样本数时,每个基学习器的分类性能都可能会很差,进而导致最终分类器的分类效果差。
    实现方法:
    Python: imblearn.ensemble-ensemble(n_subsets控制子集个数,replacement 决定是有放回还是无放回的随机采样)
    参考资料:
    Liu X Y,Wu J X,Zhou Z H.Exploratory Undersampling for Class-Imbalance Learning.
    https://blog.csdn.net/march_on/article/details/48656391
    https://www.cnblogs.com/kamekin/p/9824294.html

    (3)BalanceCascade算法

    BalanceCascade算法前半部分与EasyEnsemble算法相同,都需要对大众样本进行下采样训练出一个分类器,对于那些分类正确的大众样本不放回,然后对剩余的大众样本重新下采样产生训练集,训练第二个分类器,以此类推。
    算法流程:
    第一,初始化:i表示迭代次数,T表示最大迭代次数,H_i表示每一次训练得到的分类器,s_i表示H_i中的弱分类器的数量,误报率(把一个大众类的样本分类成小众类)为f=√(T-1&|S_min |/|S_maj | );
    第二,从大众样本中随机抽取一个子集E,子集E的样本数量与小众样本数量相当。
    第三,使用E与小众样本集S_min作为训练集训练分类器H_i,每个H_i都是由s_i个弱分类器h_(i,j)组成,每个弱分类器的权重为α_(i,j),阈值为θ_i,得到
    在这里插入图片描述
    第四,重新计算分类误报率,并据此调整θ_i
    第五,从大众样本中删除掉已被H_i正确分类的大众样本;
    第六,重复以上步骤,直到达到最大迭代次数T,最终输出一个集成分类器:
    在这里插入图片描述
    在这个方法中,每一次迭代过程都会造成数据集中大众的数量减少,而且每一步的集成分类器都是由平衡的数据集训练得到的。只有当所有的H_i都预测为正例的时候,最终的分类器才会预测为正例。
    优缺点:
    这种方法有效减少了欠采样造成的大众样本信息损失的问题,且在每次迭代过程中,在有限的样本空间里可以充分利用尽可能多的信息,但同样未考虑小众样本极度欠缺的情况。
    实现方法:
    Python: imblearn.ensemble-BalanceCascade
    参考资料:
    https://www.cnblogs.com/kamekin/p/9824294.html
    https://blog.csdn.net/hren_ron/article/details/81172044

    (4)NearMiss算法

    NearMiss本质上是从大众样本中选取最具代表性的样本用于训练,主要是为了缓解随机欠采样中的信息丢失问题,总结起来有以下几类:
    NearMiss-1:在大众样本中选择与最近的K个小众样本的平均距离最小的样本。
    在这里插入图片描述
    NearMiss-2:在大众样本中选择与最远的K个小众样本的平均距离最小的样本。
    在这里插入图片描述
    NearMiss-3:对于每个小众样本,选择离它最近的K个大众样本,目的是保证每个小众样本都被大众样本包围。
    优缺点:
    NearMiss-1考虑的是与最近的K个小众样本的平均距离,是局部的,易受离群点的影响;NearMiss-2考虑的是与最远的K个小众样本的平均距离,是全局的。而NearMiss-3方法则会使得每一个小众样本附近都有足够多的大众样本,显然这会使得模型的精确度高、召回率低。有论文中证明了在某些数据下NearMiss-2方法的效果最好。但三种方法的计算量普遍都很大。
    实现方法:
    Python:imblearn.under_sampling-NearMiss(version可用于设置具体方法)
    参考资料:
    Haibo He, Member, IEEE, and Edwardo A. Garcia. Learning from Imbalanced Data
    https://www.jianshu.com/p/e83a3ce2c837
    https://www.cnblogs.com/kamekin/p/9824294.html
    http://www.sohu.com/a/83919557_415148

    (5)Tomek links方法

    假设样本点x_i和x_j属于不同的类别,d( x_i 〖,x〗_j )表示两个样本点之间的距离。如果不存在第三个样本点x_l使得 d( x_l 〖,x〗_i )< d( x_i 〖,x〗_j )或者 d( x_l 〖,x〗_j )< d( x_i 〖,x〗_j )成立,则称( x_i 〖,x〗_j )为一个Tomek link对。
    在这里插入图片描述
    如果两个样本称为Tomek links,说明其中一个是噪声或者两个都是接近边界。
    因此,Tomek link对一般有两种用途:
    欠采样:将Tomek link对中属于多数类的样本剔除。
    数据清洗:将Tomek link对中的两个样本都剔除。
    在这里插入图片描述
    优缺点:
    可以减少不同类别之间的样本重叠,但当作为欠采样时,无法控制欠采样的数量,能剔除的大众样本比较有限,故最好作为数据清洗的方法,结合其他方法使用。
    实现方法:
    Python:imblearn.under_sampling-TomekLinks(ratio='auto’为移除多数类的样本, 当ratio='all’时, 两个样本均被移除。)
    参考资料:
    https://blog.csdn.net/qq_31813549/article/details/79964973#3221-tomeks-links
    https://www.cnblogs.com/massquantity/p/9382710.html
    https://blog.csdn.net/mmc2015/article/details/51721282

    (6)ENN方法

    对于属于大众样本集的一个样本,如果其K个近邻点有超过一半都不属于大众样本,则这个样本会被剔除。这个方法的另一个变种是所有的K个近邻点都不属于大众样本,则这个样本会被剔除。
    在这里插入图片描述
    优缺点:
    可以减少不同类别之间的样本重叠,但能剔除的大众样本比较有限,故最好作为数据清洗的方法,结合其他方法使用。
    实现方法:
    Python:imblearn.under_sampling- EditedNearestNeighbours、RepeatedEditedNearestNeighbours(kind_sel='mode’时去除K近邻超过一半都不属于大众样本的点,kind_sel='all’时去除全部K近邻样本都不属于大众样本的点);RepeatedEditedNearestNeighbours函数可以不断的重复删除过程,直到无法再删除为止。
    参考资料:
    https://blog.csdn.net/qq_31813549/article/details/79964973#3221-tomeks-links

    3. 综合采样

    目前为止我们使用的重采样方法几乎都是只针对某一类样本:对大众样本欠采样,对小众样本过采样。也经常有人将欠采样和过采样综合起来,解决样本类别分布不平衡和过拟合问题,如:SMOTE + Tomek links或SMOTE + ENN。即利用SMOTE方法生成新的小众样本,得到扩充后的数据集T,再用Tomek links方法剔除T中的Tomek links对,或利用ENN算法剔除T中超过一半近邻点都不属于大众样本的样本点。
    在这里插入图片描述
    在这里插入图片描述

    优缺点:
    增加了小众样本的数量,且减少了不同类别之间的样本重叠。
    参考资料:
    https://www.cnblogs.com/massquantity/p/9382710.html

    展开全文
  • 不平衡数据分类

    万次阅读 2017-08-28 15:19:43
    引言 不管是在学术界还是工业界,平衡学习已经吸引了越来越多的关注,不平衡...那么什么是不平衡数据呢?顾名思义即我们的数据集样本类别极均衡,以二分类问题为例,假设我们的数据集是$S$,数据集中的多数类为

    引言

    不管是在学术界还是工业界,不平衡学习已经吸引了越来越多的关注,不平衡数据的场景也出现在互联网应用的方方面面,如搜索引擎的点击预测(点击的网页往往占据很小的比例),电子商务领域的商品推荐(推荐的商品被购买的比例很低),信用卡欺诈检测,网络攻击识别等等。

    问题定义

    那么什么是不平衡数据呢?顾名思义即我们的数据集样本类别极不均衡,以二分类问题为例,假设我们的数据集是$S$,数据集中的多数类为$S_maj$,少数类为$S_min$,通常情况下把多数类样本的比例为$100:1$,$1000:1$,甚至是$10000:1$这种情况下为不平衡数据,不平衡数据的学习即需要在如此分布不均匀的数据集中学习到有用的信息。

    为什么不平衡学习

    传统的学习方法以降低总体分类精度为目标,将所有样本一视同仁,同等对待,如下图1所示,造成了分类器在多数类的分类精度较高而在少数类的分类精度很低。机器学习模型都有一个待优化的损失函数,以我们最常用最简单的二元分类器逻辑回归为例,其损失函数如下公式1所示,逻辑回归以优化总体的精度为目标,不同类别的误分类情况产生的误差是相同的,考虑一个$500:1$的数据集,即使把所有样本都预测为多数类其精度也能达到$500/501$之高,很显然这并不是一个很好的学习效果,因此传统的学习算法在不平衡数据集中具有较大的局限性。


    图1 传统学习在不平衡数据下的缺点

                                                                                                         公式1 逻辑回归的交叉熵损失函数

    不平衡学习的方法

    既然传统的学习算法在不平衡数据中具有较大的局限性,那么针对不平衡数据集又有怎样的解决方案呢?

    针对不平衡数据,我们往往从数据和算法两个层面来进行处理:

           (一)数据层面:又可分为过抽样和欠抽样。

                       a)  过抽样指的是增加少数类的样本数(可以直接重复已有数据,也可以按照一定规则合 成少数类数据);

                       b)  欠抽样指的是减少多数类样本的数量,例如,可以将多数类样本分为“噪音样本”,“边界样本”,“安全样本”,我们将“噪音样本”和“边界样本”删除,只保留“安全样本”,这样就减少了多数类样本的数量。

            (二)算法层面

                        a)  代价敏感:可以给每个训练样本加权或者在算法中引入敏感因子

                        b)  集成学习方法:即多个分类器,然后利用投票或者组合得到结果。又可以分为同态集成学习方法(同种分类器组合)和异态集成学习方法(多种分类器组合)

                        c)  单类分类器方法:仅对少数类进行训练,例如运用SVM算法

    采样

    随机采样

    采样算法通过某一种策略改变样本的类别分布,以达到将不平衡分布的样本转化为相对平衡分布的样本的目的,而随机采样是采样算法中最简单也最直观易懂的一种方法。随机采样主要分为两种类型,分别为随机欠采样和随机过采样两种。随机欠采样顾名思义即从多数类$S_maj$中随机选择少量样本$E$再合并原有少数类样本作为新的训练数据集,新数据集为$S_min+E$,随机欠采样有两种类型分别为有放回和无放回两种,无放回欠采样在对多数类某样本被采样后不会再被重复采样,有放回采样则有可能。随机过采样则正好相反,即通过多次有放回随机采样从少数类$S_min$中抽取数据集$E$,采样的数量要大于原有少数类的数量,最终的训练集为$S_maj+E$。

    可以看到随机采样通过改变多数类或少数类样本比例以达到修改样本分布的目的,从而让样本分布较为均衡,但是他们也存在一些问题。对于随机欠采样,由于采样的样本要少于原样本集合,因此会造成一些信息缺失,未被采样的样本往往带有很重要的信息。对于随机过采样,由于需要对少数类样本进行复制因此扩大了数据集,造成模型训练复杂度加大,另一方面也容易造成模型的过拟合问题。针对这些问题提出了几种其它的采样算法。

    SMOTE算法

    SMOTE全称是Synthetic Minority Oversampling Technique即合成少数类过采样技术,它是基于随机过采样算法的一种改进方案,由于随机过采样采取简单复制样本的策略来增加少数类样本,这样容易产生模型过拟合的问题,即使得模型学习到的信息过于特别(Specific)而不够泛化(General),SMOTE算法的基本思想是对少数类样本进行分析并根据少数类样本人工合成新样本添加到数据集中,具体如图2所示,算法流程如下。

    1. 对于少数类中每一个样本$x$,以欧氏距离为标准计算它到少数类样本集$S_min$中所有样本的距离,得到其k近邻。
    2. 根据样本不平衡比例设置一个采样比例以确定采样倍率$N$,对于每一个少数类样本$x$,从其k近邻中随机选择若干个样本,假设选择的近邻为$\hat{x}$。
    3. 对于每一个随机选出的近邻$\hat{x}$,分别与原样本按照如下的公式构建新的样本。



                                                                                                                            图2 SMOTE算法

      SMOTE算法摒弃了随机过采样复制样本的做法,可以防止随机过采样易过拟合的问题,实践证明此方法可以提高分类器的性能。但是由于对每个少数类样本都生成新样本,因此容易发生生成样本重叠(Overlapping)的问题,为了解决SMOTE算法的这一缺点提出一些改进算法,其中的一种是Borderline-SMOTE算法,如图3所示。
      在Borderline-SMOTE中,若少数类样本的每个样本$x_i$求k近邻,记作$S_i-knn$,且$S_i-knn$属于整个样本集合$S$而不再是少数类样本,若满足


      则将样本$x_i$加入DANGER集合,显然DANGER集合代表了接近分类边界的样本,将DANGER当作SMOTE种子样本的输入生成新样本。特别地,当上述条件取右边界,即k近邻中全部样本都是多数类时,此样本不会被选择为种样本生成新样本,此情况下的样本为噪音。

      图3 Borderline-SMOTE算法

    Informed Undersampling

    既然SMOTE可以解决随机过采样容易发生的模型过拟合问题,对应地也有一些采样方法可以解决随机欠采样造成的数据信息丢失问题,答案是Informed undersampling采样技术,informed undersampling采样技术主要有两种方法分别是EasyEnsemble算法和BalanceCascade算法。
    EasyEnsemble算法如下图4所示,此算法类似于随机森林的Bagging方法,它把数据划分为两部分,分别是多数类样本和少数类样本,对于多数类样本$S_maj$,通过n次有放回抽样生成n份子集,少数类样本分别和这n份样本合并训练一个模型,这样可以得到n个模型,最终的模型是这n个模型预测结果的平均值。BalanceCascade算法是一种级联算法,BalanceCascade从多数类$S_maj$中有效地选择N且满足$\midN\mid=\midS_min\mid$,将N和$\S_min$合并为新的数据集进行训练,新训练集对每个多数类样本$x_i$进行预测若预测对则$S_maj=S_maj-x_i$。依次迭代直到满足某一停止条件,最终的模型是多次迭代模型的组合。


                                                                                                                                      图4 EasyEsemble算法

    展开全文
  • 1.数据不平衡 数据不平衡也可称作数据倾斜。在实际应用中,数据集的样本特别是分类问题上,不同标签的样本比例很可能是不均衡的。因此,如果直接使用算法训练进行分类,训练效果可能会很差(例如,某个标签的样本...
  • 不平衡数据分类方法

    千次阅读 2020-05-06 11:52:18
    文章目录概述定义传统分类器对于不平衡数据适用性可应用领域分类方法总框架数据层面样本采样技术随机采样技术人工采样技术经典过采样方法经典欠采样方法其他方法:特征层面Filter过滤式Wrapped封装式Embedded...
  • 不平衡数据的机器学习

    万次阅读 2017-09-26 09:13:40
    问题定义那么什么是不平衡数据呢?顾名思义即我们的数据集样本类别极均衡,以二分类问题为例,假设我们的数据集是$S$,数据集中的多数类为$S_maj$,少数类为$S_min$,通常情况下把多数类样本的比例为$100:
  • 因为在我们的生活中,数据不可能是平衡的,这种不平衡的情况非常常见而且需要进行修正。 例如,有一个二进制分类任务,数据中有100条记录(行),其中90行标记为1,其余10行标记为0。 有了这些数据,我们的模型就会有...
  • 不平衡数据严重阻碍了学习算法的分类性能,类不平衡数据集的分类已经被认为是机器学习中的首要问题。 表示要学习的数据集 假设多数类label为0,少数类label为1 定义1 :平衡率IR 如果IR>>1,表示数据集...
  • 1.不平衡数据集的评估指标有哪些? 评估指标1:recall,Precision,F-score,其中F-score是两者的中和,一般认为F-measure越高,分类器的性能越好; Precision就是提交给用户的结果里边,究竟有多少是对的; Recall...
  • 不平衡数据集分类

    千次阅读 2020-07-14 19:44:18
    数据集中个人收入低于5万美元的数据比高于5万美元的数据要明显多一些,存在着一定程度的分布不平衡。 针对这一数据集,可以使用很多不平衡分类的相关算法完成分类任务。 如何为数据分布不平衡的成人收入数据集开发...
  • 不平衡数据集的处理

    千次阅读 2019-09-30 12:22:20
    一、不平衡数据集的定义 所谓的不平衡数据集指的是数据集各个类别的样本量极均衡。以二分类问题为例,假设正类的样本数量远大于负类的样本数量,通常情况下通常情况下把多数类样本的比例接近100:1这种情况下的...
  • 以二分类问题为例,假设我们的数据集是S,数据集中的多数类为S_maj,少数类为S_min,通常情况下把多数类样本的比例为100:1,1000:1,甚至是10000:1,这种情况下为不平衡数据不平衡数据的学习即需要在如此分布均匀...
  • 解决不平衡数据集问题

    千次阅读 2019-07-29 16:39:38
    解决不平衡数据集问题 数据不平衡通常反映数据集中类的不均匀分布。例如,在信用卡欺诈检测数据集中,大多数信用卡交易都不是欺诈,只有很少的类是欺诈交易。这使得我们在欺诈类和非欺诈类之间的比例约为50:1。 ...
  • 不平衡数据采样方法介绍以及python实现——imblearn包
  • 不平衡学习是机器学习问题的一个重要子域,其主要关注于如何从类别分布均衡的数据中学习数据的模式。在这篇文章中我们主要关注不平衡分类问题,特别地,我们主要关注类别极端不平衡...
  • 数据来源Kaggle网站中引用的CDC数据,原数据大概有300个变量,这里大约使用20个,严重不平衡数据,约为1:9。该代码通过对进行清洗,标准化,欠采样(Undersampling)进行数据对平衡工作,进行特征分析,最后用逻辑...
  • 在对平衡的分类数据集进行建模时,机器学习算法可能并稳定,其预测结果甚至可能是有偏的,而预测精度此时也变得带有...那我们该如何处理不平衡数据集?本文会介绍一些相关方法,它们并复杂只是技巧性比较强。...
  • 不平衡数据的分类评价指标总结

    千次阅读 2018-09-26 19:46:53
    不平衡数据分类中最常用的指标之一 横轴是FAR,纵轴是Recall; 每个阈值的识别结果对应一个点(FPR,TPR),当阈值最大时,所有样本都被识别成负样本,对应于左下角的点(0,0),当阈值最小时,所有...
  • 6个策略处理不平衡数据

    千次阅读 2019-01-11 10:09:26
    数据不平衡问题被认为是数据挖掘和机器学习领域的主要问题之一,因为大多数机器学习算法假设数据是均匀分布的。 在数据不平衡的情况下,多数类主导少数类,机器学习分类器会更偏向于多数类。 这导致少数群体的分类...
  • 比如胶质瘤瘤卒中的数据,脑干梗死后卒中的数据等等,阳性率很低,这类数据用常规的数据清洗方法是欠妥的,今天给大家介绍利用smotefamily包来处理多分类类不平衡数据。 我们所用的数据是下载到本地运行的...
  • 不平衡学习是机器学习问题的一个重要子域,其主要关注于如何从类别分布均衡的数据中学习数据的模式。在这篇文章中我们主要关注不平衡分类问题,特别地,我们主要关注类别极端不平衡场景下的二分类问题所面临的困难...
  • 机器学习-不平衡数据

    千次阅读 2018-11-19 20:18:05
    什么是不平衡数据不平衡数据集是指在解决分类问题时每个类别的样本量均衡的数据集。 比如,在二分类中你有100个样本其中80个样本被标记为class 1, 其余20个被标记为class 2. 这个数据集就是一个不平衡数据集,...
  • 作者 | Will Badr译者 |张玲编辑 | 吴金迪出品 | 数据派THU(ID:DatapiTHU)本文用python代码示例解释了3种处理不平衡数据集的可选方法...
  • 本文是基于 《卷积神经网络中类不平衡问题的系统研究》此篇论文展开说明,大部分来源于该篇论文。 1.铺垫点背景知识 卷积神经网络(CNNs)在许多机器学习应用领域中越来越重要,目前正为计算机视觉领域的发展做出...
  • 12.不平衡数据的处理(imbalance) 除了常规的分类,回归任务,图像语义分割,深度估计等像素级别任务也不乏平衡样本的出现 12.1 数据层面处理方法 数据层面处理方法多借助数据采样法(sampling)使整体训练集...
  • 机器学习中不平衡数据的处理方式

    万次阅读 2018-08-24 10:44:56
    不平衡数据的场景出现在互联网应用的方方面面,如搜索引擎的点击预测(点击的网页往往占据很小的比例),电子商务领域的...那么什么是不平衡数据呢?顾名思义即我们的数据集样本类别极均衡,以二分类问题为例,...
  • 具体而言,基于数据增强的策略通过生成、过采样或重新加权训练数据样本,提高了对小数据和不平衡数据的诊断性能。基于特征学习的策略使用正则化神经网络或特征自适应从小的不平衡数据中学习故障特征。基于分类器设计...
  • Class Confidence Proportion不平衡数据集的决策树算法CCP算法是一种基于C4.5算法改进、用于处理不平衡数据集的决策树划分算法。 其基本思想是提出一种新的置信度公式,从而使关注点集中于实例预测正确的比例,从而...
  • 处理不平衡数据的常用采样方法

    千次阅读 2018-01-06 10:51:51
    介绍在数据挖掘中,经常会存在不平衡数据的分类问题,比如在异常监控预测中,由于异常就大多数情况下都不会出现,因此想要达到良好的识别效果普通的分类算法还远远不够,这里介绍几种处理不平衡数据的常用方法及对比...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 492,739
精华内容 197,095
关键字:

不平衡数据

友情链接: 分时主图_0.zip