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. Условия взаимодействия и F()
в настоящее время не поддерживаются в MicrosoftML.
data
Объект источника данных или строка символов, указывающая файл .xdffile или объект кадра данных. Кроме того, это может быть список источников данных, указывающий, что каждая модель должна быть обучена с помощью одного из источников данных в списке. В этом случае длина списка данных должна быть равна modelCount
.
trainers
Список модулей обучения с их аргументами. Модули обучения создаются с помощью функций fastTrees, fastForest, fastLinear, logisticRegression или neuralNet.
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
— вычисление разницы между числом положительных выходных значений и числом отрицательных выходных значений, деленной на общее число моделей.
maxCalibration
Задает максимальное число примеров, используемых для калибровки. Этот аргумент игнорируется для всех задач, кроме двоичной классификации.
mlTransforms
Указывает список преобразований MicrosoftML, которые необходимо выполнить до обучения, или значение NULL
, если преобразования выполнять не нужно. Преобразования, требующие дополнительной передачи данных (например, featurizeText, categorical) не допустимы. Эти преобразования выполняются после любых заданных преобразований 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
) можно определить за пределами вызова функции с помощью функции выражения. Значение по умолчанию — NULL
.
transformObjects
Именованный список с объектами, на которые можно ссылаться с помощью transforms
, transformsFunc
и rowSelection
. Значение по умолчанию — NULL
.
transformFunc
Функция преобразования переменной. Дополнительные сведения см. на странице, посвященной rxTransform. По умолчанию используется значение NULL
.
transformVars
Символьный вектор для переменных входного набора данных, требуемый для функции преобразования. Дополнительные сведения см. на странице, посвященной rxTransform. Значение по умолчанию — NULL
.
transformPackages
Символьный вектор, определяющий дополнительные пакеты R (за исключением пакетов, указанных в rxGetOption("transformPackages")
), которые будут доступны и предварительно загружены для использования в функциях преобразования переменных. Например, пакеты, явно определенные в функциях RevoScaleR через аргументы transforms
и transformFunc
или неявно определенные через аргументы formula
или rowSelection
. Аргумент transformPackages
также может иметь значение NULL
, указывающее на то, что пакеты, указанные за пределами rxGetOption("transformPackages")
, не будут предварительно загружаться. Значение по умолчанию — NULL
.
transformEnvir
Определяемая пользователем среда, выступающая в роли родительской среды для всех разработанных внутренних сред и используемая для преобразования данных переменных. Если указано значение transformEnvir = NULL
, используется новая среда hash с родительской средой baseenv()
. Значение по умолчанию — NULL
.
blocksPerRead
Указывает количество считываемых блоков для каждого фрагмента данных, считываемого из источника данных.
reportProgress
Целочисленное значение, указывающее уровень информирования по ходу обработки строки:
0
— информирование не осуществляется.1
— выводится и обновляется число обработанных записей.2
— выводятся данные об обработанных записях и времени обработки.3
— выводятся данные об обработанных записях и все данные о времени обработки.
verbose
Целочисленное значение, указывающее требуемый объем выходных данных. Если задано значение 0
, при вычислениях подробные выходные данные не выводятся. Целочисленные значения из диапазона от 1
до 4
позволяют увеличить объем информации. Значение по умолчанию — 1
.
computeContext
Задает контекст, в котором выполняются вычисления, указанные с помощью допустимого значения RxComputeContext. Сейчас поддерживаются локальные контексты и контексты вычислений RxSpark. Если указан контекст RxSpark, обучение моделей выполняется раздельно, а объединение выполняется локально. Обратите внимание, что контекст вычислений не может быть неожидающим.
...
Дополнительные аргументы, передаваемые непосредственно в Microsoft Compute Engine.
Подробнее
/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)