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


Method new()

Creates a new instance of this R6 class.

Usage


Method 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.0211 
#> 
#> 
#> Computing inverse correlation matrix (pooled across classes)
#> Estimating optimal shrinkage intensity lambda (correlation matrix): 0.1087 

print(learner$model)
#> $regularization
#>       lambda   lambda.var lambda.freqs 
#>   0.10874806   0.02107419   1.00000000 
#> 
#> $freqs
#>   M   R 
#> 0.5 0.5 
#> 
#> $alpha
#>         M         R 
#> -5.326947  2.790367 
#> 
#> $beta
#>           V1       V10       V11       V12       V13         V14        V15
#> M  0.5283839 -1.381904  2.180255  3.059428  1.019578 -0.05025516  0.2324554
#> R -0.5283839  1.381904 -2.180255 -3.059428 -1.019578  0.05025516 -0.2324554
#>          V16       V17        V18       V19        V2        V20        V21
#> M -0.2465616 -1.539691  0.1890802  1.414956  5.415747  0.4356225  0.4010725
#> R  0.2465616  1.539691 -0.1890802 -1.414956 -5.415747 -0.4356225 -0.4010725
#>          V22        V23       V24        V25       V26         V27        V28
#> M  0.1401171  0.6419048  1.166962 -0.2462955 -0.978385  0.03050039  0.8438921
#> R -0.1401171 -0.6419048 -1.166962  0.2462955  0.978385 -0.03050039 -0.8438921
#>          V29        V3       V30       V31        V32        V33       V34
#> M  0.3918212 -7.494441  1.331511 -2.099796  0.6801615 -0.1493048 -1.033623
#> R -0.3918212  7.494441 -1.331511  2.099796 -0.6801615  0.1493048  1.033623
#>          V35       V36       V37       V38       V39        V4       V40
#> M  0.8573202 -1.145283 -1.408475  1.540682  1.094805  5.709568 -2.354759
#> R -0.8573202  1.145283  1.408475 -1.540682 -1.094805 -5.709568  2.354759
#>         V41          V42        V43        V44        V45       V46       V47
#> M  1.679257 -0.009804404  0.8937018  0.6969013  0.8490042  1.791094  3.653284
#> R -1.679257  0.009804404 -0.8937018 -0.6969013 -0.8490042 -1.791094 -3.653284
#>        V48       V49        V5       V50       V51        V52       V53
#> M  1.62974  8.528806  2.010654 -16.37913 -13.39746  0.8613846  2.741465
#> R -1.62974 -8.528806 -2.010654  16.37913  13.39746 -0.8613846 -2.741465
#>         V54       V55       V56       V57       V58       V59        V6
#> M  4.627921 -14.80942 -0.737033 -2.047419  5.279764  9.463912 -2.737783
#> R -4.627921  14.80942  0.737033  2.047419 -5.279764 -9.463912  2.737783
#>         V60        V7        V8        V9
#> M -1.281988 -2.751464 -0.667652  2.645404
#> R  1.281988  2.751464  0.667652 -2.645404
#> 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.2028986