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. Условия взаимодействия и F()
в настоящее время не поддерживаются в MicrosoftML.
data
Объект источника данных или символьная строка, указывающая файл .xdf или объект кадра данных.
type
Символьная строка, обозначающая тип быстрого дерева:
"binary"
для двоичной классификации быстрого дерева по умолчанию или"regression"
для регрессии быстрого дерева.
numTrees
Указывает общее число создаваемых в совокупности деревьев принятия решений. Создавая больше деревьев принятия решений, можно расширить покрытие, но время на обучение при этом увеличится. По умолчанию используется значение 100.
numLeaves
Максимальное число листовых узлов (терминальных узлов), которые могут быть созданы в любом дереве. Более высокие значения потенциально увеличивают размер дерева и обеспечивают повышенную точность, но при этом возникает риск лжевзаимосвязи и требуется больше времени на обучение. Значение по умолчанию — 20.
minSplit
Минимальное число обучающих экземпляров, необходимых для формирования листового узла. То есть минимальное число документов, разрешенных на листовом узле дерева регрессии, из данных подвыборки. Часть split означает, что признаки на каждом уровне дерева (узла) распределяются случайным образом. Значение по умолчанию — 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, а значение log
переменной income
больше 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
, используется новая среда hash с родительской средой baseenv()
.
blocksPerRead
Указывает количество считываемых блоков для каждого фрагмента данных, считываемого из источника данных.
reportProgress
Целочисленное значение, указывающее уровень информирования по ходу обработки строки:
0
— информирование не осуществляется.1
— выводится и обновляется число обработанных записей.2
— выводятся данные об обработанных записях и времени обработки.3
— выводятся данные об обработанных записях и все данные о времени обработки.
verbose
Целочисленное значение, указывающее требуемый объем выходных данных. Если задано значение 0
, при вычислениях подробные выходные данные не выводятся. Целочисленные значения из диапазона от 1
до 4
позволяют увеличить объем информации.
computeContext
Задает контекст, в котором выполняются вычисления, указанные с помощью допустимого значения RxComputeContext. Сейчас поддерживаются локальные контексты и контексты вычислений RxInSqlServer.
ensemble
Параметры управления для сборки.
...
Дополнительные аргументы, передаваемые непосредственно в Microsoft Compute Engine.
Сведения
Деревья принятия решений — это непараметрические модели, выполняющие последовательность
простых тестов на входных данных. Эта процедура принятия решений сопоставляет их с выходными данными из обучающего набора данных, входные данные которого похожи на обрабатываемый экземпляр. Решение принимается на каждом узле структуры данных двоичного дерева с учетом степени схожести, которая рекурсивно сопоставляет каждый экземпляр через ветви дерева, пока не будет достигнут соответствующий листовой узел и не будет возвращено выходное решение.
Деревья принятия решений имеют следующие преимущества:
Они эффективны с точки зрения вычисления и использования памяти во время обучения и прогнозирования.
Они могут представлять границы нелинейного принятия решений.
Они выполняют встроенный выбор признаков и классификацию.
Кроме того, они являются устойчивыми при наличии шумовых признаков.
Регрессия быстрого леса — это реализация случайного леса и леса квантильной регрессии с использованием средства обучения дерева регрессии в rxFastTrees. Эта модель состоит из совокупности деревьев принятия решений. Каждое дерево в лесу принятия решений выводит распределение Гаусса путем прогнозирования. По совокупностям деревьев выполняется агрегирование с целью найти распределение по Гауссу, ближайшее к объединенному распределению для всех деревьев модели.
Классификатор леса принятия решения состоит из совокупности деревьев принятия решений. Вообще говоря, модели совокупности обеспечивают большее покрытие и точность, чем одно дерево принятия решений. Каждое дерево в лесу принятия решений выводит распределение Гаусса путем прогнозирования. По совокупностям деревьев выполняется агрегирование с целью найти распределение по Гауссу, ближайшее к объединенному распределению для всех деревьев модели.
Значение
rxFastForest
— объект rxFastForest
с обученной моделью.
FastForest
— объект спецификации обучения класса maml
для модуля обучения быстрого леса.
Примечания
Этот алгоритм является многопоточным и всегда будет пытаться загрузить весь набор данных в память.
Авторы
Корпорация Майкрософт 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)