机器学习快速林
用法
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
每个功能的最大非重复值(bins)数。 默认值为 255。
firstUsePenalty
特征首先使用惩罚系数。 默认值为 0。
gainConfLevel
树拟合增益置信度要求(应位于 [0,1) 范围内)。 默认值为 0。
trainThreads
训练中使用的线程数。 如果 NULL 已指定,则内部确定要使用的线程数。 默认值是 NULL。
randomSeed
指定随机种子。 默认值是 NULL。
mlTransforms
指定要在训练之前对数据执行的 MicrosoftML 转换的列表,或者 NULL 不执行任何转换。 有关支持的转换,请参阅 featurizeText、 分类和 分类Hash。 这些转换在任何指定的 R 转换之后执行。 默认值是 NULL。
mlTransformVars
指定要用于 mlTransforms 变量名称的字符向量,或者 NULL 如果未使用任何名称,则为 。 默认值是 NULL。
rowSelection
指定数据集中的行(观察值),这些行(观察值)由模型使用数据集(以引号为单位)中的逻辑变量的名称,或使用数据集中的变量的逻辑表达式。 例如, rowSelection = "old" 将仅使用变量 old 值所在的 TRUE观察值。
rowSelection = (age > 20) & (age < 65) & (log(income) > 10)仅使用变量值age介于 20 和 65 之间的观察值,而变量的值logincome大于 10。 在处理任何数据转换后执行行选择(请参阅参数 transforms 或 transformFunc)。 与所有表达式一样, rowSelection 可以使用表达式函数在函数调用外部定义。
transforms
表示第一轮变量转换的窗体 list(name = expression, ``...) 的表达式。 与所有表达式一样, transforms 可以使用表达式函数在函数调用外部定义(或 rowSelection)。
transformObjects
一个命名列表,其中包含可由 <
transformFunc
变量转换函数。 有关详细信息,请参阅 rxTransform。
transformVars
转换函数所需的输入数据集变量的字符向量。 有关详细信息,请参阅 rxTransform。
transformPackages
一个字符向量,用于指定其他 R 包(在指定 rxGetOption("transformPackages")包之外)可供使用并预加载,以便在变量转换函数中使用。 例如,在 RevoScaleR 函数中显式定义的函数通过参数transforms和transformFunc参数或通过参数formularowSelection隐式定义这些函数。 该 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 的学习器规范对象。
注释
此算法是多线程算法,将始终尝试将整个数据集加载到内存中。
作者(s)
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)