mlr_pipeops_targetmutate: Transform a Target by a Function

mlr_pipeops_targetmutateR Documentation

Transform a Target by a Function


Changes the target of a Task according to a function given as hyperparameter. An inverter-function that undoes the transformation during prediction must also be given.


R6Class object inheriting from PipeOpTargetTrafo/PipeOp


PipeOpTargetMutate$new(id = "targetmutate", param_vals = list(), new_task_type = NULL)
  • id :: character(1)
    Identifier of resulting object, default "targetmutate".

  • param_vals :: named list
    List of hyperparameter settings, overwriting the hyperparameter settings that would otherwise be set during construction. Default list().

  • new_task_type :: character(1) | NULL
    The task type to which the output is converted, must be one of mlr_reflections$task_types$type. Defaults to NULL: no change in task type.

Input and Output Channels

Input and output channels are inherited from PipeOpTargetTrafo.


The ⁠$state⁠ is left empty (list()).


The parameters are the parameters inherited from PipeOpTargetTrafo, as well as:

  • trafo :: function data.table -> data.table
    Transformation function for the target. Should only be a function of the target, i.e., taking a single data.table argument, typically with one column. The return value is used as the new target of the resulting Task. To change target names, change the column name of the data using e.g. setnames().
    Note that this function also gets called during prediction and should thus gracefully handle NA values.
    Initialized to identity().

  • inverter :: function data.table -> data.table | named list
    Inversion of the transformation function for the target. Called on a data.table created from a Prediction using, without the ⁠$row_ids⁠ and ⁠$truth⁠ columns, and should return a data.table or named list that contains the new relevant slots of a Prediction subclass (e.g., ⁠$response⁠, ⁠$prob⁠, ⁠$se⁠, ...). Initialized to identity().


Overloads PipeOpTargetTrafo's .transform() and .invert() functions. Should be used in combination with PipeOpTargetInvert.


Fields inherited from PipeOp, as well as:

  • new_task_type :: character(1)
    new_task_type construction argument. Read-only.


Only methods inherited from PipeOpTargetTrafo/PipeOp.

See Also

Other PipeOps: PipeOpEnsemble, PipeOpImpute, PipeOpTargetTrafo, PipeOpTaskPreprocSimple, PipeOpTaskPreproc, PipeOp, mlr_pipeops_boxcox, mlr_pipeops_branch, mlr_pipeops_chunk, mlr_pipeops_classbalancing, mlr_pipeops_classifavg, mlr_pipeops_classweights, mlr_pipeops_colapply, mlr_pipeops_collapsefactors, mlr_pipeops_colroles, mlr_pipeops_copy, mlr_pipeops_datefeatures, mlr_pipeops_encodeimpact, mlr_pipeops_encodelmer, mlr_pipeops_encode, mlr_pipeops_featureunion, mlr_pipeops_filter, mlr_pipeops_fixfactors, mlr_pipeops_histbin, mlr_pipeops_ica, mlr_pipeops_imputeconstant, mlr_pipeops_imputehist, mlr_pipeops_imputelearner, mlr_pipeops_imputemean, mlr_pipeops_imputemedian, mlr_pipeops_imputemode, mlr_pipeops_imputeoor, mlr_pipeops_imputesample, mlr_pipeops_kernelpca, mlr_pipeops_learner, mlr_pipeops_missind, mlr_pipeops_modelmatrix, mlr_pipeops_multiplicityexply, mlr_pipeops_multiplicityimply, mlr_pipeops_mutate, mlr_pipeops_nmf, mlr_pipeops_nop, mlr_pipeops_ovrsplit, mlr_pipeops_ovrunite, mlr_pipeops_pca, mlr_pipeops_proxy, mlr_pipeops_quantilebin, mlr_pipeops_randomprojection, mlr_pipeops_randomresponse, mlr_pipeops_regravg, mlr_pipeops_removeconstants, mlr_pipeops_renamecolumns, mlr_pipeops_replicate, mlr_pipeops_scalemaxabs, mlr_pipeops_scalerange, mlr_pipeops_scale, mlr_pipeops_select, mlr_pipeops_smote, mlr_pipeops_spatialsign, mlr_pipeops_subsample, mlr_pipeops_targetinvert, mlr_pipeops_targettrafoscalerange, mlr_pipeops_textvectorizer, mlr_pipeops_threshold, mlr_pipeops_tunethreshold, mlr_pipeops_unbranch, mlr_pipeops_updatetarget, mlr_pipeops_vtreat, mlr_pipeops_yeojohnson, mlr_pipeops


task = tsk("boston_housing")
po = PipeOpTargetMutate$new("logtrafo", param_vals = list(
  trafo = function(x) log(x, base = 2),
  inverter = function(x) list(response = 2 ^ x$response))
# Note that this example is ill-equipped to work with
# `predict_type == "se"` predictions.


g = Graph$new()
g$add_edge(src_id = "logtrafo", dst_id = "targetinvert",
  src_channel = 1, dst_channel = 1)
g$add_edge(src_id = "logtrafo", dst_id = "regr.rpart",
  src_channel = 2, dst_channel = 1)
g$add_edge(src_id = "regr.rpart", dst_id = "targetinvert",
  src_channel = 1, dst_channel = 2)


#syntactic sugar using ppl():
tt = ppl("targettrafo", graph = PipeOpLearner$new(LearnerRegrRpart$new()))
tt$param_set$values$targetmutate.trafo = function(x) log(x, base = 2)
tt$param_set$values$targetmutate.inverter = function(x) list(response = 2 ^ x$response)

mlr3pipelines documentation built on May 31, 2023, 9:26 p.m.