DiscretePredictors.jl
A Julia package for online discrete symbol prediction
Setting up DiscretePredictors.jl
Library Outline
Brief Overview
DiscretePredictors.DiscretePredictors — Module.A Julia package for online discrete sequence prediction.
API Overview:
p = Predictor{SymbolType}(parameters...)creates a predictor instancepwith prediction algorithmPredictor(see choices below) of symbols ofSymbolTypewith specified theparametersadd!( p, sym )adds a symbol to the modelpredict( p )computes a probability distribution over the symbols seen so far by the model and returns it as dictionary ofDict{SymbolType,Float64}info_string( p )returns a human readable string about the predictorpunique_string( p )returns a unique string for the predictorpwith paramter configurationget_best_symbol( p )returns the symbol of typeSymbolTypewith highest probability under current contextsize( p )returns the number of nodes in current prediction modelp.model
Available Predictors:
- Adaptive MPP (
AdaptiveMPP) - Active LeZi (
ALZ) - Dependency Graph (
DG) - Discounted HEDGE on KOM (
dHedgePPM) - Error Weighted PPM (
ewPPM) - K-th Order Markov Model (
KOM) - LeZi-Update (
LeZiUpdate) - LeZi78 (
LZ78)
Example
# Initialize a predictor
julia> p = KOM{Char}(4)
DiscretePredictors.KOM{Char}([*] (0)
, Char[], 4)
# Add some symbols
julia> add!( p, 'a' )
julia> add!( p, 'b' )
julia> add!( p, 'c' )
julia> add!( p, 'b' )
# Print out the model
julia> p
DiscretePredictors.KOM{Char}([*] (4)
+---[b] (2)
+---[c] (1)
+---[b] (1)
+---[a] (1)
+---[b] (1)
+---[c] (1)
+---[b] (1)
+---[c] (1)
+---[b] (1)
, ['a', 'b', 'c', 'b'], 4)
# Get prediction
julia> predict( p )
Dict{Char,Float64} with 3 entries:
'b' => 0.25
'a' => 0.125
'c' => 0.625
# Get best symbol
julia> get_best_symbol( p )
'c': ASCII/Unicode U+0063 (category Ll: Letter, lowercase)
julia> info_string( p )
"KOM(4)"
julia> unique_string( p )
"KOM_04"
julia> size( p )
10