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 etaverage
pour calculer la moyenne des sorties de modèle individuelles etvote
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)