00001 #ifndef VFDTH
00002 #define VFDTH
00003
00032 #include "vfml.h"
00033
00034 typedef struct _VFDTGROWINGDATA_ {
00035 ExampleGroupStatsPtr egs;
00036 long seenExamplesCount;
00037
00038 int seenSinceLastProcess;
00039 VoidListPtr exampleCache;
00040
00041 float parentErrorRate;
00042 int parentClass;
00043
00044 long seenSinceDeactivated;
00045 long errorsSinceDeactivated;
00046
00047 int treeLevel;
00048 float splitConfidence;
00049
00050 int prePruned;
00051 } VFDTGrowingData, *VFDTGrowingDataPtr;
00052
00053
00055 typedef struct _VFDT_ {
00056 ExampleSpecPtr spec;
00057 DecisionTreePtr dtree;
00058
00059 float splitConfidence;
00060 float tieConfidence;
00061 int messageLevel;
00062 int useGini;
00063 int processChunkSize;
00064 long maxAllocationBytes;
00065
00066 unsigned long examplesSeen;
00067 unsigned long numGrowing;
00068
00069 unsigned long numBoundsUsed;
00070
00071 int cacheExamples;
00072 int recoverMinimum;
00073
00074 int reactivateLeaves;
00075 float highestDeactivatedIndex;
00076 unsigned long reactivateScanPeriod;
00077
00078 int batchMode;
00079 float prePruneTau;
00080 int laplace;
00081 int doBonferonni;
00082 } VFDT, *VFDTPtr;
00083
00094 VFDTPtr VFDTNew(ExampleSpecPtr spec, float splitConfidence,
00095 float tieConfidence);
00096
00098 void VFDTFree(VFDTPtr vfdt);
00099
00104 void VFDTSetMessageLevel(VFDTPtr vfdt, int value);
00105
00119 void VFDTSetMaxAllocationMegs(VFDTPtr vfdt, int value);
00120
00126 void VFDTSetProcessChunkSize(VFDTPtr vfdt, int value);
00127
00129 void VFDTSetUseGini(VFDTPtr vfdt, int value);
00130
00138 void VFDTSetRestartLeaves(VFDTPtr vfdt, int value);
00139
00148 void VFDTSetCacheTrainingExamples(VFDTPtr vfdt, int value);
00149
00156 void VFDTSetPrePruneTau(VFDTPtr vfdt, float value);
00157
00159 void VFDTSetLaplace(VFDTPtr vfdt, int value);
00160
00161 void VFDTSetDoBonferonni(VFDTPtr vfdt, int value);
00162
00163
00164
00171 void VFDTProcessExamples(VFDTPtr vfdt, FILE *input);
00172
00178 void VFDTProcessExamplesBatch(VFDTPtr vfdt, FILE *input);
00179
00185 void VFDTProcessExampleBatch(VFDTPtr vfdt, ExamplePtr e);
00186
00188 void VFDTBatchExamplesDone(VFDTPtr vfdt);
00189
00194 void VFDTProcessExample(VFDTPtr vfdt, ExamplePtr e);
00195
00200 int VFDTIsDoneLearning(VFDTPtr vfdt);
00201
00203 long VFDTGetNumGrowing(VFDTPtr vfdt);
00204
00206 long VFDTGetNumBoundsUsed(VFDTPtr vfdt);
00207
00209 void VFDTPrintStats(VFDTPtr vfdt, FILE *out);
00210
00211
00212
00221 DecisionTreePtr VFDTGetLearnedTree(VFDTPtr vfdt);
00222
00223
00224 void VFDTREPrune(DecisionTreePtr dt, VoidAListPtr examples);
00225
00226 #endif
00227