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

print(learner$model)
#> $regularization
#>       lambda   lambda.var lambda.freqs 
#>   0.10988099   0.02017287   1.00000000 
#> 
#> $freqs
#>   M   R 
#> 0.5 0.5 
#> 
#> $alpha
#>         M         R 
#> -4.577491  1.722474 
#> 
#> $beta
#>          V1       V10       V11       V12       V13        V14         V15
#> M  2.381774  2.263576  2.896455  1.381973  1.359632 -0.5823447  0.03958994
#> R -2.381774 -2.263576 -2.896455 -1.381973 -1.359632  0.5823447 -0.03958994
#>          V16       V17        V18       V19        V2      V20        V21
#> M -0.9173366 -0.991168 -0.2529045  0.439527  2.934171  1.13024  0.4060395
#> R  0.9173366  0.991168  0.2529045 -0.439527 -2.934171 -1.13024 -0.4060395
#>          V22        V23       V24        V25       V26        V27        V28
#> M -0.3441307  0.9665643  1.662665 -0.9261884 -1.066656  0.2128543  0.7002912
#> R  0.3441307 -0.9665643 -1.662665  0.9261884  1.066656 -0.2128543 -0.7002912
#>          V29       V3        V30       V31         V32        V33         V34
#> M -0.1765646 -2.65703  0.4053427 -1.610869 -0.05083671 -0.2415409 -0.09671183
#> R  0.1765646  2.65703 -0.4053427  1.610869  0.05083671  0.2415409  0.09671183
#>         V35       V36       V37       V38       V39        V4       V40
#> M  1.137166 -1.914781 -1.811469  1.679586  1.749538  4.966688 -2.162126
#> R -1.137166  1.914781  1.811469 -1.679586 -1.749538 -4.966688  2.162126
#>          V41        V42        V43         V44       V45       V46       V47
#> M  0.7773552  0.1540102 -0.2132574  0.09551115  1.583804  4.386299  4.864782
#> R -0.7773552 -0.1540102  0.2132574 -0.09551115 -1.583804 -4.386299 -4.864782
#>         V48       V49        V5       V50       V51       V52       V53
#> M  1.044872  10.13124  2.283336 -23.22618 -6.753243 -10.73949  4.351085
#> R -1.044872 -10.13124 -2.283336  23.22618  6.753243  10.73949 -4.351085
#>         V54       V55       V56       V57       V58       V59        V6
#> M -1.102936 -14.07191  6.873144 -18.30104  5.017732  7.452966 -1.136884
#> R  1.102936  14.07191 -6.873144  18.30104 -5.017732 -7.452966  1.136884
#>         V60        V7       V8         V9
#> M -5.854724  1.528359 -2.37647 -0.1201771
#> R  5.854724 -1.528359  2.37647  0.1201771
#> 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.2753623