00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00044
#ifndef HyperOptimizer_INC
00045
#define HyperOptimizer_INC
00046
00047
#include <plearn_learners/generic/Learner.h>
00048
#include <plearn_learners/testers/TestMethod.h>
00049
00050
namespace PLearn {
00051
using namespace std;
00052
00053
00054
00055
00056
00057
00058
class HyperOptimizer;
00059 typedef Array<PP<HyperOptimizer> >
HStrategy;
00060 typedef map<string, string>
HAliases;
00061
00062 class HyperOptimizer:
public Object
00063 {
00064 typedef Object inherited;
00065
public:
00066 HyperOptimizer()
00067 {};
00068
00071
virtual void optimize(
PP<Learner> learner,
const VMat &dataset,
const HAliases &aliases) = 0;
00072
00073 PP<TestMethod> objective;
00074 HStrategy substrategy;
00075
00076
PLEARN_DECLARE_ABSTRACT_OBJECT(
HyperOptimizer);
00077
static void declareOptions(
OptionList &ol);
00078
00079
protected:
00080
private:
00081 };
00082
00083
DECLARE_OBJECT_PTR(
HyperOptimizer);
00084
00085
00086
00087
00088
00089
00090
00091 class HSetVal:
public HyperOptimizer
00092 {
00093 typedef HyperOptimizer inherited;
00094
public:
00095 HSetVal()
00096 {};
00097
00098
virtual void optimize(
PP<Learner> learner,
const VMat &dataset,
const HAliases &aliases);
00099
00100
PLEARN_DECLARE_OBJECT(
HSetVal);
00101
static void declareOptions(
OptionList &ol);
00102
protected:
00103 string param;
00104 string value;
00105 };
00106
00107
DECLARE_OBJECT_PTR(
HSetVal);
00108
00109
00110
00111
00112
00113
00114
00115 class HTryAll:
public HyperOptimizer
00116 {
00117 typedef HyperOptimizer inherited;
00118
public:
00119 HTryAll()
00120 {};
00121
00122
virtual void optimize(
PP<Learner> learner,
const VMat &dataset,
const HAliases &aliases);
00123
00124
PLEARN_DECLARE_OBJECT(
HTryAll);
00125
static void declareOptions(
OptionList &ol);
00126
00127 string param;
00128 Array<string> values;
00129 };
00130
00131
DECLARE_OBJECT_PTR(
HTryAll);
00132
00133
00134
00135
00136
00137
00138 class HCoordinateDescent:
public HyperOptimizer
00139 {
00140 typedef HyperOptimizer inherited;
00141
public:
00142 HCoordinateDescent()
00143 :
max_iterations(10)
00144 {};
00145
00146
virtual void optimize(
PP<Learner> learner,
const VMat &dataset,
const HAliases &aliases);
00147
00148
PLEARN_DECLARE_OBJECT(
HCoordinateDescent);
00149
static void declareOptions(
OptionList &ol);
00150
protected:
00151 int max_iterations;
00152 HStrategy substragegy;
00153
00154 };
00155
00156
DECLARE_OBJECT_PTR(
HCoordinateDescent);
00157
00158
00159
00160
00161
00162 class HTryCombinations:
public HyperOptimizer
00163 {
00164 typedef HyperOptimizer inherited;
00165
public:
00166 HTryCombinations()
00167 {};
00168
00169
virtual void optimize(
PP<Learner> learner,
const VMat &dataset,
const HAliases &aliases);
00170
00171
PLEARN_DECLARE_OBJECT(
HTryCombinations);
00172
static void declareOptions(
OptionList &ol);
00173
00174
virtual void build();
00175
void _build();
00176
00177
protected:
00178
real recursive_optimize(
PP<Learner> learner,
const VMat &dataset,
const Array<string> &aliases,
int i);
00179
00180 Array<Array<string> >
values;
00181 Array<string> params;
00182
00183 };
00184
00185
DECLARE_OBJECT_PTR(
HTryCombinations);
00186
00187
00188 };
00189
00190
#endif // HyperOptimizer_INC