Skip to contents

Shrinkage Discriminant Analysis for classification. Calls sda::sda() from sda.

Dictionary

This Learner can be instantiated via lrn():

lrn("classif.sda")

Meta Information

  • Task type: “classif”

  • Predict Types: “response”, “prob”

  • Feature Types: “integer”, “numeric”

  • Required Packages: mlr3, sda

Parameters

IdTypeDefaultLevelsRange
lambdanumeric-\([0, 1]\)
lambda.varnumeric-\([0, 1]\)
lambda.freqsnumeric-\([0, 1]\)
diagonallogicalFALSETRUE, FALSE-
verboselogicalFALSETRUE, 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

Author

annanzrv

Super classes

mlr3::Learner -> mlr3::LearnerClassif -> LearnerClassifSda

Methods

Inherited methods


LearnerClassifSda$new()

Creates a new instance of this R6 class.

Usage


LearnerClassifSda$clone()

The objects of this class are cloneable with this method.

Usage

LearnerClassifSda$clone(deep = FALSE)

Arguments

deep

Whether to make a deep clone.

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