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)