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 instancep
with prediction algorithmPredictor
(see choices below) of symbols ofSymbolType
with specified theparameters
add!( 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 predictorp
unique_string( p )
returns a unique string for the predictorp
with paramter configurationget_best_symbol( p )
returns the symbol of typeSymbolType
with 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