rxFastForest:快速林

机器学习快速林

用法

  rxFastForest(formula = NULL, data, type = c("binary", "regression"),
    numTrees = 100, numLeaves = 20, minSplit = 10, exampleFraction = 0.7,
    featureFraction = 0.7, splitFraction = 0.7, numBins = 255,
    firstUsePenalty = 0, gainConfLevel = 0, trainThreads = 8,
    randomSeed = NULL, 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 = 2,
    computeContext = rxGetOption("computeContext"),
    ensemble = ensembleControl(), ...)

参数

formula

rxFormula 中描述的公式。 MicrosoftML 目前不支持交互项和 F()

data

指定 .xdf 文件或数据帧对象的数据源对象或字符串。

type

表示快速树类型的字符串:

  • "binary" 用于默认快速树二元分类,而
  • "regression" 用于快速树回归。

numTrees

指定要在系综中创建的决策树总数。 通过创建更多决策树,你可能会获得更好的覆盖范围,但训练时间将会增加。 默认值为 100。

numLeaves

可以在任何树中创建的最大叶(终端节点)数。 较高的值可能会增加树的大小并提供较高的准确性,但存在过度拟合和需要更长训练时间的风险。 默认值为 20。

minSplit

形成叶所需的最小训练实例数。 即回归树的叶中允许的最小文档数(子采样数据中)。 “拆分”意味着对树(节点)的每个级别的特征进行随机划分。 默认值为 10。

exampleFraction

每棵树使用的随机选择实例的分数。 默认值为 0.7。

featureFraction

每棵树使用的随机选择特征的分数。 默认值为 0.7。

splitFraction

每个拆分使用的随机选择特征的分数。 默认值为 0.7。

numBins

每个特征的最大不同值(箱)数。 默认值为 255。

firstUsePenalty

该特征首先使用惩罚系数。 默认值为 0。

gainConfLevel

树拟合增益置信度要求(应在 [0,1) 范围内)。 默认值为 0。

trainThreads

训练中使用的线程数。 如果指定了 NULL,则要使用的线程数在内部确定。 默认值是 NULL

randomSeed

指定随机种子。 默认值是 NULL

mlTransforms

指定在训练前要对数据执行的 MicrosoftML 转换的列表;如果不需要执行任何转换,则指定为 NULL。 有关支持的转换,请参阅 featurizeTextcategoricalcategoricalHash。 这些转换在任何指定的 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)。

transformObjects

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

transformFunc

变量转换函数。 有关详细信息,请参阅 rxTransform。

transformVars

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

transformPackages

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

transformEnvir

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

blocksPerRead

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

reportProgress

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

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

verbose

一个整数值,指定需要的输出量。 如果为 0,则计算期间不会打印详细输出。 从 14 的整数值表示提供的信息量逐步增加。

computeContext

设置执行计算的上下文,使用有效的 RxComputeContext 指定。 目前支持本地和 RxInSqlServer 计算上下文。

ensemble

控制用于集成的参数。

...

要直接传递到 Microsoft 计算引擎的其他参数。

详细信息

决策树是对输入执行一系列简单测试
的非参数模型。 此决策过程将决策树映射到训练数据集中的输出,这些数据集的输入与正在处理的实例类似。 基于相似性度量值在二叉树数据结构的每个节点处做出决策,该度量值通过树的分支以递归方式映射每个实例,直到到达适当的叶节点并返回输出决策。

决策树具有若干优势:

在训练和预测期间的计算和内存使用效率都很高。

它们可以表示非线性决策边界。

可执行集成的特征选择和分类。

可以抵抗干扰特征的影响。

快速林回归是使用 rxFastTrees 中的回归树学习器的随机林和分位数回归林实现。 该模型由决策树的系综构成。 决策林中的每棵树都通过预测输出高斯分布。 聚合是通过树的集成执行的,用于查找与模型中所有树的组合分布最接近的高斯分布。

此决策林分类器由决策树的系综构成。 一般说来,系综模型可以提供比单个决策树更大的覆盖范围和更高的准确度。 决策林中的每棵树都通过预测输出高斯分布。 聚合是通过树的集成执行的,用于查找与模型中所有树的组合分布最接近的高斯分布。

rxFastForest:具有已训练模型的 rxFastForest 对象。

FastForest:快速林训练程序的 maml 类的学习器规范对象。

备注

此算法是多线程的,将始终尝试将整个数据集加载到内存中。

作者

Microsoft Corporation Microsoft Technical Support

参考

Wikipedia: Random forest

Quantile regression forest

From Stumps to Trees to Forests

请参阅

rxFastTreesrxFastLinearrxLogisticRegressionrxNeuralNetrxOneClassSvmfeaturizeTextcategoricalcategoricalHashrxPredict.mlModel

示例


 # Estimate a binary classification forest
 infert1 <- infert
 infert1$isCase = (infert1$case == 1)
 forestModel <- rxFastForest(formula = isCase ~ age + parity + education + spontaneous + induced,
         data = infert1)

 # Create text file with per-instance results using rxPredict
 txtOutFile <- tempfile(pattern = "scoreOut", fileext = ".txt")
 txtOutDS <- RxTextData(file = txtOutFile)
 scoreDS <- rxPredict(forestModel, data = infert1,
    extraVarsToWrite = c("isCase", "Score"), outData = txtOutDS)

 # Print the fist ten rows   
 rxDataStep(scoreDS, numRows = 10)

 # Clean-up
 file.remove(txtOutFile)

 ######################################################################
 # Estimate a regression fast forest

 # Use the built-in data set 'airquality' to create test and train data
 DF <- airquality[!is.na(airquality$Ozone), ]  
 DF$Ozone <- as.numeric(DF$Ozone)
 randomSplit <- rnorm(nrow(DF))
 trainAir <- DF[randomSplit >= 0,]
 testAir <- DF[randomSplit < 0,]
 airFormula <- Ozone ~ Solar.R + Wind + Temp

 # Regression Fast Forest for train data
 rxFastForestReg <- rxFastForest(airFormula, type = "regression", 
     data = trainAir)  

 # Put score and model variables in data frame
 rxFastForestScoreDF <- rxPredict(rxFastForestReg, data = testAir, 
     writeModelVars = TRUE)

 # Plot actual versus predicted values with smoothed line
 rxLinePlot(Score ~ Ozone, type = c("p", "smooth"), data = rxFastForestScoreDF)