1.使用代价函数时,可以增加小雷样本的权重,降低打雷样本的权重(这种方法其实是产生了新的数据分布,即产生了新的数据集),从而使得分类器将重点集中在小类样本身上。刚开始,可以设置每个类别的全职与样本个数比例的倒数,然后使用过采样进行调优。
2.可以把小类样本作为异常点(outliers),把问题转化成一场检测问题(anomaly detection)。此时分类器需要学习到大类的决策分界面,即分类器是一个单个分类器(One Class Classifier)。
3.由Robert E. Schapire提出的”The strength of weak learnability”方法,该方法是一个boosting算法,它递归地训练三个弱学习器,然后将这三个弱学习器结合起形成一个强的学习器。算法流程如下:
•首先使用原始数据集训练第一个学习器L1。
•然后使用50%在L1学习正确和50%学习错误的那些样本训练得到学习器L2,即从L1中学习错误的样本集与学习正确的样本集中,循环采样一边一个。
•接着,使用L1与L2不一致的那些样本去训练得到学习器L3。
•最后,使用投票方式作为最后输出。
那么如何使用该算法来解决数据不均衡问题呢? 假设是一个二分类问题,大部分的样本都是true类。
•让L1输出始终为true。
•使用50%在L1分类正确的与50%分类错误的样本训练得到L2,即从L1中学习错误的样本集与学习正确的样本集中,循环采样一边一个。因此,L2的训练样本是平衡的。
•接着使用L1与L2分类不一致的那些样本训练得到L3,即在L2中分类为false的那些样本。
•最后,结合这三个分类器,采用投票的方式来决定分类结果,因此只有当L2与L3都分类为false时,最终结果才为false,否则true。
④以下方法同样会破坏某些类的样本的分布:
•设超大类中样本的个数是极小类中样本个数的L倍,那么在随机梯度下降(SGD,stochastic gradient descent)算法中,每次遇到一个极小类中样本进行训练时,训练L次。
•将大类中样本划分到L个聚类中,然后训练L个分类器,每个分类器使用大类中的一个簇与所有的小类样本进行训练得到。最后对这L个分类器采取少数服从多数对未知类别数据进行分类,如果是连续值(预测),那么采用平均值。
•设小类中有N个样本。将大类聚类成N个簇,然后使用每个簇的中心组成大类中的N个样本,加上小类中所有的样本进行训练。
如果不想破坏样本分布,可以使用全部的训练集采用多种分类方法分别建立分类器而得到多个分类器,投票产生预测结果。