SVMSGD.h

Go to the documentation of this file.
00001 #ifndef _SVMSGD_H___
00002 #define _SVMSGD_H___
00003 
00004 /*
00005    SVM with stochastic gradient
00006    Copyright (C) 2007- Leon Bottou
00007 
00008    This program is free software; you can redistribute it and/or
00009    modify it under the terms of the GNU Lesser General Public
00010    License as published by the Free Software Foundation; either
00011    version 2.1 of the License, or (at your option) any later version.
00012 
00013    This program is distributed in the hope that it will be useful,
00014    but WITHOUT ANY WARRANTY; without even the implied warranty of
00015    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00016    GNU General Public License for more details.
00017 
00018    You should have received a copy of the GNU General Public License
00019    along with this program; if not, write to the Free Software
00020    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA
00021 
00022    Shogun adjustments (w) 2008 Soeren Sonnenburg
00023 */
00024 
00025 #include "lib/common.h"
00026 #include "classifier/LinearClassifier.h"
00027 #include "features/DotFeatures.h"
00028 #include "features/Labels.h"
00029 
00030 namespace shogun
00031 {
00033 class CSVMSGD : public CLinearClassifier
00034 {
00035     public:
00040         CSVMSGD(float64_t C);
00041 
00048         CSVMSGD(
00049             float64_t C, CDotFeatures* traindat,
00050             CLabels* trainlab);
00051 
00052         virtual ~CSVMSGD();
00053 
00058         virtual inline EClassifierType get_classifier_type() { return CT_SVMSGD; }
00059 
00068         virtual bool train(CFeatures* data=NULL);
00069 
00075         inline void set_C(float64_t c1, float64_t c2) { C1=c1; C2=c2; }
00076 
00081         inline float64_t get_C1() { return C1; }
00082 
00087         inline float64_t get_C2() { return C2; }
00088 
00093         inline void set_epochs(int32_t e) { epochs=e; }
00094 
00099         inline int32_t get_epochs() { return epochs; }
00100 
00105         inline void set_bias_enabled(bool enable_bias) { use_bias=enable_bias; }
00106 
00111         inline bool get_bias_enabled() { return use_bias; }
00112 
00117         inline void set_regularized_bias_enabled(bool enable_bias) { use_regularized_bias=enable_bias; }
00118 
00123         inline bool get_regularized_bias_enabled() { return use_regularized_bias; }
00124 
00126         inline virtual const char* get_name() const { return "SVMSGD"; }
00127 
00128     protected:
00130         void calibrate();
00131 
00132     private:
00133         float64_t t;
00134         float64_t C1;
00135         float64_t C2;
00136         float64_t wscale;
00137         float64_t bscale;
00138         int32_t epochs;
00139         int32_t skip;
00140         int32_t count;
00141 
00142         bool use_bias;
00143         bool use_regularized_bias;
00144 };
00145 }
00146 #endif

SHOGUN Machine Learning Toolbox - Documentation