PLearn 0.1
|
#include <NeighborhoodBoxVolumeDensityEstimator.h>
Public Member Functions | |
NeighborhoodBoxVolumeDensityEstimator () | |
Default constructor. | |
virtual void | build () |
Simply call inherited::build() then build_(). | |
virtual void | makeDeepCopyFromShallowCopy (CopiesMap &copies) |
Transform a shallow copy into a deep copy. | |
virtual string | classname () const |
virtual OptionList & | getOptionList () const |
virtual OptionMap & | getOptionMap () const |
virtual RemoteMethodMap & | getRemoteMethodMap () const |
virtual NeighborhoodBoxVolumeDensityEstimator * | deepCopy (CopiesMap &copies) const |
virtual real | log_density (const Vec &x) const |
Return log of probability density log(p(y | x)). | |
virtual void | train () |
The role of the train method is to bring the learner up to stage == nstages, updating the train_stats collector with training costs measured on-line in the process. | |
virtual void | forget () |
Resets the distribution. | |
Static Public Member Functions | |
static string | _classname_ () |
static OptionList & | _getOptionList_ () |
static RemoteMethodMap & | _getRemoteMethodMap_ () |
static Object * | _new_instance_for_typemap_ () |
static bool | _isa_ (const Object *o) |
static void | _static_initialize_ () |
static const PPath & | declaringFile () |
Public Attributes | |
int | nneighbors |
real | min_radius |
Static Public Attributes | |
static StaticInitializer | _static_initializer_ |
Protected Member Functions | |
bool | box_contains (const Vec ¢er, const Vec &radius, const Vec &input) const |
Returns true if input is contained in the box specified by center and radius. | |
Static Protected Member Functions | |
static void | declareOptions (OptionList &ol) |
Declare this class' options. | |
Protected Attributes | |
PP< GenericNearestNeighbors > | NN |
Vec | NN_outputs |
Private Types | |
typedef UnconditionalDistribution | inherited |
Private Member Functions | |
void | build_ () |
This does the actual building. | |
Private Attributes | |
Vec | trainsample |
Global storage to save memory allocations. |
Definition at line 53 of file NeighborhoodBoxVolumeDensityEstimator.h.
typedef UnconditionalDistribution PLearn::NeighborhoodBoxVolumeDensityEstimator::inherited [private] |
Reimplemented from PLearn::UnconditionalDistribution.
Definition at line 58 of file NeighborhoodBoxVolumeDensityEstimator.h.
PLearn::NeighborhoodBoxVolumeDensityEstimator::NeighborhoodBoxVolumeDensityEstimator | ( | ) |
Default constructor.
Definition at line 56 of file NeighborhoodBoxVolumeDensityEstimator.cc.
References NN.
:nneighbors(1), min_radius(1e-6) { // for default use Exhaustive search and default Euclidean distance NN = new ExhaustiveNearestNeighbors(); }
string PLearn::NeighborhoodBoxVolumeDensityEstimator::_classname_ | ( | ) | [static] |
Reimplemented from PLearn::UnconditionalDistribution.
Definition at line 68 of file NeighborhoodBoxVolumeDensityEstimator.cc.
OptionList & PLearn::NeighborhoodBoxVolumeDensityEstimator::_getOptionList_ | ( | ) | [static] |
Reimplemented from PLearn::UnconditionalDistribution.
Definition at line 68 of file NeighborhoodBoxVolumeDensityEstimator.cc.
RemoteMethodMap & PLearn::NeighborhoodBoxVolumeDensityEstimator::_getRemoteMethodMap_ | ( | ) | [static] |
Reimplemented from PLearn::UnconditionalDistribution.
Definition at line 68 of file NeighborhoodBoxVolumeDensityEstimator.cc.
Reimplemented from PLearn::UnconditionalDistribution.
Definition at line 68 of file NeighborhoodBoxVolumeDensityEstimator.cc.
Object * PLearn::NeighborhoodBoxVolumeDensityEstimator::_new_instance_for_typemap_ | ( | ) | [static] |
Reimplemented from PLearn::UnconditionalDistribution.
Definition at line 68 of file NeighborhoodBoxVolumeDensityEstimator.cc.
StaticInitializer NeighborhoodBoxVolumeDensityEstimator::_static_initializer_ & PLearn::NeighborhoodBoxVolumeDensityEstimator::_static_initialize_ | ( | ) | [static] |
Reimplemented from PLearn::UnconditionalDistribution.
Definition at line 68 of file NeighborhoodBoxVolumeDensityEstimator.cc.
bool PLearn::NeighborhoodBoxVolumeDensityEstimator::box_contains | ( | const Vec & | center, |
const Vec & | radius, | ||
const Vec & | input | ||
) | const [protected] |
Returns true if input is contained in the box specified by center and radius.
Definition at line 140 of file NeighborhoodBoxVolumeDensityEstimator.cc.
References j, PLearn::TVec< T >::length(), and w.
Referenced by log_density().
{ int w = center.length(); for(int j=0; j<w; j++) if(fabs(input[j]-center[j])>radius[j]) return false; return true; }
void PLearn::NeighborhoodBoxVolumeDensityEstimator::build | ( | ) | [virtual] |
Simply call inherited::build() then build_().
Reimplemented from PLearn::UnconditionalDistribution.
Definition at line 100 of file NeighborhoodBoxVolumeDensityEstimator.cc.
References PLearn::UnconditionalDistribution::build(), and build_().
{ // ### Nothing to add here, simply calls build_(). inherited::build(); build_(); }
void PLearn::NeighborhoodBoxVolumeDensityEstimator::build_ | ( | ) | [private] |
This does the actual building.
Reimplemented from PLearn::UnconditionalDistribution.
Definition at line 110 of file NeighborhoodBoxVolumeDensityEstimator.cc.
References PLearn::PP< T >::isNull(), NN, NN_outputs, nneighbors, PLearn::TVec< T >::resize(), and PLearn::PLearner::train_set.
Referenced by build().
{ // ### This method should do the real building of the object, // ### according to set 'options', in *any* situation. // ### Typical situations include: // ### - Initial building of an object from a few user-specified options // ### - Building of a "reloaded" object: i.e. from the complete set of all serialised options. // ### - Updating or "re-building" of an object after a few "tuning" options have been modified. // ### You should assume that the parent class' build_() has already been called. // ### If the distribution is conditional, you should finish build_() by: // PDistribution::finishConditionalBuild(); NN->num_neighbors = nneighbors; NN->copy_input = false; NN->copy_target = false; NN->copy_weight = false; NN->copy_index = true; NN->build(); if(!train_set.isNull()) { NN->setTrainingSet(train_set); NN->train(); } NN_outputs.resize(nneighbors); }
string PLearn::NeighborhoodBoxVolumeDensityEstimator::classname | ( | ) | const [virtual] |
Reimplemented from PLearn::UnconditionalDistribution.
Definition at line 68 of file NeighborhoodBoxVolumeDensityEstimator.cc.
void PLearn::NeighborhoodBoxVolumeDensityEstimator::declareOptions | ( | OptionList & | ol | ) | [static, protected] |
Declare this class' options.
Reimplemented from PLearn::UnconditionalDistribution.
Definition at line 73 of file NeighborhoodBoxVolumeDensityEstimator.cc.
References PLearn::OptionBase::buildoption, PLearn::declareOption(), PLearn::UnconditionalDistribution::declareOptions(), PLearn::OptionBase::learntoption, min_radius, NN, nneighbors, and PLearn::PLearner::train_set.
{ // ### Declare all of this object's options here // ### For the "flags" of each option, you should typically specify // ### one of OptionBase::buildoption, OptionBase::learntoption or // ### OptionBase::tuningoption. Another possible flag to be combined with // ### is OptionBase::nosave declareOption(ol, "nneighbors", &NeighborhoodBoxVolumeDensityEstimator::nneighbors, OptionBase::buildoption, "Number of neighbors to consider to determine the boxed region centered on the test point"); declareOption(ol, "min_radius", &NeighborhoodBoxVolumeDensityEstimator::min_radius, OptionBase::buildoption, "This is added to each dimension of the found box (as some dimensions may be initially 0)"); declareOption(ol, "train_set", &NeighborhoodBoxVolumeDensityEstimator::train_set, OptionBase::learntoption, "We need to store the training set, as this learner is memory-based..."); declareOption(ol, "NN", &NeighborhoodBoxVolumeDensityEstimator::NN, OptionBase::buildoption, "The nearest neighbor search method to use (default uses ehaustive search with Euclidean distance)"); // Now call the parent class' declareOptions(). inherited::declareOptions(ol); }
static const PPath& PLearn::NeighborhoodBoxVolumeDensityEstimator::declaringFile | ( | ) | [inline, static] |
Reimplemented from PLearn::UnconditionalDistribution.
Definition at line 124 of file NeighborhoodBoxVolumeDensityEstimator.h.
NeighborhoodBoxVolumeDensityEstimator * PLearn::NeighborhoodBoxVolumeDensityEstimator::deepCopy | ( | CopiesMap & | copies | ) | const [virtual] |
Reimplemented from PLearn::UnconditionalDistribution.
Definition at line 68 of file NeighborhoodBoxVolumeDensityEstimator.cc.
void PLearn::NeighborhoodBoxVolumeDensityEstimator::forget | ( | ) | [virtual] |
Resets the distribution.
Reimplemented from PLearn::UnconditionalDistribution.
Definition at line 215 of file NeighborhoodBoxVolumeDensityEstimator.cc.
References NN.
{ NN->forget(); }
OptionList & PLearn::NeighborhoodBoxVolumeDensityEstimator::getOptionList | ( | ) | const [virtual] |
Reimplemented from PLearn::UnconditionalDistribution.
Definition at line 68 of file NeighborhoodBoxVolumeDensityEstimator.cc.
OptionMap & PLearn::NeighborhoodBoxVolumeDensityEstimator::getOptionMap | ( | ) | const [virtual] |
Reimplemented from PLearn::UnconditionalDistribution.
Definition at line 68 of file NeighborhoodBoxVolumeDensityEstimator.cc.
RemoteMethodMap & PLearn::NeighborhoodBoxVolumeDensityEstimator::getRemoteMethodMap | ( | ) | const [virtual] |
Reimplemented from PLearn::UnconditionalDistribution.
Definition at line 68 of file NeighborhoodBoxVolumeDensityEstimator.cc.
Return log of probability density log(p(y | x)).
Reimplemented from PLearn::PDistribution.
Definition at line 150 of file NeighborhoodBoxVolumeDensityEstimator.cc.
References box_contains(), d, i, PLearn::PLearner::inputsize(), j, PLearn::TVec< T >::length(), PLearn::VMat::length(), PLearn::max(), min_radius, NN, NN_outputs, pl_log, PLearn::TVec< T >::resize(), PLearn::TVec< T >::subVec(), PLearn::PLearner::train_set, trainsample, w, and PLearn::ws().
{ int l = train_set.length(); int w = inputsize(); int ws = train_set->weightsize(); trainsample.resize(w+ws); Vec input = trainsample.subVec(0,w); // Find distance d to width_neighbor neighbour NN->computeOutput(y, NN_outputs); Vec radius(w); for(int k=0; k<NN_outputs.length(); k++) { train_set->getRow((int)NN_outputs[k],trainsample); for(int j=0; j<w; j++) { real d = fabs(y[j]-input[j]); radius[j] = max(radius[j],d); } } radius += min_radius; int region_count = 0; for(int i=0; i<l; i++) { train_set->getRow(i,trainsample); if(box_contains(y,radius,input)) region_count++; } double log_region_volume = 0; for(int j=0; j<w; j++) log_region_volume += pl_log(radius[j]); return pl_log(double(region_count))-log_region_volume-pl_log(double(l)); }
void PLearn::NeighborhoodBoxVolumeDensityEstimator::makeDeepCopyFromShallowCopy | ( | CopiesMap & | copies | ) | [virtual] |
Transform a shallow copy into a deep copy.
Reimplemented from PLearn::UnconditionalDistribution.
Definition at line 191 of file NeighborhoodBoxVolumeDensityEstimator.cc.
References PLearn::deepCopyField(), PLearn::UnconditionalDistribution::makeDeepCopyFromShallowCopy(), and NN.
{ inherited::makeDeepCopyFromShallowCopy(copies); // ### Call deepCopyField on all "pointer-like" fields // ### that you wish to be deepCopied rather than // ### shallow-copied. // ### ex: // deepCopyField(trainvec, copies); deepCopyField(NN, copies); }
void PLearn::NeighborhoodBoxVolumeDensityEstimator::train | ( | ) | [virtual] |
The role of the train method is to bring the learner up to stage == nstages, updating the train_stats collector with training costs measured on-line in the process.
Reimplemented from PLearn::PDistribution.
Definition at line 208 of file NeighborhoodBoxVolumeDensityEstimator.cc.
References NN, and PLearn::PLearner::train_set.
Reimplemented from PLearn::UnconditionalDistribution.
Definition at line 124 of file NeighborhoodBoxVolumeDensityEstimator.h.
Definition at line 80 of file NeighborhoodBoxVolumeDensityEstimator.h.
Referenced by declareOptions(), and log_density().
Definition at line 69 of file NeighborhoodBoxVolumeDensityEstimator.h.
Referenced by build_(), declareOptions(), forget(), log_density(), makeDeepCopyFromShallowCopy(), NeighborhoodBoxVolumeDensityEstimator(), and train().
Vec PLearn::NeighborhoodBoxVolumeDensityEstimator::NN_outputs [mutable, protected] |
Definition at line 70 of file NeighborhoodBoxVolumeDensityEstimator.h.
Referenced by build_(), and log_density().
Definition at line 79 of file NeighborhoodBoxVolumeDensityEstimator.h.
Referenced by build_(), and declareOptions().
Vec PLearn::NeighborhoodBoxVolumeDensityEstimator::trainsample [mutable, private] |
Global storage to save memory allocations.
Definition at line 61 of file NeighborhoodBoxVolumeDensityEstimator.h.
Referenced by log_density().