rxEnsemble : Ensembles

Effectuer l’apprentissage d’un ensemble de modèles

Utilisation

  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"), ...)

Arguments

formula

La formule telle que décrite dans rxFormula. Les termes d’interaction et F() ne sont actuellement pas pris en charge dans MicrosoftML.

data

Objet source de données ou chaîne de caractères spécifiant un fichier .xdf ou un objet trame de données. Il peut également s’agir d’une liste de sources de données indiquant que chaque modèle doit être formé à l’aide de l’une des sources de données de la liste. Dans ce cas, la longueur de la liste de données doit être égale à modelCount.

trainers

Liste des formateurs avec leurs arguments. Les formateurs sont créés à l’aide de fastTrees, fastForest, fastLinear, logisticRegression ou neuralNet.

type

Une chaîne de caractères qui spécifie le type d’ensemble : "binary" pour la classification binaire ou "regression" pour la régression.

randomSeed

Spécifie la valeur de départ aléatoire. La valeur par défaut est NULL.

modelCount

Indique le nombre de modèles à former. Si ce nombre est supérieur à la longueur de la liste des formateurs, la liste des formateurs est dupliquée pour correspondre à modelCount.

replace

Valeur logique spécifiant si l’échantillonnage des observations doit être effectué avec ou sans remplacement. La valeur par défaut est /codeFALSE.

sampRate

Scalaire de valeur positive indiquant le pourcentage d’observations à échantillonner pour chaque formateur. La valeur par défaut est 1.0 pour un échantillonnage avec remplacement (c’est-à-dire replace=TRUE) et 0.632 pour un échantillonnage sans remplacement (c’est-à-dire replace=FALSE). Lorsque splitData est TRUE, la valeur par défaut de sampRate est 1.0 (aucun échantillonnage n’est effectué avant le fractionnement).

splitData

Valeur logique indiquant s’il faut ou non effectuer l’apprentissage des modèles de base sur les partitions qui ne se chevauchent pas. Par défaut, il s’agit de FALSE. Elle est uniquement disponible pour le contexte de calcul RxSpark et elle est ignorée pour les autres.

combineMethod

Spécifie la méthode utilisée pour combiner les modèles :

  • median pour calculer la médiane des sorties de modèle individuelles et
  • average pour calculer la moyenne des sorties de modèle individuelles et
  • vote pour calculer (pos-neg)/nombre total de modèles, où « pos » est le nombre de sorties positives et « neg » le nombre de sorties négatives.

maxCalibration

Spécifie le nombre maximal d’exemples à utiliser pour l’étalonnage. Cet argument est ignoré pour toutes les tâches autres que la classification binaire.

mlTransforms

Spécifie la liste des transformations MicrosoftML à effectuer sur les données avant l’entraînement, ou NULL si aucune transformation ne doit être effectuée. Les transformations qui requièrent une passe supplémentaire sur les données (par exemple featurizeText, categorical) ne sont pas autorisées. Ces transformations sont effectuées après les transformations R spécifiées. La valeur par défaut est NULL.

mlTransformVars

Spécifie un vecteur de caractères des noms de variables à utiliser dans mlTransforms ou NULL si aucun ne doit être utilisé. La valeur par défaut est NULL.

rowSelection

Spécifie les lignes (observations) du jeu de données qui doivent être utilisées par le modèle avec le nom d’une variable logique du jeu de données (entre guillemets) ou avec une expression logique utilisant des variables dans le jeu de données. Par exemple, rowSelection = "old" utilise uniquement les observations dans lesquelles la valeur de la variable old est TRUE. rowSelection = (age > 20) & (age < 65) & (log(income) > 10) utilise uniquement les observations dans lesquelles la valeur de la variable age est comprise entre 20 et 65, et la valeur log de la variable income est supérieure à 10. La sélection de ligne est effectuée après le traitement de toutes les transformations de données (consultez les arguments transforms ou transformFunc). Comme pour toutes les expressions, rowSelection peut être défini en dehors de l’appel de fonction à l’aide de la fonction d’expression.

transforms

Expression de la forme list(name = expression, ``...) qui représente la première série de transformations de variables. Comme pour toutes les expressions, transforms (ou rowSelection) peut être défini en dehors de l’appel de fonction à l’aide de la fonction d’expression. La valeur par défaut est NULL.

transformObjects

Liste nommée qui contient des objets qui peuvent être référencés par transforms, transformsFunc et rowSelection. La valeur par défaut est NULL.

transformFunc

Fonction de transformation de variables. Pour plus d’informations, consultez rxTransform. La valeur par défaut est NULL.

transformVars

Vecteur de caractère des variables de jeu de données d’entrée nécessaires pour la fonction de transformation. Pour plus d’informations, consultez rxTransform. La valeur par défaut est NULL.

transformPackages

Vecteur de caractères spécifiant les packages R supplémentaires (en dehors de ceux spécifiés dans rxGetOption("transformPackages")) qui doivent être mis à disposition et préchargés pour être utilisés dans les fonctions de transformation de variables. Par exemple, ceux définis explicitement dans les fonctions RevoScaleR via leurs arguments transforms et transformFunc ou ceux définis implicitement via leurs arguments formula ou rowSelection. L’argument transformPackages peut également être NULL, ce qui indique qu’aucun package n’est préchargé en dehors de rxGetOption("transformPackages"). La valeur par défaut est NULL.

transformEnvir

Environnement défini par l’utilisateur qui sert de parent à tous les environnements développés en interne et qui est utilisé pour la transformation de données variables. Si transformEnvir = NULL, un nouvel environnement de « hachage » avec le parent baseenv() est utilisé à la place. La valeur par défaut est NULL.

blocksPerRead

Spécifie le nombre de blocs à lire pour chaque segment de données lu à partir de la source de données.

reportProgress

Valeur entière qui spécifie le niveau de création de rapports sur la progression du traitement de la ligne :

  • 0 : aucune progression n’est signalée.
  • 1 : le nombre de lignes traitées est imprimé et mis à jour.
  • 2 : les lignes traitées et les minutages sont signalés.
  • 3 : les lignes traitées et l’ensemble des minutages sont signalés.

verbose

Valeur entière qui spécifie la quantité de sortie souhaitée. Si la valeur est 0, aucune sortie détaillée n’est imprimée au cours des calculs. Les valeurs entières de 1 à 4 fournissent des quantités d’informations croissantes. La valeur par défaut est 1.

computeContext

Définit le contexte dans lequel les calculs sont exécutés, spécifiés avec un contexte RxComputeContext valide. Actuellement, les contextes de calcul locaux et RxSpark sont pris en charge. Quand RxSpark est spécifié, la formation des modèles est effectuée de façon distribuée, et la génération d’ensembles est effectuée localement. Notez que le contexte de calcul ne peut pas être sans attente.

...

Arguments supplémentaires à passer directement au moteur de calcul Microsoft.

Détails

/coderxEnsemble est une fonction qui effectue l’apprentissage de différents types de modèles pour obtenir des performances prédictives supérieures à celles obtenues à partir d’un modèle unique.

Valeur

Objet rxEnsemble avec le modèle d’ensemble formé.

Exemples


 # 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)