Class LibSVMAnomalyTrainer
- All Implemented Interfaces:
com.oracle.labs.mlrg.olcut.config.Configurable,com.oracle.labs.mlrg.olcut.provenance.Provenancable<TrainerProvenance>,Trainer<Event>
A trainer for anomaly models that uses LibSVM.
Note the train method is synchronized on LibSVMTrainer.class due to a global RNG in LibSVM.
This is insufficient to ensure reproducibility if LibSVM is used directly in the same JVM as Tribuo, but
avoids locking on classes Tribuo does not control.
See:
Chang CC, Lin CJ. "LIBSVM: a library for Support Vector Machines" ACM transactions on intelligent systems and technology (TIST), 2011.
and for the anomaly detection algorithm:
Schölkopf B, Platt J, Shawe-Taylor J, Smola A J, Williamson R C. "Estimating the support of a high-dimensional distribution" Neural Computation, 2001, 1443-1471.
-
Field Summary
Fields inherited from class org.tribuo.common.libsvm.LibSVMTrainer
parameters, svmTypeFields inherited from interface org.tribuo.Trainer
DEFAULT_SEED -
Constructor Summary
ConstructorsModifierConstructorDescriptionprotectedFor OLCUT.LibSVMAnomalyTrainer(SVMParameters<Event> parameters) Creates a one-class LibSVM trainer using the supplied parameters andTrainer.DEFAULT_SEED.LibSVMAnomalyTrainer(SVMParameters<Event> parameters, long seed) Creates a one-class LibSVM trainer using the supplied parameters and RNG seed. -
Method Summary
Modifier and TypeMethodDescriptionprotected LibSVMModel<Event> createModel(ModelProvenance provenance, ImmutableFeatureMap featureIDMap, ImmutableOutputInfo<Event> outputIDInfo, List<libsvm.svm_model> models) Construct the appropriate subtype of LibSVMModel for the prediction task.protected com.oracle.labs.mlrg.olcut.util.Pair<libsvm.svm_node[][], double[][]> extractData(Dataset<Event> data, ImmutableOutputInfo<Event> outputInfo, ImmutableFeatureMap featureMap) Extracts the features andOutputs in LibSVM's format.protected doubleextractOutput(Event output) Converts an output into a double for use in training.voidUsed by the OLCUT configuration system, and should not be called by external code.train(Dataset<Event> dataset, Map<String, com.oracle.labs.mlrg.olcut.provenance.Provenance> instanceProvenance) Trains a predictive model using the examples in the given data set.protected List<libsvm.svm_model> trainModels(libsvm.svm_parameter curParams, int numFeatures, libsvm.svm_node[][] features, double[][] outputs, SplittableRandom localRNG) Train all the LibSVM instances necessary for this dataset.Methods inherited from class org.tribuo.common.libsvm.LibSVMTrainer
exampleToNodes, getInvocationCount, getProvenance, setupParameters, toString, train
-
Constructor Details
-
LibSVMAnomalyTrainer
protected LibSVMAnomalyTrainer()For OLCUT. -
LibSVMAnomalyTrainer
Creates a one-class LibSVM trainer using the supplied parameters andTrainer.DEFAULT_SEED.- Parameters:
parameters- The SVM training parameters.
-
LibSVMAnomalyTrainer
Creates a one-class LibSVM trainer using the supplied parameters and RNG seed.- Parameters:
parameters- The SVM parameters.seed- The RNG seed for LibSVM's internal RNG.
-
-
Method Details
-
postConfig
public void postConfig()Used by the OLCUT configuration system, and should not be called by external code.- Specified by:
postConfigin interfacecom.oracle.labs.mlrg.olcut.config.Configurable- Overrides:
postConfigin classLibSVMTrainer<Event>
-
train
public LibSVMModel<Event> train(Dataset<Event> dataset, Map<String, com.oracle.labs.mlrg.olcut.provenance.Provenance> instanceProvenance) Description copied from interface:TrainerTrains a predictive model using the examples in the given data set.- Specified by:
trainin interfaceTrainer<Event>- Overrides:
trainin classLibSVMTrainer<Event>- Parameters:
dataset- the data set containing the examples.instanceProvenance- Training run specific provenance (e.g., fold number).- Returns:
- a predictive model that can be used to generate predictions for new examples.
-
createModel
protected LibSVMModel<Event> createModel(ModelProvenance provenance, ImmutableFeatureMap featureIDMap, ImmutableOutputInfo<Event> outputIDInfo, List<libsvm.svm_model> models) Description copied from class:LibSVMTrainerConstruct the appropriate subtype of LibSVMModel for the prediction task.- Specified by:
createModelin classLibSVMTrainer<Event>- Parameters:
provenance- The model provenance.featureIDMap- The feature id map.outputIDInfo- The output id info.models- The svm models.- Returns:
- An implementation of LibSVMModel.
-
trainModels
protected List<libsvm.svm_model> trainModels(libsvm.svm_parameter curParams, int numFeatures, libsvm.svm_node[][] features, double[][] outputs, SplittableRandom localRNG) Description copied from class:LibSVMTrainerTrain all the LibSVM instances necessary for this dataset.- Specified by:
trainModelsin classLibSVMTrainer<Event>- Parameters:
curParams- The LibSVM parameters.numFeatures- The number of features in this dataset.features- The features themselves.outputs- The outputs.localRNG- The RNG to use for seeding LibSVM's RNG.- Returns:
- A list of LibSVM models.
-
extractData
protected com.oracle.labs.mlrg.olcut.util.Pair<libsvm.svm_node[][], double[][]> extractData(Dataset<Event> data, ImmutableOutputInfo<Event> outputInfo, ImmutableFeatureMap featureMap) Description copied from class:LibSVMTrainerExtracts the features andOutputs in LibSVM's format.- Specified by:
extractDatain classLibSVMTrainer<Event>- Parameters:
data- The input data.outputInfo- The output info.featureMap- The feature info.- Returns:
- The features and outputs.
-
extractOutput
Converts an output into a double for use in training.By convention
Event.EventType.EXPECTEDis 1.0, other events are -1.0.- Parameters:
output- The output to convert.- Returns:
- The double value.
-