26 #ifndef CMULTICLASSSVM_H
27 #define CMULTICLASSSVM_H
31 #include "CConjugateGradientOptimizer.h"
50 m_tTrueClass = tTrueClass;
51 m_tMargins = tMargins;
52 m_iClasses = tMargins.
columns();
66 for(
int i=0; i<m_iClasses-1; i++)
67 tSoftMax[i] = getPosition()[i*2] * tVec[i] + getPosition()[i*2+1];
68 tSoftMax[m_iClasses-1] = 1.0 * tVec[m_iClasses-1] + 1.0;
70 for(
int i=0; i<m_iClasses; i++)
71 tSoftMax[i] = exp(tSoftMax[i]);
72 tSoftMax /= tSoftMax.sumElements();
80 if(!CConjugateGradientOptimizer<Type>::serialize2(tA))
87 tA << m_iClasses; tA.
flush();
98 for(
int i=0;i<m_tMargins.rows();i++)
99 tValue -= log(
softMax(m_tMargins.getRow(i), tPos)[(
int)m_tTrueClass[i]] + 0.0000001);
108 for(
int i=0;i<m_tMargins.rows();i++) {
109 tP =
softMax(m_tMargins.getRow(i), tPos);
110 for(
int j=0; j<m_iClasses-1; j++) {
111 if(m_tTrueClass[i]==j)
115 tDP[j*2] += tNet * tP[j] * (1.0-tP[j]) * m_tMargins(i,j);
116 tDP[j*2+1] += tNet * tP[j] * (1.0-tP[j]) * 1;
125 for(
int i=0; i<m_iClasses-1; i++)
126 tSoftMax[i] = tPos[i*2] * tVec[i] + tPos[i*2+1];
127 tSoftMax[m_iClasses-1] = 1.0 * tVec[m_iClasses-1] + 1.0;
129 for(
int i=0; i<m_iClasses; i++)
130 tSoftMax[i] = exp(tSoftMax[i]);
190 bool isA(
const char* acClass)
const;
TMultiClassSVMType
Definition: CMultiClassSVM.h:141
virtual bool isReading() const
Definition: CArchiv.h:25
void trainOneVsAll(vector< CDataset< Type > > &rtClassData)
void trainCalibratedOneVsAll(vector< CDataset< Type > > &rtClassDs)
int rows() const
Definition: CMatrix.h:195
void classify(const CVector< Type > &, Type &, Type &) const
Definition: CMultiClassSVM.h:165
COneVsAllCalibration()
Definition: CMultiClassSVM.h:40
CKernel< Type > * m_ptKernel
Definition: CMultiClassSVM.h:146
bool isA(const char *acClass) const
void setCacheSize(int iSize)
Set size of kernel cache.
Definition: CMultiClassSVM.h:184
const CKernel< Type > * kernel() const
Definition: CMultiClassSVM.h:186
Definition: CMultiClassSVM.h:138
Template object implementing a matrix of single and double precision elements.
Definition: CDenseVector.h:38
int dimension() const
Definition: CDenseVector.h:150
#define ML_EQ_CHK(var, val)
Definition: Macros.h:123
COneVsAllCalibration< Type > m_tOneVsAllCalibration
Definition: CMultiClassSVM.h:152
Definition: CMultiClassSVM.h:141
int m_iCalibrationFolds
Definition: CMultiClassSVM.h:151
CDenseVector< int > m_tNumClassItems
Definition: CMultiClassSVM.h:144
TMultiClassSVMType m_tType
Definition: CMultiClassSVM.h:145
int m_iCacheSize
Definition: CMultiClassSVM.h:150
int classify(const CVector< Type > &tPattern) const
Definition: CMultiClassSVM.h:141
CDenseVector< Type > softMax(const CDenseVector< Type > &tVec, const CDenseVector< Type > &tPos)
Definition: CMultiClassSVM.h:122
Type m_tMaxTerminationError
Definition: CMultiClassSVM.h:148
CMultiClassSVM(int iNumClasses, TMultiClassSVMType tType=ONE_VS_ALL)
Constructor.
Base class of object serialization.
Definition: CArchiv.h:19
Type functionValueAt(CDenseVector< Type > &tPos)
Definition: CMultiClassSVM.h:95
int columns() const
Definition: CMatrix.h:203
~CMultiClassSVM()
Destructor.
Base class for kernel functions Base class for kernel function used for example by the support vector...
Definition: CKernel.h:46
Template object for vectors of single and double precision and integer.
Definition: CDenseVector.h:37
templatized vector for numerical applications
Definition: CMatrix.h:39
void setMaxTerminationError(Type tTE)
Set termination error.
Definition: CMultiClassSVM.h:176
vector< CSVMModel< Type > > m_tClassifiers
Definition: CMultiClassSVM.h:143
void trainOneVsOne(vector< CDataset< Type > > &rtClassData)
#define ML_GEQ_CHK(var, val)
Definition: Macros.h:119
void setKernel(CKernel< Type > *ptKernel)
Set kernel functiob.
Manages pairs of input and output vectors.
Definition: CDataset.h:110
void setCalibratedOutput(bool bSwitch)
Definition: CMultiClassSVM.h:178
bool m_bCalibrated
Definition: CMultiClassSVM.h:149
void setRegularization(Type tC)
Set regularization value.
Definition: CMultiClassSVM.h:172
CDenseVector< Type > partialDerivativeAt(CDenseVector< Type > &tPos)
Definition: CMultiClassSVM.h:103
Definition: CMultiClassSVM.h:34
bool serialize2(CArchiv &tA)
Definition: CMultiClassSVM.h:77
Type m_tC
Definition: CMultiClassSVM.h:147
void train(const CDataset< Type > &rtDataset)
CDenseVector< Type > softMax(const CDenseVector< Type > &tVec) const
Definition: CMultiClassSVM.h:57
virtual void flush()
Definition: CArchiv.h:26
bool serialize2(CArchiv &tA)
Type calibrate(CDenseVector< Type > &tTrueClass, CMatrix< Type > &tMargins)
Definition: CMultiClassSVM.h:43