Generates a more balanced data set by creating
synthetic instances of the minority class using the SMOTE algorithm.
The algorithm samples for each minority instance a new data point based on the
neighbors of that data point.
It can only be applied to tasks with numeric features.
smotefamily::SMOTE for details.
PipeOpSmote$new(id = "smote", param_vals = list())
Identifier of resulting object, default
param_vals :: named
List of hyperparameter settings, overwriting the hyperparameter settings that would otherwise be set during construction. Default
Input and output channels are inherited from
The output during training is the input
Task with added synthetic rows for the minority class.
The output during prediction is the unchanged input.
$state is a named
list with the
$state elements inherited from
The parameters are the parameters inherited from
PipeOpTaskPreproc, as well as:
Desired times of synthetic minority instances over the original number of majority instances. See
For details see:
Chawla, N., Bowyer, K., Hall, L. and Kegelmeyer, W. 2002.
SMOTE: Synthetic minority oversampling technique.
Journal of Artificial Intelligence Research. 16, 321-357.
library("mlr3") # Create example task data_example = smotefamily::sample_generator(1000, ratio = 0.80) task = TaskClassif$new(id = "example", backend = data_example, target = "result") task$data()#> result X1 X2 #> 1: n 0.2866815 0.45899585 #> 2: n 0.2682259 0.20055563 #> 3: n 0.8959587 0.28225572 #> 4: p 0.5282639 0.33736117 #> 5: n 0.9983724 0.13857375 #> --- #> 996: n 0.2099023 0.88892125 #> 997: p 0.6939768 0.49183863 #> 998: n 0.9204687 0.05490594 #> 999: n 0.8816077 0.30730362 #> 1000: n 0.8660524 0.59036143#> #> n p #> 768 232# Generate synthetic data for minority class pop = po("smote") smotedata = pop$train(list(task))[]$data() table(smotedata$result)#> #> n p #> 768 696