Finite Mixture Model Clustering Learner
Source:R/LearnerClustFlexmix.R
mlr_learners_clust.flexmix.RdFinite mixture model clustering via the EM algorithm.
Calls flexmix::flexmix() from package flexmix.
The component model is selected through the model parameter, exposing the multivariate normal, univariate normal,
multivariate binary, and multivariate Poisson drivers shipped with flexmix.
The predict method calls flexmix::clusters() for cluster assignments and flexmix::posterior() for component
probabilities on new data.
Note that EM can prune components whose prior falls below minprior during fitting, so the final number of
components may be smaller than k.
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”, “prob”
Feature Types: “logical”, “integer”, “numeric”
Required Packages: mlr3, mlr3cluster, flexmix
Parameters
| Id | Type | Default | Levels | Range |
| k | integer | - | \([1, \infty)\) | |
| model | character | FLXMCmvnorm | FLXMCmvnorm, FLXMCnorm1, FLXMCmvbinary, FLXMCmvpois | - |
| diagonal | logical | TRUE | TRUE, FALSE | - |
| truncated | logical | FALSE | TRUE, FALSE | - |
| cluster | untyped | - | - | |
| iter.max | integer | 200 | \([1, \infty)\) | |
| minprior | numeric | 0.05 | \([0, 1]\) | |
| tolerance | numeric | 1e-06 | \([0, \infty)\) | |
| verbose | integer | 0 | \([0, \infty)\) | |
| classify | character | auto | auto, weighted, CEM, SEM, hard, random | - |
| nrep | integer | 1 | \([1, \infty)\) |
References
Leisch, Friedrich (2004). “FlexMix: A General Framework for Finite Mixture Models and Latent Class Regression in R.” Journal of Statistical Software, 11(8), 1–18. doi:10.18637/jss.v011.i08 .
Grün, Bettina, Leisch, Friedrich (2008). “FlexMix Version 2: Finite Mixtures with Concomitant Variables and Varying and Constant Parameters.” Journal of Statistical Software, 28(4), 1–35. doi:10.18637/jss.v028.i04 .
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.genie,
mlr_learners_clust.hclust,
mlr_learners_clust.hdbscan,
mlr_learners_clust.kcca,
mlr_learners_clust.kkmeans,
mlr_learners_clust.kmeans,
mlr_learners_clust.kproto,
mlr_learners_clust.mclust,
mlr_learners_clust.meanshift,
mlr_learners_clust.movMF,
mlr_learners_clust.optics,
mlr_learners_clust.pam,
mlr_learners_clust.protoclust,
mlr_learners_clust.skmeans,
mlr_learners_clust.som,
mlr_learners_clust.specc,
mlr_learners_clust.stdbscan,
mlr_learners_clust.tclust,
mlr_learners_clust.xmeans
Super classes
mlr3::Learner -> LearnerClust -> LearnerClustFlexmix
Examples
# Define the Learner and set parameter values
learner = lrn("clust.flexmix")
print(learner)
#>
#> ── <LearnerClustFlexmix> (clust.flexmix): Finite Mixture Model ─────────────────
#> • Model: -
#> • Parameters: k=2, model=FLXMCmvnorm
#> • Packages: mlr3, mlr3cluster, and flexmix
#> • Predict Types: [partition] and prob
#> • Feature Types: logical, integer, and numeric
#> • Encapsulation: none (fallback: -)
#> • Properties: complete, exclusive, fuzzy, and partitional
#> • Other settings: use_weights = 'error', predict_raw = 'FALSE'
# Define a Task
task = tsk("usarrests")
# Train the learner on the task
learner$train(task)
# Print the model
print(learner$model)
#>
#> Call:
#> flexmix::flexmix(formula = formula, data = data, k = 2L, model = driver,
#> control = control)
#>
#> Cluster sizes:
#> 1 2
#> 28 22
#>
#> convergence after 13 iterations
# Make predictions for the task
prediction = learner$predict(task)
# Score the predictions
prediction$score(task = task)
#> clust.dunn
#> 0.1220028