我有一个分类问题,需要预测一个非常倾斜的类(例如,90%/10%不平衡的二进制变量)。
为了解决这个问题,我想使用SMOTE方法来过采样这个类变量。然而,正如我在这里读到的(http://www.marcoaltini.com/blog/dealing-with-imbalanced-data-undersampling-oversampling-and-proper-cross-validation),最佳实践是在k-fold循环内使用SMOTE以避免过拟合。
由于我正在使用caret包执行我的分析,我参考了这个链接(http://topepo.github.io/caret/sampling.html)。我完全理解所有内容,但最后一部分讲解如何更改SMOTE参数时我不太清楚。
我简单地不理解这个。有人能解释一下吗?假设我想包括SMOTE参数perc.over、k和perc.under,我该如何做?
非常感谢。
编辑:
实际上,我意识到我可能只需在上述函数中添加这些参数即可,例如:
为了解决这个问题,我想使用SMOTE方法来过采样这个类变量。然而,正如我在这里读到的(http://www.marcoaltini.com/blog/dealing-with-imbalanced-data-undersampling-oversampling-and-proper-cross-validation),最佳实践是在k-fold循环内使用SMOTE以避免过拟合。
由于我正在使用caret包执行我的分析,我参考了这个链接(http://topepo.github.io/caret/sampling.html)。我完全理解所有内容,但最后一部分讲解如何更改SMOTE参数时我不太清楚。
smotest <- list(name = "SMOTE with more neighbors!",
func = function (x, y) {
library(DMwR)
dat <- if (is.data.frame(x)) x else as.data.frame(x)
dat$.y <- y
dat <- SMOTE(.y ~ ., data = dat, k = 10)
list(x = dat[, !grepl(".y", colnames(dat), fixed = TRUE)],
y = dat$.y)
},
first = TRUE)
我简单地不理解这个。有人能解释一下吗?假设我想包括SMOTE参数perc.over、k和perc.under,我该如何做?
非常感谢。
编辑:
实际上,我意识到我可能只需在上述函数中添加这些参数即可,例如:
smotest <- list(name = "SMOTE with more neighbors!",
func = function (x, y) {
library(DMwR)
dat <- if (is.data.frame(x)) x else as.data.frame(x)
dat$.y <- y
dat <- SMOTE(.y ~ ., data = dat, k = 10, perc.over = 1200, perc.under = 100)
list(x = dat[, !grepl(".y", colnames(dat), fixed = TRUE)],
y = dat$.y)
},
first = TRUE)