Class LibSVMAnomalyTrainer

java.lang.Object
org.tribuo.common.libsvm.LibSVMTrainer<Event>
org.tribuo.anomaly.libsvm.LibSVMAnomalyTrainer
All Implemented Interfaces:
com.oracle.labs.mlrg.olcut.config.Configurable, com.oracle.labs.mlrg.olcut.provenance.Provenancable<TrainerProvenance>, Trainer<Event>

public class LibSVMAnomalyTrainer extends LibSVMTrainer<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.
 
  • Constructor Details

    • LibSVMAnomalyTrainer

      protected LibSVMAnomalyTrainer()
      For OLCUT.
    • LibSVMAnomalyTrainer

      public LibSVMAnomalyTrainer(SVMParameters<Event> parameters)
      Creates a one-class LibSVM trainer using the supplied parameters and Trainer.DEFAULT_SEED.
      Parameters:
      parameters - The SVM training parameters.
    • LibSVMAnomalyTrainer

      public LibSVMAnomalyTrainer(SVMParameters<Event> parameters, long seed)
      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:
      postConfig in interface com.oracle.labs.mlrg.olcut.config.Configurable
      Overrides:
      postConfig in class LibSVMTrainer<Event>
    • train

      public LibSVMModel<Event> train(Dataset<Event> dataset, Map<String,com.oracle.labs.mlrg.olcut.provenance.Provenance> instanceProvenance)
      Description copied from interface: Trainer
      Trains a predictive model using the examples in the given data set.
      Specified by:
      train in interface Trainer<Event>
      Overrides:
      train in class LibSVMTrainer<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: LibSVMTrainer
      Construct the appropriate subtype of LibSVMModel for the prediction task.
      Specified by:
      createModel in class LibSVMTrainer<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: LibSVMTrainer
      Train all the LibSVM instances necessary for this dataset.
      Specified by:
      trainModels in class LibSVMTrainer<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: LibSVMTrainer
      Extracts the features and Outputs in LibSVM's format.
      Specified by:
      extractData in class LibSVMTrainer<Event>
      Parameters:
      data - The input data.
      outputInfo - The output info.
      featureMap - The feature info.
      Returns:
      The features and outputs.
    • extractOutput

      protected double extractOutput(Event output)
      Converts an output into a double for use in training.

      By convention Event.EventType.EXPECTED is 1.0, other events are -1.0.

      Parameters:
      output - The output to convert.
      Returns:
      The double value.