该算法结合Smote过采样算法和基于K-均值的欠采样算法,解决了类内不平衡问题和类间不平衡问题。
该方法不仅避免了噪声过大的问题,而且解决了样本不足的问题。
一、算法描述
假设具有多个类的训练数据集是不平衡的,数据集包含m个类{C1,C2,...,Cm},每个类的大小为{N1,N2,...,Nm}。
对于多数类:使用K-Means将多数类划分为k个聚类,其中k是类大小的平均值。挑选出k个距离聚类中心点最近的样本作为新数据集。
对于少数类:首先使用K-Means将少数类划分为两个聚类,将较小的聚类执行SMOTE过采样,生成s个样本到少数类中,一直重复这个过程直至该类大小Ni为k
二、算法步骤
输入:{C1,C2,...,Cm} and 类大小的均值k
输出:重采样后的新数据集
该方法利用K-均值实现多数类欠抽样,同时实现类内均衡。从聚类中心选择最近的样本,节省了生成新样本的时间。对于少数类,该方法选择样本分布稀疏的较小聚类,使用Smote过采样,在增加样本数量的同时,实现类内均衡。