Survival Support Vector Machine Learner
mlr_learners_surv.svm.Rd
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"
.
Meta Information
Task type: “surv”
Predict Types: “crank”, “response”
Feature Types: “logical”, “integer”, “numeric”, “character”, “factor”
Required Packages: mlr3, mlr3proba, mlr3extralearners, survivalsvm
Parameters
Id | Type | Default | Levels | Range |
type | character | regression | regression, vanbelle1, vanbelle2, hybrid | - |
diff.meth | character | - | makediff1, makediff2, makediff3 | - |
gamma | numeric | NULL | \((-\infty, \infty)\) | |
mu | numeric | NULL | \((-\infty, \infty)\) | |
opt.meth | character | quadprog | quadprog, ipop | - |
kernel | character | lin_kernel | lin_kernel, add_kernel, rbf_kernel, poly_kernel | - |
kernel.pars | untyped | - | - | |
sgf.sv | integer | 5 | \([0, \infty)\) | |
sigf | integer | 7 | \([0, \infty)\) | |
maxiter | integer | 20 | \([0, \infty)\) | |
margin | numeric | 0.05 | \([0, \infty)\) | |
bound | numeric | 10 | \([0, \infty)\) | |
eig.tol | numeric | 1e-06 | \([0, \infty)\) | |
conv.tol | numeric | 1e-07 | \([0, \infty)\) | |
posd.tol | numeric | 1e-08 | \([0, \infty)\) |
Prediction types
This learner returns up to two prediction types:
crank
: a vector containing the continuous ranking scores, where each score corresponds to a specific test observation.response
: the survival time of each test observation, equal to-crank
. This prediction type if only available for"type"
equal toregression
orhybrid
.
Custom mlr3 parameters
gamma
,mu
have replacedgamma.mu
so that it's easier to tune these separately.mu
is only used whentype = "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
as.data.table(mlr_learners)
for a table of available Learners in the running session (depending on the loaded packages).Chapter in the mlr3book: https://mlr3book.mlr-org.com/basics.html#learners
mlr3learners for a selection of recommended learners.
mlr3cluster for unsupervised clustering learners.
mlr3pipelines to combine learners with pre- and postprocessing steps.
mlr3tuning for tuning of hyperparameters, mlr3tuningspaces for established default tuning spaces.
Super classes
mlr3::Learner
-> mlr3proba::LearnerSurv
-> LearnerSurvSVM
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