Markov Chain SMOTE (MCSMOTE, 2025)
MCSMOTE.RdTransition matrix driven oversampling with MCSMOTE.
Arguments
- x
feature matrix or dataframe.
- y
a factor class variable. Can have more than two classes.
- thresh_qntl
quantile, in \((0, 1]\), of the distances from a sample to the other samples of its class that determines the bandwidth of the Gaussian kernel. Smaller values favor transitions to the nearest samples (local structure), larger values give more diverse transitions. Default is 0.1.
- ovRate
Oversampling rate. Class \(j\) receives
round(ovRate * (n_max - n_j))synthetic samples, wheren_maxis the size of the largest class (halves are rounded up). Default is 1 meaning full balance. A vector with one value per class is also accepted.- tol
convergence threshold of the Sinkhorn normalization. Default is 1e-4.
- max_iter
maximum number of Sinkhorn iterations. Default is 1000.
- ...
not used.
Value
a list with resampled dataset.
- x_new
Resampled feature matrix.
- y_new
Resampled target variable.
- x_syn
Generated synthetic feature data.
- y_syn
Generated synthetic label data.
- converged
Logical vector (one element per class) telling whether the Sinkhorn normalization converged within
max_iter.
Details
Year: 2025.
MCSMOTE (Saglam & Cengiz, 2025) models oversampling as a Markov chain over
the samples of the class to be oversampled. A Gaussian kernel similarity
matrix with sample specific bandwidths is calculated from the pairwise
distances, where the bandwidth of sample \(i\) is the thresh_qntl
quantile of its distances. The matrix is turned into a doubly stochastic
transition matrix by Sinkhorn-Knopp normalization. A synthetic sample is
generated by randomly selecting an initial sample, drawing a target sample
with the transition probabilities of the initial sample, and interpolating
between the two with a uniform random coefficient.
Can work with classes more than 2. Each class smaller than the largest one is oversampled using only its own samples.

