个人主页:研学社的博客
欢迎来到本博客️️
博主优势:博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。
️座右铭:行百里者,半于九十。
本文目录如下:
目录
1 概述
ADASYN 算法的目的是通过现有少数类示例之间的线性插值,从少数类综合创建新示例,从而提高类平衡。这种方法本身被称为SMOTE方法(合成少数过采样技术)。ADASYN 是 SMOTE 的扩展,在两个类之间的边界附近创建的示例比在少数类的内部创建的示例多。
不平衡学习是机器学习领域中的一个重要问题,特别是在分类任务中,其中不同类别的样本数量差异显著。这种情况下,多数类的样本可能掩盖少数类的模式,导致模型偏向于预测多数类,从而影响整体分类性能。为了解决这一问题,研究者们提出了多种策略,自适应合成采样方法(Adaptive Synthetic Sampling Approach for Imbalanced Learning, ADASYN)便是其中之一。
ADASYN的基本思想
ADASYN由He et al.在2008年提出,它是一种动态调整少数类样本生成数量的方法,旨在通过自适应地为每个少数类样本生成不同数量的合成样本,来平衡数据集并提高分类器的性能。与传统的过采样技术(如SMOTE)相比,ADASYN更注重类间距离和局部密度,尤其是对于少数类中的困难样本或噪声敏感区域,它可以更加精细地调整采样策略。
工作原理
-
计算邻近度:首先,ADASYN为每个少数类样本找到其最近的多数类邻居,并计算它们之间的距离,这反映了样本的边界信息和局部密度。
-
自适应采样:基于这些邻近距离,ADASYN为每个少数类样本分配一个权重,邻近距离较大的样本将被赋予更高的权重,意味着它们对于分类边界的影响更大,因此需要生成更多的合成样本。具体来说,ADASYN通过一个可调整的参数来控制样本生成的数量,通常这个数量与邻近距离成反比。
-
合成样本生成:类似于SMOTE,ADASYN通过插值方法在少数类样本与其最近的少数类邻居之间生成新的样本。但是,生成的样本数量不是固定的,而是根据上一步计算出的权重动态调整。
优点
- 减少过拟合风险:通过自适应地调整采样比例,ADASYN能够在保持类间平衡的同时,避免对少数类中的噪声或异常点过度放大,从而减少了过拟合的风险。
- 增强边界区分能力:该方法能够更好地突出分类边界附近的少数类样本,帮助分类器学习到更精确的决策边界。
- 提高模型泛化能力:通过针对性地处理数据不平衡问题,ADASYN有助于提升模型在实际应用中的泛化能力。
局限性及改进方向
尽管ADASYN在处理不平衡数据方面表现出色,但也存在一些局限性,比如计算成本较高,特别是当数据集非常大时;且对于高度不平衡的数据集或具有复杂分布的数据,其效果可能会受限。针对这些问题,后续研究不断探索优化算法、并行计算方法以及结合其他技术(如集成学习、深度学习)来进一步提升ADASYN的效果和效率。
总之,ADASYN作为一种有效的不平衡学习解决方案,通过其自适应的采样机制,在多个领域和应用中展现了其实用价值,但同时也需要根据具体任务和数据特性进行适当调整和优化。
2 运行结果
部分代码:
numEx0 = 500; %minority class
numEx1 = 10000; %majority class
if numEx0 > numEx1
error('demo_ADASYN: numEx0 must be smaller than numEx1, otherwise the text in the plots will confuse minority with majority.');
end
%class centers
center0 = [2.5 2.5];
center1 = [3 3];
%class standard deviations:
%anisotropic Guassian as minority class best illustrates the effect of
%setting adasyn_featuresAreNormalized (cf. below) true resp. false:
stds0 = [0.1 0.4];
stds1 = [0.2 0.2];
%class labels:
labels0 = false([numEx0 1]);
labels1 = true ([numEx1 1]);
%generate features as Gaussian random variables with standard deviations
%per dimension as according to stds0 resp. stds1 and mean values as
%according to center0 resp. center1:
features0 = [...
center0(1) + randn([numEx0 1])*stds0(1)...
center0(2) + randn([numEx0 1])*stds0(2)...
];
features1 = [...
center1(1) + randn([numEx1 1])*stds1(1)...
center1(2) + randn([numEx1 1])*stds1(2)...
];
% ADASYN: set up ADASYN parameters and call the function:
adasyn_features = [features0; features1];
adasyn_labels = [labels0 ; labels1 ];
adasyn_beta = []; %let ADASYN choose default
adasyn_kDensity = []; %let ADASYN choose default
adasyn_kSMOTE = []; %let ADASYN choose default
adasyn_featuresAreNormalized = false; %false lets ADASYN handle normalization
[adasyn_featuresSyn, adasyn_labelsSyn] = ADASYN(adasyn_features, adasyn_labels, adasyn_beta, adasyn_kDensity, adasyn_kSMOTE, adasyn_featuresAreNormalized);
% PLOTTING:
%plot input data:
figure;
hold on;
plot(features0(:,1), features0(:,2), 'r.');
plot(features1(:,1), features1(:,2), 'b.');
title('input point sets');
legend({['minority class (' num2str(numEx0) ' examples)'] ['majority class (' num2str(numEx1) ' examples)']});
xlabel('feature_1');
ylabel('feature_2');
axis('equal');
hold off;
%plot synthesized examples in green:
figure;
hold on;
plot(adasyn_featuresSyn(:,1), adasyn_featuresSyn(:,2), 'g.');
plot(features0(:,1), features0(:,2), 'r.');
plot(features1(:,1), features1(:,2), 'b.');
title('input point sets and synthetic points generated by ADASYN');
legend({['synthetic minority class (' num2str(size(adasyn_featuresSyn,1)) ' examples)'] ['minority class (' num2str(numEx0) ' examples)'] ['majority class (' num2str(numEx1) ' examples)']});
xlabel('feature_1');
ylabel('feature_2');
axis('equal');
hold off;
3 参考文献
部分理论来源于网络,如有侵权请联系删除。
[1]唐玺博张立民钟兆根.基于ADASYN与改进残差网络的入侵流量检测识别[J].系统工程与电子技术, 2022, 44(12):3850-3862.DOI:10.12305/j.issn.1001-506X.2022.12.31.
[2]李颖,吴增源,陈亮.基于ADASYN-LOF-RF模型的核心专利识别研究[J].中国计量大学学报, 2022, 33(4):8.
[3]H. He, Y. Bai, E.A. Garcia, and S. Li, "ADASYN: Adaptive Synthetic Sampling Approach for Imbalanced Learning", Proc. Int'l. J. Conf. Neural Networks, pp. 1322-1328, (2008).
文章评论