Learn R Programming

themis (version 1.1.0)

smotenc: SMOTENC Algorithm

Description

SMOTENC generates new examples of the minority class using nearest neighbors of these cases, and can handle categorical variables

Usage

smotenc(df, var, k = 5, over_ratio = 1)

Value

A data.frame or tibble, depending on type of df.

Arguments

df

data.frame or tibble. Must have 1 factor variable and remaining numeric variables.

var

Character, name of variable containing factor variable.

k

An integer. Number of nearest neighbor that are used to generate the new examples of the minority class.

over_ratio

A numeric value for the ratio of the minority-to-majority frequencies. The default value (1) means that all other levels are sampled up to have the same frequency as the most occurring level. A value of 0.5 would mean that the minority levels will have (at most) (approximately) half as many rows as the majority level.

A named numeric vector can be used instead to give different levels different targets, for example c(a = 1, b = 0.5). The names must be levels of the outcome and the values are ratios of the majority level, exactly as in the single-number case. Levels that are not named are left untouched, as are rows with a missing outcome. Because a vector of targets is not a single value, supplying one means this argument can no longer be tuned. See vignette("ratio", package = "themis") for more details.

Details

SMOTENC extends SMOTE to handle data sets with a mix of numeric and categorical predictors. For each minority class example, new synthetic examples are generated by interpolating between the example and its nearest neighbors using Gower's distance. Numeric features are interpolated continuously; categorical features take the most common value among the neighbors. The number of new examples generated is controlled by over_ratio.

Columns can be numeric and categorical with no missing data.

References

Chawla, N. V., Bowyer, K. W., Hall, L. O., and Kegelmeyer, W. P. (2002). Smote: Synthetic minority over-sampling technique. Journal of Artificial Intelligence Research, 16:321-357.

Gower, J. C. (1971). A general coefficient of similarity and some of its properties. Biometrics 27(4):857-871. (For the distance metric used)

See Also

step_smotenc() for step function of this method

Other Direct Implementations: adasyn(), bsmote(), cluster_centroids(), cnn(), enn(), instance_hardness(), kmeans_smote(), ncl(), nearmiss(), oss(), rose(), smogn(), smote(), smoten(), svmsmote(), tomek()

Examples

Run this code
circle_numeric <- circle_example[, c("x", "y", "class")]

res <- smotenc(circle_numeric, var = "class")

res <- smotenc(circle_numeric, var = "class", k = 10)

res <- smotenc(circle_numeric, var = "class", over_ratio = 0.8)

Run the code above in your browser using DataLab