24 #ifndef __MLPACK_METHODS_RANN_RA_SEARCH_RULES_HPP
25 #define __MLPACK_METHODS_RANN_RA_SEARCH_RULES_HPP
30 template<
typename SortPolicy,
typename MetricType,
typename TreeType>
40 const double alpha = 0.95,
41 const bool naive =
false,
48 double BaseCase(
const size_t queryIndex,
const size_t referenceIndex);
62 TreeType& referenceNode,
63 TreeType& referenceChildNode,
64 const double baseCaseResult)
const;
66 TreeType& queryChildNode,
67 TreeType& referenceNode,
68 const double baseCaseResult)
const;
94 double Score(
const size_t queryIndex, TreeType& referenceNode);
119 double Score(
const size_t queryIndex,
120 TreeType& referenceNode,
121 const double baseCaseResult);
140 double Rescore(
const size_t queryIndex,
141 TreeType& referenceNode,
142 const double oldScore);
162 double Score(TreeType& queryNode, TreeType& referenceNode);
184 double Score(TreeType& queryNode,
185 TreeType& referenceNode,
186 const double baseCaseResult);
210 double Rescore(TreeType& queryNode,
211 TreeType& referenceNode,
212 const double oldScore);
272 const size_t neighbor,
273 const double distance);
287 const double alpha)
const;
301 const size_t t)
const;
313 const size_t rangeUpperBound,
314 arma::uvec& distinctSamples)
const;
319 double Score(
const size_t queryIndex,
320 TreeType& referenceNode,
321 const double distance,
322 const double bestDistance);
327 double Score(TreeType& queryNode,
328 TreeType& referenceNode,
329 const double distance,
330 const double bestDistance);
338 #include "ra_search_rules_impl.hpp"
340 #endif // __MLPACK_METHODS_RANN_RA_SEARCH_RULES_HPP
bool firstLeafExact
Whether to do exact computation on the first leaf before any sampling.
double samplingRatio
The sampling ratio.
size_t numSamplesReqd
The minimum number of samples required per query.
MetricType & metric
The instantiated metric.
double Rescore(const size_t queryIndex, TreeType &referenceNode, const double oldScore)
Re-evaluate the score for recursion order.
arma::mat & distances
The matrix the resultant neighbor distances should be stored in.
double Score(const size_t queryIndex, TreeType &referenceNode)
Get the score for recursion order.
arma::Col< size_t > numSamplesMade
The number of samples made for every query.
const arma::mat & querySet
The query set.
double Prescore(TreeType &queryNode, TreeType &referenceNode, TreeType &referenceChildNode, const double baseCaseResult) const
TOFIX: This function is specified for the cover tree (usually) so I need to think about it more algor...
double PrescoreQ(TreeType &queryNode, TreeType &queryChildNode, TreeType &referenceNode, const double baseCaseResult) const
bool sampleAtLeaves
Whether to sample at leaves or just use all of it.
RASearchRules(const arma::mat &referenceSet, const arma::mat &querySet, arma::Mat< size_t > &neighbors, arma::mat &distances, MetricType &metric, const double tau=5, const double alpha=0.95, const bool naive=false, const bool sampleAtLeaves=false, const bool firstLeafExact=false, const size_t singleSampleLimit=20)
size_t MinimumSamplesReqd(const size_t n, const size_t k, const double tau, const double alpha) const
Compute the minimum number of samples required to guarantee the given rank-approximation and success ...
const arma::mat & referenceSet
The reference set.
void InsertNeighbor(const size_t queryIndex, const size_t pos, const size_t neighbor, const double distance)
Insert a point into the neighbors and distances matrices; this is a helper function.
see subsection cli_alt_reg_tut Alternate DET regularization The usual regularized error f $R_ alpha(t)\f $of a node\f $t\f $is given by
void ObtainDistinctSamples(const size_t numSamples, const size_t rangeUpperBound, arma::uvec &distinctSamples) const
Pick up desired number of samples (with replacement) from a given range of integers so that only the ...
double SuccessProbability(const size_t n, const size_t k, const size_t m, const size_t t) const
Compute the success probability of obtaining 'k'-neighbors from a set of size 'n' within the top 't' ...
size_t singleSampleLimit
The limit on the largest node that can be approximated by sampling.
double BaseCase(const size_t queryIndex, const size_t referenceIndex)
arma::Mat< size_t > & neighbors
The matrix the resultant neighbor indices should be stored in.
size_t NumEffectiveSamples()
size_t NumDistComputations()
size_t numDistComputations