美文网首页
训练数据相关问题处理

训练数据相关问题处理

作者: Yankee_13 | 来源:发表于2019-04-08 21:42 被阅读0次

    一、如何处理训练样本不对等的情况

    数据集中,每个类别下的样本数目相差很大(数量级上的差距)。以下以二分类问题为例说明

    1.欠采样大样本(压缩大类,产生新数据)

    设小类中有N个样本。将大类聚类成N个簇,然后使用每个簇的中心组成大类中的N个样本,加上小类中所有的样本进行训练。(优点是保留了大类在特征空间的分布特性,又降低了大类数据的数目)

    2.SMOTE

    即Synthetic Minority Over-sampling Technique方法
    SMOTE方法是基于插值的方法,它可以为小样本类合成新的样本,主要流程为:第一步,定义好特征空间,将每个样本对应到特征空间中的某一点,根据样本不平衡比例确定好一个采样倍率N;第二步,对每一个小样本类样本(x,y),按欧氏距离找出K个最近邻样本,从中随机选取一个样本点,假设选择的近邻点为(xn,yn)。在特征空间中样本点与最近邻样本点的连线段上随机选取一点作为新样本点。满足以下公式:
    (x_{new},y_{new})=(x,y)+rand(0-1)*((x_n-x),(y_n-y))

    3.对小类错分进行加权惩罚

    对分类器的小类样本数据增加权值,降低大类样本的权值(这种方法其实是产生了新的数据分布,即产生了新的数据集,译者注),从而使得分类器将重点集中在小类样本身上。一个具体做法就是,在训练分类器时,若分类器将小类样本分错时额外增加分类器一个小类样本分错代价,这个额外的代价可以使得分类器更加“关心”小类样本。如penalized-SVM和penalized-LDA算法。对小样本进行过采样(例如含L倍的重复数据),其实在计算小样本错分cost functions时会累加L倍的惩罚分数。

    4.分治ensemble

    将大类中样本聚类到L个聚类中,然后训练L个分类器;每个分类器使用大类中的一个簇与所有的小类样本进行训练得到;最后对这L个分类器采取少数服从多数对未知类别数据进行分类,如果是连续值(预测),那么采用平均值。

    5.分层级ensemble

    使用原始数据集训练第一个学习器L1;将L1错分的数据集作为新的数据集训练L2;将L1和L2分类结果不一致的数据作为数据集训练L3;最后测试集上将三个分类器的结果汇总(结合这三个分类器,采用投票的方式来决定分类结果,因此只有当L2与L3都分类为false时,最终结果才为false,否则true。)

    一个很好的方法去处理非平衡数据问题,并且在理论上证明了。这个方法便是由Robert E. Schapire于1990年在Machine Learning提出的”The strength of weak learnability” ,该方法是一个boosting算法,它递归地训练三个弱学习器,然后将这三个弱学习器结合起形成一个强的学习器。我们可以使用这个算法的第一步去解决数据不平衡问题。
      首先使用原始数据集训练第一个学习器L1。
      然后使用50%在L1学习正确和50%学习错误的的那些样本训练得到学习器L2,即从L1中学习错误的样本集与学习正确的样本集中,循环一边采样一个。
      接着,使用L1与L2不一致的那些样本去训练得到学习器L3。
      最后,使用投票方式作为最后输出。
      那么如何使用该算法来解决类别不平衡问题呢?
      假设是一个二分类问题,大部分的样本都是true类。让L1输出始终为true。使用50%在L1分类正确的与50%分类错误的样本训练得到L2,即从L1中学习错误的样本集与学习正确的样本集中,循环一边采样一个。因此,L2的训练样本是平衡的。L使用L1与L2分类不一致的那些样本训练得到L3,即在L2中分类为false的那些样本。最后,结合这三个分类器,采用投票的方式来决定分类结果,因此只有当L2与L3都分类为false时,最终结果才为false,否则true。
      自己已经在实践中使用过很多次,并且效果都不错。

    6. 基于异常检测的分类

    用异常检测算法(如高斯混合模型、聚类等)检测得到离群点或异常点;再对这些异常点为训练集学习一个分类器。

    二、如何处理训练样本含有噪声的情况

    首先,模型是有一定的抗噪能力的,原因如下:



    虽然噪声有70%,但是正确标签相对于其他分类来说还是有数量上的优势,模型优先学习到的依然是正确标签的信息

    1.如何筛选出噪声图片

    在真实应用中,我们显然不会人工在训练数据集上添加噪声。但如前文所述,训练数据集本身是含有噪声的,除了人工逐个审查,有没有办法快速找出疑似是噪声的标签呢?
    为了解决这个问题,我们回到基于CNN网络的MNIST分类器最后一层来看。在分类器的最后一层,全连接网络包含10个神经元,输出10个运算结果,可以看作一个10维向量。这个10维向量经过softmax运算可以转为离散概率分布,其和为1,每个维度代表分类器预测当前图片属于某一类的概率。最终的预测结果就是取离散概率分布中概率值最高的一类作为预测结果。
    在实验中观察不同样本的概率分布,可以看到有以下两种情况

    • 当一张图片清晰且无歧义时,神经网络输出的离散概率分布是集中在一个标签的,例如正确标签概率为0.999,其余9种类别的概率接近于0.
    • 当一张图片存在歧义时,神经网络输出的离散概率分布就不会只集中在一个标签,有可能最强的标签概率只有0.6,第二强的标签概率0.39,其余8个类别概率为0

    这样的结果意味着神经网络认为这张标签有二义性。
    基于这个认识,就可以设计出一种方法,让神经网络把自己认为存在二义性的样本和标签筛选出来,即实现了非人工快速找出疑似噪音标签。
    例如,二义性可以定义为:分类器认为最有可能类别的概率低于70%,同时第二可能类别概率高于15%。

    相关文章

      网友评论

          本文标题:训练数据相关问题处理

          本文链接:https://www.haomeiwen.com/subject/tyapiqtx.html