Class LibLinearClassificationTrainer
java.lang.Object
org.tribuo.common.liblinear.LibLinearTrainer<Label>
org.tribuo.classification.liblinear.LibLinearClassificationTrainer
- All Implemented Interfaces:
com.oracle.labs.mlrg.olcut.config.Configurable,com.oracle.labs.mlrg.olcut.provenance.Provenancable<TrainerProvenance>,WeightedLabels,Trainer<Label>
public class LibLinearClassificationTrainer
extends LibLinearTrainer<Label>
implements WeightedLabels
A
Trainer which wraps a liblinear-java classifier trainer.
See:
Fan RE, Chang KW, Hsieh CJ, Wang XR, Lin CJ. "LIBLINEAR: A library for Large Linear Classification" Journal of Machine Learning Research, 2008.and for the original algorithm:
Cortes C, Vapnik V. "Support-Vector Networks" Machine Learning, 1995.
-
Field Summary
Fields inherited from class org.tribuo.common.liblinear.LibLinearTrainer
cost, epsilon, libLinearParams, maxIterations, seed, terminationCriterion, trainerTypeFields inherited from interface org.tribuo.Trainer
DEFAULT_SEED, INCREMENT_INVOCATION_COUNT -
Constructor Summary
ConstructorsConstructorDescriptionCreates a trainer using the default values (LinearClassificationType.LinearType.L2R_L2LOSS_SVC_DUAL, 1, 0.1,Trainer.DEFAULT_SEED).LibLinearClassificationTrainer(LinearClassificationType trainerType, double cost, double terminationCriterion) Creates a trainer for a LibLinearClassificationModel.LibLinearClassificationTrainer(LinearClassificationType trainerType, double cost, int maxIterations, double terminationCriterion) Creates a trainer for a LibLinear modelLibLinearClassificationTrainer(LinearClassificationType trainerType, double cost, int maxIterations, double terminationCriterion, long seed) Creates a trainer for a LibLinear model -
Method Summary
Modifier and TypeMethodDescriptionprotected LibLinearModel<Label> createModel(ModelProvenance provenance, ImmutableFeatureMap featureIDMap, ImmutableOutputInfo<Label> outputIDInfo, List<de.bwaldvogel.liblinear.Model> models) Construct the appropriate subtype of LibLinearModel for the prediction task.protected com.oracle.labs.mlrg.olcut.util.Pair<de.bwaldvogel.liblinear.FeatureNode[][], double[][]> extractData(Dataset<Label> data, ImmutableOutputInfo<Label> outputInfo, ImmutableFeatureMap featureMap) Extracts the features andOutputs in LibLinear's format.voidUsed by the OLCUT configuration system, and should not be called by external code.voidsetLabelWeights(Map<Label, Float> weights) Sets the label weights used by this trainer.protected de.bwaldvogel.liblinear.ParametersetupParameters(ImmutableOutputInfo<Label> labelIDMap) Constructs the parameters.protected List<de.bwaldvogel.liblinear.Model> trainModels(de.bwaldvogel.liblinear.Parameter curParams, int numFeatures, de.bwaldvogel.liblinear.FeatureNode[][] features, double[][] outputs) Train all the liblinear instances necessary for this dataset.Methods inherited from class org.tribuo.common.liblinear.LibLinearTrainer
exampleToNodes, getInvocationCount, getProvenance, setInvocationCount, toString, train, train, train
-
Constructor Details
-
LibLinearClassificationTrainer
public LibLinearClassificationTrainer()Creates a trainer using the default values (LinearClassificationType.LinearType.L2R_L2LOSS_SVC_DUAL, 1, 0.1,Trainer.DEFAULT_SEED). -
LibLinearClassificationTrainer
public LibLinearClassificationTrainer(LinearClassificationType trainerType, double cost, double terminationCriterion) Creates a trainer for a LibLinearClassificationModel.Uses
Trainer.DEFAULT_SEEDas the RNG seed. Sets maxIterations to 1000.- Parameters:
trainerType- Loss function and optimisation method combination.cost- Cost penalty for each incorrectly classified training point.terminationCriterion- How close does the optimisation function need to be before terminating that subproblem (usually set to 0.1).
-
LibLinearClassificationTrainer
public LibLinearClassificationTrainer(LinearClassificationType trainerType, double cost, int maxIterations, double terminationCriterion) Creates a trainer for a LibLinear modelUses
Trainer.DEFAULT_SEEDas the RNG seed.- Parameters:
trainerType- Loss function and optimisation method combination.cost- Cost penalty for each incorrectly classified training point.maxIterations- The maximum number of dataset iterations.terminationCriterion- How close does the optimisation function need to be before terminating that subproblem (usually set to 0.1).
-
LibLinearClassificationTrainer
public LibLinearClassificationTrainer(LinearClassificationType trainerType, double cost, int maxIterations, double terminationCriterion, long seed) Creates a trainer for a LibLinear model- Parameters:
trainerType- Loss function and optimisation method combination.cost- Cost penalty for each incorrectly classified training point.maxIterations- The maximum number of dataset iterations.terminationCriterion- How close does the optimisation function need to be before terminating that subproblem (usually set to 0.1).seed- The RNG seed.
-
-
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 classLibLinearTrainer<Label>
-
trainModels
protected List<de.bwaldvogel.liblinear.Model> trainModels(de.bwaldvogel.liblinear.Parameter curParams, int numFeatures, de.bwaldvogel.liblinear.FeatureNode[][] features, double[][] outputs) Description copied from class:LibLinearTrainerTrain all the liblinear instances necessary for this dataset.- Specified by:
trainModelsin classLibLinearTrainer<Label>- Parameters:
curParams- The LibLinear parameters.numFeatures- The number of features in this dataset.features- The features themselves.outputs- The outputs.- Returns:
- A list of liblinear models.
-
createModel
protected LibLinearModel<Label> createModel(ModelProvenance provenance, ImmutableFeatureMap featureIDMap, ImmutableOutputInfo<Label> outputIDInfo, List<de.bwaldvogel.liblinear.Model> models) Description copied from class:LibLinearTrainerConstruct the appropriate subtype of LibLinearModel for the prediction task.- Specified by:
createModelin classLibLinearTrainer<Label>- Parameters:
provenance- The model provenance.featureIDMap- The feature id map.outputIDInfo- The output id info.models- The list of linear models.- Returns:
- An implementation of LibLinearModel.
-
extractData
protected com.oracle.labs.mlrg.olcut.util.Pair<de.bwaldvogel.liblinear.FeatureNode[][], double[][]> extractData(Dataset<Label> data, ImmutableOutputInfo<Label> outputInfo, ImmutableFeatureMap featureMap) Description copied from class:LibLinearTrainerExtracts the features andOutputs in LibLinear's format.- Specified by:
extractDatain classLibLinearTrainer<Label>- Parameters:
data- The input data.outputInfo- The output info.featureMap- The feature info.- Returns:
- The features and outputs.
-
setupParameters
Description copied from class:LibLinearTrainerConstructs the parameters. Most of the time this just clones the existing ones, but classification overrides it to incorporate label weights if they exist.- Overrides:
setupParametersin classLibLinearTrainer<Label>- Parameters:
labelIDMap- The output info.- Returns:
- The Parameters to use for training.
-
setLabelWeights
Description copied from interface:WeightedLabelsSets the label weights used by this trainer.Supply
Collections.emptyMap()to turn off label weights.- Specified by:
setLabelWeightsin interfaceWeightedLabels- Parameters:
weights- A map from Label instances to weight values.
-