Base class for handling target transformation operations. Target transformations are different from feature transformation because they have to be "inverted" after prediction. The target is transformed during the training phase and information to invert this transformation is sent along to PipeOpTargetInvert which then inverts this transformation during the prediction phase. This inversion may need info about both the training and the prediction data.

Users can overload up to four private$-functions: .get_state() (optional), .transform() (mandatory), .train_invert() (optional), and .invert() (mandatory).


Abstract R6Class inheriting from PipeOp.


PipeOpTargetTrafo$new(id, param_set = ParamSet$new(), param_vals = list() packages = character(0), task_type_in = "Task", task_type_out = task_type_in, tags = NULL)
  • id :: character(1)
    Identifier of resulting object. See $id slot of PipeOp.

  • param_set :: ParamSet
    Parameter space description. This should be created by the subclass and given to super$initialize().

  • param_vals :: named list
    List of hyperparameter settings, overwriting the hyperparameter settings given in param_set. The subclass should have its own param_vals parameter and pass it on to super$initialize(). Default list().

  • task_type_in :: character(1)
    The class of Task that should be accepted as input. This should generally be a character(1) identifying a type of Task, e.g. "Task", "TaskClassif" or "TaskRegr" (or another subclass introduced by other packages). Default is "Task".

  • task_type_out :: character(1)
    The class of Task that is produced as output. This should generally be a character(1) identifying a type of Task, e.g. "Task", "TaskClassif" or "TaskRegr" (or another subclass introduced by other packages). Default is the value of task_type_in.

  • packages :: character
    Set of all required packages for the PipeOp's methods. See $packages slot. Default is character(0).

  • tags :: character | NULL
    Tags of the resulting PipeOp. This is added to the tag "target transform". Default NULL.

Input and Output Channels

PipeOpTargetTrafo has one input channels named "input" taking a Task (or whatever class was specified by the task_type during construction) both during training and prediction.

PipeOpTargetTrafo has two output channels named "fun" and "output". During training, "fun" returns NULL and during prediction, "fun" returns a function that can later be used to invert the transformation done during training according to the overloaded .train_invert() and .invert() functions. "output" returns the modified input Task (or task_type) according to the overloaded transform() function both during training and prediction.


The $state is a named list and should be returned explicitly by the user in the overloaded .get_state() function.


PipeOpTargetTrafo is an abstract class inheriting from PipeOp. It implements the private$.train() and private$.predict() functions. These functions perform checks and go on to call .get_state(), .transform(), .train_invert(). .invert() is packaged and sent along the "fun" output to be applied to a Prediction by PipeOpTargetInvert. A subclass of PipeOpTargetTrafo should implement these functions and be used in combination with PipeOpTargetInvert.


Fields inherited from PipeOp.


Methods inherited from PipeOp, as well as:

  • .get_state(task)
    (Task) -> list
    Called by PipeOpTargetTrafo's implementation of private$.train(). Takes a single Task as input and returns a list to set the $state. .get_state() will be called a single time during training right before .transform() is called. The return value (i.e. the $state) should contain info needed in .transform() as well as in .invert().
    The base implementation returns list() and should be overloaded if setting the state is desired.

  • .transform(task, phase)
    (Task, character(1)) -> Task
    Called by PipeOpTargetTrafo's implementation of private$.train() and private$.predict(). Takes a single Task as input and modifies it. This should typically consist of calculating a new target and modifying the Task by using the [convert_task] function. .transform() will be called during training and prediction because the target (and if needed also type) of the input Task must be transformed both times. Note that unlike $.train(), the argument is not a list but a singular Task, and the return object is also not a list but a singular Task. The phase argument is "train" during training phase and "predict" during prediction phase and can be used to enable different behaviour during training and prediction. When phase is "train", the $state slot (as previously set by .get_state()) may also be modified, alternatively or in addition to overloading .get_state().
    The input should not be cloned and if possible should be changed in-place.
    This function is abstract and should be overloaded by inheriting classes.

  • .train_invert(task)
    (Task) -> any
    Called by PipeOpTargetTrafo's implementation of private$.predict(). Takes a single Task as input and returns an arbitrary value that will be given as predict_phase_state to .invert(). This should not modify the input Task .
    The base implementation returns a list with a single element, the $truth column of the Task, and should be overloaded if a more training-phase-dependent state is desired.

  • .invert(prediction, predict_phase_state)
    (Prediction, any) -> Prediction
    Takes a Prediction and a predict_phase_state object as input and inverts the prediction. This function is sent as "fun" to PipeOpTargetInvert.
    This function is abstract and should be overloaded by inheriting classes. Care should be taken that the predict_type of the Prediction being inverted is handled well.

  • .invert_help(predict_phase_state)
    (predict_phase_state object) -> function
    Helper function that packages .invert() that can later be used for the inversion.

See also

Other mlr3pipelines backend related: Graph, PipeOpTaskPreprocSimple, PipeOpTaskPreproc, PipeOp, mlr_graphs, mlr_pipeops_updatetarget, mlr_pipeops

Other PipeOps: PipeOpEnsemble, PipeOpImpute, PipeOpProxy, 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_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_nop, mlr_pipeops_ovrsplit, mlr_pipeops_ovrunite, mlr_pipeops_pca, mlr_pipeops_quantilebin, 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_targetmutate, mlr_pipeops_targettrafoscalerange, mlr_pipeops_textvectorizer, mlr_pipeops_threshold, mlr_pipeops_unbranch, mlr_pipeops_updatetarget, mlr_pipeops_yeojohnson, mlr_pipeops