Shrinkage Discriminant Analysis for classification.
Calls sda::sda() from sda.
Parameters
| Id | Type | Default | Levels | Range |
| lambda | numeric | - | \([0, 1]\) | |
| lambda.var | numeric | - | \([0, 1]\) | |
| lambda.freqs | numeric | - | \([0, 1]\) | |
| diagonal | logical | FALSE | TRUE, FALSE | - |
| verbose | logical | FALSE | TRUE, FALSE | - |
References
Ahdesmaeki, Miika, Strimmer, Korbinian (2010). “Feature selection in omics prediction problems using cat scores and false nondiscovery rate control.” The Annals of Applied Statistics, 4(1). ISSN 1932-6157. doi:10.1214/09-aoas277 . http://dx.doi.org/10.1214/09-AOAS277.
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/chapters/chapter2/data_and_basic_modeling.html#sec-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 -> mlr3::LearnerClassif -> LearnerClassifSda
Methods
Inherited methods
mlr3::Learner$base_learner()mlr3::Learner$configure()mlr3::Learner$encapsulate()mlr3::Learner$format()mlr3::Learner$help()mlr3::Learner$predict()mlr3::Learner$predict_newdata()mlr3::Learner$print()mlr3::Learner$reset()mlr3::Learner$selected_features()mlr3::Learner$train()mlr3::LearnerClassif$predict_newdata_fast()
Examples
# Define the Learner
learner = lrn("classif.sda")
print(learner)
#>
#> ── <LearnerClassifSda> (classif.sda): Shrinkage Discriminant Analysis ──────────
#> • Model: -
#> • Parameters: list()
#> • Packages: mlr3 and sda
#> • Predict Types: [response] and prob
#> • Feature Types: integer and numeric
#> • Encapsulation: none (fallback: -)
#> • Properties: multiclass and twoclass
#> • Other settings: use_weights = 'error', predict_raw = 'FALSE'
# Define a Task
task = tsk("sonar")
# Create train and test set
ids = partition(task)
# Train the learner on the training ids
learner$train(task, row_ids = ids$train)
#> Number of variables: 60
#> Number of observations: 139
#> Number of classes: 2
#>
#> Estimating optimal shrinkage intensity lambda.freq (frequencies): 1
#> Estimating variances (pooled across classes)
#> Estimating optimal shrinkage intensity lambda.var (variance vector): 0.0221
#>
#>
#> Computing inverse correlation matrix (pooled across classes)
#> Estimating optimal shrinkage intensity lambda (correlation matrix): 0.1106
print(learner$model)
#> $regularization
#> lambda lambda.var lambda.freqs
#> 0.11060317 0.02208479 1.00000000
#>
#> $freqs
#> M R
#> 0.5 0.5
#>
#> $alpha
#> M R
#> -3.642686 1.257691
#>
#> $beta
#> V1 V10 V11 V12 V13 V14 V15
#> M 2.757122 0.367275 2.912711 2.077655 0.186421 0.3455101 -0.1116356
#> R -2.757122 -0.367275 -2.912711 -2.077655 -0.186421 -0.3455101 0.1116356
#> V16 V17 V18 V19 V2 V20 V21
#> M -0.8036134 -1.018512 0.1711575 -0.1449267 4.056976 0.5356863 0.5048364
#> R 0.8036134 1.018512 -0.1711575 0.1449267 -4.056976 -0.5356863 -0.5048364
#> V22 V23 V24 V25 V26 V27 V28
#> M 0.2661785 0.3182915 0.8612578 -0.2353852 -0.3448584 0.5481818 0.2747119
#> R -0.2661785 -0.3182915 -0.8612578 0.2353852 0.3448584 -0.5481818 -0.2747119
#> V29 V3 V30 V31 V32 V33 V34
#> M -0.3373378 -10.18233 1.042247 -2.343374 0.3564648 0.1695248 -0.4647937
#> R 0.3373378 10.18233 -1.042247 2.343374 -0.3564648 -0.1695248 0.4647937
#> V35 V36 V37 V38 V39 V4 V40
#> M 0.4961615 -0.5704156 -1.19844 0.330756 0.7896242 7.047656 -1.379963
#> R -0.4961615 0.5704156 1.19844 -0.330756 -0.7896242 -7.047656 1.379963
#> V41 V42 V43 V44 V45 V46 V47
#> M 0.4857354 -0.2751077 0.2827808 0.05189264 1.041063 1.892184 2.922062
#> R -0.4857354 0.2751077 -0.2827808 -0.05189264 -1.041063 -1.892184 -2.922062
#> V48 V49 V5 V50 V51 V52 V53
#> M 3.050062 7.43509 0.4649194 -11.59005 -6.11268 3.478554 0.1348934
#> R -3.050062 -7.43509 -0.4649194 11.59005 6.11268 -3.478554 -0.1348934
#> V54 V55 V56 V57 V58 V59 V6
#> M -0.5776438 -11.10494 -0.5905278 -4.093243 7.102361 7.475997 2.048161
#> R 0.5776438 11.10494 0.5905278 4.093243 -7.102361 -7.475997 -2.048161
#> V60 V7 V8 V9
#> M -0.03361537 -3.054725 -2.51633 1.495974
#> R 0.03361537 3.054725 2.51633 -1.495974
#> attr(,"class")
#> [1] "shrinkage"
#>
#> attr(,"class")
#> [1] "sda"
# Make predictions for the test rows
predictions = learner$predict(task, row_ids = ids$test)
#> Prediction uses 60 features.
# Score the predictions
predictions$score()
#> classif.ce
#> 0.1884058