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'

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

print(learner$model)
#> $regularization
#>       lambda   lambda.var lambda.freqs 
#>   0.11134353   0.02321124   1.00000000 
#> 
#> $freqs
#>   M   R 
#> 0.5 0.5 
#> 
#> $alpha
#>         M         R 
#> -4.490615  1.978726 
#> 
#> $beta
#>          V1      V10        V11       V12       V13      V14        V15
#> M  3.958683  2.82438  0.1596483  2.295463  1.427736 -1.14127  0.3418903
#> R -3.958683 -2.82438 -0.1596483 -2.295463 -1.427736  1.14127 -0.3418903
#>          V16        V17        V18        V19        V2        V20        V21
#> M -0.4023886 -0.5869297  0.3695478 -0.3989127  9.606152  0.1643607  0.3910842
#> R  0.4023886  0.5869297 -0.3695478  0.3989127 -9.606152 -0.1643607 -0.3910842
#>          V22     V23     V24        V25        V26        V27        V28
#> M  0.9419195  0.9095  1.2329 -0.4861234 -0.4621307 -0.6261146  0.3564667
#> R -0.9419195 -0.9095 -1.2329  0.4861234  0.4621307  0.6261146 -0.3564667
#>         V29        V3       V30       V31        V32        V33        V34
#> M  1.071528 -7.607575  1.230548 -1.935093  0.6900905  0.2994727 -0.9661645
#> R -1.071528  7.607575 -1.230548  1.935093 -0.6900905 -0.2994727  0.9661645
#>          V35        V36       V37        V38       V39        V4       V40
#> M  0.4367938 -0.4566805 -1.886549  0.3693228  1.365441  7.504189 -2.223606
#> R -0.4367938  0.4566805  1.886549 -0.3693228 -1.365441 -7.504189  2.223606
#>          V41        V42       V43        V44        V45       V46       V47
#> M -0.2989102  0.2916665  1.857603 -0.7257417  0.5409884  1.846006  1.713422
#> R  0.2989102 -0.2916665 -1.857603  0.7257417 -0.5409884 -1.846006 -1.713422
#>         V48       V49         V5       V50       V51       V52        V53
#> M  2.668074  5.341661  0.9491001 -8.316876 -3.736051 -4.565413  0.5481707
#> R -2.668074 -5.341661 -0.9491001  8.316876  3.736051  4.565413 -0.5481707
#>         V54       V55         V56       V57        V58       V59        V6
#> M  3.905155 -8.820551  0.05791033 -2.040046 -0.3246868  6.930738 -1.830848
#> R -3.905155  8.820551 -0.05791033  2.040046  0.3246868 -6.930738  1.830848
#>        V60        V7        V8        V9
#> M  1.61941 -3.298339 -2.516896  2.204759
#> R -1.61941  3.298339  2.516896 -2.204759
#> 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.2463768