This project is meant to analyze the HLearn framework in Haskell for comparison. Homomorphism allows for extreme parallelization. This concept is explored in this experiment.
“A map between two algebraic structures that preserves the operations of the structures”
F (x * y) = F (x) * F (y)
The exponential function x -> ex, ex + y = exey
A homomorphism between two monoids (M, ∗) and (N, •) is a function f : M → N such that
- f(x ∗ y) = f(x) • f(y) for all x, y in M
- f(eM) = eN,
where eM and eN are the identities on M and N respectively.
A map between monoids that
- preserves the monoid operation
- maps the identity element of the first monoid to that of the second monoid
- parallel batch training -> Monoid
- online training -> Monoid
- fast cross-validation -> Monoid
- "untraining" of data points -> Abelian Group
- more fast cross-validation -> Abelian Group
- weighted data points -> R-Module
- fractionally weighted data points -> Vector Space
- fast simple preprocessing of data -> Functor
- fast complex preprocessing of data -> Monad
References: