#include <SvmApproximation.h>
Public Types | |
| enum | approximationAlgorithm { iRpropPlus, fixedPointIteration } |
| enum | approximationTarget { noSVs, classificationRateOnSVs } |
| enum | vectorGenerationMode { randomSelection, stochasticUniversalSampling, kMeansClustering } |
Public Member Functions | |
| SvmApproximation (SVM *pSVM, bool verbose=false) | |
| constructor | |
| ~SvmApproximation () | |
| destructor | |
| float | approximate () |
| approximate SVM | |
| float | gradientDescent () |
| perform gradient descent on overall model of approximated SVM (SVs and coefficients) | |
| SVM * | getApproximatedSVM () |
| return pointer to approximated SVM | |
| void | setApproximationAlgorithm (approximationAlgorithm aA) |
| specify the algorithm for the approximation | |
| void | setVectorGenerationMode (int mode) |
| specify technique for choosing initial vectors | |
| void | setApproximationTarget (approximationTarget aT) |
| specify the goal iterate until the approximated SV consists of a specified number of SVs or until a certain classification on the SVs of the original SVM is achieved | |
| void | setTargetNoVecsForApproximatedSVM (unsigned noVecs) |
| specify the number of the SVs for the approximated SVM only used if "approximationTarget" is set to "noSVs" | |
| void | setTargetClassificationRateOnSVsForApproximatedSVM (float classificationRate) |
| specify the classification rate that should be achieved on the SVs of the original SVM only used if "approximationTarget" is set to "classificationRateOnSVs" | |
| void | setNoGradientDescentIterations (unsigned no) |
Protected Member Functions | |
| double | error () |
| determine "difference" between original and approximated SVM | |
| void | addVecRprop () |
| optimize vector using iRpropPlus | |
| void | addVecFixPointIteration () |
| optimize using fixed-point iteration | |
| bool | calcOptimalAlphaOfApproximatedSVM () |
| calculate optimal coefficients for approx. SVM | |
| bool | calcOffsetForReducedModel () |
| calculate bias "b" for approx. SVM | |
| float | getClassificationRateOnSVsCorrectlyClassifiedByOrigSVM () |
| determine classification rate of approx. SVM on SVs of original SVM | |
| void | determineNoPositiveAndNegativeVectorsForApproximation () |
| bool | chooseVectorForNextIteration (Array< double > &vec) |
| choose vector from original SVs | |
| void | createIndexListWithStochasticUniversalSampling () |
| choose initials vectors with k-means-clustering | |
| void | createIndexListWithKMeans () |
Protected Attributes | |
| bool | verbose |
| in verbose mode the algorithm outputs some helpful comments to stdout. | |
| SVM * | mpSVM |
| SVM * | mpApproximatedSVM |
| double * | labels |
| Array< double > | approximatedVectors |
| unsigned | mNoExamplesOfOrigSVM |
| unsigned | mDimension |
| unsigned | mNoSVs |
| unsigned * | mpNoExamplesOfApproximatedSVM |
| double | mOffsetOfApproximatedSVM |
| unsigned | mTargetNoVecsForApproximatedSVM |
| unsigned | mTargetNoPositiveVectors |
| unsigned | mTargetNoNegativeVectors |
| float | mTargetClassificationRateForApproximatedSVM |
| approximationAlgorithm | mApproximationAlgorithm |
| approximationTarget | mApproximationTarget |
| KernelFunction * | mpKernel |
| double | mGamma |
| unsigned int | mVectorGenerationMode |
| bool | mbIsApproximatedModelValid |
| bool | mbPerformedGradientDescent |
| unsigned | mNoGradientDescentIterations |
| unsigned int | mNoPositiveSVsOfOrigSVM |
| unsigned int | mNoNegativeSVsOfOrigSVM |
| unsigned int | mNoPositiveVecsDrawn |
| unsigned int | mNoNegativeVecsDrawn |
| const char * | mOutputDir |
| unsigned | mIndexOfChosenVec |
| std::vector< int > * | mpIndexListOfVecsForSelection |
Friends | |
| class | SvmApproximationErrorFunction |
| class | SvmApproximationErrorFunctionGlobal |
Definition at line 61 of file SvmApproximation.h.
Definition at line 76 of file SvmApproximation.h.
| SvmApproximation::SvmApproximation | ( | SVM * | pSVM, | |
| bool | verbose = false | |||
| ) |
constructor
| pSVM | SVM to be approximated |
Definition at line 70 of file SvmApproximation.cpp.
References approximatedVectors, classificationRateOnSVs, SVM::examples, SVM::getAlpha(), SVM::getDimension(), SVM::getExamples(), SVM::getKernel(), Model::getParameter(), Model::inputDimension, iRpropPlus, labels, mApproximationAlgorithm, mApproximationTarget, mbIsApproximatedModelValid, mbPerformedGradientDescent, mDimension, mGamma, mNoExamplesOfOrigSVM, mNoGradientDescentIterations, mNoNegativeSVsOfOrigSVM, mNoNegativeVecsDrawn, mNoPositiveSVsOfOrigSVM, mNoPositiveVecsDrawn, mNoSVs, mpApproximatedSVM, mpIndexListOfVecsForSelection, mpKernel, mpNoExamplesOfApproximatedSVM, mpSVM, mTargetClassificationRateForApproximatedSVM, mTargetNoVecsForApproximatedSVM, mVectorGenerationMode, randomSelection, SVM::SetTrainingData(), and stochasticUniversalSampling.
| SvmApproximation::~SvmApproximation | ( | ) |
destructor
Definition at line 149 of file SvmApproximation.cpp.
References labels, and mpApproximatedSVM.
| void SvmApproximation::addVecFixPointIteration | ( | ) | [protected] |
optimize using fixed-point iteration
Definition at line 484 of file SvmApproximation.cpp.
References approximatedVectors, chooseVectorForNextIteration(), KernelFunction::eval(), SVM::getAlpha(), SVM::getPoints(), i, labels, mbIsApproximatedModelValid, mDimension, mIndexOfChosenVec, mNoExamplesOfOrigSVM, mNoNegativeVecsDrawn, mNoPositiveVecsDrawn, mpApproximatedSVM, mpIndexListOfVecsForSelection, mpKernel, mpNoExamplesOfApproximatedSVM, mpSVM, and verbose.
Referenced by approximate().
| void SvmApproximation::addVecRprop | ( | ) | [protected] |
optimize vector using iRpropPlus
Definition at line 439 of file SvmApproximation.cpp.
References approximatedVectors, chooseVectorForNextIteration(), error(), Model::getParameter(), IRpropPlus::initUserDefined(), mbIsApproximatedModelValid, mDimension, mGamma, mpNoExamplesOfApproximatedSVM, and IRpropPlus::optimize().
Referenced by approximate().
| float SvmApproximation::approximate | ( | ) |
approximate SVM
Definition at line 267 of file SvmApproximation.cpp.
References addVecFixPointIteration(), addVecRprop(), calcOffsetForReducedModel(), calcOptimalAlphaOfApproximatedSVM(), classificationRateOnSVs, determineNoPositiveAndNegativeVectorsForApproximation(), fixedPointIteration, getClassificationRateOnSVsCorrectlyClassifiedByOrigSVM(), iRpropPlus, mApproximationAlgorithm, mApproximationTarget, mbIsApproximatedModelValid, mpNoExamplesOfApproximatedSVM, mTargetClassificationRateForApproximatedSVM, mTargetNoVecsForApproximatedSVM, noSVs, and verbose.
| bool SvmApproximation::calcOffsetForReducedModel | ( | ) | [protected] |
calculate bias "b" for approx. SVM
Definition at line 667 of file SvmApproximation.cpp.
References KernelFunction::eval(), SVM::getAlpha(), SVM::getOffset(), SVM::getPoints(), i, mNoExamplesOfOrigSVM, mNoSVs, mOffsetOfApproximatedSVM, mpApproximatedSVM, mpKernel, mpNoExamplesOfApproximatedSVM, mpSVM, and Model::parameter.
Referenced by approximate(), and gradientDescent().
| bool SvmApproximation::calcOptimalAlphaOfApproximatedSVM | ( | ) | [protected] |
calculate optimal coefficients for approx. SVM
Definition at line 562 of file SvmApproximation.cpp.
References KernelFunction::eval(), SVM::getAlpha(), SVM::getPoints(), i, mNoExamplesOfOrigSVM, mNoSVs, mpApproximatedSVM, mpKernel, mpNoExamplesOfApproximatedSVM, mpSVM, Model::parameter, Model::setParameter(), and verbose.
Referenced by approximate().
| bool SvmApproximation::chooseVectorForNextIteration | ( | Array< double > & | vec | ) | [protected] |
choose vector from original SVs
Definition at line 798 of file SvmApproximation.cpp.
References createIndexListWithKMeans(), createIndexListWithStochasticUniversalSampling(), SVM::getAlpha(), SVM::getPoints(), kMeansClustering, labels, mDimension, mIndexOfChosenVec, mNoExamplesOfOrigSVM, mNoNegativeVecsDrawn, mNoPositiveVecsDrawn, mpIndexListOfVecsForSelection, mpNoExamplesOfApproximatedSVM, mpSVM, mTargetNoNegativeVectors, mTargetNoPositiveVectors, mVectorGenerationMode, randomSelection, and stochasticUniversalSampling.
Referenced by addVecFixPointIteration(), and addVecRprop().
| void SvmApproximation::createIndexListWithKMeans | ( | ) | [protected] |
Definition at line 704 of file SvmApproximation.cpp.
References SVM::getAlpha(), SVM::getPoints(), i, labels, mNoExamplesOfOrigSVM, mpIndexListOfVecsForSelection, mpKernel, mpSVM, mTargetNoNegativeVectors, mTargetNoPositiveVectors, and mTargetNoVecsForApproximatedSVM.
Referenced by chooseVectorForNextIteration().
| void SvmApproximation::createIndexListWithStochasticUniversalSampling | ( | ) | [protected] |
choose initials vectors with k-means-clustering
Definition at line 751 of file SvmApproximation.cpp.
References SVM::getAlpha(), i, mNoExamplesOfOrigSVM, mpIndexListOfVecsForSelection, mpSVM, and mTargetNoVecsForApproximatedSVM.
Referenced by chooseVectorForNextIteration().
| void SvmApproximation::determineNoPositiveAndNegativeVectorsForApproximation | ( | ) | [protected] |
Definition at line 918 of file SvmApproximation.cpp.
References mNoPositiveSVsOfOrigSVM, mNoSVs, mTargetNoNegativeVectors, mTargetNoPositiveVectors, and mTargetNoVecsForApproximatedSVM.
Referenced by approximate().
| double SvmApproximation::error | ( | ) | [protected] |
determine "difference" between original and approximated SVM
Definition at line 158 of file SvmApproximation.cpp.
References KernelFunction::eval(), SVM::getAlpha(), SVM::getPoints(), i, mNoExamplesOfOrigSVM, mpApproximatedSVM, mpKernel, mpNoExamplesOfApproximatedSVM, and mpSVM.
Referenced by addVecRprop(), SvmApproximationErrorFunctionGlobal::errorDerivative(), and gradientDescent().
| SVM* SvmApproximation::getApproximatedSVM | ( | ) | [inline] |
return pointer to approximated SVM
Definition at line 99 of file SvmApproximation.h.
References mpApproximatedSVM.
| float SvmApproximation::getClassificationRateOnSVsCorrectlyClassifiedByOrigSVM | ( | ) | [protected] |
determine classification rate of approx. SVM on SVs of original SVM
Definition at line 883 of file SvmApproximation.cpp.
References SVM::getAlpha(), SVM::getPoints(), i, labels, mNoExamplesOfOrigSVM, SVM::model(), mpApproximatedSVM, and mpSVM.
Referenced by approximate().
| float SvmApproximation::gradientDescent | ( | ) |
perform gradient descent on overall model of approximated SVM (SVs and coefficients)
Definition at line 370 of file SvmApproximation.cpp.
References approximatedVectors, calcOffsetForReducedModel(), error(), SVM::getAlpha(), Model::getParameter(), i, IRpropPlus::initUserDefined(), mbPerformedGradientDescent, mDimension, mGamma, mNoGradientDescentIterations, mpApproximatedSVM, mpNoExamplesOfApproximatedSVM, IRpropPlus::optimize(), Model::parameter, and verbose.
| void SvmApproximation::setApproximationAlgorithm | ( | approximationAlgorithm | aA | ) | [inline] |
specify the algorithm for the approximation
Definition at line 105 of file SvmApproximation.h.
References mApproximationAlgorithm.
| void SvmApproximation::setApproximationTarget | ( | approximationTarget | aT | ) | [inline] |
specify the goal iterate until the approximated SV consists of a specified number of SVs or until a certain classification on the SVs of the original SVM is achieved
Definition at line 114 of file SvmApproximation.h.
References mApproximationTarget.
| void SvmApproximation::setNoGradientDescentIterations | ( | unsigned | no | ) | [inline] |
Definition at line 126 of file SvmApproximation.h.
References mNoGradientDescentIterations.
| void SvmApproximation::setTargetClassificationRateOnSVsForApproximatedSVM | ( | float | classificationRate | ) | [inline] |
specify the classification rate that should be achieved on the SVs of the original SVM only used if "approximationTarget" is set to "classificationRateOnSVs"
Definition at line 123 of file SvmApproximation.h.
References mTargetClassificationRateForApproximatedSVM.
| void SvmApproximation::setTargetNoVecsForApproximatedSVM | ( | unsigned | noVecs | ) | [inline] |
specify the number of the SVs for the approximated SVM only used if "approximationTarget" is set to "noSVs"
Definition at line 118 of file SvmApproximation.h.
References mTargetNoVecsForApproximatedSVM.
| void SvmApproximation::setVectorGenerationMode | ( | int | mode | ) | [inline] |
specify technique for choosing initial vectors
Definition at line 109 of file SvmApproximation.h.
References mVectorGenerationMode.
friend class SvmApproximationErrorFunction [friend] |
Definition at line 201 of file SvmApproximation.h.
friend class SvmApproximationErrorFunctionGlobal [friend] |
Definition at line 202 of file SvmApproximation.h.
Array<double> SvmApproximation::approximatedVectors [protected] |
Definition at line 168 of file SvmApproximation.h.
Referenced by addVecFixPointIteration(), addVecRprop(), gradientDescent(), and SvmApproximation().
double* SvmApproximation::labels [protected] |
Definition at line 166 of file SvmApproximation.h.
Referenced by addVecFixPointIteration(), chooseVectorForNextIteration(), createIndexListWithKMeans(), getClassificationRateOnSVsCorrectlyClassifiedByOrigSVM(), SvmApproximation(), and ~SvmApproximation().
Definition at line 178 of file SvmApproximation.h.
Referenced by approximate(), setApproximationAlgorithm(), and SvmApproximation().
Definition at line 179 of file SvmApproximation.h.
Referenced by approximate(), setApproximationTarget(), and SvmApproximation().
bool SvmApproximation::mbIsApproximatedModelValid [protected] |
Definition at line 185 of file SvmApproximation.h.
Referenced by addVecFixPointIteration(), addVecRprop(), approximate(), and SvmApproximation().
bool SvmApproximation::mbPerformedGradientDescent [protected] |
Definition at line 186 of file SvmApproximation.h.
Referenced by gradientDescent(), and SvmApproximation().
unsigned SvmApproximation::mDimension [protected] |
Definition at line 170 of file SvmApproximation.h.
Referenced by addVecFixPointIteration(), addVecRprop(), chooseVectorForNextIteration(), gradientDescent(), and SvmApproximation().
double SvmApproximation::mGamma [protected] |
Definition at line 182 of file SvmApproximation.h.
Referenced by addVecRprop(), gradientDescent(), and SvmApproximation().
unsigned SvmApproximation::mIndexOfChosenVec [protected] |
Definition at line 197 of file SvmApproximation.h.
Referenced by addVecFixPointIteration(), and chooseVectorForNextIteration().
unsigned SvmApproximation::mNoExamplesOfOrigSVM [protected] |
Definition at line 170 of file SvmApproximation.h.
Referenced by addVecFixPointIteration(), calcOffsetForReducedModel(), calcOptimalAlphaOfApproximatedSVM(), chooseVectorForNextIteration(), createIndexListWithKMeans(), createIndexListWithStochasticUniversalSampling(), error(), getClassificationRateOnSVsCorrectlyClassifiedByOrigSVM(), and SvmApproximation().
unsigned SvmApproximation::mNoGradientDescentIterations [protected] |
Definition at line 188 of file SvmApproximation.h.
Referenced by gradientDescent(), setNoGradientDescentIterations(), and SvmApproximation().
unsigned int SvmApproximation::mNoNegativeSVsOfOrigSVM [protected] |
unsigned int SvmApproximation::mNoNegativeVecsDrawn [protected] |
Definition at line 192 of file SvmApproximation.h.
Referenced by addVecFixPointIteration(), chooseVectorForNextIteration(), and SvmApproximation().
unsigned int SvmApproximation::mNoPositiveSVsOfOrigSVM [protected] |
Definition at line 191 of file SvmApproximation.h.
Referenced by determineNoPositiveAndNegativeVectorsForApproximation(), and SvmApproximation().
unsigned int SvmApproximation::mNoPositiveVecsDrawn [protected] |
Definition at line 192 of file SvmApproximation.h.
Referenced by addVecFixPointIteration(), chooseVectorForNextIteration(), and SvmApproximation().
unsigned SvmApproximation::mNoSVs [protected] |
Definition at line 170 of file SvmApproximation.h.
Referenced by calcOffsetForReducedModel(), calcOptimalAlphaOfApproximatedSVM(), determineNoPositiveAndNegativeVectorsForApproximation(), and SvmApproximation().
double SvmApproximation::mOffsetOfApproximatedSVM [protected] |
const char* SvmApproximation::mOutputDir [protected] |
Definition at line 195 of file SvmApproximation.h.
SVM* SvmApproximation::mpApproximatedSVM [protected] |
Definition at line 164 of file SvmApproximation.h.
Referenced by addVecFixPointIteration(), calcOffsetForReducedModel(), calcOptimalAlphaOfApproximatedSVM(), error(), SvmApproximationErrorFunctionGlobal::errorDerivative(), SvmApproximationErrorFunction::errorDerivative(), getApproximatedSVM(), getClassificationRateOnSVsCorrectlyClassifiedByOrigSVM(), gradientDescent(), SvmApproximation(), and ~SvmApproximation().
std::vector<int>* SvmApproximation::mpIndexListOfVecsForSelection [protected] |
Definition at line 199 of file SvmApproximation.h.
Referenced by addVecFixPointIteration(), chooseVectorForNextIteration(), createIndexListWithKMeans(), createIndexListWithStochasticUniversalSampling(), and SvmApproximation().
KernelFunction* SvmApproximation::mpKernel [protected] |
Definition at line 181 of file SvmApproximation.h.
Referenced by addVecFixPointIteration(), calcOffsetForReducedModel(), calcOptimalAlphaOfApproximatedSVM(), createIndexListWithKMeans(), error(), and SvmApproximation().
unsigned* SvmApproximation::mpNoExamplesOfApproximatedSVM [protected] |
Definition at line 171 of file SvmApproximation.h.
Referenced by addVecFixPointIteration(), addVecRprop(), approximate(), calcOffsetForReducedModel(), calcOptimalAlphaOfApproximatedSVM(), chooseVectorForNextIteration(), error(), gradientDescent(), and SvmApproximation().
SVM* SvmApproximation::mpSVM [protected] |
Definition at line 163 of file SvmApproximation.h.
Referenced by addVecFixPointIteration(), calcOffsetForReducedModel(), calcOptimalAlphaOfApproximatedSVM(), chooseVectorForNextIteration(), createIndexListWithKMeans(), createIndexListWithStochasticUniversalSampling(), error(), SvmApproximationErrorFunctionGlobal::errorDerivative(), SvmApproximationErrorFunction::errorDerivative(), getClassificationRateOnSVsCorrectlyClassifiedByOrigSVM(), and SvmApproximation().
float SvmApproximation::mTargetClassificationRateForApproximatedSVM [protected] |
Definition at line 176 of file SvmApproximation.h.
Referenced by approximate(), setTargetClassificationRateOnSVsForApproximatedSVM(), and SvmApproximation().
unsigned SvmApproximation::mTargetNoNegativeVectors [protected] |
Definition at line 175 of file SvmApproximation.h.
Referenced by chooseVectorForNextIteration(), createIndexListWithKMeans(), and determineNoPositiveAndNegativeVectorsForApproximation().
unsigned SvmApproximation::mTargetNoPositiveVectors [protected] |
Definition at line 175 of file SvmApproximation.h.
Referenced by chooseVectorForNextIteration(), createIndexListWithKMeans(), and determineNoPositiveAndNegativeVectorsForApproximation().
unsigned SvmApproximation::mTargetNoVecsForApproximatedSVM [protected] |
Definition at line 175 of file SvmApproximation.h.
Referenced by approximate(), createIndexListWithKMeans(), createIndexListWithStochasticUniversalSampling(), determineNoPositiveAndNegativeVectorsForApproximation(), setTargetNoVecsForApproximatedSVM(), and SvmApproximation().
unsigned int SvmApproximation::mVectorGenerationMode [protected] |
Definition at line 184 of file SvmApproximation.h.
Referenced by chooseVectorForNextIteration(), setVectorGenerationMode(), and SvmApproximation().
bool SvmApproximation::verbose [protected] |
in verbose mode the algorithm outputs some helpful comments to stdout.
Definition at line 131 of file SvmApproximation.h.
Referenced by addVecFixPointIteration(), approximate(), calcOptimalAlphaOfApproximatedSVM(), and gradientDescent().