泛统计理论初探——机器学习的欠采样算法

统计学习-经典欠采样方法简介

机器学习中的欠采样方法
    在之前的文章中己经介绍了重采样的方法和使用情况,本次文章将会介绍欠采样方法的原理和经典欠采样算法的步骤以及使用背景。从原理上来说,欠采样方法的思路是和重采样方法刚好相反的,因为重采样是针对数量较小的样本类别进行反复抽取或者是人工制造一些样本;而欠采样方法则是针对数量较多的样本类别进行数据的抛弃。
    下面我们先来简要了解普通的欠采样方法,最简单的欠采样方法其实就是从数量多的样本里面随机选择样本进行抛弃,比如某个问题里有数据正例1500条和负例300条,那么传统的欠采样方法就是随机选择1200条正例数据进行丢弃,然后得到剩下的300条正例数据和原始的300条负例数据进行结合,将结合后的数据作为训练集进行下一步的训练。我们可以发现,这种方法是比较奢侈的,因为有1200条正例的数据直接被去弃而没有被使用到,并且人为地降低了模型的训练数据量,容易导致模型的欠拟合。
    那么针对上述的简单欠采样方法,显然是没有充分利用数据的,所以我们继续优化,可以使用多次欠采样进行训练,也就是将大样本类别的数据分成N份和小样本类别数据匹配的数据,然后将N份数据进行训练,得到N个模型,然后再将N个模型通过集成学习的方式进行模型组合,从而得到一个利用数据更充分的模型。而一般来说,这种基于欠采样的集成学习有两种,即Bagging和Boosting思路,下面我们将分别介绍这两种方法的思路和步骤。
    第一种方法是所谓的EasyEnsemble方法,它是属于集成学习里的Bagging方法,原理也是很接近上面介绍的对欠采样进行优化的方法,但不同的是,这种方法会反复对多数类的数据进行抽样,而不是直接将多数类的数据进行不重复的分割。它的步骤如下:
    1、通过多数类的样本中进行多次独立随机的抽样,得到K个和少数类样本数量匹配或是相近的样本。
    2、基于每一个抽样得到的多数类的样本和少数类的样本进行结合,并且使用模型进行训练。
    3、重复步骤2,并且得到K个模型。
    4、将这K个模型进行结合,采用投票等集成方法进行组合,成为一个类似随机森林的组合模型。
    第二种方法是所谓的BalanceCascade方法,它属于集成学习里的Boosting方法,原理其实就是针对前一轮被模型判断错误的样本进行保留,判断正确的样本进行抛弃,反复执行若干次后得到一个新的模型。它的步骤如下:
    1、构建初始化的参数,比如训练的轮次数,抽取子集的数量等参数。
    2、在多数类的样本里随机抽样得到和少数类样本里数相近的D个样本,将D个本和少数样本进行组合,得到数据后使用模型M开始训练。
    3、训练完毕后进行判别,排除那些能被模型M正确判断的多数类样本数据,然后将剩余数据交给下一轮进行训练。
    4、结合当前轮次抽到的多数类数据和上一轮判别错误的数据,结合少数类数据构建一个新的数据集,并且继续用模型进行训练。
    5、反复重复步骤3和步骤4后,得到一个融合多层级数据的集成模型。
    总的来说,欠采样方法是需要结合集成学习的,否则是非常浪费数据的。而过采样则需要结合正则化的模型,否则会有过拟合的现象。当然使用者可以采用其他的指标或者调整判别阈值,这样可以不使用欠采样或者重采样方法。

猜你喜欢

转载自blog.csdn.net/qq_26727101/article/details/109129210