kde_rules.hpp
Go to the documentation of this file.
1 
13 #ifndef MLPACK_METHODS_KDE_RULES_HPP
14 #define MLPACK_METHODS_KDE_RULES_HPP
15 
17 
18 namespace mlpack {
19 namespace kde {
20 
25 template<typename MetricType, typename KernelType, typename TreeType>
26 class KDERules
27 {
28  public:
42  KDERules(const arma::mat& referenceSet,
43  const arma::mat& querySet,
44  arma::vec& densities,
45  const double relError,
46  const double absError,
47  MetricType& metric,
48  KernelType& kernel,
49  const bool sameSet);
50 
52  double BaseCase(const size_t queryIndex, const size_t referenceIndex);
53 
55  double Score(const size_t queryIndex, TreeType& referenceNode);
56 
58  double Rescore(const size_t queryIndex,
59  TreeType& referenceNode,
60  const double oldScore) const;
61 
63  double Score(TreeType& queryNode, TreeType& referenceNode);
64 
66  double Rescore(TreeType& queryNode,
67  TreeType& referenceNode,
68  const double oldScore) const;
69 
71 
73  const TraversalInfoType& TraversalInfo() const { return traversalInfo; }
74 
76  TraversalInfoType& TraversalInfo() { return traversalInfo; }
77 
79  size_t BaseCases() const { return baseCases; }
80 
82  size_t Scores() const { return scores; }
83 
84  private:
86  double EvaluateKernel(const size_t queryIndex,
87  const size_t referenceIndex) const;
88 
90  double EvaluateKernel(const arma::vec& query,
91  const arma::vec& reference) const;
92 
94  const arma::mat& referenceSet;
95 
97  const arma::mat& querySet;
98 
100  arma::vec& densities;
101 
103  const double absError;
104 
106  const double relError;
107 
109  MetricType& metric;
110 
112  KernelType& kernel;
113 
115  const bool sameSet;
116 
118  size_t lastQueryIndex;
119 
121  size_t lastReferenceIndex;
122 
124  TraversalInfoType traversalInfo;
125 
127  size_t baseCases;
128 
130  size_t scores;
131 };
132 
133 } // namespace kde
134 } // namespace mlpack
135 
136 // Include implementation.
137 #include "kde_rules_impl.hpp"
138 
139 #endif
double Score(const size_t queryIndex, TreeType &referenceNode)
SingleTree Rescore.
const TraversalInfoType & TraversalInfo() const
Get traversal information.
Definition: kde_rules.hpp:73
The TraversalInfo class holds traversal information which is used in dual-tree (and single-tree) trav...
.hpp
Definition: add_to_po.hpp:21
tree::TraversalInfo< TreeType > TraversalInfoType
Definition: kde_rules.hpp:70
double Rescore(const size_t queryIndex, TreeType &referenceNode, const double oldScore) const
SingleTree Score.
double BaseCase(const size_t queryIndex, const size_t referenceIndex)
Base Case.
TraversalInfoType & TraversalInfo()
Modify traversal information.
Definition: kde_rules.hpp:76
KDERules(const arma::mat &referenceSet, const arma::mat &querySet, arma::vec &densities, const double relError, const double absError, MetricType &metric, KernelType &kernel, const bool sameSet)
Construct KDERules.
size_t BaseCases() const
Get the number of base cases.
Definition: kde_rules.hpp:79
A dual-tree traversal Rules class for kernel density estimation.
Definition: kde_rules.hpp:26
size_t Scores() const
Get the number of scores.
Definition: kde_rules.hpp:82