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
。 有关支持的转换,请参阅 featurizeText、categorical 和 categoricalHash。 这些转换在任何指定的 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
)。
transformObjects
一个命名列表,其中包含可由 transforms
、transformsFunc
和 rowSelection
引用的对象。
transformFunc
变量转换函数。 有关详细信息,请参阅 rxTransform。
transformVars
转换函数所需的输入数据集变量的字符向量。 有关详细信息,请参阅 rxTransform。
transformPackages
一个字符向量,用于指定将提供和预加载以在变量转换函数中使用的附加 R 包(在 rxGetOption("transformPackages")
中指定的包之外)。 例如,在 RevoScaleR 函数中通过 transforms
和 transformFunc
参数显式定义的那些包,或者通过 formula
或 rowSelection
参数隐式定义的包。 transformPackages
参数也可能为 NULL
,表示未预加载 rxGetOption("transformPackages")
以外的包。
transformEnvir
用户定义环境,充当内部开发并用于变量数据转换的所有环境的父级。 如果为 transformEnvir = NULL
,则改用具有父级 baseenv()
的新“哈希”环境。
blocksPerRead
为从数据源读取的每个数据块指定要读取的块数。
reportProgress
一个整数值,指定行处理进度的报告级别:
0
:不报告进度。1
:打印并更新已处理的行数。2
:报告已处理的行数和计时。3
:报告已处理的行数和所有计时。
verbose
一个整数值,指定需要的输出量。 如果为 0
,则计算期间不会打印详细输出。 从 1
到 4
的整数值表示提供的信息量逐步增加。
computeContext
设置执行计算的上下文,使用有效的 RxComputeContext 指定。 目前支持本地和 RxInSqlServer 计算上下文。
ensemble
控制用于集成的参数。
...
要直接传递到 Microsoft 计算引擎的其他参数。
详细信息
决策树是对输入执行一系列简单测试
的非参数模型。 此决策过程将决策树映射到训练数据集中的输出,这些数据集的输入与正在处理的实例类似。 基于相似性度量值在二叉树数据结构的每个节点处做出决策,该度量值通过树的分支以递归方式映射每个实例,直到到达适当的叶节点并返回输出决策。
决策树具有若干优势:
在训练和预测期间的计算和内存使用效率都很高。
它们可以表示非线性决策边界。
可执行集成的特征选择和分类。
可以抵抗干扰特征的影响。
快速林回归是使用 rxFastTrees 中的回归树学习器的随机林和分位数回归林实现。 该模型由决策树的系综构成。 决策林中的每棵树都通过预测输出高斯分布。 聚合是通过树的集成执行的,用于查找与模型中所有树的组合分布最接近的高斯分布。
此决策林分类器由决策树的系综构成。 一般说来,系综模型可以提供比单个决策树更大的覆盖范围和更高的准确度。 决策林中的每棵树都通过预测输出高斯分布。 聚合是通过树的集成执行的,用于查找与模型中所有树的组合分布最接近的高斯分布。
值
rxFastForest
:具有已训练模型的 rxFastForest
对象。
FastForest
:快速林训练程序的 maml
类的学习器规范对象。
备注
此算法是多线程的,将始终尝试将整个数据集加载到内存中。
作者
Microsoft Corporation Microsoft Technical Support
参考
From Stumps to Trees to Forests
请参阅
rxFastTrees、rxFastLinear、rxLogisticRegression、rxNeuralNet、rxOneClassSvm、featurizeText、categorical、categoricalHash、rxPredict.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)