Compboost_internal: Internal Compboost Class

Compboost_internalR Documentation

Internal Compboost Class

Description

This class is the raw ⁠C++⁠ pendant and still at a very high-level. It is the base for the Compboost R6 class and provides many convenient wrapper to access data and execute methods by calling the ⁠C++⁠ methods.

Arguments

oob_response

(ResponseRegr | ResponseBinaryClassif)
The response object containing the target variable.

learning_rate

(numeric(1))
The learning rate.

stop_if_all_stopper_fulfilled

(logical(1))
Boolean to indicate which stopping strategy is used. If TRUE, the algorithm stops if the conditions of all loggers for stopping apply.

factory_list

(BlearnerFactoryList)
List of base learner factories from which one base learner is selected in each iteration by using the

loss

(LossQuadratic | LossBinomial | LossHuber | LossAbsolute | LossQuantile)
An initialized S4 loss object (requires to call ⁠Loss*$new(...)⁠). See the respective help page for further information.

logger_list

(LoggerList)
The LoggerList object with all loggers.

optimizer

(OptimizerCoordinateDescent | OptimizerCoordinateDescentLineSearch | OptimizerAGBM | OptimizerCosineAnnealing)
An initialized S4 optimizer object (requires to call Optimizer*.new(..). See the respective help page for further information.

Format

S4 object.

Usage

Compboost$new(response, learning_rate, stop_if_all_stopper_fulfilled,
  factory_list, loss, logger_list, optimizer)

Fields

This class doesn't contain public fields.

Methods

  • ⁠$train()⁠: ⁠() -> ()⁠

  • ⁠$continueTraining()⁠: ⁠() -> ()⁠

  • ⁠$getLearningRate()⁠: ⁠() -> numeric(1)⁠

  • ⁠$getPrediction()⁠: ⁠() -> matrix()⁠

  • ⁠$getSelectedBaselearner()⁠: ⁠() -> character()⁠

  • ⁠$getLoggerData()⁠: ⁠() -> list(character(), matrix())⁠

  • ⁠$getEstimatedParameter()⁠: ⁠() -> list(matrix())⁠

  • ⁠$getParameterAtIteration()⁠: ⁠() -> list(matrix())⁠

  • ⁠$getParameterMatrix()⁠: ⁠() -> matrix()⁠

  • ⁠$predictFactoryTrainData()⁠: ⁠() -> matrix()⁠

  • ⁠$predictFactoryNewData()⁠: ⁠list(Data*) -> matrix()⁠

  • ⁠$predictIndividualTrainData()⁠: ⁠() -> list(matrix())⁠ Get the linear contribution of each base learner for the training data.

  • ⁠$predictIndividual()⁠: ⁠list(Data*) -> list(matrix())⁠ Get the linear contribution of each base learner for new data.

  • ⁠$predict()⁠: ⁠list(Data*), logical(1) -> matrix()⁠

  • ⁠$summarizeCompboost()⁠: ⁠() -> ()⁠

  • ⁠$isTrained()⁠: ⁠() -> logical(1)⁠

  • ⁠$setToIteration()⁠: ⁠() -> ()⁠

  • ⁠$saveJson()⁠: ⁠() -> ()⁠

  • ⁠$getOffset()⁠: ⁠() -> numeric(1) | matrix()⁠

  • ⁠$getRiskVector()⁠: ⁠() -> numeric()⁠

  • ⁠$getResponse()⁠: ⁠() -> Response*⁠

  • ⁠$getOptimizer()⁠: ⁠() -> Optimizer*⁠

  • ⁠$getLoss()⁠: ⁠() -> Loss*⁠

  • ⁠$getLoggerList()⁠: ⁠() -> LoggerList⁠

  • ⁠$getBaselearnerList()⁠: ⁠() -> BlearnerFactoryList⁠

  • ⁠$useGlobalStopping()⁠: ⁠() -> logical(1)*⁠

  • ⁠$getFactoryMap()⁠: ⁠() -> list(Baselearner*)⁠

  • ⁠$getDataMap()⁠: ⁠() -> list(Data*)⁠

Examples


# Some data:
df = mtcars
df$mpg_cat = ifelse(df$mpg > 20, "high", "low")

# # Create new variable to check the polynomial base learner with degree 2:
# df$hp2 = df[["hp"]]^2

# Data for the baselearner are matrices:
X_hp = as.matrix(df[["hp"]])
X_wt = as.matrix(df[["wt"]])

# Target variable:
response = ResponseBinaryClassif$new("mpg_cat", "high", df[["mpg_cat"]])

data_source_hp = InMemoryData$new(X_hp, "hp")
data_source_wt = InMemoryData$new(X_wt, "wt")

# List for oob logging:
oob_data = list(data_source_hp, data_source_wt)

# List to test prediction on newdata:
test_data = oob_data

# Factories:
linear_factory_hp = BaselearnerPolynomial$new(data_source_hp,
  list(degree = 1, intercept = TRUE))
linear_factory_wt = BaselearnerPolynomial$new(data_source_wt,
  list(degree = 1, intercept = TRUE))
quadratic_factory_hp = BaselearnerPolynomial$new(data_source_hp,
  list(degree = 2, intercept = TRUE))
spline_factory_wt = BaselearnerPSpline$new(data_source_wt,
  list(degree = 3, n_knots = 10, penalty = 2, differences = 2))

# Create new factory list:
factory_list = BlearnerFactoryList$new()

# Register factories:
factory_list$registerFactory(linear_factory_hp)
factory_list$registerFactory(linear_factory_wt)
factory_list$registerFactory(quadratic_factory_hp)
factory_list$registerFactory(spline_factory_wt)

# Define loss:
loss_bin = LossBinomial$new()

# Define optimizer:
optimizer = OptimizerCoordinateDescent$new()

## Logger

# Define logger. We want just the iterations as stopper but also track the
# time, inbag risk and oob risk:
log_iterations  = LoggerIteration$new(" iteration_logger", TRUE, 500)
log_time        = LoggerTime$new("time_logger", FALSE, 500, "microseconds")

# Define new logger list:
logger_list = LoggerList$new()

# Register the logger:
logger_list$registerLogger(log_iterations)
logger_list$registerLogger(log_time)

# Run compboost:
# --------------

# Initialize object:
cboost = Compboost_internal$new(
  response      = response,
  learning_rate = 0.05,
  stop_if_all_stopper_fulfilled = FALSE,
  factory_list = factory_list,
  loss         = loss_bin,
  logger_list  = logger_list,
  optimizer    = optimizer
)

# Train the model (we want to print the trace):
cboost$train(trace = 50)
cboost

# Get estimated parameter:
cboost$getEstimatedParameter()

# Get trace of selected base learner:
cboost$getSelectedBaselearner()

# Set to iteration 200:
cboost$setToIteration(200, 30)

# Get new parameter values:
cboost$getEstimatedParameter()


schalkdaniel/compboost documentation built on April 15, 2023, 9:03 p.m.