yat  0.8.3pre
Public Member Functions | Protected Attributes
theplu::yat::classifier::Kernel Class Reference

Interface Class for Kernels. More...

#include <yat/classifier/Kernel.h>

Inheritance diagram for theplu::yat::classifier::Kernel:
theplu::yat::classifier::Kernel_MEV theplu::yat::classifier::Kernel_SEV

List of all members.

Public Member Functions

 Kernel (const MatrixLookup &data, const KernelFunction &kf, const bool own=false)
 Kernel (const MatrixLookupWeighted &data, const KernelFunction &kf, const bool own=false)
 Kernel (const Kernel &kernel, const std::vector< size_t > &index)
virtual ~Kernel (void)
 Destructor.
virtual double operator() (const size_t row, const size_t column) const =0
const MatrixLookupdata (void) const
const MatrixLookupWeighteddata_weighted (void) const
double element (const DataLookup1D &vec, const size_t i) const
double element (const DataLookupWeighted1D &vec, const size_t i) const
virtual const Kernelmake_kernel (const MatrixLookup &, const bool) const =0
virtual const Kernelmake_kernel (const MatrixLookupWeighted &, const bool own=false) const =0
size_t size (void) const
 number of samples
bool weighted (void) const

Protected Attributes

const MatrixLookupml_
 underlying data
const MatrixLookupWeightedmlw_
 same as data_ if weifghted otherwise a NULL pointer
const KernelFunctionkf_
 type of Kernel Function e.g. Gaussian (aka RBF)
unsigned int * ref_count_
unsigned int * ref_count_w_

Detailed Description

Interface Class for Kernels.

Class taking care of the $ NxN $ kernel matrix, where $ N $ is number of samples. Each element in the Kernel corresponds to the scalar product of the corresponding pair of samples. At the time being there are two kinds of kernels. Kernel_SEV that is optimized to be fast and Kernel_MEV that is preferable when dealing with many samples and memory might be a bottleneck. A KernelFunction defines what kind of scalar product the Kernel represents, e.g. a Polynomial Kernel of degree 1 means we are dealing with the ordinary linear scalar product.

Note:
If the KernelFunction is destroyed, the Kernel is no longer defined.

Constructor & Destructor Documentation

theplu::yat::classifier::Kernel::Kernel ( const MatrixLookup data,
const KernelFunction kf,
const bool  own = false 
)

Constructor taking the data matrix and KernelFunction as input. Each column in the data matrix corresponds to one sample and the Kernel matrix is built applying the KernelFunction on each pair of columns in the data matrix. If own is set to true, Kernel is owner of underlying data.

Note:
Can not handle NaNs. To deal with missing values use constructor taking MatrixLookupWeighted.
theplu::yat::classifier::Kernel::Kernel ( const MatrixLookupWeighted data,
const KernelFunction kf,
const bool  own = false 
)

Constructor taking the data matrix (with weights) and KernelFunction as input. Each column in the data matrix corresponds to one sample and the Kernel matrix is built applying the KernelFunction on each pair of columns in the data matrix. If own is set to true, Kernel is owner of underlying data.

theplu::yat::classifier::Kernel::Kernel ( const Kernel kernel,
const std::vector< size_t > &  index 
)

The new kernel is created using selected features index. Kernel will own its underlying data

virtual theplu::yat::classifier::Kernel::~Kernel ( void  )
virtual

Destructor.

If Kernel is owner of underlying data and Kernel is the last owner, underlying data is deleted.


Member Function Documentation

Returns:
const reference to the underlying data.
Exceptions:
ifdata is weighted
Returns:
const reference to the underlying data.
Exceptions:
ifdata is unweighted
double theplu::yat::classifier::Kernel::element ( const DataLookup1D vec,
const size_t  i 
) const

Calculates the scalar product (using the KernelFunction) between vector vec and the $ i $ th column in the data matrix.

double theplu::yat::classifier::Kernel::element ( const DataLookupWeighted1D vec,
const size_t  i 
) const

Calculates the weighted scalar product (using the KernelFunction) between vector vec and the $ i $ th column in the data matrix. Using a weight vector with all elements equal to unity yields same result as the non-weighted version above.

virtual const Kernel* theplu::yat::classifier::Kernel::make_kernel ( const MatrixLookup ,
const bool   
) const
pure virtual

An interface for making new classifier objects. This function allows for specification at run-time of which kernel to instatiate (see 'Prototype' in Design Patterns).

Note:
Returns a dynamically allocated Kernel, which has to be deleted by the caller to avoid memory leaks.

Implemented in theplu::yat::classifier::Kernel_MEV, and theplu::yat::classifier::Kernel_SEV.

virtual const Kernel* theplu::yat::classifier::Kernel::make_kernel ( const MatrixLookupWeighted ,
const bool  own = false 
) const
pure virtual

An interface for making new classifier objects. This function allows for specification at run-time of which kernel to instatiate (see 'Prototype' in Design Patterns).

Note:
Returns a dynamically allocated Kernel, which has to be deleted by the caller to avoid memory leaks.

Implemented in theplu::yat::classifier::Kernel_MEV, and theplu::yat::classifier::Kernel_SEV.

virtual double theplu::yat::classifier::Kernel::operator() ( const size_t  row,
const size_t  column 
) const
pure virtual
Returns:
element at position (row, column) of the Kernel matrix

Implemented in theplu::yat::classifier::Kernel_SEV, and theplu::yat::classifier::Kernel_MEV.

Returns:
true if kernel is calculated using weights

Member Data Documentation

pointer telling how many owners to underlying data (data_). NULL if this is not an owner.

pointer telling how many owners to underlying weights (data_w_). NULL if this is not an owner.


The documentation for this class was generated from the following file:

Generated on Thu Dec 20 2012 03:12:58 for yat by  doxygen 1.8.0-20120409