SMOTE algorithm,over-sampled by creating ``synthetic'' examples rather than by over-sampling with replacement.
Weka supervised SMOTE filter
两个参数:
- nearestNeighbors:how many nearest neighbor instances (surrounding the currently considered instance) are used to build an inbetween synthetic instance. 默认取值5.
- percentage.how many synthetic instances are created based on the number of the class with less instances. 默认值100,假设minority class有25个样本,则25个新样本将会根据nearest Neighbors来合成,此时minority class的样本数变成了50.
down-sampling
The majority class is under-sampled by randomly removing samples from the majority class population until the minority class becomes some specified percentage of the majority class.
Weka supervised SpreadSubsample filter
maxCount:可以取minority class的样本数量 n。
如果 maxCount < n: 则正负例的样本数量都减少到maxCount
如果 maxCount > n: 则minority class的样本数量 n不变,majority class的样本数量减少到maxCount
Instances train = DataSource .read(path); train.setClassIndex(rawins.numAttributes() - 1); weka.filters.supervised.instance.SpreadSubsample sps = new SpreadSubsample(); sps.setMaxCount(n); //minority class的样本数量 n sps.setInputFormat(train); Instances ins = sps.useFilter(train, sps);