#include <DecisionTreeFactor.h>
Public Types | |
typedef AlgebraicDecisionTree< Key > | ADT |
typedef DiscreteFactor | Base |
Typedef to base class. More... | |
typedef std::shared_ptr< DecisionTreeFactor > | shared_ptr |
typedef DecisionTreeFactor | This |
Public Types inherited from gtsam::DiscreteFactor | |
typedef Factor | Base |
Our base class. More... | |
typedef std::shared_ptr< DiscreteFactor > | shared_ptr |
shared_ptr to this class More... | |
typedef DiscreteFactor | This |
This class. More... | |
using | Values = DiscreteValues |
backwards compatibility More... | |
using | Names = DiscreteValues::Names |
Translation table from values to strings. More... | |
Public Types inherited from gtsam::Factor | |
typedef KeyVector::const_iterator | const_iterator |
Const iterator over keys. More... | |
typedef KeyVector::iterator | iterator |
Iterator over keys. More... | |
Public Types inherited from gtsam::AlgebraicDecisionTree< Key > | |
using | Base = DecisionTree< Key, double > |
Public Types inherited from gtsam::DecisionTree< Key, double > | |
using | Binary = std::function< double(const double &, const double &)> |
using | CompareFunc = std::function< bool(const double &, const double &)> |
using | LabelC = std::pair< Key, size_t > |
using | LabelFormatter = std::function< std::string(Key)> |
using | NodePtr = typename Node::Ptr |
using | Unary = std::function< double(const double &)> |
using | UnaryAssignment = std::function< double(const Assignment< Key > &, const double &)> |
using | ValueFormatter = std::function< std::string(double)> |
Public Member Functions | |
Standard Constructors | |
DecisionTreeFactor () | |
DecisionTreeFactor (const DiscreteKeys &keys, const ADT &potentials) | |
DecisionTreeFactor (const DiscreteKeys &keys, const std::vector< double > &table) | |
DecisionTreeFactor (const DiscreteKeys &keys, const std::string &table) | |
template<class SOURCE > | |
DecisionTreeFactor (const DiscreteKey &key, SOURCE table) | |
Single-key specialization. More... | |
DecisionTreeFactor (const DiscreteKey &key, const std::vector< double > &row) | |
Single-key specialization, with vector of doubles. More... | |
DecisionTreeFactor (const DiscreteConditional &c) | |
Testable | |
bool | equals (const DiscreteFactor &other, double tol=1e-9) const override |
equality More... | |
void | print (const std::string &s="DecisionTreeFactor:\, const KeyFormatter &formatter=DefaultKeyFormatter) const override |
print More... | |
Advanced Interface | |
DecisionTreeFactor | apply (const DecisionTreeFactor &f, ADT::Binary op) const |
shared_ptr | combine (size_t nrFrontals, ADT::Binary op) const |
shared_ptr | combine (const Ordering &keys, ADT::Binary op) const |
std::vector< std::pair< DiscreteValues, double > > | enumerate () const |
Enumerate all values into a map from values to double. More... | |
DiscreteKeys | discreteKeys () const |
Return all the discrete keys associated with this factor. More... | |
DecisionTreeFactor | prune (size_t maxNrAssignments) const |
Prune the decision tree of discrete variables. More... | |
Wrapper support | |
void | dot (std::ostream &os, const KeyFormatter &keyFormatter=DefaultKeyFormatter, bool showZero=true) const |
void | dot (const std::string &name, const KeyFormatter &keyFormatter=DefaultKeyFormatter, bool showZero=true) const |
std::string | dot (const KeyFormatter &keyFormatter=DefaultKeyFormatter, bool showZero=true) const |
std::string | markdown (const KeyFormatter &keyFormatter=DefaultKeyFormatter, const Names &names={}) const override |
Render as markdown table. More... | |
std::string | html (const KeyFormatter &keyFormatter=DefaultKeyFormatter, const Names &names={}) const override |
Render as html table. More... | |
HybridValues methods. | |
double | error (const HybridValues &values) const override |
Public Member Functions inherited from gtsam::DiscreteFactor | |
DiscreteFactor () | |
template<typename CONTAINER > | |
DiscreteFactor (const CONTAINER &keys) | |
void | print (const std::string &s="DiscreteFactor\, const KeyFormatter &formatter=DefaultKeyFormatter) const override |
print More... | |
double | error (const DiscreteValues &values) const |
Error is just -log(value) More... | |
double | error (const HybridValues &c) const override |
Public Member Functions inherited from gtsam::Factor | |
virtual | ~Factor ()=default |
Default destructor. More... | |
bool | empty () const |
Whether the factor is empty (involves zero variables). More... | |
Key | front () const |
First key. More... | |
Key | back () const |
Last key. More... | |
const_iterator | find (Key key) const |
find More... | |
const KeyVector & | keys () const |
Access the factor's involved variable keys. More... | |
const_iterator | begin () const |
const_iterator | end () const |
size_t | size () const |
virtual void | printKeys (const std::string &s="Factor", const KeyFormatter &formatter=DefaultKeyFormatter) const |
print only keys More... | |
bool | equals (const This &other, double tol=1e-9) const |
check equality More... | |
KeyVector & | keys () |
iterator | begin () |
iterator | end () |
Public Member Functions inherited from gtsam::AlgebraicDecisionTree< Key > | |
AlgebraicDecisionTree (double leaf=1.0) | |
AlgebraicDecisionTree (const Base &add) | |
AlgebraicDecisionTree (const Key &label, double y1, double y2) | |
AlgebraicDecisionTree (const typename Base::LabelC &labelC, double y1, double y2) | |
AlgebraicDecisionTree (const std::vector< typename Base::LabelC > &labelCs, const std::vector< double > &ys) | |
AlgebraicDecisionTree (const std::vector< typename Base::LabelC > &labelCs, const std::string &table) | |
AlgebraicDecisionTree (Iterator begin, Iterator end, const Key &label) | |
AlgebraicDecisionTree (const AlgebraicDecisionTree< M > &other, const std::map< M, Key > &map) | |
bool | equals (const AlgebraicDecisionTree &other, double tol=1e-9) const |
Equality method customized to value type double . More... | |
AlgebraicDecisionTree | operator* (const AlgebraicDecisionTree &g) const |
AlgebraicDecisionTree | operator+ (const AlgebraicDecisionTree &g) const |
AlgebraicDecisionTree | operator/ (const AlgebraicDecisionTree &g) const |
void | print (const std::string &s="", const typename Base::LabelFormatter &labelFormatter=&DefaultFormatter) const |
print method customized to value type double . More... | |
AlgebraicDecisionTree | sum (const Key &label, size_t cardinality) const |
AlgebraicDecisionTree | sum (const typename Base::LabelC &labelC) const |
Public Member Functions inherited from gtsam::DecisionTree< Key, double > | |
DecisionTree () | |
DecisionTree (const double &y) | |
DecisionTree (const Key &label, const double &y1, const double &y2) | |
Create tree with 2 assignments y1 , y2 , splitting on variable label More... | |
DecisionTree (const LabelC &label, const double &y1, const double &y2) | |
DecisionTree (const std::vector< LabelC > &labelCs, const std::vector< double > &ys) | |
DecisionTree (const std::vector< LabelC > &labelCs, const std::string &table) | |
DecisionTree (Iterator begin, Iterator end, const Key &label) | |
DecisionTree (const Key &label, const DecisionTree &f0, const DecisionTree &f1) | |
DecisionTree (const DecisionTree< Key, X > &other, Func Y_of_X) | |
Convert from a different value type. More... | |
DecisionTree (const DecisionTree< M, X > &other, const std::map< M, Key > &map, Func Y_of_X) | |
Convert from a different value type X to value type Y, also transate labels via map from type M to L. More... | |
DecisionTree (const NodePtr &root) | |
NodePtr | compose (Iterator begin, Iterator end, const Key &label) const |
void | print (const std::string &s, const LabelFormatter &labelFormatter, const ValueFormatter &valueFormatter) const |
GTSAM-style print. More... | |
bool | equals (const DecisionTree &other, const CompareFunc &compare=&DefaultCompare) const |
virtual | ~DecisionTree ()=default |
Make virtual. More... | |
bool | empty () const |
Check if tree is empty. More... | |
bool | operator== (const DecisionTree &q) const |
const double & | operator() (const Assignment< Key > &x) const |
void | visit (Func f) const |
Visit all leaves in depth-first fashion. More... | |
void | visitLeaf (Func f) const |
Visit all leaves in depth-first fashion. More... | |
void | visitWith (Func f) const |
Visit all leaves in depth-first fashion. More... | |
size_t | nrLeaves () const |
Return the number of leaves in the tree. More... | |
X | fold (Func f, X x0) const |
Fold a binary function over the tree, returning accumulator. More... | |
std::set< Key > | labels () const |
DecisionTree | apply (const Unary &op) const |
DecisionTree | apply (const UnaryAssignment &op) const |
Apply Unary operation "op" to f while also providing the corresponding assignment. More... | |
DecisionTree | apply (const DecisionTree &g, const Binary &op) const |
DecisionTree | choose (const Key &label, size_t index) const |
DecisionTree | combine (const Key &label, size_t cardinality, const Binary &op) const |
DecisionTree | combine (const LabelC &labelC, const Binary &op) const |
void | dot (std::ostream &os, const LabelFormatter &labelFormatter, const ValueFormatter &valueFormatter, bool showZero=true) const |
void | dot (const std::string &name, const LabelFormatter &labelFormatter, const ValueFormatter &valueFormatter, bool showZero=true) const |
std::string | dot (const LabelFormatter &labelFormatter, const ValueFormatter &valueFormatter, bool showZero=true) const |
Protected Attributes | |
std::map< Key, size_t > | cardinalities_ |
Protected Attributes inherited from gtsam::Factor | |
KeyVector | keys_ |
The keys involved in this factor. More... | |
Standard Interface | |
double | evaluate (const DiscreteValues &values) const |
double | operator() (const DiscreteValues &values) const override |
Evaluate probability distribution, sugar. More... | |
double | error (const DiscreteValues &values) const |
Calculate error for DiscreteValues x , is -log(probability). More... | |
DecisionTreeFactor | operator* (const DecisionTreeFactor &f) const override |
multiply two factors More... | |
size_t | cardinality (Key j) const |
DecisionTreeFactor | operator/ (const DecisionTreeFactor &f) const |
divide by factor f (safely) More... | |
DecisionTreeFactor | toDecisionTreeFactor () const override |
Convert into a decisiontree. More... | |
shared_ptr | sum (size_t nrFrontals) const |
Create new factor by summing all values with the same separator values. More... | |
shared_ptr | sum (const Ordering &keys) const |
Create new factor by summing all values with the same separator values. More... | |
shared_ptr | max (size_t nrFrontals) const |
Create new factor by maximizing over all values with the same separator. More... | |
shared_ptr | max (const Ordering &keys) const |
Create new factor by maximizing over all values with the same separator. More... | |
static double | safe_div (const double &a, const double &b) |
Additional Inherited Members | |
Public Attributes inherited from gtsam::DecisionTree< Key, double > | |
NodePtr | root_ |
A DecisionTree just contains the root. TODO(dellaert): make protected. More... | |
Protected Member Functions inherited from gtsam::Factor | |
Factor () | |
template<typename CONTAINER > | |
Factor (const CONTAINER &keys) | |
template<typename ITERATOR > | |
Factor (ITERATOR first, ITERATOR last) | |
Protected Member Functions inherited from gtsam::DecisionTree< Key, double > | |
NodePtr | convertFrom (const typename DecisionTree< M, X >::NodePtr &f, std::function< Key(const M &)> L_of_M, std::function< double(const X &)> Y_of_X) const |
Convert from a DecisionTree<M, X> to DecisionTree<L, Y>. More... | |
NodePtr | create (It begin, It end, ValueIt beginY, ValueIt endY) const |
Static Protected Member Functions inherited from gtsam::Factor | |
template<typename CONTAINER > | |
static Factor | FromKeys (const CONTAINER &keys) |
template<typename ITERATOR > | |
static Factor | FromIterators (ITERATOR first, ITERATOR last) |
Static Protected Member Functions inherited from gtsam::DecisionTree< Key, double > | |
static bool | DefaultCompare (const double &a, const double &b) |
Default method for comparison of two objects of type Y. More... | |
A discrete probabilistic factor.
Definition at line 44 of file DecisionTreeFactor.h.
Definition at line 51 of file DecisionTreeFactor.h.
Typedef to base class.
Definition at line 49 of file DecisionTreeFactor.h.
typedef std::shared_ptr<DecisionTreeFactor> gtsam::DecisionTreeFactor::shared_ptr |
Definition at line 50 of file DecisionTreeFactor.h.
Definition at line 48 of file DecisionTreeFactor.h.
gtsam::DecisionTreeFactor::DecisionTreeFactor | ( | ) |
Default constructor for I/O
Definition at line 32 of file DecisionTreeFactor.cpp.
gtsam::DecisionTreeFactor::DecisionTreeFactor | ( | const DiscreteKeys & | keys, |
const ADT & | potentials | ||
) |
Constructor from DiscreteKeys and AlgebraicDecisionTree
Definition at line 35 of file DecisionTreeFactor.cpp.
gtsam::DecisionTreeFactor::DecisionTreeFactor | ( | const DiscreteKeys & | keys, |
const std::vector< double > & | table | ||
) |
Constructor from doubles
Definition at line 290 of file DecisionTreeFactor.cpp.
gtsam::DecisionTreeFactor::DecisionTreeFactor | ( | const DiscreteKeys & | keys, |
const std::string & | table | ||
) |
Constructor from string
Definition at line 297 of file DecisionTreeFactor.cpp.
|
inline |
Single-key specialization.
Definition at line 75 of file DecisionTreeFactor.h.
|
inline |
Single-key specialization, with vector of doubles.
Definition at line 79 of file DecisionTreeFactor.h.
|
explicit |
Construct from a DiscreteConditional type
Definition at line 42 of file DecisionTreeFactor.cpp.
DecisionTreeFactor gtsam::DecisionTreeFactor::apply | ( | const DecisionTreeFactor & | f, |
ADT::Binary | op | ||
) | const |
Apply binary operator (*this) "op" f
f | the second argument for op |
op | a binary operator that operates on AlgebraicDecisionTree |
Definition at line 89 of file DecisionTreeFactor.cpp.
Definition at line 122 of file DecisionTreeFactor.h.
DecisionTreeFactor::shared_ptr gtsam::DecisionTreeFactor::combine | ( | size_t | nrFrontals, |
ADT::Binary | op | ||
) | const |
Combine frontal variables using binary operator "op"
nrFrontals | nr. of frontal to combine variables in this factor |
op | a binary operator that operates on AlgebraicDecisionTree |
Definition at line 108 of file DecisionTreeFactor.cpp.
DecisionTreeFactor::shared_ptr gtsam::DecisionTreeFactor::combine | ( | const Ordering & | keys, |
ADT::Binary | op | ||
) | const |
Combine frontal variables in an Ordering using binary operator "op"
nrFrontals | nr. of frontal to combine variables in this factor |
op | a binary operator that operates on AlgebraicDecisionTree |
Definition at line 135 of file DecisionTreeFactor.cpp.
DiscreteKeys gtsam::DecisionTreeFactor::discreteKeys | ( | ) | const |
Return all the discrete keys associated with this factor.
Definition at line 185 of file DecisionTreeFactor.cpp.
void gtsam::DecisionTreeFactor::dot | ( | std::ostream & | os, |
const KeyFormatter & | keyFormatter = DefaultKeyFormatter , |
||
bool | showZero = true |
||
) | const |
output to graphviz format, stream version
Definition at line 204 of file DecisionTreeFactor.cpp.
void gtsam::DecisionTreeFactor::dot | ( | const std::string & | name, |
const KeyFormatter & | keyFormatter = DefaultKeyFormatter , |
||
bool | showZero = true |
||
) | const |
output to graphviz format, open a file
Definition at line 211 of file DecisionTreeFactor.cpp.
std::string gtsam::DecisionTreeFactor::dot | ( | const KeyFormatter & | keyFormatter = DefaultKeyFormatter , |
bool | showZero = true |
||
) | const |
output to graphviz format string
Definition at line 218 of file DecisionTreeFactor.cpp.
std::vector< std::pair< DiscreteValues, double > > gtsam::DecisionTreeFactor::enumerate | ( | ) | const |
Enumerate all values into a map from values to double.
Definition at line 168 of file DecisionTreeFactor.cpp.
|
overridevirtual |
equality
Implements gtsam::DiscreteFactor.
Reimplemented in gtsam::DiscreteConditional.
Definition at line 48 of file DecisionTreeFactor.cpp.
double gtsam::DecisionTreeFactor::error | ( | const DiscreteValues & | values | ) | const |
Calculate error for DiscreteValues x
, is -log(probability).
Definition at line 59 of file DecisionTreeFactor.cpp.
|
overridevirtual |
Calculate error for HybridValues x
, is -log(probability) Simply dispatches to DiscreteValues version.
Reimplemented from gtsam::Factor.
Definition at line 64 of file DecisionTreeFactor.cpp.
|
inline |
Calculate probability for given values x
, is just look up in AlgebraicDecisionTree.
Definition at line 103 of file DecisionTreeFactor.h.
|
overridevirtual |
Render as html table.
keyFormatter | GTSAM-style Key formatter. |
names | optional, category names corresponding to choices. |
Implements gtsam::DiscreteFactor.
Reimplemented in gtsam::DiscreteConditional.
Definition at line 256 of file DecisionTreeFactor.cpp.
|
overridevirtual |
Render as markdown table.
keyFormatter | GTSAM-style Key formatter. |
names | optional, category names corresponding to choices. |
Implements gtsam::DiscreteFactor.
Reimplemented in gtsam::DiscreteConditional.
Definition at line 225 of file DecisionTreeFactor.cpp.
|
inline |
Create new factor by maximizing over all values with the same separator.
Definition at line 143 of file DecisionTreeFactor.h.
|
inline |
Create new factor by maximizing over all values with the same separator.
Definition at line 148 of file DecisionTreeFactor.h.
|
inlineoverridevirtual |
Evaluate probability distribution, sugar.
Implements gtsam::DiscreteFactor.
Definition at line 108 of file DecisionTreeFactor.h.
|
inlineoverridevirtual |
multiply two factors
Implements gtsam::DiscreteFactor.
Definition at line 116 of file DecisionTreeFactor.h.
|
inline |
divide by factor f (safely)
Definition at line 125 of file DecisionTreeFactor.h.
|
overridevirtual |
Reimplemented from gtsam::Factor.
Reimplemented in gtsam::DiscreteConditional, gtsam::DiscreteDistribution, and gtsam::DiscreteLookupTable.
Definition at line 77 of file DecisionTreeFactor.cpp.
DecisionTreeFactor gtsam::DecisionTreeFactor::prune | ( | size_t | maxNrAssignments | ) | const |
Prune the decision tree of discrete variables.
Pruning will set the leaves to be "pruned" to 0 indicating a 0 probability. An assignment is pruned if it is not in the top maxNrAssignments
values.
A violation can occur if there are more duplicate values than maxNrAssignments
. A violation here is the need to un-prune the decision tree (e.g. all assignment values are 1.0). We could have another case where some subset of duplicates exist (e.g. for a tree with 8 assignments we have 1, 1, 1, 1, 0.8, 0.7, 0.6, 0.5), but this is not a violation since the for maxNrAssignments=5
the top values are (1, 0.8).
maxNrAssignments | The maximum number of assignments to keep. |
Definition at line 304 of file DecisionTreeFactor.cpp.
|
static |
Definition at line 69 of file DecisionTreeFactor.cpp.
|
inline |
Create new factor by summing all values with the same separator values.
Definition at line 133 of file DecisionTreeFactor.h.
|
inline |
Create new factor by summing all values with the same separator values.
Definition at line 138 of file DecisionTreeFactor.h.
|
inlineoverridevirtual |
Convert into a decisiontree.
Implements gtsam::DiscreteFactor.
Definition at line 130 of file DecisionTreeFactor.h.
Definition at line 54 of file DecisionTreeFactor.h.