包装器 normalizeFeatures 如何处理验证集?
How does the wrapper normalizeFeatures behave with a validation set?
我想知道函数 normalizeFeatures
如何与重采样策略一起工作。以下哪个说法是正确的?
- 整个任务数据归一化
- 训练数据被归一化,并且该归一化的参数(比方说,经典标准化中的均值和标准偏差)用于对验证数据进行归一化(
mlrCPO::retrafo
在某种程度上做了什么)。
感谢您的帮助!
可以在 data.frame
和 Task
对象上调用函数 normalizeFeatures()
。
在这两种情况下,它都做同样的事情。它只是将整个任务标准化。所以陈述 1) 是正确的。
如果你想实现第二个,你有两个选择:
a) preprocWrapperCaret
包装器会将缩放放在训练和预测的前面。对于训练,缩放参数将被保存和应用。
对于预测,将应用保存的缩放参数。
library(mlr)
lrn = makeLearner("classif.svm")
lrn = makePreprocWrapperCaret(lrn, ppc.center = TRUE, ppc.scale = TRUE)
set.seed(1)
res = resample(lrn, iris.task, resampling = hout, models = TRUE)
# the scaling parameters learnt on the training spit
res$models[[1]]$learner.model$control$mean
Sepal.Length Sepal.Width Petal.Length Petal.Width
5.831 3.030 3.782 1.222
res$models[[1]]$learner.model$control$std
Sepal.Length Sepal.Width Petal.Length Petal.Width
0.8611356 0.4118203 1.7487877 0.7710127
b) mlrCPO
更优雅和灵活的方法是使用 mlrCPO
包构建预处理管道,在这种情况下它与包装器具有相同的效果。
library(mlr)
library(mlrCPO)
lrn = cpoScale(center = TRUE, scale = TRUE) %>>% makeLearner("classif.svm")
set.seed(1)
res = resample(lrn, iris.task, resampling = hout, models = TRUE)
# the scaling parameters learnt on the training spit
res$models[[1]]$learner.model$retrafo$element$state
$center
Sepal.Length Sepal.Width Petal.Length Petal.Width
5.831 3.030 3.782 1.222
$scale
Sepal.Length Sepal.Width Petal.Length Petal.Width
0.8611356 0.4118203 1.7487877 0.7710127
我将种子设置为在两种情况下获得相同的训练拆分,以便两种方法学习的缩放参数相同。
我想知道函数 normalizeFeatures
如何与重采样策略一起工作。以下哪个说法是正确的?
- 整个任务数据归一化
- 训练数据被归一化,并且该归一化的参数(比方说,经典标准化中的均值和标准偏差)用于对验证数据进行归一化(
mlrCPO::retrafo
在某种程度上做了什么)。
感谢您的帮助!
可以在 data.frame
和 Task
对象上调用函数 normalizeFeatures()
。
在这两种情况下,它都做同样的事情。它只是将整个任务标准化。所以陈述 1) 是正确的。
如果你想实现第二个,你有两个选择:
a) preprocWrapperCaret
包装器会将缩放放在训练和预测的前面。对于训练,缩放参数将被保存和应用。 对于预测,将应用保存的缩放参数。
library(mlr)
lrn = makeLearner("classif.svm")
lrn = makePreprocWrapperCaret(lrn, ppc.center = TRUE, ppc.scale = TRUE)
set.seed(1)
res = resample(lrn, iris.task, resampling = hout, models = TRUE)
# the scaling parameters learnt on the training spit
res$models[[1]]$learner.model$control$mean
Sepal.Length Sepal.Width Petal.Length Petal.Width
5.831 3.030 3.782 1.222
res$models[[1]]$learner.model$control$std
Sepal.Length Sepal.Width Petal.Length Petal.Width
0.8611356 0.4118203 1.7487877 0.7710127
b) mlrCPO
更优雅和灵活的方法是使用 mlrCPO
包构建预处理管道,在这种情况下它与包装器具有相同的效果。
library(mlr)
library(mlrCPO)
lrn = cpoScale(center = TRUE, scale = TRUE) %>>% makeLearner("classif.svm")
set.seed(1)
res = resample(lrn, iris.task, resampling = hout, models = TRUE)
# the scaling parameters learnt on the training spit
res$models[[1]]$learner.model$retrafo$element$state
$center
Sepal.Length Sepal.Width Petal.Length Petal.Width
5.831 3.030 3.782 1.222
$scale
Sepal.Length Sepal.Width Petal.Length Petal.Width
0.8611356 0.4118203 1.7487877 0.7710127
我将种子设置为在两种情况下获得相同的训练拆分,以便两种方法学习的缩放参数相同。