Skip to contents

Survival support vector machine. Calls survivalsvm::survivalsvm() from survivalsvm.

Details

Four possible SVMs can be implemented, dependent on the type parameter. These correspond to predicting the survival time via regression (regression), predicting a continuous rank (vanbelle1, vanbelle2), or a hybrid of the two (hybrid). Whichever type is chosen determines how the crank predict type is calculated, but in any case all can be considered a valid continuous ranking.

makediff3 is recommended when using type = "hybrid".

Dictionary

This Learner can be instantiated via lrn():

lrn("surv.svm")

Meta Information

  • Task type: “surv”

  • Predict Types: “crank”, “response”

  • Feature Types: “logical”, “integer”, “numeric”, “character”, “factor”

  • Required Packages: mlr3, mlr3proba, mlr3extralearners, survivalsvm

Parameters

IdTypeDefaultLevelsRange
typecharacterregressionregression, vanbelle1, vanbelle2, hybrid-
diff.methcharacter-makediff1, makediff2, makediff3-
gammanumericNULL\((-\infty, \infty)\)
munumericNULL\((-\infty, \infty)\)
opt.methcharacterquadprogquadprog, ipop-
kernelcharacterlin_kernellin_kernel, add_kernel, rbf_kernel, poly_kernel-
kernel.parsuntyped--
sgf.svinteger5\([0, \infty)\)
sigfinteger7\([0, \infty)\)
maxiterinteger20\([0, \infty)\)
marginnumeric0.05\([0, \infty)\)
boundnumeric10\([0, \infty)\)
eig.tolnumeric1e-06\([0, \infty)\)
conv.tolnumeric1e-07\([0, \infty)\)
posd.tolnumeric1e-08\([0, \infty)\)

Prediction types

This learner returns up to two prediction types:

  1. crank: a vector containing the continuous ranking scores, where each score corresponds to a specific test observation.

  2. response: the survival time of each test observation, equal to -crank. This prediction type if only available for "type" equal to regression or hybrid.

Custom mlr3 parameters

  • gamma, mu have replaced gamma.mu so that it's easier to tune these separately. mu is only used when type = "hybrid".

References

Van Belle, Vanya, Pelckmans, Kristiaan, Van Huffel, Sabine, Suykens, AK J (2011). “Improved performance on high-dimensional survival data by application of Survival-SVM.” Bioinformatics, 27(1), 87–94.

Van Belle, Vanya, Pelckmans, Kristiaan, Van Huffel, Sabine, Suykens, AK J (2011). “Support vector methods for survival analysis: a comparison between ranking and regression approaches.” Artificial intelligence in medicine, 53(2), 107–118.

Shivaswamy, K P, Chu, Wei, Jansche, Martin (2007). “A support vector approach to censored targets.” In Seventh IEEE international conference on data mining (ICDM 2007), 655–660. IEEE.

See also

Author

RaphaelS1

Super classes

mlr3::Learner -> mlr3proba::LearnerSurv -> LearnerSurvSVM

Methods

Inherited methods


Method new()

Creates a new instance of this R6 class.

Usage


Method clone()

The objects of this class are cloneable with this method.

Usage

LearnerSurvSVM$clone(deep = FALSE)

Arguments

deep

Whether to make a deep clone.

Examples

set.seed(123)
# Define the Learner and set parameter values
learner = lrn("surv.svm", gamma = 0.1)
print(learner)
#> <LearnerSurvSVM:surv.svm>: Survival Support Vector Machine
#> * Model: -
#> * Parameters: gamma=0.1
#> * Packages: mlr3, mlr3proba, mlr3extralearners, survivalsvm
#> * Predict Types:  [crank], response
#> * Feature Types: logical, integer, numeric, character, factor
#> * Properties: -

# Define a Task
task = mlr3::tsk("rats")

# Create train and test set
ids = mlr3::partition(task)

# Train the learner on the training ids
learner$train(task, row_ids = ids$train)

# print the model
print(learner$model)
#> 
#> survivalsvm result
#> 
#> Call:
#> 
#>  survivalsvm::survivalsvm(formula = task$formula(), data = task$data(), gamma.mu = gamma.mu) 
#> 
#> Survival svm approach              : regression 
#> Type of Kernel                     : lin_kernel 
#> Optimization solver used           : quadprog 
#> Number of support vectors retained : 10 
#> survivalsvm version                : 0.0.5 

# Make predictions for the test rows
predictions = learner$predict(task, row_ids = ids$test)

# Score the predictions
predictions$score()
#> surv.cindex 
#>    0.493932