What is DEES and what does it do?
DEES is a is a Multiplicity Automata (MA) inference algorithm. This C++ program is about 7,500 lines (10,000 with comments). The theory behind this algorithm can be found in the following papers:
A Multiplicity Automaton can be seen as a generalisation of Hidden Markov Models (HMM). See this paper for more details.
So mainly DEES is an algorithm that learn both the parameters and the structure of HMM. And for that it doesn't use an euristic but properties proven to converge. In fact DEES can generate HMM but also more generic models. These models are the Multiplicity Automata (mainly, imagine an HMM with some parameter being able to be negative).
It takes a sample of many sequences (or words) generated by a target probability distribution and return a model (a multiplicity automaton) generating a probability distribution as close as possible of the target distribution.
We can restric the learned model to be:
- a Multiplicity Automaton
- a Probabilistic Automaton (PA) (another name for Hidden Markov Models - HMM) ; in this case the identified class is the set of Probabilistic Residual Automata (PRA)
- a Probabilistic Deterministic Automaton (PDA)
The main features of DEES are:
- Multiplicity automata (MA) inference from a sample of sequences.
- Probabilistic Automata (PA) Inference
- Probabilistic Deterministic Automata (PDA) Inference
This repository also contains many other features:
- Viterbi algorithm
- Baulm-Welch algorithm
- Random generation methods of MA, PA, PRA and PDA
- GraphViz export of models
- Sample generation from an MA
- Model class detection (MA, PA, PRA, PDA)
- Compute, if it exists, the sum of all values of all the words of a distribution generated by a MA.
- Convertion between Alergia, MDI and DEES file format ; sample and automata
- Generation of the trimmed MA of an MA in linear time
- If GraphViz is intalled, model are shown and export them in PDF
If you want all the gory details you can check my Ph.D. thesis written in French.
Contact me if you have question. I'll be happy to talk to you.