This entry provides the overview and their implementation of SMOTE and its relative algorithms.
- SMOTE (Chawla, NV. et al. 2002)
- Borderline SMOTE (Han, H. et al. 2005)
- ADASYN (He, H. et al. 2008)
- Safe-level SMOTE (Bunkhumpornpat, C. at al. 2009)
: Chawla, N. V., Bowyer, K. W., Hall, L. O., & Kegelmeyer, W. P. (2002). SMOTE: synthetic minority over-sampling technique. Journal of artificial intelligence research, 16, 321-357.
: Han, H., Wang, W. Y., & Mao, B. H. (2005). Borderline-SMOTE: a new over-sampling method in imbalanced data sets learning. In International conference on intelligent computing (pp. 878-887). Springer, Berlin, Heidelberg.
: He, H., Bai, Y., Garcia, E. A., & Li, S. (2008). ADASYN: Adaptive synthetic sampling approach for imbalanced learning. In 2008 IEEE International Joint Conference on Neural Networks (pp. 1322-1328). IEEE.
: Bunkhumpornpat, C., Sinapiromsaran, K., & Lursinsap, C. (2009). Safe-level-smote: Safe-level-synthetic minority over-sampling technique for handling the class imbalanced problem. In Pacific-Asia conference on knowledge discovery and data mining (pp. 475-482). Springer, Berlin, Heidelberg.
michio (2020). Oversampling Imbalanced Data: SMOTE related algorithms (https://github.com/minoue-xx/Oversampling-Imbalanced-Data/releases/tag/1.0.1), GitHub. Retrieved .
Thanks for your algorithm, many places are worth learning for beginners like me. The examples and documentations are so clear and detailed. Thank you again!
Thanks Michio! Very helpfull. I adapt the ADASYN function to Matlab R2017b
thanks for the implementation. Would you mind to correct your code regarding the issue Ryan S mentioned? Thank you :)!
Great implementation michio, thank you for providing this. One thing I noticed is for the mySafeLevelSMOTE function, I think it produces slightly too many synthetic data points and might require 2nd instance of "if index > num2add then break" as the first break gets you out of the kk=1:T2 but a second break is required to get you out of the ii=1:T1. Otherwise, it seems to continue generating synthetic points until T1 is satisfied. One caveat though, I have modified this code to make it compatible with MATLAB R2017b so perhaps your original implementation is fine if running in MATLAB 2019 or later.
Find the treasures in MATLAB Central and discover how the community can help you!Start Hunting!