FamilySelectorIfc

Chooses one component family per group, given the families that fitted each group.

This is the decision the tractability argument is about. The observed-data criterion is not separable across components, because the logarithm sits outside the mixture sum, so choosing families to optimize it requires evaluating combinations — the catalog size raised to the number of components. The classification objective is separable, so choosing families to optimize that requires only catalog size times number of components.

The two implementations here make that difference measurable rather than argued: run both on the same fits and compare what they choose, what it scores, and what it cost.

Inheritors

Properties

Link copied to clipboard
abstract val name: String

A short name identifying the selector, used as a factor level when results are recorded.

Functions

Link copied to clipboard
open fun orient(criterion: MixtureCriterionIfc, value: Double): Double

Orients a criterion value so that smaller is always better, so that selectors can be compared without each one re-deriving the direction.

Link copied to clipboard
abstract fun select(sortedData: DoubleArray, partition: DataPartition, groupFits: List<GroupFitResult>, criterion: MixtureCriterionIfc): FamilySelectionResult

Chooses a mixture from the supplied group fits.