Safe Haskell | None |
---|
The HomTrainer
class forms the base of the HLearn library. It represents homomorphisms from a free monoid/group to any other structure. This captures our intuitive notion of how data mining and machine learning algorithms should behave, but in a way that allows for the easy creation of parallel and online algorithms.
Unfortunately, we must slightly complicate the matter by also introducing the Model
class. Many learning algorithms take some sort of parameters, and we need the model class to define what those parameters should look like.
- class Model modelparams model | modelparams -> model where
- getparams :: model -> modelparams
- class Model modelparams model => DefaultModel modelparams model | model -> modelparams where
- defparams :: modelparams
- class (Semigroup model, Monoid model, Model modelparams model) => HomTrainer modelparams datapoint model where
- train1dp' :: modelparams -> datapoint -> model
- train' :: (Functor container, FunctorConstraint container model, FunctorConstraint container datapoint, Foldable container, FoldableConstraint container model) => modelparams -> container datapoint -> model
- add1dp :: model -> datapoint -> model
- addBatch :: (Functor container, FunctorConstraint container model, FunctorConstraint container datapoint, Foldable container, FoldableConstraint container model) => model -> container datapoint -> model
- class (DefaultModel modelparams model, HomTrainer modelparams datapoint model) => DefaultHomTrainer modelparams datapoint model | model -> modelparams where
- train1dp :: datapoint -> model
- train :: (Functor container, FunctorConstraint container model, FunctorConstraint container datapoint, Foldable container, FoldableConstraint container model) => container datapoint -> model
Parameters
class Model modelparams model | modelparams -> model whereSource
Every model has at least one data type that that fully describes its parameters. Many models do not actually *need* any parameters, in which case they will simply use an empty data type for modelparams.
class Model modelparams model => DefaultModel modelparams model | model -> modelparams whereSource
For those algorithms that do not require parameters (or that have reasonable default parameters), this class lets us use a more convenient calling notation.
HomTrainer
class (Semigroup model, Monoid model, Model modelparams model) => HomTrainer modelparams datapoint model whereSource
A minimal complete definition of the class is the singleton trainer 'train1dp\''
train1dp' :: modelparams -> datapoint -> modelSource
The singleton trainer
train' :: (Functor container, FunctorConstraint container model, FunctorConstraint container datapoint, Foldable container, FoldableConstraint container model) => modelparams -> container datapoint -> modelSource
The batch trainer
add1dp :: model -> datapoint -> modelSource
The online trainer
addBatch :: (Functor container, FunctorConstraint container model, FunctorConstraint container datapoint, Foldable container, FoldableConstraint container model) => model -> container datapoint -> modelSource
The batch online trainer; will be more efficient than simply calling add1dp
for each element being added
(Semigroup model, Monoid model, Model modelparams model, HomTrainer modelparams datapoint model, LeftOperator r model) => HomTrainer modelparams (r, datapoint) model | |
(FunctorConstraint container model, FunctorConstraint container datapoint, FoldableConstraint container model, Foldable container, Functor container, Model (MorphismComposition (container datapoint) params1 interdomain params2 codomain) codomain, HomTrainer params1 datapoint interdomain, Morphism (container datapoint) params1 interdomain, Morphism interdomain params2 codomain, Monoid codomain, Semigroup codomain, Model (MorphismComposition domain params1 interdomain params2 codomain) codomain) => HomTrainer (MorphismComposition (container datapoint) params1 interdomain params2 codomain) datapoint codomain |
class (DefaultModel modelparams model, HomTrainer modelparams datapoint model) => DefaultHomTrainer modelparams datapoint model | model -> modelparams whereSource
Provides parameterless functions for those training algorithms that do not require parameters
train1dp :: datapoint -> modelSource
A singleton trainer that doesn't require parameters (uses defparams
)
train :: (Functor container, FunctorConstraint container model, FunctorConstraint container datapoint, Foldable container, FoldableConstraint container model) => container datapoint -> modelSource
A batch trainer that doesn't require parameters (uses defparams
)
(DefaultModel modelparams model, HomTrainer modelparams datapoint model) => DefaultHomTrainer modelparams datapoint model |