Spectral clustering.
Calls kernlab::specc() from package kernlab.
The centers parameter is set to 2 by default since kernlab::specc()
doesn't have a default value for the number of clusters.
Kernel parameters have to be passed directly and not by using the kpar list in kernlab::specc().
There is no predict method for kernlab::specc(), so the method
returns cluster labels for the training data.
Dictionary
This mlr3::Learner can be instantiated via the dictionary mlr3::mlr_learners or with the associated sugar function mlr3::lrn():
Meta Information
Task type: “clust”
Predict Types: “partition”
Feature Types: “logical”, “integer”, “numeric”
Required Packages: mlr3, mlr3cluster, kernlab
Parameters
| Id | Type | Default | Levels | Range |
| centers | integer | - | \([1, \infty)\) | |
| kernel | character | rbfdot | rbfdot, polydot, vanilladot, tanhdot, laplacedot, besseldot, anovadot, splinedot | - |
| sigma | numeric | - | \([0, \infty)\) | |
| degree | integer | 3 | \([1, \infty)\) | |
| scale | numeric | 1 | \([0, \infty)\) | |
| offset | numeric | 1 | \((-\infty, \infty)\) | |
| order | integer | 1 | \((-\infty, \infty)\) | |
| nystrom.red | logical | FALSE | TRUE, FALSE | - |
| nystrom.sample | integer | - | \([1, \infty)\) | |
| iterations | integer | 200 | \([1, \infty)\) | |
| mod.sample | numeric | 0.75 | \([0, 1]\) |
References
Karatzoglou, Alexandros, Smola, Alexandros, Hornik, Kurt, Zeileis, Achim (2004). “kernlab-an S4 package for kernel methods in R.” Journal of statistical software, 11, 1–20.
Ng, Y A, Jordan, I M, Weiss, Yair (2001). “On Spectral Clustering: Analysis and an Algorithm.” In Advances in Neural Information Processing Systems, volume 14.
See also
Chapter in the mlr3book: https://mlr3book.mlr-org.com/chapters/chapter2/data_and_basic_modeling.html#sec-learners
Package mlr3extralearners for more learners.
as.data.table(mlr_learners)for a table of available Learners in the running session (depending on the loaded packages).mlr3pipelines to combine learners with pre- and postprocessing steps.
Extension packages for additional task types:
mlr3proba for probabilistic supervised regression and survival analysis.
mlr3cluster for unsupervised clustering.
mlr3tuning for tuning of hyperparameters, mlr3tuningspaces for established default tuning spaces.
Other Learner:
mlr_learners_clust.MBatchKMeans,
mlr_learners_clust.SimpleKMeans,
mlr_learners_clust.agnes,
mlr_learners_clust.ap,
mlr_learners_clust.bico,
mlr_learners_clust.birch,
mlr_learners_clust.clara,
mlr_learners_clust.cmeans,
mlr_learners_clust.cobweb,
mlr_learners_clust.dbscan,
mlr_learners_clust.dbscan_fpc,
mlr_learners_clust.diana,
mlr_learners_clust.em,
mlr_learners_clust.fanny,
mlr_learners_clust.featureless,
mlr_learners_clust.ff,
mlr_learners_clust.hclust,
mlr_learners_clust.hdbscan,
mlr_learners_clust.kkmeans,
mlr_learners_clust.kmeans,
mlr_learners_clust.kproto,
mlr_learners_clust.mclust,
mlr_learners_clust.meanshift,
mlr_learners_clust.optics,
mlr_learners_clust.pam,
mlr_learners_clust.protoclust,
mlr_learners_clust.xmeans
Super classes
mlr3::Learner -> mlr3cluster::LearnerClust -> LearnerClustSpectral
Examples
# Define the Learner and set parameter values
learner = lrn("clust.specc")
print(learner)
#>
#> ── <LearnerClustSpectral> (clust.specc): Spectral Clustering ───────────────────
#> • Model: -
#> • Parameters: centers=2
#> • Packages: mlr3, mlr3cluster, and kernlab
#> • Predict Types: [partition]
#> • Feature Types: logical, integer, and numeric
#> • Encapsulation: none (fallback: -)
#> • Properties: complete, exclusive, and partitional
#> • Other settings: use_weights = 'error'
# Define a Task
task = tsk("usarrests")
# Train the learner on the task
learner$train(task)
# Print the model
print(learner$model)
#> Spectral Clustering object of class "specc"
#>
#> Cluster memberships:
#>
#> 2 2 2 2 2 2 1 2 2 2 1 1 2 1 1 1 1 2 1 2 2 2 1 2 2 1 1 2 1 2 2 2 2 1 1 2 2 1 2 2 1 2 2 1 1 2 2 1 1 2
#>
#> Gaussian Radial Basis kernel function.
#> Hyperparameter : sigma = 0.0119047619047598
#>
#> Centers:
#> [,1] [,2] [,3] [,4]
#> [1,] 87.5500 4.27000 14.39000 59.75
#> [2,] 226.2333 10.13333 25.79333 69.40
#>
#> Cluster size:
#> [1] 20 30
#>
#> Within-cluster sum of squares:
#> [1] 213075.9 1799973.6
#>
# Make predictions for the task
prediction = learner$predict(task)
#> Warning:
#> ✖ Learner 'clust.specc' doesn't predict on new data and predictions may not
#> make sense on new data.
#> → Class: Mlr3WarningInput
# Score the predictions
prediction$score(task = task)
#> clust.dunn
#> 0.1323762