rxEnsemble:系综
定型模型的系综
用法
rxEnsemble(formula = NULL, data, trainers, type = c("binary", "regression",
"multiClass", "anomaly"), randomSeed = NULL,
modelCount = length(trainers), replace = FALSE, sampRate = NULL,
splitData = FALSE, combineMethod = c("median", "average", "vote"),
maxCalibration = 1e+05, mlTransforms = NULL, mlTransformVars = NULL,
rowSelection = NULL, transforms = NULL, transformObjects = NULL,
transformFunc = NULL, transformVars = NULL, transformPackages = NULL,
transformEnvir = NULL, blocksPerRead = rxGetOption("blocksPerRead"),
reportProgress = rxGetOption("reportProgress"), verbose = 1,
computeContext = rxGetOption("computeContext"), ...)
参数
formula
rxFormula 中描述的公式。 MicrosoftML 目前不支持交互项和 F()
。
data
指定 .xdffile 或数据帧对象的数据源对象或字符串。 此外,它还可以是一个数据源列表,指示应使用列表中的一个数据源训练每个模型。 在这种情况下,数据列表的长度必须等于 modelCount
。
trainers
训练程序列表及其参数。 训练程序是使用 fastTrees、fastForest、fastLinear、logisticRegression 或 neuralNet 创建的。
type
指定系综类型的字符串:"binary"
表示二元分类,"regression"
表示回归。
randomSeed
指定随机种子。 默认值是 NULL
。
modelCount
指定要训练的模型数。 如果此数目大于训练程序列表的长度,则复制训练程序列表以匹配 modelCount
。
replace
一个逻辑值,指定是否应使用替换完成观察值的采样。 默认值为 /codeFALSE。
sampRate
正值的标量,指定每个训练程序要采样的观察值百分比。 默认值为 1.0,表示使用替换进行采样(即 replace=TRUE),0.632 表示不使用替换进行采样(即 replace=FALSE)。 如果 splitData 为 TRUE,则 sampRate 的默认值为 1.0(拆分前不进行采样)。
splitData
一个逻辑值,指定是否在非重叠分区上训练基础模型。 默认为 FALSE
。 它仅适用于 RxSpark
计算上下文,对于其他上下文,将被忽略。
combineMethod
指定用于合并模型的方法:
median
用于计算各个模型输出的中值,average
用于计算各个模型输出的平均值,vote
用于计算 (pos-neg)/模型总数,其中“pos”是正值输出数,而“neg”是负值输出数。
maxCalibration
指定要用于校准的最大示例数。 对于除二元分类之外的所有任务,此参数将被忽略。
mlTransforms
指定在训练前要对数据执行的 MicrosoftML 转换的列表;如果不需要执行任何转换,则指定为 NULL
。 不允许需要额外传递数据的转换(如 featurizeText、categorical)。 这些转换在任何指定的 R 转换之后执行。 默认值是 NULL
。
mlTransformVars
指定要在 mlTransforms
中使用的变量名称的字符向量;如果不使用任何变量名称,则指定为 NULL
。 默认值是 NULL
。
rowSelection
使用数据集中的逻辑变量名称(带引号)或通过使用数据集中的变量的逻辑表达式指定模型要使用的数据集中的行(观察值)。 例如,rowSelection = "old"
将仅使用变量 old
的值为 TRUE
的观察值。 rowSelection = (age > 20) & (age < 65) & (log(income) > 10)
仅使用 age
变量值介于 20 和 65 之间且 income
变量的 log
值大于 10 的观察值。 在处理任何数据转换之后执行行选择(请参阅参数 transforms
或 transformFunc
)。 与所有表达式一样,可以使用表达式函数在函数调用之外定义 rowSelection
。
transforms
表示第一轮变量转换的窗体 list(name = expression, ``...)
的表达式。 与所有表达式一样,可以使用表达式函数在函数调用之外定义 transforms
(或 rowSelection
)。 默认值是 NULL
。
transformObjects
一个命名列表,其中包含可由 transforms
、transformsFunc
和 rowSelection
引用的对象。 默认值是 NULL
。
transformFunc
变量转换函数。 有关详细信息,请参阅 rxTransform。 默认值是 NULL
。
transformVars
转换函数所需的输入数据集变量的字符向量。 有关详细信息,请参阅 rxTransform。 默认值是 NULL
。
transformPackages
一个字符向量,用于指定将提供和预加载以在变量转换函数中使用的附加 R 包(在 rxGetOption("transformPackages")
中指定的包之外)。 例如,在 RevoScaleR 函数中通过 transforms
和 transformFunc
参数显式定义的那些包,或者通过 formula
或 rowSelection
参数隐式定义的包。 transformPackages
参数也可能为 NULL
,表示未预加载 rxGetOption("transformPackages")
以外的包。 默认值是 NULL
。
transformEnvir
用户定义环境,充当内部开发并用于变量数据转换的所有环境的父级。 如果为 transformEnvir = NULL
,则改用具有父级 baseenv()
的新“哈希”环境。 默认值是 NULL
。
blocksPerRead
为从数据源读取的每个数据块指定要读取的块数。
reportProgress
一个整数值,指定行处理进度的报告级别:
0
:不报告进度。1
:打印并更新已处理的行数。2
:报告已处理的行数和计时。3
:报告已处理的行数和所有计时。
verbose
一个整数值,指定需要的输出量。 如果为 0
,则计算期间不会打印详细输出。 从 1
到 4
的整数值表示提供的信息量逐步增加。 默认值是 1
。
computeContext
设置执行计算的上下文,使用有效的 RxComputeContext 指定。 目前支持本地和 RxSpark 计算上下文。 当指定 RxSpark 时,模型的训练是以分布式方式完成的,而系综生成是在本地完成的。 请注意,计算上下文不能处于非等待状态。
...
要直接传递到 Microsoft 计算引擎的其他参数。
详细信息
/coderxEnsemble 函数用于定型多种不同类型的模型,以获得比单个模型更好的预测性能。
值
具有已训练的系综模型的 rxEnsemble
对象。
示例
# Create an ensemble of regression rxFastTrees models
# use xdf data source
dataFile <- file.path(rxGetOption("sampleDataDir"), "claims4blocks.xdf")
rxGetInfo(dataFile, getVarInfo = TRUE, getBlockSizes = TRUE)
form <- cost ~ age + type + number
rxSetComputeContext("localpar")
rxGetComputeContext()
# build an ensemble model that contains three 'rxFastTrees' models with different parameters
ensemble <- rxEnsemble(
formula = form,
data = dataFile,
type = "regression",
trainers = list(fastTrees(), fastTrees(numTrees = 60), fastTrees(learningRate = 0.1)), #a list of trainers with their arguments.
replace = TRUE # Indicates using a bootstrap sample for each trainer
)
# use text data source
colInfo <- list(DayOfWeek = list(type = "factor", levels = c("Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday")))
source <- system.file("SampleData/AirlineDemoSmall.csv", package = "RevoScaleR")
data <- RxTextData(source, missingValueString = "M", colInfo = colInfo)
# When 'distributed' is TRUE distributed data source is created
distributed <- FALSE
if (distributed) {
bigDataDirRoot <- "/share"
inputDir <- file.path(bigDataDirRoot, "AirlineDemoSmall")
rxHadoopMakeDir(inputDir)
rxHadoopCopyFromLocal(source, inputDir)
hdfsFS <- RxHdfsFileSystem()
data <- RxTextData(file = inputDir, missingValueString = "M", colInfo = colInfo, fileSystem = hdfsFS)
}
# When 'distributed' is TRUE training is distributed
if (distributed) {
cc <- rxSetComputeContext(RxSpark())
} else {
cc <- rxGetComputeContext()
}
ensemble <- rxEnsemble(
formula = ArrDelay ~ DayOfWeek,
data = data,
type = "regression",
trainers = list(fastTrees(), fastTrees(numTrees = 60), fastTrees(learningRate = 0.1)), # The ensemble will contain three 'rxFastTrees' models
replace = TRUE # Indicates using a bootstrap sample for each trainer
)
# Change the compute context back to previous for scoring
rxSetComputeContext(cc)
# Put score and model variables in data frame
scores <- rxPredict(ensemble, data = data, writeModelVars = TRUE)
# Plot actual versus predicted values with smoothed line
rxLinePlot(Score ~ ArrDelay, type = c("p", "smooth"), data = scores)