Поделиться через


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

Минимальное количество экземпляров обучения, необходимых для формирования конечной части. То есть минимальное количество документов, разрешенных в листе дерева регрессии, из вложенных данных. Разделение означает, что функции на каждом уровне дерева (узла) делятся случайным образом. Значение по умолчанию — 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 если преобразования не выполняются. Сведения о поддерживаемых преобразованиях см. в описании признаковtext, категориальных и категориальныхHash. Эти преобразования выполняются после любых указанных преобразований 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

Именованный список, содержащий объекты, на которые можно ссылаться, transformstransformsFuncи 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

Управление параметрами для ensembling.

...

Дополнительные аргументы, передаваемые непосредственно в подсистему вычислений Майкрософт.

Сведения

Деревья принятия решений — это непараметрические модели, которые выполняют последовательность
простые тесты для входных данных. Эта процедура принятия решений сопоставляет их с выходными данными, найденными в обучаемом наборе данных, входные данные которых были похожи на обрабатываемый экземпляр. Решение принимается на каждом узле структуры данных двоичного дерева на основе меры сходства, которая сопоставляет каждый экземпляр рекурсивно по ветвям дерева до достижения соответствующего конечного узла и возвращаемого выходного решения.

Деревья принятия решений имеют несколько преимуществ:

Они эффективны как в вычислениях, так и в памяти во время обучения и прогнозирования.

Они могут представлять нелинейные границы принятия решений.

Они выполняют интегрированный выбор компонентов и классификацию.

Они устойчивы в присутствии шумных признаков.

Быстрая регрессия леса — это случайный лес и реализация леса квантилейной регрессии с помощью обучающегося дерева регрессии в rxFastTrees. Модель состоит из ансамбля деревьев принятия решений. Каждое дерево в лесу принятия решений выводит распределение Gaussian путем прогнозирования. По совокупностям деревьев выполняется агрегирование с целью найти распределение по Гауссу, ближайшее к объединенному распределению для всех деревьев модели.

Этот классификатор леса принятия решений состоит из ансамбля деревьев принятия решений. Как правило, модели ансамбля обеспечивают лучшее покрытие и точность, чем одно дерево принятия решений. Каждое дерево в лесу принятия решений выводит распределение Gaussian путем прогнозирования. По совокупностям деревьев выполняется агрегирование с целью найти распределение по Гауссу, ближайшее к объединенному распределению для всех деревьев модели.

Ценность

rxFastForest rxFastForest: объект с обученной моделью.

FastForest: объект спецификации учащегося класса maml для тренера Fast Forest.

Примечания.

Этот алгоритм является многопотокным и всегда пытается загрузить весь набор данных в память.

Авторы

Корпорация Майкрософт Microsoft Technical Support

Ссылки

Wikipedia: Random forest

Quantile regression forest

From Stumps to Trees to Forests

См. также

rxFastTrees, rxFastLinear, rxLogisticRegression, rxNeuralNet, rxOneClassSvm, featuresizeText, категориальный, категориальныйHash, 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)