In the original paper makes it clear that the nearest neighbours are from the minority class, so it appears that Liu et al. are mistaken. [![enter image description here][1]][1] Having said which, I am not sure the paper is entirely consistent with most implementations (or indeed itself) [![enter image description here][2]][2] I think for the synthetic point to be on a line joining the selected minority point with it's nearest neighbour, $gap$ would have to be assigned outside the loop over attributes, not inside it. BTW if you are using a modern classifier, such as an SVM, that can implement cost-sensitive learning and has a good means of avoiding overfitting, then I would advise against using SMOTE. Techniques such as regularisation have a lot of solid theory behind them, the method used by SMOTE has none. I would also advise using a probabilistic classifier for problems with unequal misclassification costs etc. as you can account for the misclassification costs after the model has been fitted to the data. [1]: https://i.sstatic.net/kdVU7.png [2]: https://i.sstatic.net/hF7GL.png