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

训练程序列表及其参数。 训练程序是使用 fastTreesfastForestfastLinearlogisticRegressionneuralNet 创建的。

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。 不允许需要额外传递数据的转换(如 featurizeTextcategorical)。 这些转换在任何指定的 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 的观察值。 在处理任何数据转换之后执行行选择(请参阅参数 transformstransformFunc)。 与所有表达式一样,可以使用表达式函数在函数调用之外定义 rowSelection

transforms

表示第一轮变量转换的窗体 list(name = expression, ``...) 的表达式。 与所有表达式一样,可以使用表达式函数在函数调用之外定义 transforms(或 rowSelection)。 默认值是 NULL

transformObjects

一个命名列表,其中包含可由 transformstransformsFuncrowSelection 引用的对象。 默认值是 NULL

transformFunc

变量转换函数。 有关详细信息,请参阅 rxTransform。 默认值是 NULL

transformVars

转换函数所需的输入数据集变量的字符向量。 有关详细信息,请参阅 rxTransform。 默认值是 NULL

transformPackages

一个字符向量,用于指定将提供和预加载以在变量转换函数中使用的附加 R 包(在 rxGetOption("transformPackages") 中指定的包之外)。 例如,在 RevoScaleR 函数中通过 transformstransformFunc 参数显式定义的那些包,或者通过 formularowSelection 参数隐式定义的包。 transformPackages 参数也可能为 NULL,表示未预加载 rxGetOption("transformPackages") 以外的包。 默认值是 NULL

transformEnvir

用户定义环境,充当内部开发并用于变量数据转换的所有环境的父级。 如果为 transformEnvir = NULL,则改用具有父级 baseenv() 的新“哈希”环境。 默认值是 NULL

blocksPerRead

为从数据源读取的每个数据块指定要读取的块数。

reportProgress

一个整数值,指定行处理进度的报告级别:

  • 0:不报告进度。
  • 1:打印并更新已处理的行数。
  • 2:报告已处理的行数和计时。
  • 3:报告已处理的行数和所有计时。

verbose

一个整数值,指定需要的输出量。 如果为 0,则计算期间不会打印详细输出。 从 14 的整数值表示提供的信息量逐步增加。 默认值是 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)