24 #ifndef __MLPACK_METHODS_RANN_RA_SEARCH_RULES_HPP 25 #define __MLPACK_METHODS_RANN_RA_SEARCH_RULES_HPP 27 #include "../neighbor_search/ns_traversal_info.hpp" 33 template<
typename SortPolicy,
typename MetricType,
typename TreeType>
43 const double alpha = 0.95,
44 const bool naive =
false,
51 double BaseCase(
const size_t queryIndex,
const size_t referenceIndex);
75 double Score(
const size_t queryIndex, TreeType& referenceNode);
100 double Score(
const size_t queryIndex,
101 TreeType& referenceNode,
102 const double baseCaseResult);
121 double Rescore(
const size_t queryIndex,
122 TreeType& referenceNode,
123 const double oldScore);
143 double Score(TreeType& queryNode, TreeType& referenceNode);
165 double Score(TreeType& queryNode,
166 TreeType& referenceNode,
167 const double baseCaseResult);
191 double Rescore(TreeType& queryNode,
192 TreeType& referenceNode,
193 const double oldScore);
260 const size_t neighbor,
261 const double distance);
275 const double alpha)
const;
289 const size_t t)
const;
301 const size_t rangeUpperBound,
302 arma::uvec& distinctSamples)
const;
307 double Score(
const size_t queryIndex,
308 TreeType& referenceNode,
309 const double distance,
310 const double bestDistance);
315 double Score(TreeType& queryNode,
316 TreeType& referenceNode,
317 const double distance,
318 const double bestDistance);
323 friend class RASearch<SortPolicy, MetricType, TreeType>;
330 #include "ra_search_rules_impl.hpp" 332 #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.
Linear algebra utility functions, generally performed on matrices or vectors.
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.
TraversalInfoType traversalInfo
neighbor::NeighborSearchTraversalInfo< TreeType > TraversalInfoType
arma::Col< size_t > numSamplesMade
The number of samples made for every query.
The RASearch class: This class provides a generic manner to perform rank-approximate search via rando...
const TraversalInfoType & TraversalInfo() const
Traversal information for NeighborSearch.
const arma::mat & querySet
The query set.
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.
TraversalInfoType & TraversalInfo()
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