Feature Selection Toolbox FST4
UTIA · Czech Academy of Sciences
Loading...
Searching...
No Matches
FST::Search_SFS< RETURNTYPE, DIMTYPE, SUBSET, CRITERION, EVALUATOR > Class Template Reference

Implements Sequential_Forward_Selection and Sequential_Backward_Selection. More...

#include <search_seq_sfs.hpp>

Inheritance diagram for FST::Search_SFS< RETURNTYPE, DIMTYPE, SUBSET, CRITERION, EVALUATOR >:
FST::Search_Sequential< RETURNTYPE, DIMTYPE, SUBSET, CRITERION, EVALUATOR > FST::Search< RETURNTYPE, DIMTYPE, SUBSET, CRITERION >

Classes

struct  OneSubset
 Structure to hold [subset,criterion value] temporary solutions in the course of search. More...

Public Types

typedef Search_Sequential< RETURNTYPE, DIMTYPE, SUBSET, CRITERION, EVALUATOR > parent
 base class alias
typedef parent::parent grandparent
 the shared Search base (output detail, result tracker)
typedef std::shared_ptr< EVALUATOR > PEvaluator
 shared pointer to the sequential-step evaluator
typedef std::shared_ptr< CRITERION > PCriterion
 shared pointer to the criterion the search optimizes
typedef std::shared_ptr< SUBSET > PSubset
 shared pointer to a feature subset
Public Types inherited from FST::Search_Sequential< RETURNTYPE, DIMTYPE, SUBSET, CRITERION, EVALUATOR >
typedef Search< RETURNTYPE, DIMTYPE, SUBSET, CRITERION > parent
 base class alias
typedef std::shared_ptr< EVALUATOR > PEvaluator
 shared pointer to the sequential-step evaluator that implements Step()'s candidate generation and selection
typedef std::shared_ptr< CRITERION > PCriterion
 shared pointer to the criterion the search optimizes
typedef std::shared_ptr< SUBSET > PSubset
 shared pointer to a feature subset

Public Member Functions

 Search_SFS (const PEvaluator evaluator)
 evaluator must be non-null; direction defaults to FORWARD (SFS); call set_search_direction(BACKWARD) for SBS
virtual bool search (const DIMTYPE target_d, RETURNTYPE &result, const PSubset sub, const PCriterion crit, std::ostream &os=std::cout) override
 Runs SFS (or SBS) and returns the resulting subset + its criterion value.
void set_search_direction (const SearchDirection direction)
 FORWARD implies SFS, BACKWARD implies SBS (do not change concurrently to running search()).
SearchDirection get_search_direction () const
 the currently configured direction (see set_search_direction())
bool get_result (const DIMTYPE d, RETURNTYPE &result, PSubset &sub)
 retrieves the subset of cardinality d (1-based: d ranges over 1..n) recorded during the last search(), together with its criterion value; false if that search recorded nothing at this cardinality - which is the case for every size it did not visit, and for all sizes if it returned false. The contents are copied into sub, which must be non-null and dimensioned for the full feature set
virtual std::ostream & print (std::ostream &os) const override
 writes a human-readable identification of the search and its configuration; base default writes nothing
Public Member Functions inherited from FST::Search_Sequential< RETURNTYPE, DIMTYPE, SUBSET, CRITERION, EVALUATOR >
 Search_Sequential (const PEvaluator evaluator)
 evaluator must be non-null
bool Step (const bool forward, RETURNTYPE &result, const PSubset sub, const PCriterion crit, std::ostream &os=std::cout)
 Performs one sequential step: adds (forward) or removes (!forward) the best g-tuple of features, g being the generalization level.
void set_generalization_level (const DIMTYPE g)
 optional parameter to enlarge the number of considered candidates (g is the number of features added/removed in one Step)
DIMTYPE get_generalization_level () const
 the currently configured generalization level (see set_generalization_level())
void enable_initial_subset ()
 makes search() start from the caller-supplied contents of its sub argument instead of the concrete method's default (empty set for FORWARD, full set for BACKWARD)
void disable_initial_subset ()
 reverts to the default: incoming sub contents are ignored by search()
bool initial_subset_enabled () const
 true if enable_initial_subset() was called (and not since disabled by disable_initial_subset())

Protected Attributes

SearchDirection _direction
std::unique_ptr< OneSubset[]> bsubs
 per-cardinality result found in the course of the last search() (index d-1); read by get_result()
DIMTYPE _n
 bsubs array size
Protected Attributes inherited from FST::Search_Sequential< RETURNTYPE, DIMTYPE, SUBSET, CRITERION, EVALUATOR >
PEvaluator _evaluator
 the sequential-step evaluator injected at construction; drives Step()'s candidate generation and best/worst choice
DIMTYPE _generalization_level
 number of features added/removed together in one Step() call (see set_generalization_level())
bool _initial_subset_enabled
 by default all concrete search methods ignore the contents of supplied 'PSubset set' and initialize sub according to their definition; if enabled, then (if possible) the search() starts from supplied 'PSubset sub' contents

Additional Inherited Members

Detailed Description

template<class RETURNTYPE, typename DIMTYPE, class SUBSET, class CRITERION, class EVALUATOR>
class FST::Search_SFS< RETURNTYPE, DIMTYPE, SUBSET, CRITERION, EVALUATOR >

Implements Sequential_Forward_Selection and Sequential_Backward_Selection.

Note
By default any initial subset contents are ignored; SFS starts from empty set and SBS starts from full set. Call enable_initial_subset() to let the search start from the initial sub contents.
Examples
demo10.cpp.

Member Function Documentation

◆ print()

template<class RETURNTYPE, typename DIMTYPE, class SUBSET, class CRITERION, class EVALUATOR>
std::ostream & FST::Search_SFS< RETURNTYPE, DIMTYPE, SUBSET, CRITERION, EVALUATOR >::print ( std::ostream & os) const
overridevirtual

writes a human-readable identification of the search and its configuration; base default writes nothing

Reimplemented from FST::Search< RETURNTYPE, DIMTYPE, SUBSET, CRITERION >.

◆ search()

template<class RETURNTYPE, typename DIMTYPE, class SUBSET, class CRITERION, class EVALUATOR>
bool FST::Search_SFS< RETURNTYPE, DIMTYPE, SUBSET, CRITERION, EVALUATOR >::search ( const DIMTYPE target_d,
RETURNTYPE & result,
const PSubset sub,
const PCriterion crit,
std::ostream & os = std::cout )
overridevirtual

Runs SFS (or SBS) and returns the resulting subset + its criterion value.

Starts from the empty set (FORWARD) or the full set (BACKWARD), unless enable_initial_subset() was called, in which case the incoming contents of sub are the starting point. Each step adds (removes) the best g-tuple of features, g being the generalization level, until target_d features are selected; with target_d==0 the search runs to the end of its range and returns the best-valued subset among all sizes visited.

Returns
false if the criterion failed on some subset, or if the requested combination of starting size, target_d and generalization level makes a solution unreachable (see the reachability test at the start of the body): for instance a forward search asked for fewer features than it starts with, or a target_d not reachable by whole g-sized steps.

Implements FST::Search_Sequential< RETURNTYPE, DIMTYPE, SUBSET, CRITERION, EVALUATOR >.

Examples
demo10.cpp.

Member Data Documentation

◆ _direction

template<class RETURNTYPE, typename DIMTYPE, class SUBSET, class CRITERION, class EVALUATOR>
SearchDirection FST::Search_SFS< RETURNTYPE, DIMTYPE, SUBSET, CRITERION, EVALUATOR >::_direction
protected

accepted values FORWARD for SFS or BACKWARD for SBS


The documentation for this class was generated from the following file:
Copyright © 2000–present ÚTIA, Institute of Information Theory and Automation of the Czech Academy of Sciences · Contacts · This site sets no cookies and uses no analytics.