From ba22e1265508967b70815118ca485a8ddc542de2 Mon Sep 17 00:00:00 2001 From: Wei-Sheng Chin Date: Wed, 20 Mar 2019 08:59:33 -0700 Subject: [PATCH 01/12] Sync names in logistic regression and maximum entropy trainers based on L-BFGS --- .../LogisticRegression/LogisticRegression.cs | 30 +++++++++---------- .../MulticlassLogisticRegression.cs | 2 +- .../PoissonRegression/PoissonRegression.cs | 2 +- .../StandardTrainersCatalog.cs | 16 +++++----- src/Microsoft.ML.StaticPipe/LbfgsStatic.cs | 22 +++++++------- .../Common/EntryPoints/core_ep-list.tsv | 2 +- .../KMeansAndLogisticRegressionBench.cs | 2 +- .../UnitTests/TestEntryPoints.cs | 28 ++++++++--------- .../Evaluation.cs | 4 +-- .../Microsoft.ML.Functional.Tests/Training.cs | 4 +-- .../TestPredictors.cs | 4 +-- .../Training.cs | 2 +- .../PermutationFeatureImportanceTests.cs | 4 +-- .../TrainerEstimators/LbfgsTests.cs | 4 +-- 14 files changed, 63 insertions(+), 63 deletions(-) diff --git a/src/Microsoft.ML.StandardTrainers/Standard/LogisticRegression/LogisticRegression.cs b/src/Microsoft.ML.StandardTrainers/Standard/LogisticRegression/LogisticRegression.cs index 3795fbafb7..fe1091cfbe 100644 --- a/src/Microsoft.ML.StandardTrainers/Standard/LogisticRegression/LogisticRegression.cs +++ b/src/Microsoft.ML.StandardTrainers/Standard/LogisticRegression/LogisticRegression.cs @@ -15,21 +15,21 @@ using Microsoft.ML.Runtime; using Microsoft.ML.Trainers; -[assembly: LoadableClass(LogisticRegressionBinaryTrainer.Summary, typeof(LogisticRegressionBinaryTrainer), typeof(LogisticRegressionBinaryTrainer.Options), +[assembly: LoadableClass(LbfgsLogisticRegressionTrainer.Summary, typeof(LbfgsLogisticRegressionTrainer), typeof(LbfgsLogisticRegressionTrainer.Options), new[] { typeof(SignatureBinaryClassifierTrainer), typeof(SignatureTrainer), typeof(SignatureFeatureScorerTrainer) }, - LogisticRegressionBinaryTrainer.UserNameValue, - LogisticRegressionBinaryTrainer.LoadNameValue, - LogisticRegressionBinaryTrainer.ShortName, + LbfgsLogisticRegressionTrainer.UserNameValue, + LbfgsLogisticRegressionTrainer.LoadNameValue, + LbfgsLogisticRegressionTrainer.ShortName, "logisticregressionwrapper")] -[assembly: LoadableClass(typeof(void), typeof(LogisticRegressionBinaryTrainer), null, typeof(SignatureEntryPointModule), LogisticRegressionBinaryTrainer.LoadNameValue)] +[assembly: LoadableClass(typeof(void), typeof(LbfgsLogisticRegressionTrainer), null, typeof(SignatureEntryPointModule), LbfgsLogisticRegressionTrainer.LoadNameValue)] namespace Microsoft.ML.Trainers { /// /// - public sealed partial class LogisticRegressionBinaryTrainer : LbfgsTrainerBase>, CalibratedModelParametersBase> { @@ -54,7 +54,7 @@ public sealed class Options : OptionsBase /// /// The instance of that computes the std of the training statistics, at the end of training. /// The calculations are not part of Microsoft.ML package, due to the size of MKL. - /// If you need these calculations, add the Microsoft.ML.Mkl.Components package, and initialize . + /// If you need these calculations, add the Microsoft.ML.Mkl.Components package, and initialize . /// to the implementation in the Microsoft.ML.Mkl.Components package. /// public ComputeLogisticRegressionStandardDeviation ComputeStandardDeviation; @@ -64,7 +64,7 @@ public sealed class Options : OptionsBase private ModelStatisticsBase _stats; /// - /// Initializes a new instance of + /// Initializes a new instance of /// /// The environment to use. /// The name of the label column. @@ -73,9 +73,9 @@ public sealed class Options : OptionsBase /// Enforce non-negative weights. /// Weight of L1 regularizer term. /// Weight of L2 regularizer term. - /// Memory size for . Low=faster, less accurate. + /// Memory size for . Low=faster, less accurate. /// Threshold for optimizer convergence. - internal LogisticRegressionBinaryTrainer(IHostEnvironment env, + internal LbfgsLogisticRegressionTrainer(IHostEnvironment env, string labelColumn = DefaultColumnNames.Label, string featureColumn = DefaultColumnNames.Features, string weights = null, @@ -95,9 +95,9 @@ internal LogisticRegressionBinaryTrainer(IHostEnvironment env, } /// - /// Initializes a new instance of + /// Initializes a new instance of /// - internal LogisticRegressionBinaryTrainer(IHostEnvironment env, Options options) + internal LbfgsLogisticRegressionTrainer(IHostEnvironment env, Options options) : base(env, options, TrainerUtils.MakeBoolScalarLabel(options.LabelColumnName)) { _posWeight = 0; @@ -127,7 +127,7 @@ private protected override BinaryPredictionTransformer new BinaryPredictionTransformer>(Host, model, trainSchema, FeatureColumn.Name); /// - /// Continues the training of a using an already trained and returns + /// Continues the training of a using an already trained and returns /// a . /// public BinaryPredictionTransformer> Fit(IDataView trainData, LinearModelParameters modelParameters) @@ -417,7 +417,7 @@ internal static CommonOutputs.BinaryClassificationOutput TrainBinary(IHostEnviro EntryPointUtils.CheckInputArgs(host, input); return TrainerEntryPointsUtils.Train(host, input, - () => new LogisticRegressionBinaryTrainer(host, input), + () => new LbfgsLogisticRegressionTrainer(host, input), () => TrainerEntryPointsUtils.FindColumn(host, input.TrainingData.Schema, input.LabelColumnName), () => TrainerEntryPointsUtils.FindColumn(host, input.TrainingData.Schema, input.ExampleWeightColumnName)); } @@ -436,7 +436,7 @@ public abstract class ComputeLogisticRegressionStandardDeviation /// Computes the standard deviation matrix of each of the non-zero training weights, needed to calculate further the standard deviation, /// p-value and z-Score. /// The calculations are not part of Microsoft.ML package, due to the size of MKL. - /// If you need these calculations, add the Microsoft.ML.Mkl.Components package, and initialize + /// If you need these calculations, add the Microsoft.ML.Mkl.Components package, and initialize /// to the implementation in the Microsoft.ML.Mkl.Components package. /// Due to the existence of regularization, an approximation is used to compute the variances of the trained linear coefficients. /// diff --git a/src/Microsoft.ML.StandardTrainers/Standard/LogisticRegression/MulticlassLogisticRegression.cs b/src/Microsoft.ML.StandardTrainers/Standard/LogisticRegression/MulticlassLogisticRegression.cs index 4c36daa5ce..10a3c10d7c 100644 --- a/src/Microsoft.ML.StandardTrainers/Standard/LogisticRegression/MulticlassLogisticRegression.cs +++ b/src/Microsoft.ML.StandardTrainers/Standard/LogisticRegression/MulticlassLogisticRegression.cs @@ -83,7 +83,7 @@ public sealed class Options : OptionsBase /// Enforce non-negative weights. /// Weight of L1 regularizer term. /// Weight of L2 regularizer term. - /// Memory size for . Low=faster, less accurate. + /// Memory size for . Low=faster, less accurate. /// Threshold for optimizer convergence. internal LbfgsMaximumEntropyTrainer(IHostEnvironment env, string labelColumn = DefaultColumnNames.Label, diff --git a/src/Microsoft.ML.StandardTrainers/Standard/PoissonRegression/PoissonRegression.cs b/src/Microsoft.ML.StandardTrainers/Standard/PoissonRegression/PoissonRegression.cs index 1fd56c3e18..3d0135a57a 100644 --- a/src/Microsoft.ML.StandardTrainers/Standard/PoissonRegression/PoissonRegression.cs +++ b/src/Microsoft.ML.StandardTrainers/Standard/PoissonRegression/PoissonRegression.cs @@ -48,7 +48,7 @@ public sealed class Options : OptionsBase /// Weight of L1 regularizer term. /// Weight of L2 regularizer term. /// Threshold for optimizer convergence. - /// Memory size for . Low=faster, less accurate. + /// Memory size for . Low=faster, less accurate. /// Enforce non-negative weights. internal PoissonRegressionTrainer(IHostEnvironment env, string labelColumn = DefaultColumnNames.Label, diff --git a/src/Microsoft.ML.StandardTrainers/StandardTrainersCatalog.cs b/src/Microsoft.ML.StandardTrainers/StandardTrainersCatalog.cs index 09ac97c694..50221ba9dc 100644 --- a/src/Microsoft.ML.StandardTrainers/StandardTrainersCatalog.cs +++ b/src/Microsoft.ML.StandardTrainers/StandardTrainersCatalog.cs @@ -9,7 +9,7 @@ namespace Microsoft.ML { - using LROptions = LogisticRegressionBinaryTrainer.Options; + using LROptions = LbfgsLogisticRegressionTrainer.Options; /// /// TrainerEstimator extension methods. @@ -498,7 +498,7 @@ public static OnlineGradientDescentTrainer OnlineGradientDescent(this Regression } /// - /// Predict a target using a linear binary classification model trained with the trainer. + /// Predict a target using a linear binary classification model trained with the trainer. /// /// The binary classification catalog trainer object. /// The name of the label column. @@ -507,7 +507,7 @@ public static OnlineGradientDescentTrainer OnlineGradientDescent(this Regression /// Enforce non-negative weights. /// Weight of L1 regularization term. /// Weight of L2 regularization term. - /// Memory size for . Low=faster, less accurate. + /// Memory size for . Low=faster, less accurate. /// Threshold for optimizer convergence. /// /// @@ -516,7 +516,7 @@ public static OnlineGradientDescentTrainer OnlineGradientDescent(this Regression /// ]]> /// /// - public static LogisticRegressionBinaryTrainer LogisticRegression(this BinaryClassificationCatalog.BinaryClassificationTrainers catalog, + public static LbfgsLogisticRegressionTrainer LogisticRegression(this BinaryClassificationCatalog.BinaryClassificationTrainers catalog, string labelColumnName = DefaultColumnNames.Label, string featureColumnName = DefaultColumnNames.Features, string exampleWeightColumnName = null, @@ -528,21 +528,21 @@ public static LogisticRegressionBinaryTrainer LogisticRegression(this BinaryClas { Contracts.CheckValue(catalog, nameof(catalog)); var env = CatalogUtils.GetEnvironment(catalog); - return new LogisticRegressionBinaryTrainer(env, labelColumnName, featureColumnName, exampleWeightColumnName, l1Regularization, l2Regularization, optimizationTolerance, historySize, enforceNonNegativity); + return new LbfgsLogisticRegressionTrainer(env, labelColumnName, featureColumnName, exampleWeightColumnName, l1Regularization, l2Regularization, optimizationTolerance, historySize, enforceNonNegativity); } /// - /// Predict a target using a linear binary classification model trained with the trainer. + /// Predict a target using a linear binary classification model trained with the trainer. /// /// The binary classification catalog trainer object. /// Advanced arguments to the algorithm. - public static LogisticRegressionBinaryTrainer LogisticRegression(this BinaryClassificationCatalog.BinaryClassificationTrainers catalog, LROptions options) + public static LbfgsLogisticRegressionTrainer LogisticRegression(this BinaryClassificationCatalog.BinaryClassificationTrainers catalog, LROptions options) { Contracts.CheckValue(catalog, nameof(catalog)); Contracts.CheckValue(options, nameof(options)); var env = CatalogUtils.GetEnvironment(catalog); - return new LogisticRegressionBinaryTrainer(env, options); + return new LbfgsLogisticRegressionTrainer(env, options); } /// diff --git a/src/Microsoft.ML.StaticPipe/LbfgsStatic.cs b/src/Microsoft.ML.StaticPipe/LbfgsStatic.cs index 1110fd56ee..d02a691730 100644 --- a/src/Microsoft.ML.StaticPipe/LbfgsStatic.cs +++ b/src/Microsoft.ML.StaticPipe/LbfgsStatic.cs @@ -9,15 +9,15 @@ namespace Microsoft.ML.StaticPipe { - using Options = LogisticRegressionBinaryTrainer.Options; + using Options = LbfgsLogisticRegressionTrainer.Options; /// /// Binary Classification trainer estimators. /// - public static class LbfgsBinaryClassificationStaticExtensions + public static class LbfgsBinaryExtensions { /// - /// Predict a target using a linear binary classification model trained with the trainer. + /// Predict a target using a linear binary classification model trained with the trainer. /// /// The binary classification catalog trainer object. /// The label, or dependent variable. @@ -26,7 +26,7 @@ public static class LbfgsBinaryClassificationStaticExtensions /// Enforce non-negative weights. /// Weight of L1 regularization term. /// Weight of L2 regularization term. - /// Memory size for . Low=faster, less accurate. + /// Memory size for . Low=faster, less accurate. /// Threshold for optimizer convergence. /// A delegate that is called every time the /// method is called on the @@ -50,7 +50,7 @@ public static (Scalar score, Scalar probability, Scalar pred var rec = new TrainerEstimatorReconciler.BinaryClassifier( (env, labelName, featuresName, weightsName) => { - var trainer = new LogisticRegressionBinaryTrainer(env, labelName, featuresName, weightsName, + var trainer = new LbfgsLogisticRegressionTrainer(env, labelName, featuresName, weightsName, l1Regularization, l2Regularization, optimizationTolerance, historySize, enforceNonNegativity); if (onFit != null) @@ -63,7 +63,7 @@ public static (Scalar score, Scalar probability, Scalar pred } /// - /// Predict a target using a linear binary classification model trained with the trainer. + /// Predict a target using a linear binary classification model trained with the trainer. /// /// The binary classification catalog trainer object. /// The label, or dependent variable. @@ -95,7 +95,7 @@ public static (Scalar score, Scalar probability, Scalar pred options.FeatureColumnName = featuresName; options.ExampleWeightColumnName = weightsName; - var trainer = new LogisticRegressionBinaryTrainer(env, options); + var trainer = new LbfgsLogisticRegressionTrainer(env, options); if (onFit != null) return trainer.WithOnFitDelegate(trans => onFit(trans.Model)); @@ -113,7 +113,7 @@ public static (Scalar score, Scalar probability, Scalar pred public static class LbfgsRegressionExtensions { /// - /// Predict a target using a linear regression model trained with the trainer. + /// Predict a target using a linear regression model trained with the trainer. /// /// The regression catalog trainer object. /// The label, or dependent variable. @@ -122,7 +122,7 @@ public static class LbfgsRegressionExtensions /// Enforce non-negative weights. /// Weight of L1 regularization term. /// Weight of L2 regularization term. - /// Memory size for . Low=faster, less accurate. + /// Memory size for . Low=faster, less accurate. /// Threshold for optimizer convergence. /// A delegate that is called every time the /// method is called on the @@ -159,7 +159,7 @@ public static Scalar PoissonRegression(this RegressionCatalog.RegressionT } /// - /// Predict a target using a linear regression model trained with the trainer. + /// Predict a target using a linear regression model trained with the trainer. /// /// The regression catalog trainer object. /// The label, or dependent variable. @@ -218,7 +218,7 @@ public static class LbfgsMulticlassExtensions /// Enforce non-negative weights. /// Weight of L1 regularization term. /// Weight of L2 regularization term. - /// Memory size for . Low=faster, less accurate. + /// Memory size for . Low=faster, less accurate. /// Threshold for optimizer convergence. /// A delegate that is called every time the /// method is called on the diff --git a/test/BaselineOutput/Common/EntryPoints/core_ep-list.tsv b/test/BaselineOutput/Common/EntryPoints/core_ep-list.tsv index 8ebeb23b72..cedb6f2399 100644 --- a/test/BaselineOutput/Common/EntryPoints/core_ep-list.tsv +++ b/test/BaselineOutput/Common/EntryPoints/core_ep-list.tsv @@ -58,7 +58,7 @@ Trainers.LightGbmClassifier Train a LightGBM multi class model. Microsoft.ML.Tra Trainers.LightGbmRanker Train a LightGBM ranking model. Microsoft.ML.Trainers.LightGbm.LightGbm TrainRanking Microsoft.ML.Trainers.LightGbm.LightGbmRankingTrainer+Options Microsoft.ML.EntryPoints.CommonOutputs+RankingOutput Trainers.LightGbmRegressor LightGBM Regression Microsoft.ML.Trainers.LightGbm.LightGbm TrainRegression Microsoft.ML.Trainers.LightGbm.LightGbmRegressionTrainer+Options Microsoft.ML.EntryPoints.CommonOutputs+RegressionOutput Trainers.LinearSvmBinaryClassifier Train a linear SVM. Microsoft.ML.Trainers.LinearSvmTrainer TrainLinearSvm Microsoft.ML.Trainers.LinearSvmTrainer+Options Microsoft.ML.EntryPoints.CommonOutputs+BinaryClassificationOutput -Trainers.LogisticRegressionBinaryClassifier Logistic Regression is a method in statistics used to predict the probability of occurrence of an event and can be used as a classification algorithm. The algorithm predicts the probability of occurrence of an event by fitting data to a logistical function. Microsoft.ML.Trainers.LogisticRegressionBinaryTrainer TrainBinary Microsoft.ML.Trainers.LogisticRegressionBinaryTrainer+Options Microsoft.ML.EntryPoints.CommonOutputs+BinaryClassificationOutput +Trainers.LogisticRegressionBinaryClassifier Logistic Regression is a method in statistics used to predict the probability of occurrence of an event and can be used as a classification algorithm. The algorithm predicts the probability of occurrence of an event by fitting data to a logistical function. Microsoft.ML.Trainers.LbfgsLogisticRegressionTrainer TrainBinary Microsoft.ML.Trainers.LbfgsLogisticRegressionTrainer+Options Microsoft.ML.EntryPoints.CommonOutputs+BinaryClassificationOutput Trainers.LogisticRegressionClassifier Maximum entrypy classification is a method in statistics used to predict the probabilities of parallel events. The model predicts the probabilities of parallel events by fitting data to a softmax function. Microsoft.ML.Trainers.LbfgsMaximumEntropyTrainer TrainMulticlass Microsoft.ML.Trainers.LbfgsMaximumEntropyTrainer+Options Microsoft.ML.EntryPoints.CommonOutputs+MulticlassClassificationOutput Trainers.NaiveBayesClassifier Train a MulticlassNaiveBayesTrainer. Microsoft.ML.Trainers.NaiveBayesMulticlassTrainer TrainMulticlassNaiveBayesTrainer Microsoft.ML.Trainers.NaiveBayesMulticlassTrainer+Options Microsoft.ML.EntryPoints.CommonOutputs+MulticlassClassificationOutput Trainers.OnlineGradientDescentRegressor Train a Online gradient descent perceptron. Microsoft.ML.Trainers.OnlineGradientDescentTrainer TrainRegression Microsoft.ML.Trainers.OnlineGradientDescentTrainer+Options Microsoft.ML.EntryPoints.CommonOutputs+RegressionOutput diff --git a/test/Microsoft.ML.Benchmarks/KMeansAndLogisticRegressionBench.cs b/test/Microsoft.ML.Benchmarks/KMeansAndLogisticRegressionBench.cs index de0b3a8cdb..1646036b3f 100644 --- a/test/Microsoft.ML.Benchmarks/KMeansAndLogisticRegressionBench.cs +++ b/test/Microsoft.ML.Benchmarks/KMeansAndLogisticRegressionBench.cs @@ -40,7 +40,7 @@ public CalibratedModelParametersBase correctly. var weightType = ib1.GetFieldTypeOrNull("ExampleWeightColumnName"); Assert.True(weightType.Equals(typeof(string))); - var instance = ib1.GetInstance() as LogisticRegressionBinaryTrainer.Options; + var instance = ib1.GetInstance() as LbfgsLogisticRegressionTrainer.Options; Assert.True(instance.ExampleWeightColumnName == null); ib1.TrySetValue("ExampleWeightColumnName", "OtherWeight"); @@ -420,14 +420,14 @@ public void EntryPointCreateEnsemble() for (int i = 0; i < nModels; i++) { var data = splitOutput.TrainData[i]; - var lrInput = new LogisticRegressionBinaryTrainer.Options + var lrInput = new LbfgsLogisticRegressionTrainer.Options { TrainingData = data, L1Regularization = (Single)0.1 * i, L2Regularization = (Single)0.01 * (1 + i), NormalizeFeatures = NormalizeOption.No }; - predictorModels[i] = LogisticRegressionBinaryTrainer.TrainBinary(Env, lrInput).PredictorModel; + predictorModels[i] = LbfgsLogisticRegressionTrainer.TrainBinary(Env, lrInput).PredictorModel; individualScores[i] = ScoreModel.Score(Env, new ScoreModel.Input { Data = splitOutput.TestData[nModels], PredictorModel = predictorModels[i] }) @@ -676,7 +676,7 @@ public void EntryPointCalibrate() var splitOutput = CVSplit.Split(Env, new CVSplit.Input { Data = dataView, NumFolds = 3 }); - var lrModel = LogisticRegressionBinaryTrainer.TrainBinary(Env, new LogisticRegressionBinaryTrainer.Options { TrainingData = splitOutput.TestData[0] }).PredictorModel; + var lrModel = LbfgsLogisticRegressionTrainer.TrainBinary(Env, new LbfgsLogisticRegressionTrainer.Options { TrainingData = splitOutput.TestData[0] }).PredictorModel; var calibratedLrModel = Calibrate.FixedPlatt(Env, new Calibrate.FixedPlattInput { Data = splitOutput.TestData[1], UncalibratedPredictorModel = lrModel }).PredictorModel; @@ -724,14 +724,14 @@ public void EntryPointPipelineEnsemble() data = new ColumnConcatenatingTransformer(Env, "Features", new[] { "Features1", "Features2" }).Transform(data); data = new ValueToKeyMappingEstimator(Env, "Label", "Label", keyOrdinality: ValueToKeyMappingEstimator.KeyOrdinality.ByValue).Fit(data).Transform(data); - var lrInput = new LogisticRegressionBinaryTrainer.Options + var lrInput = new LbfgsLogisticRegressionTrainer.Options { TrainingData = data, L1Regularization = (Single)0.1 * i, L2Regularization = (Single)0.01 * (1 + i), NormalizeFeatures = NormalizeOption.Yes }; - predictorModels[i] = LogisticRegressionBinaryTrainer.TrainBinary(Env, lrInput).PredictorModel; + predictorModels[i] = LbfgsLogisticRegressionTrainer.TrainBinary(Env, lrInput).PredictorModel; var transformModel = new TransformModelImpl(Env, data, splitOutput.TrainData[i]); predictorModels[i] = ModelOperations.CombineTwoModels(Env, @@ -985,14 +985,14 @@ public void EntryPointPipelineEnsembleText() }, data); } - var lrInput = new LogisticRegressionBinaryTrainer.Options + var lrInput = new LbfgsLogisticRegressionTrainer.Options { TrainingData = data, L1Regularization = (Single)0.1 * i, L2Regularization = (Single)0.01 * (1 + i), NormalizeFeatures = NormalizeOption.Yes }; - predictorModels[i] = LogisticRegressionBinaryTrainer.TrainBinary(Env, lrInput).PredictorModel; + predictorModels[i] = LbfgsLogisticRegressionTrainer.TrainBinary(Env, lrInput).PredictorModel; var transformModel = new TransformModelImpl(Env, data, splitOutput.TrainData[i]); predictorModels[i] = ModelOperations.CombineTwoModels(Env, @@ -1318,7 +1318,7 @@ public void EntryPointPipelineEnsembleGetSummary() data = new ColumnConcatenatingTransformer(Env, new ColumnConcatenatingTransformer.ColumnOptions("Features", i % 2 == 0 ? new[] { "Features", "Cat" } : new[] { "Cat", "Features" })).Transform(data); if (i % 2 == 0) { - var lrInput = new LogisticRegressionBinaryTrainer.Options + var lrInput = new LbfgsLogisticRegressionTrainer.Options { TrainingData = data, NormalizeFeatures = NormalizeOption.Yes, @@ -1326,7 +1326,7 @@ public void EntryPointPipelineEnsembleGetSummary() ShowTrainingStatistics = true, ComputeStandardDeviation = new ComputeLRTrainingStdThroughMkl() }; - predictorModels[i] = LogisticRegressionBinaryTrainer.TrainBinary(Env, lrInput).PredictorModel; + predictorModels[i] = LbfgsLogisticRegressionTrainer.TrainBinary(Env, lrInput).PredictorModel; var transformModel = new TransformModelImpl(Env, data, splitOutput.TrainData[i]); predictorModels[i] = ModelOperations.CombineTwoModels(Env, @@ -3347,7 +3347,7 @@ public void EntryPointLinearPredictorSummary() InputFile = inputFile, }).Data; - var lrInput = new LogisticRegressionBinaryTrainer.Options + var lrInput = new LbfgsLogisticRegressionTrainer.Options { TrainingData = dataView, NormalizeFeatures = NormalizeOption.Yes, @@ -3355,7 +3355,7 @@ public void EntryPointLinearPredictorSummary() ShowTrainingStatistics = true, ComputeStandardDeviation = new ComputeLRTrainingStdThroughMkl() }; - var model = LogisticRegressionBinaryTrainer.TrainBinary(Env, lrInput).PredictorModel; + var model = LbfgsLogisticRegressionTrainer.TrainBinary(Env, lrInput).PredictorModel; var mcLrInput = new LbfgsMaximumEntropyTrainer.Options { diff --git a/test/Microsoft.ML.Functional.Tests/Evaluation.cs b/test/Microsoft.ML.Functional.Tests/Evaluation.cs index 3845361146..8d8636382f 100644 --- a/test/Microsoft.ML.Functional.Tests/Evaluation.cs +++ b/test/Microsoft.ML.Functional.Tests/Evaluation.cs @@ -94,7 +94,7 @@ public void TrainAndEvaluateBinaryClassificationWithCalibration() var pipeline = mlContext.Transforms.Text.FeaturizeText("Features", "SentimentText") .AppendCacheCheckpoint(mlContext) .Append(mlContext.BinaryClassification.Trainers.LogisticRegression( - new LogisticRegressionBinaryTrainer.Options { NumberOfThreads = 1 })); + new LbfgsLogisticRegressionTrainer.Options { NumberOfThreads = 1 })); // Train the model. var model = pipeline.Fit(data); @@ -274,7 +274,7 @@ public void TrainAndEvaluateWithPrecisionRecallCurves() var pipeline = mlContext.Transforms.Text.FeaturizeText("Features", "SentimentText") .AppendCacheCheckpoint(mlContext) .Append(mlContext.BinaryClassification.Trainers.LogisticRegression( - new LogisticRegressionBinaryTrainer.Options { NumberOfThreads = 1 })); + new LbfgsLogisticRegressionTrainer.Options { NumberOfThreads = 1 })); // Train the model. var model = pipeline.Fit(data); diff --git a/test/Microsoft.ML.Functional.Tests/Training.cs b/test/Microsoft.ML.Functional.Tests/Training.cs index 16d6880983..964286b481 100644 --- a/test/Microsoft.ML.Functional.Tests/Training.cs +++ b/test/Microsoft.ML.Functional.Tests/Training.cs @@ -226,7 +226,7 @@ public void ContinueTrainingLogisticRegression() .AppendCacheCheckpoint(mlContext); var trainer = mlContext.BinaryClassification.Trainers.LogisticRegression( - new LogisticRegressionBinaryTrainer.Options { NumberOfThreads = 1, MaximumNumberOfIterations = 10 }); + new LbfgsLogisticRegressionTrainer.Options { NumberOfThreads = 1, MaximumNumberOfIterations = 10 }); // Fit the data transformation pipeline. var featurization = featurizationPipeline.Fit(data); @@ -452,7 +452,7 @@ public void MetacomponentsFunctionAsExpectedOva() // Create a model training an OVA trainer with a binary classifier. var binaryClassificationTrainer = mlContext.BinaryClassification.Trainers.LogisticRegression( - new LogisticRegressionBinaryTrainer.Options { MaximumNumberOfIterations = 10, NumberOfThreads = 1, }); + new LbfgsLogisticRegressionTrainer.Options { MaximumNumberOfIterations = 10, NumberOfThreads = 1, }); var binaryClassificationPipeline = mlContext.Transforms.Concatenate("Features", Iris.Features) .AppendCacheCheckpoint(mlContext) .Append(mlContext.Transforms.Conversion.MapValueToKey("Label")) diff --git a/test/Microsoft.ML.Predictor.Tests/TestPredictors.cs b/test/Microsoft.ML.Predictor.Tests/TestPredictors.cs index 160c2c3357..88cb40f9e0 100644 --- a/test/Microsoft.ML.Predictor.Tests/TestPredictors.cs +++ b/test/Microsoft.ML.Predictor.Tests/TestPredictors.cs @@ -739,7 +739,7 @@ public void TestEnsembleCombiner() TrainingData = dataView, NormalizeFeatures = NormalizeOption.No }).PredictorModel, - LogisticRegressionBinaryTrainer.TrainBinary(ML, new LogisticRegressionBinaryTrainer.Options() + LbfgsLogisticRegressionTrainer.TrainBinary(ML, new LbfgsLogisticRegressionTrainer.Options() { FeatureColumnName = "Features", LabelColumnName = DefaultColumnNames.Label, @@ -747,7 +747,7 @@ public void TestEnsembleCombiner() TrainingData = dataView, NormalizeFeatures = NormalizeOption.No }).PredictorModel, - LogisticRegressionBinaryTrainer.TrainBinary(ML, new LogisticRegressionBinaryTrainer.Options() + LbfgsLogisticRegressionTrainer.TrainBinary(ML, new LbfgsLogisticRegressionTrainer.Options() { FeatureColumnName = "Features", LabelColumnName = DefaultColumnNames.Label, diff --git a/test/Microsoft.ML.StaticPipelineTesting/Training.cs b/test/Microsoft.ML.StaticPipelineTesting/Training.cs index 25898a5702..0fb8a4faa7 100644 --- a/test/Microsoft.ML.StaticPipelineTesting/Training.cs +++ b/test/Microsoft.ML.StaticPipelineTesting/Training.cs @@ -705,7 +705,7 @@ public void LogisticRegressionBinaryClassification() var est = reader.MakeNewEstimator() .Append(r => (r.label, preds: catalog.Trainers.LogisticRegressionBinaryClassifier(r.label, r.features, null, - new LogisticRegressionBinaryTrainer.Options { L1Regularization = 10, NumberOfThreads = 1 }, onFit: (p) => { pred = p; }))); + new LbfgsLogisticRegressionTrainer.Options { L1Regularization = 10, NumberOfThreads = 1 }, onFit: (p) => { pred = p; }))); var pipe = reader.Append(est); diff --git a/test/Microsoft.ML.Tests/PermutationFeatureImportanceTests.cs b/test/Microsoft.ML.Tests/PermutationFeatureImportanceTests.cs index 93b3ea146f..6d3044e8d2 100644 --- a/test/Microsoft.ML.Tests/PermutationFeatureImportanceTests.cs +++ b/test/Microsoft.ML.Tests/PermutationFeatureImportanceTests.cs @@ -152,7 +152,7 @@ public void TestPfiBinaryClassificationOnDenseFeatures() { var data = GetDenseDataset(TaskType.BinaryClassification); var model = ML.BinaryClassification.Trainers.LogisticRegression( - new LogisticRegressionBinaryTrainer.Options { NumberOfThreads = 1 }).Fit(data); + new LbfgsLogisticRegressionTrainer.Options { NumberOfThreads = 1 }).Fit(data); var pfi = ML.BinaryClassification.PermutationFeatureImportance(model, data); // Pfi Indices: @@ -190,7 +190,7 @@ public void TestPfiBinaryClassificationOnSparseFeatures() { var data = GetSparseDataset(TaskType.BinaryClassification); var model = ML.BinaryClassification.Trainers.LogisticRegression( - new LogisticRegressionBinaryTrainer.Options { NumberOfThreads = 1 }).Fit(data); + new LbfgsLogisticRegressionTrainer.Options { NumberOfThreads = 1 }).Fit(data); var pfi = ML.BinaryClassification.PermutationFeatureImportance(model, data); // Pfi Indices: diff --git a/test/Microsoft.ML.Tests/TrainerEstimators/LbfgsTests.cs b/test/Microsoft.ML.Tests/TrainerEstimators/LbfgsTests.cs index 06c2c288c2..6bad693617 100644 --- a/test/Microsoft.ML.Tests/TrainerEstimators/LbfgsTests.cs +++ b/test/Microsoft.ML.Tests/TrainerEstimators/LbfgsTests.cs @@ -60,7 +60,7 @@ public void TestLRNoStats() { (IEstimator pipe, IDataView dataView) = GetBinaryClassificationPipeline(); - pipe = pipe.Append(ML.BinaryClassification.Trainers.LogisticRegression(new LogisticRegressionBinaryTrainer.Options { ShowTrainingStatistics = true })); + pipe = pipe.Append(ML.BinaryClassification.Trainers.LogisticRegression(new LbfgsLogisticRegressionTrainer.Options { ShowTrainingStatistics = true })); var transformerChain = pipe.Fit(dataView) as TransformerChain>>; var linearModel = transformerChain.LastTransformer.Model.SubModel as LinearBinaryModelParameters; var stats = linearModel.Statistics as ModelStatisticsBase; @@ -81,7 +81,7 @@ public void TestLRWithStats() (IEstimator pipe, IDataView dataView) = GetBinaryClassificationPipeline(); pipe = pipe.Append(ML.BinaryClassification.Trainers.LogisticRegression( - new LogisticRegressionBinaryTrainer.Options + new LbfgsLogisticRegressionTrainer.Options { ShowTrainingStatistics = true, ComputeStandardDeviation = new ComputeLRTrainingStdThroughMkl(), From 60d7d9c2b5bc584a8b5d4e6dd76370d75e866bef Mon Sep 17 00:00:00 2001 From: Wei-Sheng Chin Date: Wed, 20 Mar 2019 10:04:20 -0700 Subject: [PATCH 02/12] Add keyword Static --- src/Microsoft.ML.StaticPipe/LbfgsStatic.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Microsoft.ML.StaticPipe/LbfgsStatic.cs b/src/Microsoft.ML.StaticPipe/LbfgsStatic.cs index d02a691730..648c77c9f5 100644 --- a/src/Microsoft.ML.StaticPipe/LbfgsStatic.cs +++ b/src/Microsoft.ML.StaticPipe/LbfgsStatic.cs @@ -14,7 +14,7 @@ namespace Microsoft.ML.StaticPipe /// /// Binary Classification trainer estimators. /// - public static class LbfgsBinaryExtensions + public static class LbfgsBinaryStaticExtensions { /// /// Predict a target using a linear binary classification model trained with the trainer. @@ -110,7 +110,7 @@ public static (Scalar score, Scalar probability, Scalar pred /// /// Regression trainer estimators. /// - public static class LbfgsRegressionExtensions + public static class LbfgsRegressionStaticExtensions { /// /// Predict a target using a linear regression model trained with the trainer. @@ -206,7 +206,7 @@ public static Scalar PoissonRegression(this RegressionCatalog.RegressionT /// /// Multiclass Classification trainer estimators. /// - public static class LbfgsMulticlassExtensions + public static class LbfgsMulticlassStaticExtensions { /// /// Predict a target using a maximum entropy classification model trained with the L-BFGS method implemented in . From d28c5ce6414cb7cf115c35e5e0a23db63e5105e3 Mon Sep 17 00:00:00 2001 From: Wei-Sheng Chin Date: Wed, 20 Mar 2019 11:02:43 -0700 Subject: [PATCH 03/12] Rename L-BFGS family members --- .../Dynamic/LogisticRegression.cs | 2 +- .../PfiBinaryClassificationExample.cs | 2 +- .../PoissonRegression/PoissonRegression.cs | 24 +++++++++---------- .../StandardTrainersCatalog.cs | 18 +++++++------- src/Microsoft.ML.StaticPipe/LbfgsStatic.cs | 14 +++++------ .../Common/EntryPoints/core_ep-list.tsv | 2 +- .../KMeansAndLogisticRegressionBench.cs | 2 +- .../Evaluation.cs | 4 ++-- .../Microsoft.ML.Functional.Tests/Training.cs | 8 +++---- .../Training.cs | 6 ++--- .../FeatureContributionTests.cs | 6 ++--- .../PermutationFeatureImportanceTests.cs | 4 ++-- test/Microsoft.ML.Tests/Scenarios/OvaTest.cs | 2 +- .../TrainerEstimators/LbfgsTests.cs | 8 +++---- 14 files changed, 51 insertions(+), 51 deletions(-) diff --git a/docs/samples/Microsoft.ML.Samples/Dynamic/LogisticRegression.cs b/docs/samples/Microsoft.ML.Samples/Dynamic/LogisticRegression.cs index 4e6b58888f..36fe21b2ba 100644 --- a/docs/samples/Microsoft.ML.Samples/Dynamic/LogisticRegression.cs +++ b/docs/samples/Microsoft.ML.Samples/Dynamic/LogisticRegression.cs @@ -63,7 +63,7 @@ public static void Example() .Append(ml.Transforms.Text.FeaturizeText("TextFeatures", "Text")) .Append(ml.Transforms.Concatenate("Features", "TextFeatures", "age", "fnlwgt", "education-num", "capital-gain", "capital-loss", "hours-per-week")) - .Append(ml.BinaryClassification.Trainers.LogisticRegression()); + .Append(ml.BinaryClassification.Trainers.LbfgsLogisticRegressio()); var model = pipeline.Fit(split.TrainSet); diff --git a/docs/samples/Microsoft.ML.Samples/Dynamic/PermutationFeatureImportance/PfiBinaryClassificationExample.cs b/docs/samples/Microsoft.ML.Samples/Dynamic/PermutationFeatureImportance/PfiBinaryClassificationExample.cs index a74c659de2..1323235e22 100644 --- a/docs/samples/Microsoft.ML.Samples/Dynamic/PermutationFeatureImportance/PfiBinaryClassificationExample.cs +++ b/docs/samples/Microsoft.ML.Samples/Dynamic/PermutationFeatureImportance/PfiBinaryClassificationExample.cs @@ -22,7 +22,7 @@ public static void Example() // Then append a logistic regression trainer. var pipeline = mlContext.Transforms.Concatenate("Features", featureNames) .Append(mlContext.Transforms.Normalize("Features")) - .Append(mlContext.BinaryClassification.Trainers.LogisticRegression( + .Append(mlContext.BinaryClassification.Trainers.LbfgsLogisticRegressio( labelColumnName: labelName, featureColumnName: "Features")); var model = pipeline.Fit(data); diff --git a/src/Microsoft.ML.StandardTrainers/Standard/PoissonRegression/PoissonRegression.cs b/src/Microsoft.ML.StandardTrainers/Standard/PoissonRegression/PoissonRegression.cs index 3d0135a57a..cb65044acf 100644 --- a/src/Microsoft.ML.StandardTrainers/Standard/PoissonRegression/PoissonRegression.cs +++ b/src/Microsoft.ML.StandardTrainers/Standard/PoissonRegression/PoissonRegression.cs @@ -12,20 +12,20 @@ using Microsoft.ML.Runtime; using Microsoft.ML.Trainers; -[assembly: LoadableClass(PoissonRegressionTrainer.Summary, typeof(PoissonRegressionTrainer), typeof(PoissonRegressionTrainer.Options), +[assembly: LoadableClass(LbfgsPoissonRegressionTrainer.Summary, typeof(LbfgsPoissonRegressionTrainer), typeof(LbfgsPoissonRegressionTrainer.Options), new[] { typeof(SignatureRegressorTrainer), typeof(SignatureTrainer), typeof(SignatureFeatureScorerTrainer) }, - PoissonRegressionTrainer.UserNameValue, - PoissonRegressionTrainer.LoadNameValue, + LbfgsPoissonRegressionTrainer.UserNameValue, + LbfgsPoissonRegressionTrainer.LoadNameValue, "PoissonRegressionNew", "Poisson", - PoissonRegressionTrainer.ShortName)] + LbfgsPoissonRegressionTrainer.ShortName)] -[assembly: LoadableClass(typeof(void), typeof(PoissonRegressionTrainer), null, typeof(SignatureEntryPointModule), PoissonRegressionTrainer.LoadNameValue)] +[assembly: LoadableClass(typeof(void), typeof(LbfgsPoissonRegressionTrainer), null, typeof(SignatureEntryPointModule), LbfgsPoissonRegressionTrainer.LoadNameValue)] namespace Microsoft.ML.Trainers { /// - public sealed class PoissonRegressionTrainer : LbfgsTrainerBase, PoissonRegressionModelParameters> + public sealed class LbfgsPoissonRegressionTrainer : LbfgsTrainerBase, PoissonRegressionModelParameters> { internal const string LoadNameValue = "PoissonRegression"; internal const string UserNameValue = "Poisson Regression"; @@ -39,7 +39,7 @@ public sealed class Options : OptionsBase private Double _lossNormalizer; /// - /// Initializes a new instance of + /// Initializes a new instance of /// /// The environment to use. /// The name of the label column. @@ -50,7 +50,7 @@ public sealed class Options : OptionsBase /// Threshold for optimizer convergence. /// Memory size for . Low=faster, less accurate. /// Enforce non-negative weights. - internal PoissonRegressionTrainer(IHostEnvironment env, + internal LbfgsPoissonRegressionTrainer(IHostEnvironment env, string labelColumn = DefaultColumnNames.Label, string featureColumn = DefaultColumnNames.Features, string weights = null, @@ -67,9 +67,9 @@ internal PoissonRegressionTrainer(IHostEnvironment env, } /// - /// Initializes a new instance of + /// Initializes a new instance of /// - internal PoissonRegressionTrainer(IHostEnvironment env, Options options) + internal LbfgsPoissonRegressionTrainer(IHostEnvironment env, Options options) : base(env, options, TrainerUtils.MakeR4ScalarColumn(options.LabelColumnName)) { } @@ -94,7 +94,7 @@ private protected override RegressionPredictionTransformer new RegressionPredictionTransformer(Host, model, trainSchema, FeatureColumn.Name); /// - /// Continues the training of a using an already trained and returns + /// Continues the training of a using an already trained and returns /// a . /// public RegressionPredictionTransformer Fit(IDataView trainData, LinearModelParameters linearModel) @@ -183,7 +183,7 @@ internal static CommonOutputs.RegressionOutput TrainRegression(IHostEnvironment EntryPointUtils.CheckInputArgs(host, input); return TrainerEntryPointsUtils.Train(host, input, - () => new PoissonRegressionTrainer(host, input), + () => new LbfgsPoissonRegressionTrainer(host, input), () => TrainerEntryPointsUtils.FindColumn(host, input.TrainingData.Schema, input.LabelColumnName), () => TrainerEntryPointsUtils.FindColumn(host, input.TrainingData.Schema, input.ExampleWeightColumnName)); } diff --git a/src/Microsoft.ML.StandardTrainers/StandardTrainersCatalog.cs b/src/Microsoft.ML.StandardTrainers/StandardTrainersCatalog.cs index 50221ba9dc..47e328fa89 100644 --- a/src/Microsoft.ML.StandardTrainers/StandardTrainersCatalog.cs +++ b/src/Microsoft.ML.StandardTrainers/StandardTrainersCatalog.cs @@ -516,7 +516,7 @@ public static OnlineGradientDescentTrainer OnlineGradientDescent(this Regression /// ]]> /// /// - public static LbfgsLogisticRegressionTrainer LogisticRegression(this BinaryClassificationCatalog.BinaryClassificationTrainers catalog, + public static LbfgsLogisticRegressionTrainer LbfgsLogisticRegressio(this BinaryClassificationCatalog.BinaryClassificationTrainers catalog, string labelColumnName = DefaultColumnNames.Label, string featureColumnName = DefaultColumnNames.Features, string exampleWeightColumnName = null, @@ -536,7 +536,7 @@ public static LbfgsLogisticRegressionTrainer LogisticRegression(this BinaryClass /// /// The binary classification catalog trainer object. /// Advanced arguments to the algorithm. - public static LbfgsLogisticRegressionTrainer LogisticRegression(this BinaryClassificationCatalog.BinaryClassificationTrainers catalog, LROptions options) + public static LbfgsLogisticRegressionTrainer LbfgsLogisticRegressio(this BinaryClassificationCatalog.BinaryClassificationTrainers catalog, LROptions options) { Contracts.CheckValue(catalog, nameof(catalog)); Contracts.CheckValue(options, nameof(options)); @@ -546,7 +546,7 @@ public static LbfgsLogisticRegressionTrainer LogisticRegression(this BinaryClass } /// - /// Predict a target using a linear regression model trained with the trainer. + /// Predict a target using a linear regression model trained with the trainer. /// /// The regression catalog trainer object. /// The name of the label column. @@ -555,9 +555,9 @@ public static LbfgsLogisticRegressionTrainer LogisticRegression(this BinaryClass /// Weight of L1 regularization term. /// Weight of L2 regularization term. /// Threshold for optimizer convergence. - /// Memory size for . Low=faster, less accurate. + /// Memory size for . Low=faster, less accurate. /// Enforce non-negative weights. - public static PoissonRegressionTrainer PoissonRegression(this RegressionCatalog.RegressionTrainers catalog, + public static LbfgsPoissonRegressionTrainer LbfgsPoissonRegression(this RegressionCatalog.RegressionTrainers catalog, string labelColumnName = DefaultColumnNames.Label, string featureColumnName = DefaultColumnNames.Features, string exampleWeightColumnName = null, @@ -569,21 +569,21 @@ public static PoissonRegressionTrainer PoissonRegression(this RegressionCatalog. { Contracts.CheckValue(catalog, nameof(catalog)); var env = CatalogUtils.GetEnvironment(catalog); - return new PoissonRegressionTrainer(env, labelColumnName, featureColumnName, exampleWeightColumnName, l1Regularization, l2Regularization, optimizationTolerance, historySize, enforceNonNegativity); + return new LbfgsPoissonRegressionTrainer(env, labelColumnName, featureColumnName, exampleWeightColumnName, l1Regularization, l2Regularization, optimizationTolerance, historySize, enforceNonNegativity); } /// - /// Predict a target using a linear regression model trained with the trainer. + /// Predict a target using a linear regression model trained with the trainer. /// /// The regression catalog trainer object. /// Advanced arguments to the algorithm. - public static PoissonRegressionTrainer PoissonRegression(this RegressionCatalog.RegressionTrainers catalog, PoissonRegressionTrainer.Options options) + public static LbfgsPoissonRegressionTrainer LbfgsPoissonRegression(this RegressionCatalog.RegressionTrainers catalog, LbfgsPoissonRegressionTrainer.Options options) { Contracts.CheckValue(catalog, nameof(catalog)); Contracts.CheckValue(options, nameof(options)); var env = CatalogUtils.GetEnvironment(catalog); - return new PoissonRegressionTrainer(env, options); + return new LbfgsPoissonRegressionTrainer(env, options); } /// diff --git a/src/Microsoft.ML.StaticPipe/LbfgsStatic.cs b/src/Microsoft.ML.StaticPipe/LbfgsStatic.cs index 648c77c9f5..3b984208fc 100644 --- a/src/Microsoft.ML.StaticPipe/LbfgsStatic.cs +++ b/src/Microsoft.ML.StaticPipe/LbfgsStatic.cs @@ -34,7 +34,7 @@ public static class LbfgsBinaryStaticExtensions /// the linear model that was trained. Note that this action cannot change the result in any way; it is only a way for the caller to /// be informed about what was learnt. /// The predicted output. - public static (Scalar score, Scalar probability, Scalar predictedLabel) LogisticRegressionBinaryClassifier(this BinaryClassificationCatalog.BinaryClassificationTrainers catalog, + public static (Scalar score, Scalar probability, Scalar predictedLabel) LbfgsLogisticRegression(this BinaryClassificationCatalog.BinaryClassificationTrainers catalog, Scalar label, Vector features, Scalar weights = null, @@ -76,7 +76,7 @@ public static (Scalar score, Scalar probability, Scalar pred /// be informed about what was learnt. /// Advanced arguments to the algorithm. /// The predicted output. - public static (Scalar score, Scalar probability, Scalar predictedLabel) LogisticRegressionBinaryClassifier(this BinaryClassificationCatalog.BinaryClassificationTrainers catalog, + public static (Scalar score, Scalar probability, Scalar predictedLabel) LbfgsLogisticRegression(this BinaryClassificationCatalog.BinaryClassificationTrainers catalog, Scalar label, Vector features, Scalar weights, @@ -130,7 +130,7 @@ public static class LbfgsRegressionStaticExtensions /// the linear model that was trained. Note that this action cannot change the result in any way; it is only a way for the caller to /// be informed about what was learnt. /// The predicted output. - public static Scalar PoissonRegression(this RegressionCatalog.RegressionTrainers catalog, + public static Scalar LbfgsPoissonRegression(this RegressionCatalog.RegressionTrainers catalog, Scalar label, Vector features, Scalar weights = null, @@ -146,7 +146,7 @@ public static Scalar PoissonRegression(this RegressionCatalog.RegressionT var rec = new TrainerEstimatorReconciler.Regression( (env, labelName, featuresName, weightsName) => { - var trainer = new PoissonRegressionTrainer(env, labelName, featuresName, weightsName, + var trainer = new LbfgsPoissonRegressionTrainer(env, labelName, featuresName, weightsName, l1Regularization, l2Regularization, optimizationTolerance, historySize, enforceNonNegativity); if (onFit != null) @@ -172,11 +172,11 @@ public static Scalar PoissonRegression(this RegressionCatalog.RegressionT /// the linear model that was trained. Note that this action cannot change the result in any way; it is only a way for the caller to /// be informed about what was learnt. /// The predicted output. - public static Scalar PoissonRegression(this RegressionCatalog.RegressionTrainers catalog, + public static Scalar LbfgsPoissonRegression(this RegressionCatalog.RegressionTrainers catalog, Scalar label, Vector features, Scalar weights, - PoissonRegressionTrainer.Options options, + LbfgsPoissonRegressionTrainer.Options options, Action onFit = null) { Contracts.CheckValue(label, nameof(label)); @@ -191,7 +191,7 @@ public static Scalar PoissonRegression(this RegressionCatalog.RegressionT options.FeatureColumnName = featuresName; options.ExampleWeightColumnName = weightsName; - var trainer = new PoissonRegressionTrainer(env, options); + var trainer = new LbfgsPoissonRegressionTrainer(env, options); if (onFit != null) return trainer.WithOnFitDelegate(trans => onFit(trans.Model)); diff --git a/test/BaselineOutput/Common/EntryPoints/core_ep-list.tsv b/test/BaselineOutput/Common/EntryPoints/core_ep-list.tsv index cedb6f2399..d85bb468d4 100644 --- a/test/BaselineOutput/Common/EntryPoints/core_ep-list.tsv +++ b/test/BaselineOutput/Common/EntryPoints/core_ep-list.tsv @@ -64,7 +64,7 @@ Trainers.NaiveBayesClassifier Train a MulticlassNaiveBayesTrainer. Microsoft.ML. Trainers.OnlineGradientDescentRegressor Train a Online gradient descent perceptron. Microsoft.ML.Trainers.OnlineGradientDescentTrainer TrainRegression Microsoft.ML.Trainers.OnlineGradientDescentTrainer+Options Microsoft.ML.EntryPoints.CommonOutputs+RegressionOutput Trainers.OrdinaryLeastSquaresRegressor Train an OLS regression model. Microsoft.ML.Trainers.OlsTrainer TrainRegression Microsoft.ML.Trainers.OlsTrainer+Options Microsoft.ML.EntryPoints.CommonOutputs+RegressionOutput Trainers.PcaAnomalyDetector Train an PCA Anomaly model. Microsoft.ML.Trainers.RandomizedPcaTrainer TrainPcaAnomaly Microsoft.ML.Trainers.RandomizedPcaTrainer+Options Microsoft.ML.EntryPoints.CommonOutputs+AnomalyDetectionOutput -Trainers.PoissonRegressor Train an Poisson regression model. Microsoft.ML.Trainers.PoissonRegressionTrainer TrainRegression Microsoft.ML.Trainers.PoissonRegressionTrainer+Options Microsoft.ML.EntryPoints.CommonOutputs+RegressionOutput +Trainers.PoissonRegressor Train an Poisson regression model. Microsoft.ML.Trainers.LbfgsPoissonRegressionTrainer TrainRegression Microsoft.ML.Trainers.LbfgsPoissonRegressionTrainer+Options Microsoft.ML.EntryPoints.CommonOutputs+RegressionOutput Trainers.StochasticDualCoordinateAscentBinaryClassifier Train an SDCA binary model. Microsoft.ML.Trainers.Sdca TrainBinary Microsoft.ML.Trainers.LegacySdcaBinaryTrainer+Options Microsoft.ML.EntryPoints.CommonOutputs+BinaryClassificationOutput Trainers.StochasticDualCoordinateAscentClassifier The SDCA linear multi-class classification trainer. Microsoft.ML.Trainers.Sdca TrainMulticlass Microsoft.ML.Trainers.SdcaCalibratedMulticlassTrainer+Options Microsoft.ML.EntryPoints.CommonOutputs+MulticlassClassificationOutput Trainers.StochasticDualCoordinateAscentRegressor The SDCA linear regression trainer. Microsoft.ML.Trainers.Sdca TrainRegression Microsoft.ML.Trainers.SdcaRegressionTrainer+Options Microsoft.ML.EntryPoints.CommonOutputs+RegressionOutput diff --git a/test/Microsoft.ML.Benchmarks/KMeansAndLogisticRegressionBench.cs b/test/Microsoft.ML.Benchmarks/KMeansAndLogisticRegressionBench.cs index 1646036b3f..7e726f070b 100644 --- a/test/Microsoft.ML.Benchmarks/KMeansAndLogisticRegressionBench.cs +++ b/test/Microsoft.ML.Benchmarks/KMeansAndLogisticRegressionBench.cs @@ -39,7 +39,7 @@ public CalibratedModelParametersBase (r.label, score: catalog.Trainers.PoissonRegression(r.label, r.features, null, - new PoissonRegressionTrainer.Options { L2Regularization = 2, EnforceNonNegativity = true, NumberOfThreads = 1 }, + .Append(r => (r.label, score: catalog.Trainers.LbfgsPoissonRegression(r.label, r.features, null, + new LbfgsPoissonRegressionTrainer.Options { L2Regularization = 2, EnforceNonNegativity = true, NumberOfThreads = 1 }, onFit: (p) => { pred = p; }))); var pipe = reader.Append(est); @@ -704,7 +704,7 @@ public void LogisticRegressionBinaryClassification() CalibratedModelParametersBase pred = null; var est = reader.MakeNewEstimator() - .Append(r => (r.label, preds: catalog.Trainers.LogisticRegressionBinaryClassifier(r.label, r.features, null, + .Append(r => (r.label, preds: catalog.Trainers.LbfgsLogisticRegression(r.label, r.features, null, new LbfgsLogisticRegressionTrainer.Options { L1Regularization = 10, NumberOfThreads = 1 }, onFit: (p) => { pred = p; }))); var pipe = reader.Append(est); diff --git a/test/Microsoft.ML.Tests/FeatureContributionTests.cs b/test/Microsoft.ML.Tests/FeatureContributionTests.cs index 63aabbcd95..80494bf8be 100644 --- a/test/Microsoft.ML.Tests/FeatureContributionTests.cs +++ b/test/Microsoft.ML.Tests/FeatureContributionTests.cs @@ -87,8 +87,8 @@ public void TestOnlineGradientDescentRegression() [Fact] public void TestPoissonRegression() { - TestFeatureContribution(ML.Regression.Trainers.PoissonRegression( - new PoissonRegressionTrainer.Options { NumberOfThreads = 1 }), GetSparseDataset(numberOfInstances: 100), "PoissonRegression"); + TestFeatureContribution(ML.Regression.Trainers.LbfgsPoissonRegression( + new LbfgsPoissonRegressionTrainer.Options { NumberOfThreads = 1 }), GetSparseDataset(numberOfInstances: 100), "PoissonRegression"); } [Fact] @@ -126,7 +126,7 @@ public void TestSVMBinary() [Fact] public void TestLogisticRegressionBinary() { - TestFeatureContribution(ML.BinaryClassification.Trainers.LogisticRegression(), GetSparseDataset(TaskType.BinaryClassification, 100), "LogisticRegressionBinary"); + TestFeatureContribution(ML.BinaryClassification.Trainers.LbfgsLogisticRegressio(), GetSparseDataset(TaskType.BinaryClassification, 100), "LogisticRegressionBinary"); } [Fact] diff --git a/test/Microsoft.ML.Tests/PermutationFeatureImportanceTests.cs b/test/Microsoft.ML.Tests/PermutationFeatureImportanceTests.cs index 6d3044e8d2..9d07c68cf9 100644 --- a/test/Microsoft.ML.Tests/PermutationFeatureImportanceTests.cs +++ b/test/Microsoft.ML.Tests/PermutationFeatureImportanceTests.cs @@ -151,7 +151,7 @@ public void TestPfiRegressionOnSparseFeatures() public void TestPfiBinaryClassificationOnDenseFeatures() { var data = GetDenseDataset(TaskType.BinaryClassification); - var model = ML.BinaryClassification.Trainers.LogisticRegression( + var model = ML.BinaryClassification.Trainers.LbfgsLogisticRegressio( new LbfgsLogisticRegressionTrainer.Options { NumberOfThreads = 1 }).Fit(data); var pfi = ML.BinaryClassification.PermutationFeatureImportance(model, data); @@ -189,7 +189,7 @@ public void TestPfiBinaryClassificationOnDenseFeatures() public void TestPfiBinaryClassificationOnSparseFeatures() { var data = GetSparseDataset(TaskType.BinaryClassification); - var model = ML.BinaryClassification.Trainers.LogisticRegression( + var model = ML.BinaryClassification.Trainers.LbfgsLogisticRegressio( new LbfgsLogisticRegressionTrainer.Options { NumberOfThreads = 1 }).Fit(data); var pfi = ML.BinaryClassification.PermutationFeatureImportance(model, data); diff --git a/test/Microsoft.ML.Tests/Scenarios/OvaTest.cs b/test/Microsoft.ML.Tests/Scenarios/OvaTest.cs index 8c5108cf2e..a5662153d1 100644 --- a/test/Microsoft.ML.Tests/Scenarios/OvaTest.cs +++ b/test/Microsoft.ML.Tests/Scenarios/OvaTest.cs @@ -33,7 +33,7 @@ public void OvaLogisticRegression() .Fit(textData).Transform(textData)); // Pipeline - var logReg = mlContext.BinaryClassification.Trainers.LogisticRegression(); + var logReg = mlContext.BinaryClassification.Trainers.LbfgsLogisticRegressio(); var pipeline = mlContext.MulticlassClassification.Trainers.OneVersusAll(logReg, useProbabilities: false); var model = pipeline.Fit(data); diff --git a/test/Microsoft.ML.Tests/TrainerEstimators/LbfgsTests.cs b/test/Microsoft.ML.Tests/TrainerEstimators/LbfgsTests.cs index 6bad693617..316bb78d9f 100644 --- a/test/Microsoft.ML.Tests/TrainerEstimators/LbfgsTests.cs +++ b/test/Microsoft.ML.Tests/TrainerEstimators/LbfgsTests.cs @@ -19,7 +19,7 @@ public partial class TrainerEstimators public void TestEstimatorLogisticRegression() { (IEstimator pipe, IDataView dataView) = GetBinaryClassificationPipeline(); - var trainer = ML.BinaryClassification.Trainers.LogisticRegression(); + var trainer = ML.BinaryClassification.Trainers.LbfgsLogisticRegressio(); var pipeWithTrainer = pipe.Append(trainer); TestEstimatorCore(pipeWithTrainer, dataView); @@ -47,7 +47,7 @@ public void TestEstimatorMulticlassLogisticRegression() public void TestEstimatorPoissonRegression() { var dataView = GetRegressionPipeline(); - var trainer = ML.Regression.Trainers.PoissonRegression(); + var trainer = ML.Regression.Trainers.LbfgsPoissonRegression(); TestEstimatorCore(trainer, dataView); var model = trainer.Fit(dataView); @@ -60,7 +60,7 @@ public void TestLRNoStats() { (IEstimator pipe, IDataView dataView) = GetBinaryClassificationPipeline(); - pipe = pipe.Append(ML.BinaryClassification.Trainers.LogisticRegression(new LbfgsLogisticRegressionTrainer.Options { ShowTrainingStatistics = true })); + pipe = pipe.Append(ML.BinaryClassification.Trainers.LbfgsLogisticRegressio(new LbfgsLogisticRegressionTrainer.Options { ShowTrainingStatistics = true })); var transformerChain = pipe.Fit(dataView) as TransformerChain>>; var linearModel = transformerChain.LastTransformer.Model.SubModel as LinearBinaryModelParameters; var stats = linearModel.Statistics as ModelStatisticsBase; @@ -80,7 +80,7 @@ public void TestLRWithStats() { (IEstimator pipe, IDataView dataView) = GetBinaryClassificationPipeline(); - pipe = pipe.Append(ML.BinaryClassification.Trainers.LogisticRegression( + pipe = pipe.Append(ML.BinaryClassification.Trainers.LbfgsLogisticRegressio( new LbfgsLogisticRegressionTrainer.Options { ShowTrainingStatistics = true, From 901e706745a86e6e57c81862edb24a94f5579e96 Mon Sep 17 00:00:00 2001 From: Wei-Sheng Chin Date: Wed, 20 Mar 2019 11:18:39 -0700 Subject: [PATCH 04/12] Add missing n back --- .../Microsoft.ML.Samples/Dynamic/LogisticRegression.cs | 2 +- .../PfiBinaryClassificationExample.cs | 2 +- .../StandardTrainersCatalog.cs | 4 ++-- .../KMeansAndLogisticRegressionBench.cs | 2 +- test/Microsoft.ML.Functional.Tests/Evaluation.cs | 4 ++-- test/Microsoft.ML.Functional.Tests/Training.cs | 4 ++-- test/Microsoft.ML.Tests/FeatureContributionTests.cs | 2 +- .../Microsoft.ML.Tests/PermutationFeatureImportanceTests.cs | 4 ++-- test/Microsoft.ML.Tests/Scenarios/OvaTest.cs | 2 +- test/Microsoft.ML.Tests/TrainerEstimators/LbfgsTests.cs | 6 +++--- 10 files changed, 16 insertions(+), 16 deletions(-) diff --git a/docs/samples/Microsoft.ML.Samples/Dynamic/LogisticRegression.cs b/docs/samples/Microsoft.ML.Samples/Dynamic/LogisticRegression.cs index 36fe21b2ba..38e6588079 100644 --- a/docs/samples/Microsoft.ML.Samples/Dynamic/LogisticRegression.cs +++ b/docs/samples/Microsoft.ML.Samples/Dynamic/LogisticRegression.cs @@ -63,7 +63,7 @@ public static void Example() .Append(ml.Transforms.Text.FeaturizeText("TextFeatures", "Text")) .Append(ml.Transforms.Concatenate("Features", "TextFeatures", "age", "fnlwgt", "education-num", "capital-gain", "capital-loss", "hours-per-week")) - .Append(ml.BinaryClassification.Trainers.LbfgsLogisticRegressio()); + .Append(ml.BinaryClassification.Trainers.LbfgsLogisticRegression()); var model = pipeline.Fit(split.TrainSet); diff --git a/docs/samples/Microsoft.ML.Samples/Dynamic/PermutationFeatureImportance/PfiBinaryClassificationExample.cs b/docs/samples/Microsoft.ML.Samples/Dynamic/PermutationFeatureImportance/PfiBinaryClassificationExample.cs index 1323235e22..09fb640f30 100644 --- a/docs/samples/Microsoft.ML.Samples/Dynamic/PermutationFeatureImportance/PfiBinaryClassificationExample.cs +++ b/docs/samples/Microsoft.ML.Samples/Dynamic/PermutationFeatureImportance/PfiBinaryClassificationExample.cs @@ -22,7 +22,7 @@ public static void Example() // Then append a logistic regression trainer. var pipeline = mlContext.Transforms.Concatenate("Features", featureNames) .Append(mlContext.Transforms.Normalize("Features")) - .Append(mlContext.BinaryClassification.Trainers.LbfgsLogisticRegressio( + .Append(mlContext.BinaryClassification.Trainers.LbfgsLogisticRegression( labelColumnName: labelName, featureColumnName: "Features")); var model = pipeline.Fit(data); diff --git a/src/Microsoft.ML.StandardTrainers/StandardTrainersCatalog.cs b/src/Microsoft.ML.StandardTrainers/StandardTrainersCatalog.cs index 47e328fa89..690aa61615 100644 --- a/src/Microsoft.ML.StandardTrainers/StandardTrainersCatalog.cs +++ b/src/Microsoft.ML.StandardTrainers/StandardTrainersCatalog.cs @@ -516,7 +516,7 @@ public static OnlineGradientDescentTrainer OnlineGradientDescent(this Regression /// ]]> /// /// - public static LbfgsLogisticRegressionTrainer LbfgsLogisticRegressio(this BinaryClassificationCatalog.BinaryClassificationTrainers catalog, + public static LbfgsLogisticRegressionTrainer LbfgsLogisticRegression(this BinaryClassificationCatalog.BinaryClassificationTrainers catalog, string labelColumnName = DefaultColumnNames.Label, string featureColumnName = DefaultColumnNames.Features, string exampleWeightColumnName = null, @@ -536,7 +536,7 @@ public static LbfgsLogisticRegressionTrainer LbfgsLogisticRegressio(this BinaryC /// /// The binary classification catalog trainer object. /// Advanced arguments to the algorithm. - public static LbfgsLogisticRegressionTrainer LbfgsLogisticRegressio(this BinaryClassificationCatalog.BinaryClassificationTrainers catalog, LROptions options) + public static LbfgsLogisticRegressionTrainer LbfgsLogisticRegression(this BinaryClassificationCatalog.BinaryClassificationTrainers catalog, LROptions options) { Contracts.CheckValue(catalog, nameof(catalog)); Contracts.CheckValue(options, nameof(options)); diff --git a/test/Microsoft.ML.Benchmarks/KMeansAndLogisticRegressionBench.cs b/test/Microsoft.ML.Benchmarks/KMeansAndLogisticRegressionBench.cs index 7e726f070b..5f851f9475 100644 --- a/test/Microsoft.ML.Benchmarks/KMeansAndLogisticRegressionBench.cs +++ b/test/Microsoft.ML.Benchmarks/KMeansAndLogisticRegressionBench.cs @@ -39,7 +39,7 @@ public CalibratedModelParametersBase pipe, IDataView dataView) = GetBinaryClassificationPipeline(); - var trainer = ML.BinaryClassification.Trainers.LbfgsLogisticRegressio(); + var trainer = ML.BinaryClassification.Trainers.LbfgsLogisticRegression(); var pipeWithTrainer = pipe.Append(trainer); TestEstimatorCore(pipeWithTrainer, dataView); @@ -60,7 +60,7 @@ public void TestLRNoStats() { (IEstimator pipe, IDataView dataView) = GetBinaryClassificationPipeline(); - pipe = pipe.Append(ML.BinaryClassification.Trainers.LbfgsLogisticRegressio(new LbfgsLogisticRegressionTrainer.Options { ShowTrainingStatistics = true })); + pipe = pipe.Append(ML.BinaryClassification.Trainers.LbfgsLogisticRegression(new LbfgsLogisticRegressionTrainer.Options { ShowTrainingStatistics = true })); var transformerChain = pipe.Fit(dataView) as TransformerChain>>; var linearModel = transformerChain.LastTransformer.Model.SubModel as LinearBinaryModelParameters; var stats = linearModel.Statistics as ModelStatisticsBase; @@ -80,7 +80,7 @@ public void TestLRWithStats() { (IEstimator pipe, IDataView dataView) = GetBinaryClassificationPipeline(); - pipe = pipe.Append(ML.BinaryClassification.Trainers.LbfgsLogisticRegressio( + pipe = pipe.Append(ML.BinaryClassification.Trainers.LbfgsLogisticRegression( new LbfgsLogisticRegressionTrainer.Options { ShowTrainingStatistics = true, From 4302c88491f84ef67e2a271b4e51392c82ca8b81 Mon Sep 17 00:00:00 2001 From: Wei-Sheng Chin Date: Wed, 20 Mar 2019 11:25:27 -0700 Subject: [PATCH 05/12] Use SDCA-style name for LBFGS LR --- .../Dynamic/LogisticRegression.cs | 2 +- .../PfiBinaryClassificationExample.cs | 2 +- .../LogisticRegression/LogisticRegression.cs | 30 +++++++++---------- .../MulticlassLogisticRegression.cs | 2 +- .../PoissonRegression/PoissonRegression.cs | 2 +- .../StandardTrainersCatalog.cs | 16 +++++----- src/Microsoft.ML.StaticPipe/LbfgsStatic.cs | 24 +++++++-------- .../Common/EntryPoints/core_ep-list.tsv | 2 +- .../KMeansAndLogisticRegressionBench.cs | 2 +- .../UnitTests/TestEntryPoints.cs | 28 ++++++++--------- .../Evaluation.cs | 4 +-- .../Microsoft.ML.Functional.Tests/Training.cs | 4 +-- .../TestPredictors.cs | 4 +-- .../Training.cs | 4 +-- .../FeatureContributionTests.cs | 2 +- .../PermutationFeatureImportanceTests.cs | 4 +-- test/Microsoft.ML.Tests/Scenarios/OvaTest.cs | 2 +- .../TrainerEstimators/LbfgsTests.cs | 6 ++-- 18 files changed, 70 insertions(+), 70 deletions(-) diff --git a/docs/samples/Microsoft.ML.Samples/Dynamic/LogisticRegression.cs b/docs/samples/Microsoft.ML.Samples/Dynamic/LogisticRegression.cs index 38e6588079..76507b8ed7 100644 --- a/docs/samples/Microsoft.ML.Samples/Dynamic/LogisticRegression.cs +++ b/docs/samples/Microsoft.ML.Samples/Dynamic/LogisticRegression.cs @@ -63,7 +63,7 @@ public static void Example() .Append(ml.Transforms.Text.FeaturizeText("TextFeatures", "Text")) .Append(ml.Transforms.Concatenate("Features", "TextFeatures", "age", "fnlwgt", "education-num", "capital-gain", "capital-loss", "hours-per-week")) - .Append(ml.BinaryClassification.Trainers.LbfgsLogisticRegression()); + .Append(ml.BinaryClassification.Trainers.LbfgsCalibrated()); var model = pipeline.Fit(split.TrainSet); diff --git a/docs/samples/Microsoft.ML.Samples/Dynamic/PermutationFeatureImportance/PfiBinaryClassificationExample.cs b/docs/samples/Microsoft.ML.Samples/Dynamic/PermutationFeatureImportance/PfiBinaryClassificationExample.cs index 09fb640f30..69fb387cba 100644 --- a/docs/samples/Microsoft.ML.Samples/Dynamic/PermutationFeatureImportance/PfiBinaryClassificationExample.cs +++ b/docs/samples/Microsoft.ML.Samples/Dynamic/PermutationFeatureImportance/PfiBinaryClassificationExample.cs @@ -22,7 +22,7 @@ public static void Example() // Then append a logistic regression trainer. var pipeline = mlContext.Transforms.Concatenate("Features", featureNames) .Append(mlContext.Transforms.Normalize("Features")) - .Append(mlContext.BinaryClassification.Trainers.LbfgsLogisticRegression( + .Append(mlContext.BinaryClassification.Trainers.LbfgsCalibrated( labelColumnName: labelName, featureColumnName: "Features")); var model = pipeline.Fit(data); diff --git a/src/Microsoft.ML.StandardTrainers/Standard/LogisticRegression/LogisticRegression.cs b/src/Microsoft.ML.StandardTrainers/Standard/LogisticRegression/LogisticRegression.cs index fe1091cfbe..cc66a52857 100644 --- a/src/Microsoft.ML.StandardTrainers/Standard/LogisticRegression/LogisticRegression.cs +++ b/src/Microsoft.ML.StandardTrainers/Standard/LogisticRegression/LogisticRegression.cs @@ -15,21 +15,21 @@ using Microsoft.ML.Runtime; using Microsoft.ML.Trainers; -[assembly: LoadableClass(LbfgsLogisticRegressionTrainer.Summary, typeof(LbfgsLogisticRegressionTrainer), typeof(LbfgsLogisticRegressionTrainer.Options), +[assembly: LoadableClass(LbfgsCalibratedBinaryTrainer.Summary, typeof(LbfgsCalibratedBinaryTrainer), typeof(LbfgsCalibratedBinaryTrainer.Options), new[] { typeof(SignatureBinaryClassifierTrainer), typeof(SignatureTrainer), typeof(SignatureFeatureScorerTrainer) }, - LbfgsLogisticRegressionTrainer.UserNameValue, - LbfgsLogisticRegressionTrainer.LoadNameValue, - LbfgsLogisticRegressionTrainer.ShortName, + LbfgsCalibratedBinaryTrainer.UserNameValue, + LbfgsCalibratedBinaryTrainer.LoadNameValue, + LbfgsCalibratedBinaryTrainer.ShortName, "logisticregressionwrapper")] -[assembly: LoadableClass(typeof(void), typeof(LbfgsLogisticRegressionTrainer), null, typeof(SignatureEntryPointModule), LbfgsLogisticRegressionTrainer.LoadNameValue)] +[assembly: LoadableClass(typeof(void), typeof(LbfgsCalibratedBinaryTrainer), null, typeof(SignatureEntryPointModule), LbfgsCalibratedBinaryTrainer.LoadNameValue)] namespace Microsoft.ML.Trainers { /// /// - public sealed partial class LbfgsLogisticRegressionTrainer : LbfgsTrainerBase>, CalibratedModelParametersBase> { @@ -54,7 +54,7 @@ public sealed class Options : OptionsBase /// /// The instance of that computes the std of the training statistics, at the end of training. /// The calculations are not part of Microsoft.ML package, due to the size of MKL. - /// If you need these calculations, add the Microsoft.ML.Mkl.Components package, and initialize . + /// If you need these calculations, add the Microsoft.ML.Mkl.Components package, and initialize . /// to the implementation in the Microsoft.ML.Mkl.Components package. /// public ComputeLogisticRegressionStandardDeviation ComputeStandardDeviation; @@ -64,7 +64,7 @@ public sealed class Options : OptionsBase private ModelStatisticsBase _stats; /// - /// Initializes a new instance of + /// Initializes a new instance of /// /// The environment to use. /// The name of the label column. @@ -73,9 +73,9 @@ public sealed class Options : OptionsBase /// Enforce non-negative weights. /// Weight of L1 regularizer term. /// Weight of L2 regularizer term. - /// Memory size for . Low=faster, less accurate. + /// Memory size for . Low=faster, less accurate. /// Threshold for optimizer convergence. - internal LbfgsLogisticRegressionTrainer(IHostEnvironment env, + internal LbfgsCalibratedBinaryTrainer(IHostEnvironment env, string labelColumn = DefaultColumnNames.Label, string featureColumn = DefaultColumnNames.Features, string weights = null, @@ -95,9 +95,9 @@ internal LbfgsLogisticRegressionTrainer(IHostEnvironment env, } /// - /// Initializes a new instance of + /// Initializes a new instance of /// - internal LbfgsLogisticRegressionTrainer(IHostEnvironment env, Options options) + internal LbfgsCalibratedBinaryTrainer(IHostEnvironment env, Options options) : base(env, options, TrainerUtils.MakeBoolScalarLabel(options.LabelColumnName)) { _posWeight = 0; @@ -127,7 +127,7 @@ private protected override BinaryPredictionTransformer new BinaryPredictionTransformer>(Host, model, trainSchema, FeatureColumn.Name); /// - /// Continues the training of a using an already trained and returns + /// Continues the training of a using an already trained and returns /// a . /// public BinaryPredictionTransformer> Fit(IDataView trainData, LinearModelParameters modelParameters) @@ -417,7 +417,7 @@ internal static CommonOutputs.BinaryClassificationOutput TrainBinary(IHostEnviro EntryPointUtils.CheckInputArgs(host, input); return TrainerEntryPointsUtils.Train(host, input, - () => new LbfgsLogisticRegressionTrainer(host, input), + () => new LbfgsCalibratedBinaryTrainer(host, input), () => TrainerEntryPointsUtils.FindColumn(host, input.TrainingData.Schema, input.LabelColumnName), () => TrainerEntryPointsUtils.FindColumn(host, input.TrainingData.Schema, input.ExampleWeightColumnName)); } @@ -436,7 +436,7 @@ public abstract class ComputeLogisticRegressionStandardDeviation /// Computes the standard deviation matrix of each of the non-zero training weights, needed to calculate further the standard deviation, /// p-value and z-Score. /// The calculations are not part of Microsoft.ML package, due to the size of MKL. - /// If you need these calculations, add the Microsoft.ML.Mkl.Components package, and initialize + /// If you need these calculations, add the Microsoft.ML.Mkl.Components package, and initialize /// to the implementation in the Microsoft.ML.Mkl.Components package. /// Due to the existence of regularization, an approximation is used to compute the variances of the trained linear coefficients. /// diff --git a/src/Microsoft.ML.StandardTrainers/Standard/LogisticRegression/MulticlassLogisticRegression.cs b/src/Microsoft.ML.StandardTrainers/Standard/LogisticRegression/MulticlassLogisticRegression.cs index 10a3c10d7c..2c325c59d5 100644 --- a/src/Microsoft.ML.StandardTrainers/Standard/LogisticRegression/MulticlassLogisticRegression.cs +++ b/src/Microsoft.ML.StandardTrainers/Standard/LogisticRegression/MulticlassLogisticRegression.cs @@ -83,7 +83,7 @@ public sealed class Options : OptionsBase /// Enforce non-negative weights. /// Weight of L1 regularizer term. /// Weight of L2 regularizer term. - /// Memory size for . Low=faster, less accurate. + /// Memory size for . Low=faster, less accurate. /// Threshold for optimizer convergence. internal LbfgsMaximumEntropyTrainer(IHostEnvironment env, string labelColumn = DefaultColumnNames.Label, diff --git a/src/Microsoft.ML.StandardTrainers/Standard/PoissonRegression/PoissonRegression.cs b/src/Microsoft.ML.StandardTrainers/Standard/PoissonRegression/PoissonRegression.cs index cb65044acf..f8284c20b3 100644 --- a/src/Microsoft.ML.StandardTrainers/Standard/PoissonRegression/PoissonRegression.cs +++ b/src/Microsoft.ML.StandardTrainers/Standard/PoissonRegression/PoissonRegression.cs @@ -48,7 +48,7 @@ public sealed class Options : OptionsBase /// Weight of L1 regularizer term. /// Weight of L2 regularizer term. /// Threshold for optimizer convergence. - /// Memory size for . Low=faster, less accurate. + /// Memory size for . Low=faster, less accurate. /// Enforce non-negative weights. internal LbfgsPoissonRegressionTrainer(IHostEnvironment env, string labelColumn = DefaultColumnNames.Label, diff --git a/src/Microsoft.ML.StandardTrainers/StandardTrainersCatalog.cs b/src/Microsoft.ML.StandardTrainers/StandardTrainersCatalog.cs index 690aa61615..55f42a8a93 100644 --- a/src/Microsoft.ML.StandardTrainers/StandardTrainersCatalog.cs +++ b/src/Microsoft.ML.StandardTrainers/StandardTrainersCatalog.cs @@ -9,7 +9,7 @@ namespace Microsoft.ML { - using LROptions = LbfgsLogisticRegressionTrainer.Options; + using LROptions = LbfgsCalibratedBinaryTrainer.Options; /// /// TrainerEstimator extension methods. @@ -498,7 +498,7 @@ public static OnlineGradientDescentTrainer OnlineGradientDescent(this Regression } /// - /// Predict a target using a linear binary classification model trained with the trainer. + /// Predict a target using a linear binary classification model trained with the trainer. /// /// The binary classification catalog trainer object. /// The name of the label column. @@ -507,7 +507,7 @@ public static OnlineGradientDescentTrainer OnlineGradientDescent(this Regression /// Enforce non-negative weights. /// Weight of L1 regularization term. /// Weight of L2 regularization term. - /// Memory size for . Low=faster, less accurate. + /// Memory size for . Low=faster, less accurate. /// Threshold for optimizer convergence. /// /// @@ -516,7 +516,7 @@ public static OnlineGradientDescentTrainer OnlineGradientDescent(this Regression /// ]]> /// /// - public static LbfgsLogisticRegressionTrainer LbfgsLogisticRegression(this BinaryClassificationCatalog.BinaryClassificationTrainers catalog, + public static LbfgsCalibratedBinaryTrainer LbfgsCalibrated(this BinaryClassificationCatalog.BinaryClassificationTrainers catalog, string labelColumnName = DefaultColumnNames.Label, string featureColumnName = DefaultColumnNames.Features, string exampleWeightColumnName = null, @@ -528,21 +528,21 @@ public static LbfgsLogisticRegressionTrainer LbfgsLogisticRegression(this Binary { Contracts.CheckValue(catalog, nameof(catalog)); var env = CatalogUtils.GetEnvironment(catalog); - return new LbfgsLogisticRegressionTrainer(env, labelColumnName, featureColumnName, exampleWeightColumnName, l1Regularization, l2Regularization, optimizationTolerance, historySize, enforceNonNegativity); + return new LbfgsCalibratedBinaryTrainer(env, labelColumnName, featureColumnName, exampleWeightColumnName, l1Regularization, l2Regularization, optimizationTolerance, historySize, enforceNonNegativity); } /// - /// Predict a target using a linear binary classification model trained with the trainer. + /// Predict a target using a linear binary classification model trained with the trainer. /// /// The binary classification catalog trainer object. /// Advanced arguments to the algorithm. - public static LbfgsLogisticRegressionTrainer LbfgsLogisticRegression(this BinaryClassificationCatalog.BinaryClassificationTrainers catalog, LROptions options) + public static LbfgsCalibratedBinaryTrainer LbfgsLogisticRegression(this BinaryClassificationCatalog.BinaryClassificationTrainers catalog, LROptions options) { Contracts.CheckValue(catalog, nameof(catalog)); Contracts.CheckValue(options, nameof(options)); var env = CatalogUtils.GetEnvironment(catalog); - return new LbfgsLogisticRegressionTrainer(env, options); + return new LbfgsCalibratedBinaryTrainer(env, options); } /// diff --git a/src/Microsoft.ML.StaticPipe/LbfgsStatic.cs b/src/Microsoft.ML.StaticPipe/LbfgsStatic.cs index 3b984208fc..72bfc8c253 100644 --- a/src/Microsoft.ML.StaticPipe/LbfgsStatic.cs +++ b/src/Microsoft.ML.StaticPipe/LbfgsStatic.cs @@ -9,7 +9,7 @@ namespace Microsoft.ML.StaticPipe { - using Options = LbfgsLogisticRegressionTrainer.Options; + using Options = LbfgsCalibratedBinaryTrainer.Options; /// /// Binary Classification trainer estimators. @@ -17,7 +17,7 @@ namespace Microsoft.ML.StaticPipe public static class LbfgsBinaryStaticExtensions { /// - /// Predict a target using a linear binary classification model trained with the trainer. + /// Predict a target using a linear binary classification model trained with the trainer. /// /// The binary classification catalog trainer object. /// The label, or dependent variable. @@ -26,7 +26,7 @@ public static class LbfgsBinaryStaticExtensions /// Enforce non-negative weights. /// Weight of L1 regularization term. /// Weight of L2 regularization term. - /// Memory size for . Low=faster, less accurate. + /// Memory size for . Low=faster, less accurate. /// Threshold for optimizer convergence. /// A delegate that is called every time the /// method is called on the @@ -34,7 +34,7 @@ public static class LbfgsBinaryStaticExtensions /// the linear model that was trained. Note that this action cannot change the result in any way; it is only a way for the caller to /// be informed about what was learnt. /// The predicted output. - public static (Scalar score, Scalar probability, Scalar predictedLabel) LbfgsLogisticRegression(this BinaryClassificationCatalog.BinaryClassificationTrainers catalog, + public static (Scalar score, Scalar probability, Scalar predictedLabel) LbfgsCalibrated(this BinaryClassificationCatalog.BinaryClassificationTrainers catalog, Scalar label, Vector features, Scalar weights = null, @@ -50,7 +50,7 @@ public static (Scalar score, Scalar probability, Scalar pred var rec = new TrainerEstimatorReconciler.BinaryClassifier( (env, labelName, featuresName, weightsName) => { - var trainer = new LbfgsLogisticRegressionTrainer(env, labelName, featuresName, weightsName, + var trainer = new LbfgsCalibratedBinaryTrainer(env, labelName, featuresName, weightsName, l1Regularization, l2Regularization, optimizationTolerance, historySize, enforceNonNegativity); if (onFit != null) @@ -63,7 +63,7 @@ public static (Scalar score, Scalar probability, Scalar pred } /// - /// Predict a target using a linear binary classification model trained with the trainer. + /// Predict a target using a linear binary classification model trained with the trainer. /// /// The binary classification catalog trainer object. /// The label, or dependent variable. @@ -76,7 +76,7 @@ public static (Scalar score, Scalar probability, Scalar pred /// be informed about what was learnt. /// Advanced arguments to the algorithm. /// The predicted output. - public static (Scalar score, Scalar probability, Scalar predictedLabel) LbfgsLogisticRegression(this BinaryClassificationCatalog.BinaryClassificationTrainers catalog, + public static (Scalar score, Scalar probability, Scalar predictedLabel) LbfgsCalibrated(this BinaryClassificationCatalog.BinaryClassificationTrainers catalog, Scalar label, Vector features, Scalar weights, @@ -95,7 +95,7 @@ public static (Scalar score, Scalar probability, Scalar pred options.FeatureColumnName = featuresName; options.ExampleWeightColumnName = weightsName; - var trainer = new LbfgsLogisticRegressionTrainer(env, options); + var trainer = new LbfgsCalibratedBinaryTrainer(env, options); if (onFit != null) return trainer.WithOnFitDelegate(trans => onFit(trans.Model)); @@ -113,7 +113,7 @@ public static (Scalar score, Scalar probability, Scalar pred public static class LbfgsRegressionStaticExtensions { /// - /// Predict a target using a linear regression model trained with the trainer. + /// Predict a target using a linear regression model trained with the trainer. /// /// The regression catalog trainer object. /// The label, or dependent variable. @@ -122,7 +122,7 @@ public static class LbfgsRegressionStaticExtensions /// Enforce non-negative weights. /// Weight of L1 regularization term. /// Weight of L2 regularization term. - /// Memory size for . Low=faster, less accurate. + /// Memory size for . Low=faster, less accurate. /// Threshold for optimizer convergence. /// A delegate that is called every time the /// method is called on the @@ -159,7 +159,7 @@ public static Scalar LbfgsPoissonRegression(this RegressionCatalog.Regres } /// - /// Predict a target using a linear regression model trained with the trainer. + /// Predict a target using a linear regression model trained with the trainer. /// /// The regression catalog trainer object. /// The label, or dependent variable. @@ -218,7 +218,7 @@ public static class LbfgsMulticlassStaticExtensions /// Enforce non-negative weights. /// Weight of L1 regularization term. /// Weight of L2 regularization term. - /// Memory size for . Low=faster, less accurate. + /// Memory size for . Low=faster, less accurate. /// Threshold for optimizer convergence. /// A delegate that is called every time the /// method is called on the diff --git a/test/BaselineOutput/Common/EntryPoints/core_ep-list.tsv b/test/BaselineOutput/Common/EntryPoints/core_ep-list.tsv index d85bb468d4..01ace00699 100644 --- a/test/BaselineOutput/Common/EntryPoints/core_ep-list.tsv +++ b/test/BaselineOutput/Common/EntryPoints/core_ep-list.tsv @@ -58,7 +58,7 @@ Trainers.LightGbmClassifier Train a LightGBM multi class model. Microsoft.ML.Tra Trainers.LightGbmRanker Train a LightGBM ranking model. Microsoft.ML.Trainers.LightGbm.LightGbm TrainRanking Microsoft.ML.Trainers.LightGbm.LightGbmRankingTrainer+Options Microsoft.ML.EntryPoints.CommonOutputs+RankingOutput Trainers.LightGbmRegressor LightGBM Regression Microsoft.ML.Trainers.LightGbm.LightGbm TrainRegression Microsoft.ML.Trainers.LightGbm.LightGbmRegressionTrainer+Options Microsoft.ML.EntryPoints.CommonOutputs+RegressionOutput Trainers.LinearSvmBinaryClassifier Train a linear SVM. Microsoft.ML.Trainers.LinearSvmTrainer TrainLinearSvm Microsoft.ML.Trainers.LinearSvmTrainer+Options Microsoft.ML.EntryPoints.CommonOutputs+BinaryClassificationOutput -Trainers.LogisticRegressionBinaryClassifier Logistic Regression is a method in statistics used to predict the probability of occurrence of an event and can be used as a classification algorithm. The algorithm predicts the probability of occurrence of an event by fitting data to a logistical function. Microsoft.ML.Trainers.LbfgsLogisticRegressionTrainer TrainBinary Microsoft.ML.Trainers.LbfgsLogisticRegressionTrainer+Options Microsoft.ML.EntryPoints.CommonOutputs+BinaryClassificationOutput +Trainers.LogisticRegressionBinaryClassifier Logistic Regression is a method in statistics used to predict the probability of occurrence of an event and can be used as a classification algorithm. The algorithm predicts the probability of occurrence of an event by fitting data to a logistical function. Microsoft.ML.Trainers.LbfgsCalibratedBinaryTrainer TrainBinary Microsoft.ML.Trainers.LbfgsCalibratedBinaryTrainer+Options Microsoft.ML.EntryPoints.CommonOutputs+BinaryClassificationOutput Trainers.LogisticRegressionClassifier Maximum entrypy classification is a method in statistics used to predict the probabilities of parallel events. The model predicts the probabilities of parallel events by fitting data to a softmax function. Microsoft.ML.Trainers.LbfgsMaximumEntropyTrainer TrainMulticlass Microsoft.ML.Trainers.LbfgsMaximumEntropyTrainer+Options Microsoft.ML.EntryPoints.CommonOutputs+MulticlassClassificationOutput Trainers.NaiveBayesClassifier Train a MulticlassNaiveBayesTrainer. Microsoft.ML.Trainers.NaiveBayesMulticlassTrainer TrainMulticlassNaiveBayesTrainer Microsoft.ML.Trainers.NaiveBayesMulticlassTrainer+Options Microsoft.ML.EntryPoints.CommonOutputs+MulticlassClassificationOutput Trainers.OnlineGradientDescentRegressor Train a Online gradient descent perceptron. Microsoft.ML.Trainers.OnlineGradientDescentTrainer TrainRegression Microsoft.ML.Trainers.OnlineGradientDescentTrainer+Options Microsoft.ML.EntryPoints.CommonOutputs+RegressionOutput diff --git a/test/Microsoft.ML.Benchmarks/KMeansAndLogisticRegressionBench.cs b/test/Microsoft.ML.Benchmarks/KMeansAndLogisticRegressionBench.cs index 5f851f9475..50b117f45e 100644 --- a/test/Microsoft.ML.Benchmarks/KMeansAndLogisticRegressionBench.cs +++ b/test/Microsoft.ML.Benchmarks/KMeansAndLogisticRegressionBench.cs @@ -40,7 +40,7 @@ public CalibratedModelParametersBase correctly. var weightType = ib1.GetFieldTypeOrNull("ExampleWeightColumnName"); Assert.True(weightType.Equals(typeof(string))); - var instance = ib1.GetInstance() as LbfgsLogisticRegressionTrainer.Options; + var instance = ib1.GetInstance() as LbfgsCalibratedBinaryTrainer.Options; Assert.True(instance.ExampleWeightColumnName == null); ib1.TrySetValue("ExampleWeightColumnName", "OtherWeight"); @@ -420,14 +420,14 @@ public void EntryPointCreateEnsemble() for (int i = 0; i < nModels; i++) { var data = splitOutput.TrainData[i]; - var lrInput = new LbfgsLogisticRegressionTrainer.Options + var lrInput = new LbfgsCalibratedBinaryTrainer.Options { TrainingData = data, L1Regularization = (Single)0.1 * i, L2Regularization = (Single)0.01 * (1 + i), NormalizeFeatures = NormalizeOption.No }; - predictorModels[i] = LbfgsLogisticRegressionTrainer.TrainBinary(Env, lrInput).PredictorModel; + predictorModels[i] = LbfgsCalibratedBinaryTrainer.TrainBinary(Env, lrInput).PredictorModel; individualScores[i] = ScoreModel.Score(Env, new ScoreModel.Input { Data = splitOutput.TestData[nModels], PredictorModel = predictorModels[i] }) @@ -676,7 +676,7 @@ public void EntryPointCalibrate() var splitOutput = CVSplit.Split(Env, new CVSplit.Input { Data = dataView, NumFolds = 3 }); - var lrModel = LbfgsLogisticRegressionTrainer.TrainBinary(Env, new LbfgsLogisticRegressionTrainer.Options { TrainingData = splitOutput.TestData[0] }).PredictorModel; + var lrModel = LbfgsCalibratedBinaryTrainer.TrainBinary(Env, new LbfgsCalibratedBinaryTrainer.Options { TrainingData = splitOutput.TestData[0] }).PredictorModel; var calibratedLrModel = Calibrate.FixedPlatt(Env, new Calibrate.FixedPlattInput { Data = splitOutput.TestData[1], UncalibratedPredictorModel = lrModel }).PredictorModel; @@ -724,14 +724,14 @@ public void EntryPointPipelineEnsemble() data = new ColumnConcatenatingTransformer(Env, "Features", new[] { "Features1", "Features2" }).Transform(data); data = new ValueToKeyMappingEstimator(Env, "Label", "Label", keyOrdinality: ValueToKeyMappingEstimator.KeyOrdinality.ByValue).Fit(data).Transform(data); - var lrInput = new LbfgsLogisticRegressionTrainer.Options + var lrInput = new LbfgsCalibratedBinaryTrainer.Options { TrainingData = data, L1Regularization = (Single)0.1 * i, L2Regularization = (Single)0.01 * (1 + i), NormalizeFeatures = NormalizeOption.Yes }; - predictorModels[i] = LbfgsLogisticRegressionTrainer.TrainBinary(Env, lrInput).PredictorModel; + predictorModels[i] = LbfgsCalibratedBinaryTrainer.TrainBinary(Env, lrInput).PredictorModel; var transformModel = new TransformModelImpl(Env, data, splitOutput.TrainData[i]); predictorModels[i] = ModelOperations.CombineTwoModels(Env, @@ -985,14 +985,14 @@ public void EntryPointPipelineEnsembleText() }, data); } - var lrInput = new LbfgsLogisticRegressionTrainer.Options + var lrInput = new LbfgsCalibratedBinaryTrainer.Options { TrainingData = data, L1Regularization = (Single)0.1 * i, L2Regularization = (Single)0.01 * (1 + i), NormalizeFeatures = NormalizeOption.Yes }; - predictorModels[i] = LbfgsLogisticRegressionTrainer.TrainBinary(Env, lrInput).PredictorModel; + predictorModels[i] = LbfgsCalibratedBinaryTrainer.TrainBinary(Env, lrInput).PredictorModel; var transformModel = new TransformModelImpl(Env, data, splitOutput.TrainData[i]); predictorModels[i] = ModelOperations.CombineTwoModels(Env, @@ -1318,7 +1318,7 @@ public void EntryPointPipelineEnsembleGetSummary() data = new ColumnConcatenatingTransformer(Env, new ColumnConcatenatingTransformer.ColumnOptions("Features", i % 2 == 0 ? new[] { "Features", "Cat" } : new[] { "Cat", "Features" })).Transform(data); if (i % 2 == 0) { - var lrInput = new LbfgsLogisticRegressionTrainer.Options + var lrInput = new LbfgsCalibratedBinaryTrainer.Options { TrainingData = data, NormalizeFeatures = NormalizeOption.Yes, @@ -1326,7 +1326,7 @@ public void EntryPointPipelineEnsembleGetSummary() ShowTrainingStatistics = true, ComputeStandardDeviation = new ComputeLRTrainingStdThroughMkl() }; - predictorModels[i] = LbfgsLogisticRegressionTrainer.TrainBinary(Env, lrInput).PredictorModel; + predictorModels[i] = LbfgsCalibratedBinaryTrainer.TrainBinary(Env, lrInput).PredictorModel; var transformModel = new TransformModelImpl(Env, data, splitOutput.TrainData[i]); predictorModels[i] = ModelOperations.CombineTwoModels(Env, @@ -3347,7 +3347,7 @@ public void EntryPointLinearPredictorSummary() InputFile = inputFile, }).Data; - var lrInput = new LbfgsLogisticRegressionTrainer.Options + var lrInput = new LbfgsCalibratedBinaryTrainer.Options { TrainingData = dataView, NormalizeFeatures = NormalizeOption.Yes, @@ -3355,7 +3355,7 @@ public void EntryPointLinearPredictorSummary() ShowTrainingStatistics = true, ComputeStandardDeviation = new ComputeLRTrainingStdThroughMkl() }; - var model = LbfgsLogisticRegressionTrainer.TrainBinary(Env, lrInput).PredictorModel; + var model = LbfgsCalibratedBinaryTrainer.TrainBinary(Env, lrInput).PredictorModel; var mcLrInput = new LbfgsMaximumEntropyTrainer.Options { diff --git a/test/Microsoft.ML.Functional.Tests/Evaluation.cs b/test/Microsoft.ML.Functional.Tests/Evaluation.cs index 94e1647da7..691aec3bd3 100644 --- a/test/Microsoft.ML.Functional.Tests/Evaluation.cs +++ b/test/Microsoft.ML.Functional.Tests/Evaluation.cs @@ -94,7 +94,7 @@ public void TrainAndEvaluateBinaryClassificationWithCalibration() var pipeline = mlContext.Transforms.Text.FeaturizeText("Features", "SentimentText") .AppendCacheCheckpoint(mlContext) .Append(mlContext.BinaryClassification.Trainers.LbfgsLogisticRegression( - new LbfgsLogisticRegressionTrainer.Options { NumberOfThreads = 1 })); + new LbfgsCalibratedBinaryTrainer.Options { NumberOfThreads = 1 })); // Train the model. var model = pipeline.Fit(data); @@ -274,7 +274,7 @@ public void TrainAndEvaluateWithPrecisionRecallCurves() var pipeline = mlContext.Transforms.Text.FeaturizeText("Features", "SentimentText") .AppendCacheCheckpoint(mlContext) .Append(mlContext.BinaryClassification.Trainers.LbfgsLogisticRegression( - new LbfgsLogisticRegressionTrainer.Options { NumberOfThreads = 1 })); + new LbfgsCalibratedBinaryTrainer.Options { NumberOfThreads = 1 })); // Train the model. var model = pipeline.Fit(data); diff --git a/test/Microsoft.ML.Functional.Tests/Training.cs b/test/Microsoft.ML.Functional.Tests/Training.cs index 908e4c1b14..47cb0c7376 100644 --- a/test/Microsoft.ML.Functional.Tests/Training.cs +++ b/test/Microsoft.ML.Functional.Tests/Training.cs @@ -226,7 +226,7 @@ public void ContinueTrainingLogisticRegression() .AppendCacheCheckpoint(mlContext); var trainer = mlContext.BinaryClassification.Trainers.LbfgsLogisticRegression( - new LbfgsLogisticRegressionTrainer.Options { NumberOfThreads = 1, MaximumNumberOfIterations = 10 }); + new LbfgsCalibratedBinaryTrainer.Options { NumberOfThreads = 1, MaximumNumberOfIterations = 10 }); // Fit the data transformation pipeline. var featurization = featurizationPipeline.Fit(data); @@ -452,7 +452,7 @@ public void MetacomponentsFunctionAsExpectedOva() // Create a model training an OVA trainer with a binary classifier. var binaryClassificationTrainer = mlContext.BinaryClassification.Trainers.LbfgsLogisticRegression( - new LbfgsLogisticRegressionTrainer.Options { MaximumNumberOfIterations = 10, NumberOfThreads = 1, }); + new LbfgsCalibratedBinaryTrainer.Options { MaximumNumberOfIterations = 10, NumberOfThreads = 1, }); var binaryClassificationPipeline = mlContext.Transforms.Concatenate("Features", Iris.Features) .AppendCacheCheckpoint(mlContext) .Append(mlContext.Transforms.Conversion.MapValueToKey("Label")) diff --git a/test/Microsoft.ML.Predictor.Tests/TestPredictors.cs b/test/Microsoft.ML.Predictor.Tests/TestPredictors.cs index 88cb40f9e0..723cea5e4d 100644 --- a/test/Microsoft.ML.Predictor.Tests/TestPredictors.cs +++ b/test/Microsoft.ML.Predictor.Tests/TestPredictors.cs @@ -739,7 +739,7 @@ public void TestEnsembleCombiner() TrainingData = dataView, NormalizeFeatures = NormalizeOption.No }).PredictorModel, - LbfgsLogisticRegressionTrainer.TrainBinary(ML, new LbfgsLogisticRegressionTrainer.Options() + LbfgsCalibratedBinaryTrainer.TrainBinary(ML, new LbfgsCalibratedBinaryTrainer.Options() { FeatureColumnName = "Features", LabelColumnName = DefaultColumnNames.Label, @@ -747,7 +747,7 @@ public void TestEnsembleCombiner() TrainingData = dataView, NormalizeFeatures = NormalizeOption.No }).PredictorModel, - LbfgsLogisticRegressionTrainer.TrainBinary(ML, new LbfgsLogisticRegressionTrainer.Options() + LbfgsCalibratedBinaryTrainer.TrainBinary(ML, new LbfgsCalibratedBinaryTrainer.Options() { FeatureColumnName = "Features", LabelColumnName = DefaultColumnNames.Label, diff --git a/test/Microsoft.ML.StaticPipelineTesting/Training.cs b/test/Microsoft.ML.StaticPipelineTesting/Training.cs index dcc6e675c1..bc00c6430b 100644 --- a/test/Microsoft.ML.StaticPipelineTesting/Training.cs +++ b/test/Microsoft.ML.StaticPipelineTesting/Training.cs @@ -704,8 +704,8 @@ public void LogisticRegressionBinaryClassification() CalibratedModelParametersBase pred = null; var est = reader.MakeNewEstimator() - .Append(r => (r.label, preds: catalog.Trainers.LbfgsLogisticRegression(r.label, r.features, null, - new LbfgsLogisticRegressionTrainer.Options { L1Regularization = 10, NumberOfThreads = 1 }, onFit: (p) => { pred = p; }))); + .Append(r => (r.label, preds: catalog.Trainers.LbfgsCalibrated(r.label, r.features, null, + new LbfgsCalibratedBinaryTrainer.Options { L1Regularization = 10, NumberOfThreads = 1 }, onFit: (p) => { pred = p; }))); var pipe = reader.Append(est); diff --git a/test/Microsoft.ML.Tests/FeatureContributionTests.cs b/test/Microsoft.ML.Tests/FeatureContributionTests.cs index 1a1b576278..e2a6a45b25 100644 --- a/test/Microsoft.ML.Tests/FeatureContributionTests.cs +++ b/test/Microsoft.ML.Tests/FeatureContributionTests.cs @@ -126,7 +126,7 @@ public void TestSVMBinary() [Fact] public void TestLogisticRegressionBinary() { - TestFeatureContribution(ML.BinaryClassification.Trainers.LbfgsLogisticRegression(), GetSparseDataset(TaskType.BinaryClassification, 100), "LogisticRegressionBinary"); + TestFeatureContribution(ML.BinaryClassification.Trainers.LbfgsCalibrated(), GetSparseDataset(TaskType.BinaryClassification, 100), "LogisticRegressionBinary"); } [Fact] diff --git a/test/Microsoft.ML.Tests/PermutationFeatureImportanceTests.cs b/test/Microsoft.ML.Tests/PermutationFeatureImportanceTests.cs index a40e3536dd..f9bb0e54aa 100644 --- a/test/Microsoft.ML.Tests/PermutationFeatureImportanceTests.cs +++ b/test/Microsoft.ML.Tests/PermutationFeatureImportanceTests.cs @@ -152,7 +152,7 @@ public void TestPfiBinaryClassificationOnDenseFeatures() { var data = GetDenseDataset(TaskType.BinaryClassification); var model = ML.BinaryClassification.Trainers.LbfgsLogisticRegression( - new LbfgsLogisticRegressionTrainer.Options { NumberOfThreads = 1 }).Fit(data); + new LbfgsCalibratedBinaryTrainer.Options { NumberOfThreads = 1 }).Fit(data); var pfi = ML.BinaryClassification.PermutationFeatureImportance(model, data); // Pfi Indices: @@ -190,7 +190,7 @@ public void TestPfiBinaryClassificationOnSparseFeatures() { var data = GetSparseDataset(TaskType.BinaryClassification); var model = ML.BinaryClassification.Trainers.LbfgsLogisticRegression( - new LbfgsLogisticRegressionTrainer.Options { NumberOfThreads = 1 }).Fit(data); + new LbfgsCalibratedBinaryTrainer.Options { NumberOfThreads = 1 }).Fit(data); var pfi = ML.BinaryClassification.PermutationFeatureImportance(model, data); // Pfi Indices: diff --git a/test/Microsoft.ML.Tests/Scenarios/OvaTest.cs b/test/Microsoft.ML.Tests/Scenarios/OvaTest.cs index dcfacdec98..35c3b7394b 100644 --- a/test/Microsoft.ML.Tests/Scenarios/OvaTest.cs +++ b/test/Microsoft.ML.Tests/Scenarios/OvaTest.cs @@ -33,7 +33,7 @@ public void OvaLogisticRegression() .Fit(textData).Transform(textData)); // Pipeline - var logReg = mlContext.BinaryClassification.Trainers.LbfgsLogisticRegression(); + var logReg = mlContext.BinaryClassification.Trainers.LbfgsCalibrated(); var pipeline = mlContext.MulticlassClassification.Trainers.OneVersusAll(logReg, useProbabilities: false); var model = pipeline.Fit(data); diff --git a/test/Microsoft.ML.Tests/TrainerEstimators/LbfgsTests.cs b/test/Microsoft.ML.Tests/TrainerEstimators/LbfgsTests.cs index b3bd9ccb6f..0d6b295914 100644 --- a/test/Microsoft.ML.Tests/TrainerEstimators/LbfgsTests.cs +++ b/test/Microsoft.ML.Tests/TrainerEstimators/LbfgsTests.cs @@ -19,7 +19,7 @@ public partial class TrainerEstimators public void TestEstimatorLogisticRegression() { (IEstimator pipe, IDataView dataView) = GetBinaryClassificationPipeline(); - var trainer = ML.BinaryClassification.Trainers.LbfgsLogisticRegression(); + var trainer = ML.BinaryClassification.Trainers.LbfgsCalibrated(); var pipeWithTrainer = pipe.Append(trainer); TestEstimatorCore(pipeWithTrainer, dataView); @@ -60,7 +60,7 @@ public void TestLRNoStats() { (IEstimator pipe, IDataView dataView) = GetBinaryClassificationPipeline(); - pipe = pipe.Append(ML.BinaryClassification.Trainers.LbfgsLogisticRegression(new LbfgsLogisticRegressionTrainer.Options { ShowTrainingStatistics = true })); + pipe = pipe.Append(ML.BinaryClassification.Trainers.LbfgsLogisticRegression(new LbfgsCalibratedBinaryTrainer.Options { ShowTrainingStatistics = true })); var transformerChain = pipe.Fit(dataView) as TransformerChain>>; var linearModel = transformerChain.LastTransformer.Model.SubModel as LinearBinaryModelParameters; var stats = linearModel.Statistics as ModelStatisticsBase; @@ -81,7 +81,7 @@ public void TestLRWithStats() (IEstimator pipe, IDataView dataView) = GetBinaryClassificationPipeline(); pipe = pipe.Append(ML.BinaryClassification.Trainers.LbfgsLogisticRegression( - new LbfgsLogisticRegressionTrainer.Options + new LbfgsCalibratedBinaryTrainer.Options { ShowTrainingStatistics = true, ComputeStandardDeviation = new ComputeLRTrainingStdThroughMkl(), From 38b99407ab8c6830c98f60696b63a9e0aba930b4 Mon Sep 17 00:00:00 2001 From: Wei-Sheng Chin Date: Thu, 21 Mar 2019 22:36:12 -0700 Subject: [PATCH 06/12] Propose Lbfgs Logistic Regression Again --- .../Dynamic/LogisticRegression.cs | 2 +- .../PfiBinaryClassificationExample.cs | 2 +- .../LogisticRegression/LogisticRegression.cs | 30 +++++++++---------- .../MulticlassLogisticRegression.cs | 2 +- .../PoissonRegression/PoissonRegression.cs | 2 +- .../StandardTrainersCatalog.cs | 16 +++++----- src/Microsoft.ML.StaticPipe/LbfgsStatic.cs | 24 +++++++-------- src/Native/MatrixFactorizationNative/libmf | 2 +- .../KMeansAndLogisticRegressionBench.cs | 2 +- .../UnitTests/TestEntryPoints.cs | 28 ++++++++--------- .../Evaluation.cs | 4 +-- .../Microsoft.ML.Functional.Tests/Training.cs | 4 +-- .../TestPredictors.cs | 4 +-- .../Training.cs | 4 +-- .../FeatureContributionTests.cs | 2 +- .../PermutationFeatureImportanceTests.cs | 4 +-- test/Microsoft.ML.Tests/Scenarios/OvaTest.cs | 2 +- .../TrainerEstimators/LbfgsTests.cs | 6 ++-- 18 files changed, 70 insertions(+), 70 deletions(-) diff --git a/docs/samples/Microsoft.ML.Samples/Dynamic/LogisticRegression.cs b/docs/samples/Microsoft.ML.Samples/Dynamic/LogisticRegression.cs index 76507b8ed7..38e6588079 100644 --- a/docs/samples/Microsoft.ML.Samples/Dynamic/LogisticRegression.cs +++ b/docs/samples/Microsoft.ML.Samples/Dynamic/LogisticRegression.cs @@ -63,7 +63,7 @@ public static void Example() .Append(ml.Transforms.Text.FeaturizeText("TextFeatures", "Text")) .Append(ml.Transforms.Concatenate("Features", "TextFeatures", "age", "fnlwgt", "education-num", "capital-gain", "capital-loss", "hours-per-week")) - .Append(ml.BinaryClassification.Trainers.LbfgsCalibrated()); + .Append(ml.BinaryClassification.Trainers.LbfgsLogisticRegression()); var model = pipeline.Fit(split.TrainSet); diff --git a/docs/samples/Microsoft.ML.Samples/Dynamic/PermutationFeatureImportance/PfiBinaryClassificationExample.cs b/docs/samples/Microsoft.ML.Samples/Dynamic/PermutationFeatureImportance/PfiBinaryClassificationExample.cs index 69fb387cba..09fb640f30 100644 --- a/docs/samples/Microsoft.ML.Samples/Dynamic/PermutationFeatureImportance/PfiBinaryClassificationExample.cs +++ b/docs/samples/Microsoft.ML.Samples/Dynamic/PermutationFeatureImportance/PfiBinaryClassificationExample.cs @@ -22,7 +22,7 @@ public static void Example() // Then append a logistic regression trainer. var pipeline = mlContext.Transforms.Concatenate("Features", featureNames) .Append(mlContext.Transforms.Normalize("Features")) - .Append(mlContext.BinaryClassification.Trainers.LbfgsCalibrated( + .Append(mlContext.BinaryClassification.Trainers.LbfgsLogisticRegression( labelColumnName: labelName, featureColumnName: "Features")); var model = pipeline.Fit(data); diff --git a/src/Microsoft.ML.StandardTrainers/Standard/LogisticRegression/LogisticRegression.cs b/src/Microsoft.ML.StandardTrainers/Standard/LogisticRegression/LogisticRegression.cs index cc66a52857..fe1091cfbe 100644 --- a/src/Microsoft.ML.StandardTrainers/Standard/LogisticRegression/LogisticRegression.cs +++ b/src/Microsoft.ML.StandardTrainers/Standard/LogisticRegression/LogisticRegression.cs @@ -15,21 +15,21 @@ using Microsoft.ML.Runtime; using Microsoft.ML.Trainers; -[assembly: LoadableClass(LbfgsCalibratedBinaryTrainer.Summary, typeof(LbfgsCalibratedBinaryTrainer), typeof(LbfgsCalibratedBinaryTrainer.Options), +[assembly: LoadableClass(LbfgsLogisticRegressionTrainer.Summary, typeof(LbfgsLogisticRegressionTrainer), typeof(LbfgsLogisticRegressionTrainer.Options), new[] { typeof(SignatureBinaryClassifierTrainer), typeof(SignatureTrainer), typeof(SignatureFeatureScorerTrainer) }, - LbfgsCalibratedBinaryTrainer.UserNameValue, - LbfgsCalibratedBinaryTrainer.LoadNameValue, - LbfgsCalibratedBinaryTrainer.ShortName, + LbfgsLogisticRegressionTrainer.UserNameValue, + LbfgsLogisticRegressionTrainer.LoadNameValue, + LbfgsLogisticRegressionTrainer.ShortName, "logisticregressionwrapper")] -[assembly: LoadableClass(typeof(void), typeof(LbfgsCalibratedBinaryTrainer), null, typeof(SignatureEntryPointModule), LbfgsCalibratedBinaryTrainer.LoadNameValue)] +[assembly: LoadableClass(typeof(void), typeof(LbfgsLogisticRegressionTrainer), null, typeof(SignatureEntryPointModule), LbfgsLogisticRegressionTrainer.LoadNameValue)] namespace Microsoft.ML.Trainers { /// /// - public sealed partial class LbfgsCalibratedBinaryTrainer : LbfgsTrainerBase>, CalibratedModelParametersBase> { @@ -54,7 +54,7 @@ public sealed class Options : OptionsBase /// /// The instance of that computes the std of the training statistics, at the end of training. /// The calculations are not part of Microsoft.ML package, due to the size of MKL. - /// If you need these calculations, add the Microsoft.ML.Mkl.Components package, and initialize . + /// If you need these calculations, add the Microsoft.ML.Mkl.Components package, and initialize . /// to the implementation in the Microsoft.ML.Mkl.Components package. /// public ComputeLogisticRegressionStandardDeviation ComputeStandardDeviation; @@ -64,7 +64,7 @@ public sealed class Options : OptionsBase private ModelStatisticsBase _stats; /// - /// Initializes a new instance of + /// Initializes a new instance of /// /// The environment to use. /// The name of the label column. @@ -73,9 +73,9 @@ public sealed class Options : OptionsBase /// Enforce non-negative weights. /// Weight of L1 regularizer term. /// Weight of L2 regularizer term. - /// Memory size for . Low=faster, less accurate. + /// Memory size for . Low=faster, less accurate. /// Threshold for optimizer convergence. - internal LbfgsCalibratedBinaryTrainer(IHostEnvironment env, + internal LbfgsLogisticRegressionTrainer(IHostEnvironment env, string labelColumn = DefaultColumnNames.Label, string featureColumn = DefaultColumnNames.Features, string weights = null, @@ -95,9 +95,9 @@ internal LbfgsCalibratedBinaryTrainer(IHostEnvironment env, } /// - /// Initializes a new instance of + /// Initializes a new instance of /// - internal LbfgsCalibratedBinaryTrainer(IHostEnvironment env, Options options) + internal LbfgsLogisticRegressionTrainer(IHostEnvironment env, Options options) : base(env, options, TrainerUtils.MakeBoolScalarLabel(options.LabelColumnName)) { _posWeight = 0; @@ -127,7 +127,7 @@ private protected override BinaryPredictionTransformer new BinaryPredictionTransformer>(Host, model, trainSchema, FeatureColumn.Name); /// - /// Continues the training of a using an already trained and returns + /// Continues the training of a using an already trained and returns /// a . /// public BinaryPredictionTransformer> Fit(IDataView trainData, LinearModelParameters modelParameters) @@ -417,7 +417,7 @@ internal static CommonOutputs.BinaryClassificationOutput TrainBinary(IHostEnviro EntryPointUtils.CheckInputArgs(host, input); return TrainerEntryPointsUtils.Train(host, input, - () => new LbfgsCalibratedBinaryTrainer(host, input), + () => new LbfgsLogisticRegressionTrainer(host, input), () => TrainerEntryPointsUtils.FindColumn(host, input.TrainingData.Schema, input.LabelColumnName), () => TrainerEntryPointsUtils.FindColumn(host, input.TrainingData.Schema, input.ExampleWeightColumnName)); } @@ -436,7 +436,7 @@ public abstract class ComputeLogisticRegressionStandardDeviation /// Computes the standard deviation matrix of each of the non-zero training weights, needed to calculate further the standard deviation, /// p-value and z-Score. /// The calculations are not part of Microsoft.ML package, due to the size of MKL. - /// If you need these calculations, add the Microsoft.ML.Mkl.Components package, and initialize + /// If you need these calculations, add the Microsoft.ML.Mkl.Components package, and initialize /// to the implementation in the Microsoft.ML.Mkl.Components package. /// Due to the existence of regularization, an approximation is used to compute the variances of the trained linear coefficients. /// diff --git a/src/Microsoft.ML.StandardTrainers/Standard/LogisticRegression/MulticlassLogisticRegression.cs b/src/Microsoft.ML.StandardTrainers/Standard/LogisticRegression/MulticlassLogisticRegression.cs index 2c325c59d5..10a3c10d7c 100644 --- a/src/Microsoft.ML.StandardTrainers/Standard/LogisticRegression/MulticlassLogisticRegression.cs +++ b/src/Microsoft.ML.StandardTrainers/Standard/LogisticRegression/MulticlassLogisticRegression.cs @@ -83,7 +83,7 @@ public sealed class Options : OptionsBase /// Enforce non-negative weights. /// Weight of L1 regularizer term. /// Weight of L2 regularizer term. - /// Memory size for . Low=faster, less accurate. + /// Memory size for . Low=faster, less accurate. /// Threshold for optimizer convergence. internal LbfgsMaximumEntropyTrainer(IHostEnvironment env, string labelColumn = DefaultColumnNames.Label, diff --git a/src/Microsoft.ML.StandardTrainers/Standard/PoissonRegression/PoissonRegression.cs b/src/Microsoft.ML.StandardTrainers/Standard/PoissonRegression/PoissonRegression.cs index f8284c20b3..cb65044acf 100644 --- a/src/Microsoft.ML.StandardTrainers/Standard/PoissonRegression/PoissonRegression.cs +++ b/src/Microsoft.ML.StandardTrainers/Standard/PoissonRegression/PoissonRegression.cs @@ -48,7 +48,7 @@ public sealed class Options : OptionsBase /// Weight of L1 regularizer term. /// Weight of L2 regularizer term. /// Threshold for optimizer convergence. - /// Memory size for . Low=faster, less accurate. + /// Memory size for . Low=faster, less accurate. /// Enforce non-negative weights. internal LbfgsPoissonRegressionTrainer(IHostEnvironment env, string labelColumn = DefaultColumnNames.Label, diff --git a/src/Microsoft.ML.StandardTrainers/StandardTrainersCatalog.cs b/src/Microsoft.ML.StandardTrainers/StandardTrainersCatalog.cs index 55f42a8a93..690aa61615 100644 --- a/src/Microsoft.ML.StandardTrainers/StandardTrainersCatalog.cs +++ b/src/Microsoft.ML.StandardTrainers/StandardTrainersCatalog.cs @@ -9,7 +9,7 @@ namespace Microsoft.ML { - using LROptions = LbfgsCalibratedBinaryTrainer.Options; + using LROptions = LbfgsLogisticRegressionTrainer.Options; /// /// TrainerEstimator extension methods. @@ -498,7 +498,7 @@ public static OnlineGradientDescentTrainer OnlineGradientDescent(this Regression } /// - /// Predict a target using a linear binary classification model trained with the trainer. + /// Predict a target using a linear binary classification model trained with the trainer. /// /// The binary classification catalog trainer object. /// The name of the label column. @@ -507,7 +507,7 @@ public static OnlineGradientDescentTrainer OnlineGradientDescent(this Regression /// Enforce non-negative weights. /// Weight of L1 regularization term. /// Weight of L2 regularization term. - /// Memory size for . Low=faster, less accurate. + /// Memory size for . Low=faster, less accurate. /// Threshold for optimizer convergence. /// /// @@ -516,7 +516,7 @@ public static OnlineGradientDescentTrainer OnlineGradientDescent(this Regression /// ]]> /// /// - public static LbfgsCalibratedBinaryTrainer LbfgsCalibrated(this BinaryClassificationCatalog.BinaryClassificationTrainers catalog, + public static LbfgsLogisticRegressionTrainer LbfgsLogisticRegression(this BinaryClassificationCatalog.BinaryClassificationTrainers catalog, string labelColumnName = DefaultColumnNames.Label, string featureColumnName = DefaultColumnNames.Features, string exampleWeightColumnName = null, @@ -528,21 +528,21 @@ public static LbfgsCalibratedBinaryTrainer LbfgsCalibrated(this BinaryClassifica { Contracts.CheckValue(catalog, nameof(catalog)); var env = CatalogUtils.GetEnvironment(catalog); - return new LbfgsCalibratedBinaryTrainer(env, labelColumnName, featureColumnName, exampleWeightColumnName, l1Regularization, l2Regularization, optimizationTolerance, historySize, enforceNonNegativity); + return new LbfgsLogisticRegressionTrainer(env, labelColumnName, featureColumnName, exampleWeightColumnName, l1Regularization, l2Regularization, optimizationTolerance, historySize, enforceNonNegativity); } /// - /// Predict a target using a linear binary classification model trained with the trainer. + /// Predict a target using a linear binary classification model trained with the trainer. /// /// The binary classification catalog trainer object. /// Advanced arguments to the algorithm. - public static LbfgsCalibratedBinaryTrainer LbfgsLogisticRegression(this BinaryClassificationCatalog.BinaryClassificationTrainers catalog, LROptions options) + public static LbfgsLogisticRegressionTrainer LbfgsLogisticRegression(this BinaryClassificationCatalog.BinaryClassificationTrainers catalog, LROptions options) { Contracts.CheckValue(catalog, nameof(catalog)); Contracts.CheckValue(options, nameof(options)); var env = CatalogUtils.GetEnvironment(catalog); - return new LbfgsCalibratedBinaryTrainer(env, options); + return new LbfgsLogisticRegressionTrainer(env, options); } /// diff --git a/src/Microsoft.ML.StaticPipe/LbfgsStatic.cs b/src/Microsoft.ML.StaticPipe/LbfgsStatic.cs index 72bfc8c253..3b984208fc 100644 --- a/src/Microsoft.ML.StaticPipe/LbfgsStatic.cs +++ b/src/Microsoft.ML.StaticPipe/LbfgsStatic.cs @@ -9,7 +9,7 @@ namespace Microsoft.ML.StaticPipe { - using Options = LbfgsCalibratedBinaryTrainer.Options; + using Options = LbfgsLogisticRegressionTrainer.Options; /// /// Binary Classification trainer estimators. @@ -17,7 +17,7 @@ namespace Microsoft.ML.StaticPipe public static class LbfgsBinaryStaticExtensions { /// - /// Predict a target using a linear binary classification model trained with the trainer. + /// Predict a target using a linear binary classification model trained with the trainer. /// /// The binary classification catalog trainer object. /// The label, or dependent variable. @@ -26,7 +26,7 @@ public static class LbfgsBinaryStaticExtensions /// Enforce non-negative weights. /// Weight of L1 regularization term. /// Weight of L2 regularization term. - /// Memory size for . Low=faster, less accurate. + /// Memory size for . Low=faster, less accurate. /// Threshold for optimizer convergence. /// A delegate that is called every time the /// method is called on the @@ -34,7 +34,7 @@ public static class LbfgsBinaryStaticExtensions /// the linear model that was trained. Note that this action cannot change the result in any way; it is only a way for the caller to /// be informed about what was learnt. /// The predicted output. - public static (Scalar score, Scalar probability, Scalar predictedLabel) LbfgsCalibrated(this BinaryClassificationCatalog.BinaryClassificationTrainers catalog, + public static (Scalar score, Scalar probability, Scalar predictedLabel) LbfgsLogisticRegression(this BinaryClassificationCatalog.BinaryClassificationTrainers catalog, Scalar label, Vector features, Scalar weights = null, @@ -50,7 +50,7 @@ public static (Scalar score, Scalar probability, Scalar pred var rec = new TrainerEstimatorReconciler.BinaryClassifier( (env, labelName, featuresName, weightsName) => { - var trainer = new LbfgsCalibratedBinaryTrainer(env, labelName, featuresName, weightsName, + var trainer = new LbfgsLogisticRegressionTrainer(env, labelName, featuresName, weightsName, l1Regularization, l2Regularization, optimizationTolerance, historySize, enforceNonNegativity); if (onFit != null) @@ -63,7 +63,7 @@ public static (Scalar score, Scalar probability, Scalar pred } /// - /// Predict a target using a linear binary classification model trained with the trainer. + /// Predict a target using a linear binary classification model trained with the trainer. /// /// The binary classification catalog trainer object. /// The label, or dependent variable. @@ -76,7 +76,7 @@ public static (Scalar score, Scalar probability, Scalar pred /// be informed about what was learnt. /// Advanced arguments to the algorithm. /// The predicted output. - public static (Scalar score, Scalar probability, Scalar predictedLabel) LbfgsCalibrated(this BinaryClassificationCatalog.BinaryClassificationTrainers catalog, + public static (Scalar score, Scalar probability, Scalar predictedLabel) LbfgsLogisticRegression(this BinaryClassificationCatalog.BinaryClassificationTrainers catalog, Scalar label, Vector features, Scalar weights, @@ -95,7 +95,7 @@ public static (Scalar score, Scalar probability, Scalar pred options.FeatureColumnName = featuresName; options.ExampleWeightColumnName = weightsName; - var trainer = new LbfgsCalibratedBinaryTrainer(env, options); + var trainer = new LbfgsLogisticRegressionTrainer(env, options); if (onFit != null) return trainer.WithOnFitDelegate(trans => onFit(trans.Model)); @@ -113,7 +113,7 @@ public static (Scalar score, Scalar probability, Scalar pred public static class LbfgsRegressionStaticExtensions { /// - /// Predict a target using a linear regression model trained with the trainer. + /// Predict a target using a linear regression model trained with the trainer. /// /// The regression catalog trainer object. /// The label, or dependent variable. @@ -122,7 +122,7 @@ public static class LbfgsRegressionStaticExtensions /// Enforce non-negative weights. /// Weight of L1 regularization term. /// Weight of L2 regularization term. - /// Memory size for . Low=faster, less accurate. + /// Memory size for . Low=faster, less accurate. /// Threshold for optimizer convergence. /// A delegate that is called every time the /// method is called on the @@ -159,7 +159,7 @@ public static Scalar LbfgsPoissonRegression(this RegressionCatalog.Regres } /// - /// Predict a target using a linear regression model trained with the trainer. + /// Predict a target using a linear regression model trained with the trainer. /// /// The regression catalog trainer object. /// The label, or dependent variable. @@ -218,7 +218,7 @@ public static class LbfgsMulticlassStaticExtensions /// Enforce non-negative weights. /// Weight of L1 regularization term. /// Weight of L2 regularization term. - /// Memory size for . Low=faster, less accurate. + /// Memory size for . Low=faster, less accurate. /// Threshold for optimizer convergence. /// A delegate that is called every time the /// method is called on the diff --git a/src/Native/MatrixFactorizationNative/libmf b/src/Native/MatrixFactorizationNative/libmf index 5b055ea473..f92a18161b 160000 --- a/src/Native/MatrixFactorizationNative/libmf +++ b/src/Native/MatrixFactorizationNative/libmf @@ -1 +1 @@ -Subproject commit 5b055ea473756bd14f56b49db7e0483271788cc2 +Subproject commit f92a18161b6824fda4c4ab698a69d299a836841a diff --git a/test/Microsoft.ML.Benchmarks/KMeansAndLogisticRegressionBench.cs b/test/Microsoft.ML.Benchmarks/KMeansAndLogisticRegressionBench.cs index 50b117f45e..5f851f9475 100644 --- a/test/Microsoft.ML.Benchmarks/KMeansAndLogisticRegressionBench.cs +++ b/test/Microsoft.ML.Benchmarks/KMeansAndLogisticRegressionBench.cs @@ -40,7 +40,7 @@ public CalibratedModelParametersBase correctly. var weightType = ib1.GetFieldTypeOrNull("ExampleWeightColumnName"); Assert.True(weightType.Equals(typeof(string))); - var instance = ib1.GetInstance() as LbfgsCalibratedBinaryTrainer.Options; + var instance = ib1.GetInstance() as LbfgsLogisticRegressionTrainer.Options; Assert.True(instance.ExampleWeightColumnName == null); ib1.TrySetValue("ExampleWeightColumnName", "OtherWeight"); @@ -420,14 +420,14 @@ public void EntryPointCreateEnsemble() for (int i = 0; i < nModels; i++) { var data = splitOutput.TrainData[i]; - var lrInput = new LbfgsCalibratedBinaryTrainer.Options + var lrInput = new LbfgsLogisticRegressionTrainer.Options { TrainingData = data, L1Regularization = (Single)0.1 * i, L2Regularization = (Single)0.01 * (1 + i), NormalizeFeatures = NormalizeOption.No }; - predictorModels[i] = LbfgsCalibratedBinaryTrainer.TrainBinary(Env, lrInput).PredictorModel; + predictorModels[i] = LbfgsLogisticRegressionTrainer.TrainBinary(Env, lrInput).PredictorModel; individualScores[i] = ScoreModel.Score(Env, new ScoreModel.Input { Data = splitOutput.TestData[nModels], PredictorModel = predictorModels[i] }) @@ -676,7 +676,7 @@ public void EntryPointCalibrate() var splitOutput = CVSplit.Split(Env, new CVSplit.Input { Data = dataView, NumFolds = 3 }); - var lrModel = LbfgsCalibratedBinaryTrainer.TrainBinary(Env, new LbfgsCalibratedBinaryTrainer.Options { TrainingData = splitOutput.TestData[0] }).PredictorModel; + var lrModel = LbfgsLogisticRegressionTrainer.TrainBinary(Env, new LbfgsLogisticRegressionTrainer.Options { TrainingData = splitOutput.TestData[0] }).PredictorModel; var calibratedLrModel = Calibrate.FixedPlatt(Env, new Calibrate.FixedPlattInput { Data = splitOutput.TestData[1], UncalibratedPredictorModel = lrModel }).PredictorModel; @@ -724,14 +724,14 @@ public void EntryPointPipelineEnsemble() data = new ColumnConcatenatingTransformer(Env, "Features", new[] { "Features1", "Features2" }).Transform(data); data = new ValueToKeyMappingEstimator(Env, "Label", "Label", keyOrdinality: ValueToKeyMappingEstimator.KeyOrdinality.ByValue).Fit(data).Transform(data); - var lrInput = new LbfgsCalibratedBinaryTrainer.Options + var lrInput = new LbfgsLogisticRegressionTrainer.Options { TrainingData = data, L1Regularization = (Single)0.1 * i, L2Regularization = (Single)0.01 * (1 + i), NormalizeFeatures = NormalizeOption.Yes }; - predictorModels[i] = LbfgsCalibratedBinaryTrainer.TrainBinary(Env, lrInput).PredictorModel; + predictorModels[i] = LbfgsLogisticRegressionTrainer.TrainBinary(Env, lrInput).PredictorModel; var transformModel = new TransformModelImpl(Env, data, splitOutput.TrainData[i]); predictorModels[i] = ModelOperations.CombineTwoModels(Env, @@ -985,14 +985,14 @@ public void EntryPointPipelineEnsembleText() }, data); } - var lrInput = new LbfgsCalibratedBinaryTrainer.Options + var lrInput = new LbfgsLogisticRegressionTrainer.Options { TrainingData = data, L1Regularization = (Single)0.1 * i, L2Regularization = (Single)0.01 * (1 + i), NormalizeFeatures = NormalizeOption.Yes }; - predictorModels[i] = LbfgsCalibratedBinaryTrainer.TrainBinary(Env, lrInput).PredictorModel; + predictorModels[i] = LbfgsLogisticRegressionTrainer.TrainBinary(Env, lrInput).PredictorModel; var transformModel = new TransformModelImpl(Env, data, splitOutput.TrainData[i]); predictorModels[i] = ModelOperations.CombineTwoModels(Env, @@ -1318,7 +1318,7 @@ public void EntryPointPipelineEnsembleGetSummary() data = new ColumnConcatenatingTransformer(Env, new ColumnConcatenatingTransformer.ColumnOptions("Features", i % 2 == 0 ? new[] { "Features", "Cat" } : new[] { "Cat", "Features" })).Transform(data); if (i % 2 == 0) { - var lrInput = new LbfgsCalibratedBinaryTrainer.Options + var lrInput = new LbfgsLogisticRegressionTrainer.Options { TrainingData = data, NormalizeFeatures = NormalizeOption.Yes, @@ -1326,7 +1326,7 @@ public void EntryPointPipelineEnsembleGetSummary() ShowTrainingStatistics = true, ComputeStandardDeviation = new ComputeLRTrainingStdThroughMkl() }; - predictorModels[i] = LbfgsCalibratedBinaryTrainer.TrainBinary(Env, lrInput).PredictorModel; + predictorModels[i] = LbfgsLogisticRegressionTrainer.TrainBinary(Env, lrInput).PredictorModel; var transformModel = new TransformModelImpl(Env, data, splitOutput.TrainData[i]); predictorModels[i] = ModelOperations.CombineTwoModels(Env, @@ -3347,7 +3347,7 @@ public void EntryPointLinearPredictorSummary() InputFile = inputFile, }).Data; - var lrInput = new LbfgsCalibratedBinaryTrainer.Options + var lrInput = new LbfgsLogisticRegressionTrainer.Options { TrainingData = dataView, NormalizeFeatures = NormalizeOption.Yes, @@ -3355,7 +3355,7 @@ public void EntryPointLinearPredictorSummary() ShowTrainingStatistics = true, ComputeStandardDeviation = new ComputeLRTrainingStdThroughMkl() }; - var model = LbfgsCalibratedBinaryTrainer.TrainBinary(Env, lrInput).PredictorModel; + var model = LbfgsLogisticRegressionTrainer.TrainBinary(Env, lrInput).PredictorModel; var mcLrInput = new LbfgsMaximumEntropyTrainer.Options { diff --git a/test/Microsoft.ML.Functional.Tests/Evaluation.cs b/test/Microsoft.ML.Functional.Tests/Evaluation.cs index 691aec3bd3..94e1647da7 100644 --- a/test/Microsoft.ML.Functional.Tests/Evaluation.cs +++ b/test/Microsoft.ML.Functional.Tests/Evaluation.cs @@ -94,7 +94,7 @@ public void TrainAndEvaluateBinaryClassificationWithCalibration() var pipeline = mlContext.Transforms.Text.FeaturizeText("Features", "SentimentText") .AppendCacheCheckpoint(mlContext) .Append(mlContext.BinaryClassification.Trainers.LbfgsLogisticRegression( - new LbfgsCalibratedBinaryTrainer.Options { NumberOfThreads = 1 })); + new LbfgsLogisticRegressionTrainer.Options { NumberOfThreads = 1 })); // Train the model. var model = pipeline.Fit(data); @@ -274,7 +274,7 @@ public void TrainAndEvaluateWithPrecisionRecallCurves() var pipeline = mlContext.Transforms.Text.FeaturizeText("Features", "SentimentText") .AppendCacheCheckpoint(mlContext) .Append(mlContext.BinaryClassification.Trainers.LbfgsLogisticRegression( - new LbfgsCalibratedBinaryTrainer.Options { NumberOfThreads = 1 })); + new LbfgsLogisticRegressionTrainer.Options { NumberOfThreads = 1 })); // Train the model. var model = pipeline.Fit(data); diff --git a/test/Microsoft.ML.Functional.Tests/Training.cs b/test/Microsoft.ML.Functional.Tests/Training.cs index 47cb0c7376..908e4c1b14 100644 --- a/test/Microsoft.ML.Functional.Tests/Training.cs +++ b/test/Microsoft.ML.Functional.Tests/Training.cs @@ -226,7 +226,7 @@ public void ContinueTrainingLogisticRegression() .AppendCacheCheckpoint(mlContext); var trainer = mlContext.BinaryClassification.Trainers.LbfgsLogisticRegression( - new LbfgsCalibratedBinaryTrainer.Options { NumberOfThreads = 1, MaximumNumberOfIterations = 10 }); + new LbfgsLogisticRegressionTrainer.Options { NumberOfThreads = 1, MaximumNumberOfIterations = 10 }); // Fit the data transformation pipeline. var featurization = featurizationPipeline.Fit(data); @@ -452,7 +452,7 @@ public void MetacomponentsFunctionAsExpectedOva() // Create a model training an OVA trainer with a binary classifier. var binaryClassificationTrainer = mlContext.BinaryClassification.Trainers.LbfgsLogisticRegression( - new LbfgsCalibratedBinaryTrainer.Options { MaximumNumberOfIterations = 10, NumberOfThreads = 1, }); + new LbfgsLogisticRegressionTrainer.Options { MaximumNumberOfIterations = 10, NumberOfThreads = 1, }); var binaryClassificationPipeline = mlContext.Transforms.Concatenate("Features", Iris.Features) .AppendCacheCheckpoint(mlContext) .Append(mlContext.Transforms.Conversion.MapValueToKey("Label")) diff --git a/test/Microsoft.ML.Predictor.Tests/TestPredictors.cs b/test/Microsoft.ML.Predictor.Tests/TestPredictors.cs index 723cea5e4d..88cb40f9e0 100644 --- a/test/Microsoft.ML.Predictor.Tests/TestPredictors.cs +++ b/test/Microsoft.ML.Predictor.Tests/TestPredictors.cs @@ -739,7 +739,7 @@ public void TestEnsembleCombiner() TrainingData = dataView, NormalizeFeatures = NormalizeOption.No }).PredictorModel, - LbfgsCalibratedBinaryTrainer.TrainBinary(ML, new LbfgsCalibratedBinaryTrainer.Options() + LbfgsLogisticRegressionTrainer.TrainBinary(ML, new LbfgsLogisticRegressionTrainer.Options() { FeatureColumnName = "Features", LabelColumnName = DefaultColumnNames.Label, @@ -747,7 +747,7 @@ public void TestEnsembleCombiner() TrainingData = dataView, NormalizeFeatures = NormalizeOption.No }).PredictorModel, - LbfgsCalibratedBinaryTrainer.TrainBinary(ML, new LbfgsCalibratedBinaryTrainer.Options() + LbfgsLogisticRegressionTrainer.TrainBinary(ML, new LbfgsLogisticRegressionTrainer.Options() { FeatureColumnName = "Features", LabelColumnName = DefaultColumnNames.Label, diff --git a/test/Microsoft.ML.StaticPipelineTesting/Training.cs b/test/Microsoft.ML.StaticPipelineTesting/Training.cs index bc00c6430b..dcc6e675c1 100644 --- a/test/Microsoft.ML.StaticPipelineTesting/Training.cs +++ b/test/Microsoft.ML.StaticPipelineTesting/Training.cs @@ -704,8 +704,8 @@ public void LogisticRegressionBinaryClassification() CalibratedModelParametersBase pred = null; var est = reader.MakeNewEstimator() - .Append(r => (r.label, preds: catalog.Trainers.LbfgsCalibrated(r.label, r.features, null, - new LbfgsCalibratedBinaryTrainer.Options { L1Regularization = 10, NumberOfThreads = 1 }, onFit: (p) => { pred = p; }))); + .Append(r => (r.label, preds: catalog.Trainers.LbfgsLogisticRegression(r.label, r.features, null, + new LbfgsLogisticRegressionTrainer.Options { L1Regularization = 10, NumberOfThreads = 1 }, onFit: (p) => { pred = p; }))); var pipe = reader.Append(est); diff --git a/test/Microsoft.ML.Tests/FeatureContributionTests.cs b/test/Microsoft.ML.Tests/FeatureContributionTests.cs index e2a6a45b25..1a1b576278 100644 --- a/test/Microsoft.ML.Tests/FeatureContributionTests.cs +++ b/test/Microsoft.ML.Tests/FeatureContributionTests.cs @@ -126,7 +126,7 @@ public void TestSVMBinary() [Fact] public void TestLogisticRegressionBinary() { - TestFeatureContribution(ML.BinaryClassification.Trainers.LbfgsCalibrated(), GetSparseDataset(TaskType.BinaryClassification, 100), "LogisticRegressionBinary"); + TestFeatureContribution(ML.BinaryClassification.Trainers.LbfgsLogisticRegression(), GetSparseDataset(TaskType.BinaryClassification, 100), "LogisticRegressionBinary"); } [Fact] diff --git a/test/Microsoft.ML.Tests/PermutationFeatureImportanceTests.cs b/test/Microsoft.ML.Tests/PermutationFeatureImportanceTests.cs index f9bb0e54aa..a40e3536dd 100644 --- a/test/Microsoft.ML.Tests/PermutationFeatureImportanceTests.cs +++ b/test/Microsoft.ML.Tests/PermutationFeatureImportanceTests.cs @@ -152,7 +152,7 @@ public void TestPfiBinaryClassificationOnDenseFeatures() { var data = GetDenseDataset(TaskType.BinaryClassification); var model = ML.BinaryClassification.Trainers.LbfgsLogisticRegression( - new LbfgsCalibratedBinaryTrainer.Options { NumberOfThreads = 1 }).Fit(data); + new LbfgsLogisticRegressionTrainer.Options { NumberOfThreads = 1 }).Fit(data); var pfi = ML.BinaryClassification.PermutationFeatureImportance(model, data); // Pfi Indices: @@ -190,7 +190,7 @@ public void TestPfiBinaryClassificationOnSparseFeatures() { var data = GetSparseDataset(TaskType.BinaryClassification); var model = ML.BinaryClassification.Trainers.LbfgsLogisticRegression( - new LbfgsCalibratedBinaryTrainer.Options { NumberOfThreads = 1 }).Fit(data); + new LbfgsLogisticRegressionTrainer.Options { NumberOfThreads = 1 }).Fit(data); var pfi = ML.BinaryClassification.PermutationFeatureImportance(model, data); // Pfi Indices: diff --git a/test/Microsoft.ML.Tests/Scenarios/OvaTest.cs b/test/Microsoft.ML.Tests/Scenarios/OvaTest.cs index 35c3b7394b..dcfacdec98 100644 --- a/test/Microsoft.ML.Tests/Scenarios/OvaTest.cs +++ b/test/Microsoft.ML.Tests/Scenarios/OvaTest.cs @@ -33,7 +33,7 @@ public void OvaLogisticRegression() .Fit(textData).Transform(textData)); // Pipeline - var logReg = mlContext.BinaryClassification.Trainers.LbfgsCalibrated(); + var logReg = mlContext.BinaryClassification.Trainers.LbfgsLogisticRegression(); var pipeline = mlContext.MulticlassClassification.Trainers.OneVersusAll(logReg, useProbabilities: false); var model = pipeline.Fit(data); diff --git a/test/Microsoft.ML.Tests/TrainerEstimators/LbfgsTests.cs b/test/Microsoft.ML.Tests/TrainerEstimators/LbfgsTests.cs index 0d6b295914..b3bd9ccb6f 100644 --- a/test/Microsoft.ML.Tests/TrainerEstimators/LbfgsTests.cs +++ b/test/Microsoft.ML.Tests/TrainerEstimators/LbfgsTests.cs @@ -19,7 +19,7 @@ public partial class TrainerEstimators public void TestEstimatorLogisticRegression() { (IEstimator pipe, IDataView dataView) = GetBinaryClassificationPipeline(); - var trainer = ML.BinaryClassification.Trainers.LbfgsCalibrated(); + var trainer = ML.BinaryClassification.Trainers.LbfgsLogisticRegression(); var pipeWithTrainer = pipe.Append(trainer); TestEstimatorCore(pipeWithTrainer, dataView); @@ -60,7 +60,7 @@ public void TestLRNoStats() { (IEstimator pipe, IDataView dataView) = GetBinaryClassificationPipeline(); - pipe = pipe.Append(ML.BinaryClassification.Trainers.LbfgsLogisticRegression(new LbfgsCalibratedBinaryTrainer.Options { ShowTrainingStatistics = true })); + pipe = pipe.Append(ML.BinaryClassification.Trainers.LbfgsLogisticRegression(new LbfgsLogisticRegressionTrainer.Options { ShowTrainingStatistics = true })); var transformerChain = pipe.Fit(dataView) as TransformerChain>>; var linearModel = transformerChain.LastTransformer.Model.SubModel as LinearBinaryModelParameters; var stats = linearModel.Statistics as ModelStatisticsBase; @@ -81,7 +81,7 @@ public void TestLRWithStats() (IEstimator pipe, IDataView dataView) = GetBinaryClassificationPipeline(); pipe = pipe.Append(ML.BinaryClassification.Trainers.LbfgsLogisticRegression( - new LbfgsCalibratedBinaryTrainer.Options + new LbfgsLogisticRegressionTrainer.Options { ShowTrainingStatistics = true, ComputeStandardDeviation = new ComputeLRTrainingStdThroughMkl(), From b177db15f123cb34fa64751483f62768afd4b27f Mon Sep 17 00:00:00 2001 From: Wei-Sheng Chin Date: Thu, 21 Mar 2019 23:13:16 -0700 Subject: [PATCH 07/12] Update EP --- test/BaselineOutput/Common/EntryPoints/core_ep-list.tsv | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/BaselineOutput/Common/EntryPoints/core_ep-list.tsv b/test/BaselineOutput/Common/EntryPoints/core_ep-list.tsv index 01ace00699..d85bb468d4 100644 --- a/test/BaselineOutput/Common/EntryPoints/core_ep-list.tsv +++ b/test/BaselineOutput/Common/EntryPoints/core_ep-list.tsv @@ -58,7 +58,7 @@ Trainers.LightGbmClassifier Train a LightGBM multi class model. Microsoft.ML.Tra Trainers.LightGbmRanker Train a LightGBM ranking model. Microsoft.ML.Trainers.LightGbm.LightGbm TrainRanking Microsoft.ML.Trainers.LightGbm.LightGbmRankingTrainer+Options Microsoft.ML.EntryPoints.CommonOutputs+RankingOutput Trainers.LightGbmRegressor LightGBM Regression Microsoft.ML.Trainers.LightGbm.LightGbm TrainRegression Microsoft.ML.Trainers.LightGbm.LightGbmRegressionTrainer+Options Microsoft.ML.EntryPoints.CommonOutputs+RegressionOutput Trainers.LinearSvmBinaryClassifier Train a linear SVM. Microsoft.ML.Trainers.LinearSvmTrainer TrainLinearSvm Microsoft.ML.Trainers.LinearSvmTrainer+Options Microsoft.ML.EntryPoints.CommonOutputs+BinaryClassificationOutput -Trainers.LogisticRegressionBinaryClassifier Logistic Regression is a method in statistics used to predict the probability of occurrence of an event and can be used as a classification algorithm. The algorithm predicts the probability of occurrence of an event by fitting data to a logistical function. Microsoft.ML.Trainers.LbfgsCalibratedBinaryTrainer TrainBinary Microsoft.ML.Trainers.LbfgsCalibratedBinaryTrainer+Options Microsoft.ML.EntryPoints.CommonOutputs+BinaryClassificationOutput +Trainers.LogisticRegressionBinaryClassifier Logistic Regression is a method in statistics used to predict the probability of occurrence of an event and can be used as a classification algorithm. The algorithm predicts the probability of occurrence of an event by fitting data to a logistical function. Microsoft.ML.Trainers.LbfgsLogisticRegressionTrainer TrainBinary Microsoft.ML.Trainers.LbfgsLogisticRegressionTrainer+Options Microsoft.ML.EntryPoints.CommonOutputs+BinaryClassificationOutput Trainers.LogisticRegressionClassifier Maximum entrypy classification is a method in statistics used to predict the probabilities of parallel events. The model predicts the probabilities of parallel events by fitting data to a softmax function. Microsoft.ML.Trainers.LbfgsMaximumEntropyTrainer TrainMulticlass Microsoft.ML.Trainers.LbfgsMaximumEntropyTrainer+Options Microsoft.ML.EntryPoints.CommonOutputs+MulticlassClassificationOutput Trainers.NaiveBayesClassifier Train a MulticlassNaiveBayesTrainer. Microsoft.ML.Trainers.NaiveBayesMulticlassTrainer TrainMulticlassNaiveBayesTrainer Microsoft.ML.Trainers.NaiveBayesMulticlassTrainer+Options Microsoft.ML.EntryPoints.CommonOutputs+MulticlassClassificationOutput Trainers.OnlineGradientDescentRegressor Train a Online gradient descent perceptron. Microsoft.ML.Trainers.OnlineGradientDescentTrainer TrainRegression Microsoft.ML.Trainers.OnlineGradientDescentTrainer+Options Microsoft.ML.EntryPoints.CommonOutputs+RegressionOutput From 804c4a8e1ecf2b9a58a0e52c2f9517bd05b9a9b7 Mon Sep 17 00:00:00 2001 From: Wei-Sheng Chin Date: Fri, 22 Mar 2019 09:14:12 -0700 Subject: [PATCH 08/12] Fix libmf --- src/Native/MatrixFactorizationNative/libmf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Native/MatrixFactorizationNative/libmf b/src/Native/MatrixFactorizationNative/libmf index f92a18161b..5b055ea473 160000 --- a/src/Native/MatrixFactorizationNative/libmf +++ b/src/Native/MatrixFactorizationNative/libmf @@ -1 +1 @@ -Subproject commit f92a18161b6824fda4c4ab698a69d299a836841a +Subproject commit 5b055ea473756bd14f56b49db7e0483271788cc2 From 7451306cb236d2a26ec27c9b42ddf2ad19a0e07c Mon Sep 17 00:00:00 2001 From: Wei-Sheng Chin Date: Mon, 25 Mar 2019 13:40:14 -0700 Subject: [PATCH 09/12] Implement conclusions --- .../MulticlassDataPartitionEnsembleTrainer.cs | 4 +- .../MklComponentsCatalog.cs | 26 ++++---- .../SymSgdClassificationTrainer.cs | 32 +++++----- .../LogisticRegression/LogisticRegression.cs | 30 +++++----- .../MulticlassLogisticRegression.cs | 40 ++++++------- .../MetaMulticlassTrainer.cs | 6 +- .../OneVersusAllTrainer.cs | 2 +- .../PairwiseCouplingTrainer.cs | 2 +- .../PoissonRegression/PoissonRegression.cs | 2 +- .../Standard/SdcaBinary.cs | 14 ++--- .../Standard/SdcaMulticlass.cs | 46 +++++++------- .../StandardTrainersCatalog.cs | 60 +++++++++---------- src/Microsoft.ML.StaticPipe/LbfgsStatic.cs | 30 +++++----- .../SdcaStaticExtensions.cs | 12 ++-- .../Common/EntryPoints/core_ep-list.tsv | 8 +-- .../KMeansAndLogisticRegressionBench.cs | 2 +- .../PredictionEngineBench.cs | 4 +- ...sticDualCoordinateAscentClassifierBench.cs | 4 +- .../Text/MultiClassClassification.cs | 2 +- .../UnitTests/TestEntryPoints.cs | 34 +++++------ .../DataTransformation.cs | 4 +- .../Evaluation.cs | 8 +-- .../IntrospectiveTraining.cs | 4 +- .../Microsoft.ML.Functional.Tests/Training.cs | 14 ++--- .../TestPredictors.cs | 10 ++-- .../Training.cs | 6 +- .../FeatureContributionTests.cs | 4 +- test/Microsoft.ML.Tests/OnnxConversionTest.cs | 2 +- .../PermutationFeatureImportanceTests.cs | 6 +- .../CookbookSamplesDynamicApi.cs | 4 +- .../Estimators/DecomposableTrainAndPredict.cs | 4 +- .../Scenarios/Api/Estimators/Extensibility.cs | 4 +- .../Api/Estimators/PredictAndMetadata.cs | 4 +- .../Api/Estimators/SimpleTrainAndPredict.cs | 2 +- .../Scenarios/IrisPlantClassificationTests.cs | 4 +- ...PlantClassificationWithStringLabelTests.cs | 4 +- .../Scenarios/TensorflowTests.cs | 2 +- .../IrisPlantClassificationTests.cs | 4 +- .../TrainerEstimators/LbfgsTests.cs | 6 +- .../TrainerEstimators/SdcaTests.cs | 12 ++-- .../SymSgdClassificationTests.cs | 8 +-- 41 files changed, 238 insertions(+), 238 deletions(-) diff --git a/src/Microsoft.ML.Ensemble/Trainer/Multiclass/MulticlassDataPartitionEnsembleTrainer.cs b/src/Microsoft.ML.Ensemble/Trainer/Multiclass/MulticlassDataPartitionEnsembleTrainer.cs index 808586f435..20427668b8 100644 --- a/src/Microsoft.ML.Ensemble/Trainer/Multiclass/MulticlassDataPartitionEnsembleTrainer.cs +++ b/src/Microsoft.ML.Ensemble/Trainer/Multiclass/MulticlassDataPartitionEnsembleTrainer.cs @@ -64,8 +64,8 @@ public Arguments() // non-default column names. Unfortuantely no method of resolving this temporary strikes me as being any // less laborious than the proper fix, which is that this "meta" component should itself be a trainer // estimator, as opposed to a regular trainer. - var trainerEstimator = new LbfgsMaximumEntropyTrainer(env, LabelColumnName, FeatureColumnName); - return TrainerUtils.MapTrainerEstimatorToTrainer(env, trainerEstimator); }) }; diff --git a/src/Microsoft.ML.Mkl.Components/MklComponentsCatalog.cs b/src/Microsoft.ML.Mkl.Components/MklComponentsCatalog.cs index 91d3185585..36d21ca970 100644 --- a/src/Microsoft.ML.Mkl.Components/MklComponentsCatalog.cs +++ b/src/Microsoft.ML.Mkl.Components/MklComponentsCatalog.cs @@ -10,7 +10,7 @@ namespace Microsoft.ML { /// - /// The trainer catalog extensions for the and . + /// The trainer catalog extensions for the and . /// public static class MklComponentsCatalog { @@ -69,9 +69,9 @@ public static OlsTrainer Ols( } /// - /// Predict a target using a linear binary classification model trained with the . + /// Predict a target using a linear binary classification model trained with the . /// Stochastic gradient descent (SGD) is an iterative algorithm that optimizes a differentiable objective function. - /// The parallelizes SGD using symbolic execution. + /// The parallelizes SGD using symbolic execution. /// /// The . /// The name of the label column. @@ -84,30 +84,30 @@ public static OlsTrainer Ols( /// ]]> /// /// - public static SymbolicSgdTrainer SymbolicSgd(this BinaryClassificationCatalog.BinaryClassificationTrainers catalog, + public static SymbolicSgdLogisticRegressionBinaryTrainer SymbolicSgdLogisticRegression(this BinaryClassificationCatalog.BinaryClassificationTrainers catalog, string labelColumnName = DefaultColumnNames.Label, string featureColumnName = DefaultColumnNames.Features, - int numberOfIterations = SymbolicSgdTrainer.Defaults.NumberOfIterations) + int numberOfIterations = SymbolicSgdLogisticRegressionBinaryTrainer.Defaults.NumberOfIterations) { Contracts.CheckValue(catalog, nameof(catalog)); var env = CatalogUtils.GetEnvironment(catalog); - var options = new SymbolicSgdTrainer.Options + var options = new SymbolicSgdLogisticRegressionBinaryTrainer.Options { LabelColumnName = labelColumnName, FeatureColumnName = featureColumnName, }; - return new SymbolicSgdTrainer(env, options); + return new SymbolicSgdLogisticRegressionBinaryTrainer(env, options); } /// - /// Predict a target using a linear binary classification model trained with the . + /// Predict a target using a linear binary classification model trained with the . /// Stochastic gradient descent (SGD) is an iterative algorithm that optimizes a differentiable objective function. - /// The parallelizes SGD using symbolic execution. + /// The parallelizes SGD using symbolic execution. /// /// The . - /// Algorithm advanced options. See . + /// Algorithm advanced options. See . /// /// /// /// /// - public static SymbolicSgdTrainer SymbolicSgd( + public static SymbolicSgdLogisticRegressionBinaryTrainer SymbolicSgdLogisticRegression( this BinaryClassificationCatalog.BinaryClassificationTrainers catalog, - SymbolicSgdTrainer.Options options) + SymbolicSgdLogisticRegressionBinaryTrainer.Options options) { Contracts.CheckValue(catalog, nameof(catalog)); Contracts.CheckValue(options, nameof(options)); var env = CatalogUtils.GetEnvironment(catalog); - return new SymbolicSgdTrainer(env, options); + return new SymbolicSgdLogisticRegressionBinaryTrainer(env, options); } /// diff --git a/src/Microsoft.ML.Mkl.Components/SymSgdClassificationTrainer.cs b/src/Microsoft.ML.Mkl.Components/SymSgdClassificationTrainer.cs index 29d412befe..1d4f06c9dc 100644 --- a/src/Microsoft.ML.Mkl.Components/SymSgdClassificationTrainer.cs +++ b/src/Microsoft.ML.Mkl.Components/SymSgdClassificationTrainer.cs @@ -19,20 +19,20 @@ using Microsoft.ML.Trainers; using Microsoft.ML.Transforms; -[assembly: LoadableClass(typeof(SymbolicSgdTrainer), typeof(SymbolicSgdTrainer.Options), +[assembly: LoadableClass(typeof(SymbolicSgdLogisticRegressionBinaryTrainer), typeof(SymbolicSgdLogisticRegressionBinaryTrainer.Options), new[] { typeof(SignatureBinaryClassifierTrainer), typeof(SignatureTrainer), typeof(SignatureFeatureScorerTrainer) }, - SymbolicSgdTrainer.UserNameValue, - SymbolicSgdTrainer.LoadNameValue, - SymbolicSgdTrainer.ShortName)] + SymbolicSgdLogisticRegressionBinaryTrainer.UserNameValue, + SymbolicSgdLogisticRegressionBinaryTrainer.LoadNameValue, + SymbolicSgdLogisticRegressionBinaryTrainer.ShortName)] -[assembly: LoadableClass(typeof(void), typeof(SymbolicSgdTrainer), null, typeof(SignatureEntryPointModule), SymbolicSgdTrainer.LoadNameValue)] +[assembly: LoadableClass(typeof(void), typeof(SymbolicSgdLogisticRegressionBinaryTrainer), null, typeof(SignatureEntryPointModule), SymbolicSgdLogisticRegressionBinaryTrainer.LoadNameValue)] namespace Microsoft.ML.Trainers { using TPredictor = CalibratedModelParametersBase; /// - public sealed class SymbolicSgdTrainer : TrainerEstimatorBase, TPredictor> + public sealed class SymbolicSgdLogisticRegressionBinaryTrainer : TrainerEstimatorBase, TPredictor> { internal const string LoadNameValue = "SymbolicSGD"; internal const string UserNameValue = "Symbolic SGD (binary)"; @@ -195,9 +195,9 @@ private protected override TPredictor TrainModelCore(TrainContext context) private protected override PredictionKind PredictionKind => PredictionKind.BinaryClassification; /// - /// Initializes a new instance of + /// Initializes a new instance of /// - internal SymbolicSgdTrainer(IHostEnvironment env, Options options) + internal SymbolicSgdLogisticRegressionBinaryTrainer(IHostEnvironment env, Options options) : base(Contracts.CheckRef(env, nameof(env)).Register(LoadNameValue), TrainerUtils.MakeR4VecFeature(options.FeatureColumnName), TrainerUtils.MakeBoolScalarLabel(options.LabelColumnName)) { @@ -223,7 +223,7 @@ private protected override BinaryPredictionTransformer MakeTransform => new BinaryPredictionTransformer(Host, model, trainSchema, FeatureColumn.Name); /// - /// Continues the training of using an already trained + /// Continues the training of using an already trained /// a . /// public BinaryPredictionTransformer Fit(IDataView trainData, LinearModelParameters modelParameters) @@ -241,8 +241,8 @@ private protected override SchemaShape.Column[] GetOutputColumnsCore(SchemaShape [TlcModule.EntryPoint(Name = "Trainers.SymSgdBinaryClassifier", Desc = "Train a symbolic SGD.", - UserName = SymbolicSgdTrainer.UserNameValue, - ShortName = SymbolicSgdTrainer.ShortName)] + UserName = SymbolicSgdLogisticRegressionBinaryTrainer.UserNameValue, + ShortName = SymbolicSgdLogisticRegressionBinaryTrainer.ShortName)] internal static CommonOutputs.BinaryClassificationOutput TrainSymSgd(IHostEnvironment env, Options options) { Contracts.CheckValue(env, nameof(env)); @@ -251,7 +251,7 @@ internal static CommonOutputs.BinaryClassificationOutput TrainSymSgd(IHostEnviro EntryPointUtils.CheckInputArgs(host, options); return TrainerEntryPointsUtils.Train(host, options, - () => new SymbolicSgdTrainer(host, options), + () => new SymbolicSgdLogisticRegressionBinaryTrainer(host, options), () => TrainerEntryPointsUtils.FindColumn(host, options.TrainingData.Schema, options.LabelColumnName)); } @@ -324,7 +324,7 @@ public void Free() // giving an array, we are at _storage[_storageIndex][_indexInCurArray]. private int _indexInCurArray; // This is used to access AccelMemBudget, AccelChunkSize and UsedMemory - private readonly SymbolicSgdTrainer _trainer; + private readonly SymbolicSgdLogisticRegressionBinaryTrainer _trainer; private readonly IChannel _ch; @@ -336,7 +336,7 @@ public void Free() /// /// /// - public ArrayManager(SymbolicSgdTrainer trainer, IChannel ch) + public ArrayManager(SymbolicSgdLogisticRegressionBinaryTrainer trainer, IChannel ch) { _storage = new List(); // Setting the default value to 2^17. @@ -500,7 +500,7 @@ private sealed class InputDataManager : IDisposable // This is the index to go over the instances in instanceProperties private int _instanceIndex; // This is used to access AccelMemBudget, AccelChunkSize and UsedMemory - private readonly SymbolicSgdTrainer _trainer; + private readonly SymbolicSgdLogisticRegressionBinaryTrainer _trainer; private readonly IChannel _ch; // Whether memorySize was big enough to load the entire instances into the buffer @@ -511,7 +511,7 @@ private sealed class InputDataManager : IDisposable // Tells if we have gone through the dataset entirely. public bool FinishedTheLoad => !_cursorMoveNext; - public InputDataManager(SymbolicSgdTrainer trainer, FloatLabelCursor.Factory cursorFactory, IChannel ch) + public InputDataManager(SymbolicSgdLogisticRegressionBinaryTrainer trainer, FloatLabelCursor.Factory cursorFactory, IChannel ch) { _instIndices = new ArrayManager(trainer, ch); _instValues = new ArrayManager(trainer, ch); diff --git a/src/Microsoft.ML.StandardTrainers/Standard/LogisticRegression/LogisticRegression.cs b/src/Microsoft.ML.StandardTrainers/Standard/LogisticRegression/LogisticRegression.cs index 496466c8ab..263b5dd2d1 100644 --- a/src/Microsoft.ML.StandardTrainers/Standard/LogisticRegression/LogisticRegression.cs +++ b/src/Microsoft.ML.StandardTrainers/Standard/LogisticRegression/LogisticRegression.cs @@ -15,21 +15,21 @@ using Microsoft.ML.Runtime; using Microsoft.ML.Trainers; -[assembly: LoadableClass(LbfgsLogisticRegressionTrainer.Summary, typeof(LbfgsLogisticRegressionTrainer), typeof(LbfgsLogisticRegressionTrainer.Options), +[assembly: LoadableClass(LbfgsLogisticRegressionBinaryTrainer.Summary, typeof(LbfgsLogisticRegressionBinaryTrainer), typeof(LbfgsLogisticRegressionBinaryTrainer.Options), new[] { typeof(SignatureBinaryClassifierTrainer), typeof(SignatureTrainer), typeof(SignatureFeatureScorerTrainer) }, - LbfgsLogisticRegressionTrainer.UserNameValue, - LbfgsLogisticRegressionTrainer.LoadNameValue, - LbfgsLogisticRegressionTrainer.ShortName, + LbfgsLogisticRegressionBinaryTrainer.UserNameValue, + LbfgsLogisticRegressionBinaryTrainer.LoadNameValue, + LbfgsLogisticRegressionBinaryTrainer.ShortName, "logisticregressionwrapper")] -[assembly: LoadableClass(typeof(void), typeof(LbfgsLogisticRegressionTrainer), null, typeof(SignatureEntryPointModule), LbfgsLogisticRegressionTrainer.LoadNameValue)] +[assembly: LoadableClass(typeof(void), typeof(LbfgsLogisticRegressionBinaryTrainer), null, typeof(SignatureEntryPointModule), LbfgsLogisticRegressionBinaryTrainer.LoadNameValue)] namespace Microsoft.ML.Trainers { /// /// - public sealed partial class LbfgsLogisticRegressionTrainer : LbfgsTrainerBase>, CalibratedModelParametersBase> { @@ -54,7 +54,7 @@ public sealed class Options : OptionsBase /// /// The instance of that computes the std of the training statistics, at the end of training. /// The calculations are not part of Microsoft.ML package, due to the size of MKL. - /// If you need these calculations, add the Microsoft.ML.Mkl.Components package, and initialize . + /// If you need these calculations, add the Microsoft.ML.Mkl.Components package, and initialize . /// to the implementation in the Microsoft.ML.Mkl.Components package. /// public ComputeLogisticRegressionStandardDeviation ComputeStandardDeviation; @@ -64,7 +64,7 @@ public sealed class Options : OptionsBase private ModelStatisticsBase _stats; /// - /// Initializes a new instance of + /// Initializes a new instance of /// /// The environment to use. /// The name of the label column. @@ -73,9 +73,9 @@ public sealed class Options : OptionsBase /// Enforce non-negative weights. /// Weight of L1 regularizer term. /// Weight of L2 regularizer term. - /// Memory size for . Low=faster, less accurate. + /// Memory size for . Low=faster, less accurate. /// Threshold for optimizer convergence. - internal LbfgsLogisticRegressionTrainer(IHostEnvironment env, + internal LbfgsLogisticRegressionBinaryTrainer(IHostEnvironment env, string labelColumn = DefaultColumnNames.Label, string featureColumn = DefaultColumnNames.Features, string exampleWeightColumnName = null, @@ -95,9 +95,9 @@ internal LbfgsLogisticRegressionTrainer(IHostEnvironment env, } /// - /// Initializes a new instance of + /// Initializes a new instance of /// - internal LbfgsLogisticRegressionTrainer(IHostEnvironment env, Options options) + internal LbfgsLogisticRegressionBinaryTrainer(IHostEnvironment env, Options options) : base(env, options, TrainerUtils.MakeBoolScalarLabel(options.LabelColumnName)) { _posWeight = 0; @@ -127,7 +127,7 @@ private protected override BinaryPredictionTransformer new BinaryPredictionTransformer>(Host, model, trainSchema, FeatureColumn.Name); /// - /// Continues the training of a using an already trained and returns + /// Continues the training of a using an already trained and returns /// a . /// public BinaryPredictionTransformer> Fit(IDataView trainData, LinearModelParameters modelParameters) @@ -417,7 +417,7 @@ internal static CommonOutputs.BinaryClassificationOutput TrainBinary(IHostEnviro EntryPointUtils.CheckInputArgs(host, input); return TrainerEntryPointsUtils.Train(host, input, - () => new LbfgsLogisticRegressionTrainer(host, input), + () => new LbfgsLogisticRegressionBinaryTrainer(host, input), () => TrainerEntryPointsUtils.FindColumn(host, input.TrainingData.Schema, input.LabelColumnName), () => TrainerEntryPointsUtils.FindColumn(host, input.TrainingData.Schema, input.ExampleWeightColumnName)); } @@ -436,7 +436,7 @@ public abstract class ComputeLogisticRegressionStandardDeviation /// Computes the standard deviation matrix of each of the non-zero training weights, needed to calculate further the standard deviation, /// p-value and z-Score. /// The calculations are not part of Microsoft.ML package, due to the size of MKL. - /// If you need these calculations, add the Microsoft.ML.Mkl.Components package, and initialize + /// If you need these calculations, add the Microsoft.ML.Mkl.Components package, and initialize /// to the implementation in the Microsoft.ML.Mkl.Components package. /// Due to the existence of regularization, an approximation is used to compute the variances of the trained linear coefficients. /// diff --git a/src/Microsoft.ML.StandardTrainers/Standard/LogisticRegression/MulticlassLogisticRegression.cs b/src/Microsoft.ML.StandardTrainers/Standard/LogisticRegression/MulticlassLogisticRegression.cs index df14c61046..03bed19c04 100644 --- a/src/Microsoft.ML.StandardTrainers/Standard/LogisticRegression/MulticlassLogisticRegression.cs +++ b/src/Microsoft.ML.StandardTrainers/Standard/LogisticRegression/MulticlassLogisticRegression.cs @@ -19,25 +19,25 @@ using Microsoft.ML.Trainers; using Newtonsoft.Json.Linq; -[assembly: LoadableClass(typeof(LbfgsMaximumEntropyTrainer), typeof(LbfgsMaximumEntropyTrainer.Options), +[assembly: LoadableClass(typeof(LbfgsMaximumEntropyMulticlassTrainer), typeof(LbfgsMaximumEntropyMulticlassTrainer.Options), new[] { typeof(SignatureMulticlassClassifierTrainer), typeof(SignatureTrainer) }, - LbfgsMaximumEntropyTrainer.UserNameValue, - LbfgsMaximumEntropyTrainer.LoadNameValue, + LbfgsMaximumEntropyMulticlassTrainer.UserNameValue, + LbfgsMaximumEntropyMulticlassTrainer.LoadNameValue, "MulticlassLogisticRegressionPredictorNew", - LbfgsMaximumEntropyTrainer.ShortName, + LbfgsMaximumEntropyMulticlassTrainer.ShortName, "multilr")] [assembly: LoadableClass(typeof(MaximumEntropyModelParameters), null, typeof(SignatureLoadModel), "Multiclass LR Executor", MaximumEntropyModelParameters.LoaderSignature)] -[assembly: LoadableClass(typeof(void), typeof(LbfgsMaximumEntropyTrainer), null, typeof(SignatureEntryPointModule), LbfgsMaximumEntropyTrainer.LoadNameValue)] +[assembly: LoadableClass(typeof(void), typeof(LbfgsMaximumEntropyMulticlassTrainer), null, typeof(SignatureEntryPointModule), LbfgsMaximumEntropyMulticlassTrainer.LoadNameValue)] namespace Microsoft.ML.Trainers { /// /// - public sealed class LbfgsMaximumEntropyTrainer : LbfgsTrainerBase, MaximumEntropyModelParameters> { internal const string Summary = "Maximum entrypy classification is a method in statistics used to predict the probabilities of parallel events. The model predicts the probabilities of parallel events by fitting data to a softmax function."; @@ -74,7 +74,7 @@ public sealed class Options : OptionsBase private protected override int ClassCount => _numClasses; /// - /// Initializes a new instance of . + /// Initializes a new instance of . /// /// The environment to use. /// The name of the label column. @@ -83,9 +83,9 @@ public sealed class Options : OptionsBase /// Enforce non-negative weights. /// Weight of L1 regularizer term. /// Weight of L2 regularizer term. - /// Memory size for . Low=faster, less accurate. + /// Memory size for . Low=faster, less accurate. /// Threshold for optimizer convergence. - internal LbfgsMaximumEntropyTrainer(IHostEnvironment env, + internal LbfgsMaximumEntropyMulticlassTrainer(IHostEnvironment env, string labelColumn = DefaultColumnNames.Label, string featureColumn = DefaultColumnNames.Features, string weights = null, @@ -103,9 +103,9 @@ internal LbfgsMaximumEntropyTrainer(IHostEnvironment env, } /// - /// Initializes a new instance of . + /// Initializes a new instance of . /// - internal LbfgsMaximumEntropyTrainer(IHostEnvironment env, Options options) + internal LbfgsMaximumEntropyMulticlassTrainer(IHostEnvironment env, Options options) : base(env, options, TrainerUtils.MakeU4ScalarColumn(options.LabelColumnName)) { ShowTrainingStats = LbfgsTrainerOptions.ShowTrainingStatistics; @@ -331,25 +331,25 @@ private protected override MulticlassPredictionTransformer new MulticlassPredictionTransformer(Host, model, trainSchema, FeatureColumn.Name, LabelColumn.Name); /// - /// Continues the training of a using an already trained and returns + /// Continues the training of a using an already trained and returns /// a . /// public MulticlassPredictionTransformer Fit(IDataView trainData, MaximumEntropyModelParameters modelParameters) => TrainTransformer(trainData, initPredictor: modelParameters); [TlcModule.EntryPoint(Name = "Trainers.LogisticRegressionClassifier", - Desc = LbfgsMaximumEntropyTrainer.Summary, - UserName = LbfgsMaximumEntropyTrainer.UserNameValue, - ShortName = LbfgsMaximumEntropyTrainer.ShortName)] - internal static CommonOutputs.MulticlassClassificationOutput TrainMulticlass(IHostEnvironment env, LbfgsMaximumEntropyTrainer.Options input) + Desc = LbfgsMaximumEntropyMulticlassTrainer.Summary, + UserName = LbfgsMaximumEntropyMulticlassTrainer.UserNameValue, + ShortName = LbfgsMaximumEntropyMulticlassTrainer.ShortName)] + internal static CommonOutputs.MulticlassClassificationOutput TrainMulticlass(IHostEnvironment env, LbfgsMaximumEntropyMulticlassTrainer.Options input) { Contracts.CheckValue(env, nameof(env)); var host = env.Register("TrainLRMultiClass"); host.CheckValue(input, nameof(input)); EntryPointUtils.CheckInputArgs(host, input); - return TrainerEntryPointsUtils.Train(host, input, - () => new LbfgsMaximumEntropyTrainer(host, input), + return TrainerEntryPointsUtils.Train(host, input, + () => new LbfgsMaximumEntropyMulticlassTrainer(host, input), () => TrainerEntryPointsUtils.FindColumn(host, input.TrainingData.Schema, input.LabelColumnName), () => TrainerEntryPointsUtils.FindColumn(host, input.TrainingData.Schema, input.ExampleWeightColumnName)); } @@ -434,7 +434,7 @@ internal LinearMulticlassModelParametersBase(IHostEnvironment env, string name, /// /// Initializes a new instance of the class. - /// This constructor is called by to create the predictor. + /// This constructor is called by to create the predictor. /// /// The host environment. /// Registration name of this model's actual type. @@ -1196,6 +1196,6 @@ private protected override void SavePostTransformAsCode(TextWriter writer, strin /// private protected override JToken ApplyPfaPostTransform(JToken input) => PfaUtils.Call("m.link.softmax", input); - private protected override string GetTrainerName() => nameof(LbfgsMaximumEntropyTrainer); + private protected override string GetTrainerName() => nameof(LbfgsMaximumEntropyMulticlassTrainer); } } diff --git a/src/Microsoft.ML.StandardTrainers/Standard/MulticlassClassification/MetaMulticlassTrainer.cs b/src/Microsoft.ML.StandardTrainers/Standard/MulticlassClassification/MetaMulticlassTrainer.cs index f779206cc1..94d05b042a 100644 --- a/src/Microsoft.ML.StandardTrainers/Standard/MulticlassClassification/MetaMulticlassTrainer.cs +++ b/src/Microsoft.ML.StandardTrainers/Standard/MulticlassClassification/MetaMulticlassTrainer.cs @@ -14,7 +14,7 @@ namespace Microsoft.ML.Trainers { using TScalarTrainer = ITrainerEstimator>, IPredictorProducing>; - public abstract class MetaMulticlassClassificationTrainer : ITrainerEstimator, ITrainer + public abstract class MetaMulticlassTrainer : ITrainerEstimator, ITrainer where TTransformer : ISingleFeaturePredictionTransformer where TModel : class { @@ -52,7 +52,7 @@ internal abstract class OptionsBase public TrainerInfo Info { get; } /// - /// Initializes the from the class. + /// Initializes the from the class. /// /// The private instance of the . /// The legacy arguments class. @@ -60,7 +60,7 @@ internal abstract class OptionsBase /// The label column for the metalinear trainer and the binary trainer. /// The binary estimator. /// The calibrator. If a calibrator is not explicitly provided, it will default to - internal MetaMulticlassClassificationTrainer(IHostEnvironment env, OptionsBase options, string name, string labelColumn = null, + internal MetaMulticlassTrainer(IHostEnvironment env, OptionsBase options, string name, string labelColumn = null, TScalarTrainer singleEstimator = null, ICalibratorTrainer calibrator = null) { Host = Contracts.CheckRef(env, nameof(env)).Register(name); diff --git a/src/Microsoft.ML.StandardTrainers/Standard/MulticlassClassification/OneVersusAllTrainer.cs b/src/Microsoft.ML.StandardTrainers/Standard/MulticlassClassification/OneVersusAllTrainer.cs index 9f784d5d46..4a54baa2f8 100644 --- a/src/Microsoft.ML.StandardTrainers/Standard/MulticlassClassification/OneVersusAllTrainer.cs +++ b/src/Microsoft.ML.StandardTrainers/Standard/MulticlassClassification/OneVersusAllTrainer.cs @@ -38,7 +38,7 @@ namespace Microsoft.ML.Trainers using TScalarPredictor = IPredictorProducing; using TScalarTrainer = ITrainerEstimator>, IPredictorProducing>; - public sealed class OneVersusAllTrainer : MetaMulticlassClassificationTrainer, OneVersusAllModelParameters> + public sealed class OneVersusAllTrainer : MetaMulticlassTrainer, OneVersusAllModelParameters> { internal const string LoadNameValue = "OVA"; internal const string UserNameValue = "One-vs-All"; diff --git a/src/Microsoft.ML.StandardTrainers/Standard/MulticlassClassification/PairwiseCouplingTrainer.cs b/src/Microsoft.ML.StandardTrainers/Standard/MulticlassClassification/PairwiseCouplingTrainer.cs index 76676de507..7709267c7b 100644 --- a/src/Microsoft.ML.StandardTrainers/Standard/MulticlassClassification/PairwiseCouplingTrainer.cs +++ b/src/Microsoft.ML.StandardTrainers/Standard/MulticlassClassification/PairwiseCouplingTrainer.cs @@ -51,7 +51,7 @@ namespace Microsoft.ML.Trainers /// L-BFGS history for all classes *simultaneously*, rather than just one-by-one /// as would be needed for a one-versus-all classification model. /// - public sealed class PairwiseCouplingTrainer : MetaMulticlassClassificationTrainer, PairwiseCouplingModelParameters> + public sealed class PairwiseCouplingTrainer : MetaMulticlassTrainer, PairwiseCouplingModelParameters> { internal const string LoadNameValue = "PKPD"; internal const string UserNameValue = "Pairwise coupling (PKPD)"; diff --git a/src/Microsoft.ML.StandardTrainers/Standard/PoissonRegression/PoissonRegression.cs b/src/Microsoft.ML.StandardTrainers/Standard/PoissonRegression/PoissonRegression.cs index fad02030bf..b7d5ce4edd 100644 --- a/src/Microsoft.ML.StandardTrainers/Standard/PoissonRegression/PoissonRegression.cs +++ b/src/Microsoft.ML.StandardTrainers/Standard/PoissonRegression/PoissonRegression.cs @@ -60,7 +60,7 @@ public sealed class Options : OptionsBase /// Weight of L1 regularizer term. /// Weight of L2 regularizer term. /// Threshold for optimizer convergence. - /// Memory size for . Low=faster, less accurate. + /// Memory size for . Low=faster, less accurate. /// Enforce non-negative weights. internal LbfgsPoissonRegressionTrainer(IHostEnvironment env, string labelColumn = DefaultColumnNames.Label, diff --git a/src/Microsoft.ML.StandardTrainers/Standard/SdcaBinary.cs b/src/Microsoft.ML.StandardTrainers/Standard/SdcaBinary.cs index 0f16dc9eca..f59615ec74 100644 --- a/src/Microsoft.ML.StandardTrainers/Standard/SdcaBinary.cs +++ b/src/Microsoft.ML.StandardTrainers/Standard/SdcaBinary.cs @@ -1427,7 +1427,7 @@ public void Add(Double summand) /// SDCA is a general training algorithm for (generalized) linear models such as support vector machine, linear regression, logistic regression, /// and so on. SDCA binary classification trainer family includes several sealed members: /// (1) supports general loss functions and returns . - /// (2) essentially trains a regularized logistic regression model. Because logistic regression + /// (2) essentially trains a regularized logistic regression model. Because logistic regression /// naturally provide probability output, this generated model's type is . /// where is and is . /// @@ -1547,17 +1547,17 @@ private protected override BinaryPredictionTransformer MakeTra /// linear function to a . /// /// - public sealed class SdcaCalibratedBinaryTrainer : + public sealed class SdcaLogisticRegressionBinaryTrainer : SdcaBinaryTrainerBase> { /// - /// Options for the . + /// Options for the . /// public sealed class Options : BinaryOptionsBase { } - internal SdcaCalibratedBinaryTrainer(IHostEnvironment env, + internal SdcaLogisticRegressionBinaryTrainer(IHostEnvironment env, string labelColumnName = DefaultColumnNames.Label, string featureColumnName = DefaultColumnNames.Features, string weightColumnName = null, @@ -1568,7 +1568,7 @@ internal SdcaCalibratedBinaryTrainer(IHostEnvironment env, { } - internal SdcaCalibratedBinaryTrainer(IHostEnvironment env, Options options) + internal SdcaLogisticRegressionBinaryTrainer(IHostEnvironment env, Options options) : base(env, options, new LogLoss()) { } @@ -1674,7 +1674,7 @@ private protected override SchemaShape.Column[] ComputeSdcaBinaryClassifierSchem } /// - /// Comparing with , + /// Comparing with , /// directly outputs a built from /// the learned weights and bias without calibration. /// @@ -1941,7 +1941,7 @@ private protected override BinaryPredictionTransformer MakeTransformer(T => new BinaryPredictionTransformer(Host, model, trainSchema, FeatureColumn.Name); /// - /// Continues the training of a using an already trained and returns a . + /// Continues the training of a using an already trained and returns a . /// public BinaryPredictionTransformer Fit(IDataView trainData, LinearModelParameters modelParameters) => TrainTransformer(trainData, initPredictor: modelParameters); diff --git a/src/Microsoft.ML.StandardTrainers/Standard/SdcaMulticlass.cs b/src/Microsoft.ML.StandardTrainers/Standard/SdcaMulticlass.cs index ad6f87d10e..7437746154 100644 --- a/src/Microsoft.ML.StandardTrainers/Standard/SdcaMulticlass.cs +++ b/src/Microsoft.ML.StandardTrainers/Standard/SdcaMulticlass.cs @@ -16,11 +16,11 @@ using Microsoft.ML.Runtime; using Microsoft.ML.Trainers; -[assembly: LoadableClass(SdcaCalibratedMulticlassTrainer.Summary, typeof(SdcaCalibratedMulticlassTrainer), typeof(SdcaCalibratedMulticlassTrainer.Options), +[assembly: LoadableClass(SdcaMaximumEntropyMulticlassTrainer.Summary, typeof(SdcaMaximumEntropyMulticlassTrainer), typeof(SdcaMaximumEntropyMulticlassTrainer.Options), new[] { typeof(SignatureMulticlassClassifierTrainer), typeof(SignatureTrainer), typeof(SignatureFeatureScorerTrainer) }, - SdcaCalibratedMulticlassTrainer.UserNameValue, - SdcaCalibratedMulticlassTrainer.LoadNameValue, - SdcaCalibratedMulticlassTrainer.ShortName)] + SdcaMaximumEntropyMulticlassTrainer.UserNameValue, + SdcaMaximumEntropyMulticlassTrainer.LoadNameValue, + SdcaMaximumEntropyMulticlassTrainer.ShortName)] namespace Microsoft.ML.Trainers { @@ -28,7 +28,7 @@ namespace Microsoft.ML.Trainers /// The for training a multiclass linear classification model using the stochastic dual coordinate ascent method. /// /// - public abstract class SdcaMulticlassClassificationTrainerBase : SdcaTrainerBase.MulticlassOptions, MulticlassPredictionTransformer, TModel> + public abstract class SdcaMulticlassTrainerBase : SdcaTrainerBase.MulticlassOptions, MulticlassPredictionTransformer, TModel> where TModel : class { internal const string LoadNameValue = "SDCAMC"; @@ -37,7 +37,7 @@ public abstract class SdcaMulticlassClassificationTrainerBase : SdcaTrai internal const string Summary = "The SDCA linear multi-class classification trainer."; /// - /// Options for the . + /// Options for the . /// public class MulticlassOptions : OptionsBase { @@ -52,9 +52,9 @@ public class MulticlassOptions : OptionsBase /// /// Internal state of or storage of - /// a customized loss passed in. cannot set this field because its + /// a customized loss passed in. cannot set this field because its /// loss function is always . In addition, and are - /// the two fields used to determined the actual loss function inside the training framework of . + /// the two fields used to determined the actual loss function inside the training framework of . /// internal ISupportSdcaClassificationLoss InternalLoss; } @@ -64,7 +64,7 @@ public class MulticlassOptions : OptionsBase private protected override PredictionKind PredictionKind => PredictionKind.MulticlassClassification; /// - /// Initializes a new instance of . + /// Initializes a new instance of . /// /// The environment to use. /// The label, or dependent variable. @@ -74,7 +74,7 @@ public class MulticlassOptions : OptionsBase /// The L2 regularization hyperparameter. /// The L1 regularization hyperparameter. Higher values will tend to lead to more sparse model. /// The maximum number of passes to perform over the data. - internal SdcaMulticlassClassificationTrainerBase(IHostEnvironment env, + internal SdcaMulticlassTrainerBase(IHostEnvironment env, string labelColumn = DefaultColumnNames.Label, string featureColumn = DefaultColumnNames.Features, string weights = null, @@ -91,7 +91,7 @@ internal SdcaMulticlassClassificationTrainerBase(IHostEnvironment env, Loss = _loss; } - internal SdcaMulticlassClassificationTrainerBase(IHostEnvironment env, MulticlassOptions options, + internal SdcaMulticlassTrainerBase(IHostEnvironment env, MulticlassOptions options, string featureColumn, string labelColumn, string weightColumn = null) : base(env, options, TrainerUtils.MakeU4ScalarColumn(labelColumn), TrainerUtils.MakeR4ScalarWeightColumn(weightColumn)) { @@ -102,7 +102,7 @@ internal SdcaMulticlassClassificationTrainerBase(IHostEnvironment env, Multiclas Loss = _loss; } - internal SdcaMulticlassClassificationTrainerBase(IHostEnvironment env, MulticlassOptions options) + internal SdcaMulticlassTrainerBase(IHostEnvironment env, MulticlassOptions options) : this(env, options, options.FeatureColumnName, options.LabelColumnName) { } @@ -435,13 +435,13 @@ private protected override float GetInstanceWeight(FloatLabelCursor cursor) /// The trained model produces probabilities of classes. /// /// - public sealed class SdcaCalibratedMulticlassTrainer : SdcaMulticlassClassificationTrainerBase + public sealed class SdcaMaximumEntropyMulticlassTrainer : SdcaMulticlassTrainerBase { public sealed class Options : MulticlassOptions { } - internal SdcaCalibratedMulticlassTrainer(IHostEnvironment env, + internal SdcaMaximumEntropyMulticlassTrainer(IHostEnvironment env, string labelColumn = DefaultColumnNames.Label, string featureColumn = DefaultColumnNames.Features, string weights = null, @@ -453,13 +453,13 @@ internal SdcaCalibratedMulticlassTrainer(IHostEnvironment env, { } - internal SdcaCalibratedMulticlassTrainer(IHostEnvironment env, Options options, + internal SdcaMaximumEntropyMulticlassTrainer(IHostEnvironment env, Options options, string featureColumn, string labelColumn, string weightColumn = null) : base(env, options: options, featureColumn: featureColumn, labelColumn: labelColumn, weightColumn: weightColumn) { } - internal SdcaCalibratedMulticlassTrainer(IHostEnvironment env, Options options) + internal SdcaMaximumEntropyMulticlassTrainer(IHostEnvironment env, Options options) : base(env, options) { } @@ -485,7 +485,7 @@ private protected override MulticlassPredictionTransformer /// - public sealed class SdcaNonCalibratedMulticlassTrainer : SdcaMulticlassClassificationTrainerBase + public sealed class SdcaNonCalibratedMulticlassTrainer : SdcaMulticlassTrainerBase { public sealed class Options : MulticlassOptions { @@ -547,18 +547,18 @@ private protected override MulticlassPredictionTransformer(host, input, - () => new SdcaCalibratedMulticlassTrainer(host, input), + return TrainerEntryPointsUtils.Train(host, input, + () => new SdcaMaximumEntropyMulticlassTrainer(host, input), () => TrainerEntryPointsUtils.FindColumn(host, input.TrainingData.Schema, input.LabelColumnName)); } } diff --git a/src/Microsoft.ML.StandardTrainers/StandardTrainersCatalog.cs b/src/Microsoft.ML.StandardTrainers/StandardTrainersCatalog.cs index c29d0f0888..0047276e78 100644 --- a/src/Microsoft.ML.StandardTrainers/StandardTrainersCatalog.cs +++ b/src/Microsoft.ML.StandardTrainers/StandardTrainersCatalog.cs @@ -9,7 +9,7 @@ namespace Microsoft.ML { - using LROptions = LbfgsLogisticRegressionTrainer.Options; + using LROptions = LbfgsLogisticRegressionBinaryTrainer.Options; /// /// TrainerEstimator extension methods. @@ -181,7 +181,7 @@ public static SdcaRegressionTrainer Sdca(this RegressionCatalog.RegressionTraine } /// - /// Predict a target using a linear classification model trained with . + /// Predict a target using a linear classification model trained with . /// /// The binary classification catalog trainer object. /// The name of the label column. @@ -196,7 +196,7 @@ public static SdcaRegressionTrainer Sdca(this RegressionCatalog.RegressionTraine /// [!code-csharp[SDCA](~/../docs/samples/docs/samples/Microsoft.ML.Samples/Dynamic/Trainers/BinaryClassification/StochasticDualCoordinateAscent.cs)] /// ]]> /// - public static SdcaCalibratedBinaryTrainer SdcaCalibrated( + public static SdcaLogisticRegressionBinaryTrainer SdcaLogisticRegression( this BinaryClassificationCatalog.BinaryClassificationTrainers catalog, string labelColumnName = DefaultColumnNames.Label, string featureColumnName = DefaultColumnNames.Features, @@ -207,11 +207,11 @@ public static SdcaCalibratedBinaryTrainer SdcaCalibrated( { Contracts.CheckValue(catalog, nameof(catalog)); var env = CatalogUtils.GetEnvironment(catalog); - return new SdcaCalibratedBinaryTrainer(env, labelColumnName, featureColumnName, exampleWeightColumnName, l2Regularization, l1Regularization, maximumNumberOfIterations); + return new SdcaLogisticRegressionBinaryTrainer(env, labelColumnName, featureColumnName, exampleWeightColumnName, l2Regularization, l1Regularization, maximumNumberOfIterations); } /// - /// Predict a target using a linear classification model trained with and advanced options. + /// Predict a target using a linear classification model trained with and advanced options. /// /// The binary classification catalog trainer object. /// Trainer options. @@ -221,15 +221,15 @@ public static SdcaCalibratedBinaryTrainer SdcaCalibrated( /// [!code-csharp[SDCA](~/../docs/samples/docs/samples/Microsoft.ML.Samples/Dynamic/Trainers/BinaryClassification/StochasticDualCoordinateAscentWithOptions.cs)] /// ]]> /// - public static SdcaCalibratedBinaryTrainer SdcaCalibrated( + public static SdcaLogisticRegressionBinaryTrainer SdcaLogisticRegression( this BinaryClassificationCatalog.BinaryClassificationTrainers catalog, - SdcaCalibratedBinaryTrainer.Options options) + SdcaLogisticRegressionBinaryTrainer.Options options) { Contracts.CheckValue(catalog, nameof(catalog)); Contracts.CheckValue(options, nameof(options)); var env = CatalogUtils.GetEnvironment(catalog); - return new SdcaCalibratedBinaryTrainer(env, options); + return new SdcaLogisticRegressionBinaryTrainer(env, options); } /// @@ -281,7 +281,7 @@ public static SdcaNonCalibratedBinaryTrainer SdcaNonCalibrated( } /// - /// Predict a target using a maximum entropy classification model trained with . + /// Predict a target using a maximum entropy classification model trained with . /// /// The multiclass classification catalog trainer object. /// The name of the label column. @@ -296,7 +296,7 @@ public static SdcaNonCalibratedBinaryTrainer SdcaNonCalibrated( /// [!code-csharp[SDCA](~/../docs/samples/docs/samples/Microsoft.ML.Samples/Dynamic/Trainers/MulticlassClassification/StochasticDualCoordinateAscent.cs)] /// ]]> /// - public static SdcaCalibratedMulticlassTrainer SdcaCalibrated(this MulticlassClassificationCatalog.MulticlassClassificationTrainers catalog, + public static SdcaMaximumEntropyMulticlassTrainer SdcaMaximumEntropy(this MulticlassClassificationCatalog.MulticlassClassificationTrainers catalog, string labelColumnName = DefaultColumnNames.Label, string featureColumnName = DefaultColumnNames.Features, string exampleWeightColumnName = null, @@ -306,11 +306,11 @@ public static SdcaCalibratedMulticlassTrainer SdcaCalibrated(this MulticlassClas { Contracts.CheckValue(catalog, nameof(catalog)); var env = CatalogUtils.GetEnvironment(catalog); - return new SdcaCalibratedMulticlassTrainer(env, labelColumnName, featureColumnName, exampleWeightColumnName, l2Regularization, l1Regularization, maximumNumberOfIterations); + return new SdcaMaximumEntropyMulticlassTrainer(env, labelColumnName, featureColumnName, exampleWeightColumnName, l2Regularization, l1Regularization, maximumNumberOfIterations); } /// - /// Predict a target using a maximum entropy classification model trained with and advanced options. + /// Predict a target using a maximum entropy classification model trained with and advanced options. /// /// The multiclass classification catalog trainer object. /// Trainer options. @@ -320,14 +320,14 @@ public static SdcaCalibratedMulticlassTrainer SdcaCalibrated(this MulticlassClas /// [!code-csharp[SDCA](~/../docs/samples/docs/samples/Microsoft.ML.Samples/Dynamic/Trainers/MulticlassClassification/StochasticDualCoordinateAscentWithOptions.cs)] /// ]]> /// - public static SdcaCalibratedMulticlassTrainer SdcaCalibrated(this MulticlassClassificationCatalog.MulticlassClassificationTrainers catalog, - SdcaCalibratedMulticlassTrainer.Options options) + public static SdcaMaximumEntropyMulticlassTrainer SdcaMaximumEntropy(this MulticlassClassificationCatalog.MulticlassClassificationTrainers catalog, + SdcaMaximumEntropyMulticlassTrainer.Options options) { Contracts.CheckValue(catalog, nameof(catalog)); Contracts.CheckValue(options, nameof(options)); var env = CatalogUtils.GetEnvironment(catalog); - return new SdcaCalibratedMulticlassTrainer(env, options); + return new SdcaMaximumEntropyMulticlassTrainer(env, options); } /// @@ -498,7 +498,7 @@ public static OnlineGradientDescentTrainer OnlineGradientDescent(this Regression } /// - /// Predict a target using a linear binary classification model trained with the trainer. + /// Predict a target using a linear binary classification model trained with the trainer. /// /// The binary classification catalog trainer object. /// The name of the label column. @@ -507,7 +507,7 @@ public static OnlineGradientDescentTrainer OnlineGradientDescent(this Regression /// Enforce non-negative weights. /// The L1 regularization hyperparameter. Higher values will tend to lead to more sparse model. /// The L2 weight for regularization. - /// Memory size for . Low=faster, less accurate. + /// Memory size for . Low=faster, less accurate. /// Threshold for optimizer convergence. /// /// @@ -516,7 +516,7 @@ public static OnlineGradientDescentTrainer OnlineGradientDescent(this Regression /// ]]> /// /// - public static LbfgsLogisticRegressionTrainer LbfgsLogisticRegression(this BinaryClassificationCatalog.BinaryClassificationTrainers catalog, + public static LbfgsLogisticRegressionBinaryTrainer LbfgsLogisticRegression(this BinaryClassificationCatalog.BinaryClassificationTrainers catalog, string labelColumnName = DefaultColumnNames.Label, string featureColumnName = DefaultColumnNames.Features, string exampleWeightColumnName = null, @@ -528,21 +528,21 @@ public static LbfgsLogisticRegressionTrainer LbfgsLogisticRegression(this Binary { Contracts.CheckValue(catalog, nameof(catalog)); var env = CatalogUtils.GetEnvironment(catalog); - return new LbfgsLogisticRegressionTrainer(env, labelColumnName, featureColumnName, exampleWeightColumnName, l1Regularization, l2Regularization, optimizationTolerance, historySize, enforceNonNegativity); + return new LbfgsLogisticRegressionBinaryTrainer(env, labelColumnName, featureColumnName, exampleWeightColumnName, l1Regularization, l2Regularization, optimizationTolerance, historySize, enforceNonNegativity); } /// - /// Predict a target using a linear binary classification model trained with the trainer. + /// Predict a target using a linear binary classification model trained with the trainer. /// /// The binary classification catalog trainer object. /// Advanced arguments to the algorithm. - public static LbfgsLogisticRegressionTrainer LbfgsLogisticRegression(this BinaryClassificationCatalog.BinaryClassificationTrainers catalog, LROptions options) + public static LbfgsLogisticRegressionBinaryTrainer LbfgsLogisticRegression(this BinaryClassificationCatalog.BinaryClassificationTrainers catalog, LROptions options) { Contracts.CheckValue(catalog, nameof(catalog)); Contracts.CheckValue(options, nameof(options)); var env = CatalogUtils.GetEnvironment(catalog); - return new LbfgsLogisticRegressionTrainer(env, options); + return new LbfgsLogisticRegressionBinaryTrainer(env, options); } /// @@ -599,7 +599,7 @@ public static LbfgsPoissonRegressionTrainer LbfgsPoissonRegression(this Regressi } /// - /// Predict a target using a maximum entropy classification model trained with the L-BFGS method implemented in . + /// Predict a target using a maximum entropy classification model trained with the L-BFGS method implemented in . /// /// The . /// The name of the label column. @@ -608,9 +608,9 @@ public static LbfgsPoissonRegressionTrainer LbfgsPoissonRegression(this Regressi /// Enforce non-negative weights. /// The L1 regularization hyperparameter. Higher values will tend to lead to more sparse model. /// The L2 weight for regularization. - /// Memory size for . Low=faster, less accurate. + /// Memory size for . Low=faster, less accurate. /// Threshold for optimizer convergence. - public static LbfgsMaximumEntropyTrainer LbfgsMaximumEntropy(this MulticlassClassificationCatalog.MulticlassClassificationTrainers catalog, + public static LbfgsMaximumEntropyMulticlassTrainer LbfgsMaximumEntropy(this MulticlassClassificationCatalog.MulticlassClassificationTrainers catalog, string labelColumnName = DefaultColumnNames.Label, string featureColumnName = DefaultColumnNames.Features, string exampleWeightColumnName = null, @@ -622,22 +622,22 @@ public static LbfgsMaximumEntropyTrainer LbfgsMaximumEntropy(this MulticlassClas { Contracts.CheckValue(catalog, nameof(catalog)); var env = CatalogUtils.GetEnvironment(catalog); - return new LbfgsMaximumEntropyTrainer(env, labelColumnName, featureColumnName, exampleWeightColumnName, l1Regularization, l2Regularization, optimizationTolerance, historySize, enforceNonNegativity); + return new LbfgsMaximumEntropyMulticlassTrainer(env, labelColumnName, featureColumnName, exampleWeightColumnName, l1Regularization, l2Regularization, optimizationTolerance, historySize, enforceNonNegativity); } /// - /// Predict a target using a maximum entropy classification model trained with the L-BFGS method implemented in . + /// Predict a target using a maximum entropy classification model trained with the L-BFGS method implemented in . /// /// The . /// Advanced arguments to the algorithm. - public static LbfgsMaximumEntropyTrainer LbfgsMaximumEntropy(this MulticlassClassificationCatalog.MulticlassClassificationTrainers catalog, - LbfgsMaximumEntropyTrainer.Options options) + public static LbfgsMaximumEntropyMulticlassTrainer LbfgsMaximumEntropy(this MulticlassClassificationCatalog.MulticlassClassificationTrainers catalog, + LbfgsMaximumEntropyMulticlassTrainer.Options options) { Contracts.CheckValue(catalog, nameof(catalog)); Contracts.CheckValue(options, nameof(options)); var env = CatalogUtils.GetEnvironment(catalog); - return new LbfgsMaximumEntropyTrainer(env, options); + return new LbfgsMaximumEntropyMulticlassTrainer(env, options); } /// diff --git a/src/Microsoft.ML.StaticPipe/LbfgsStatic.cs b/src/Microsoft.ML.StaticPipe/LbfgsStatic.cs index 3b984208fc..47086d0933 100644 --- a/src/Microsoft.ML.StaticPipe/LbfgsStatic.cs +++ b/src/Microsoft.ML.StaticPipe/LbfgsStatic.cs @@ -9,7 +9,7 @@ namespace Microsoft.ML.StaticPipe { - using Options = LbfgsLogisticRegressionTrainer.Options; + using Options = LbfgsLogisticRegressionBinaryTrainer.Options; /// /// Binary Classification trainer estimators. @@ -17,7 +17,7 @@ namespace Microsoft.ML.StaticPipe public static class LbfgsBinaryStaticExtensions { /// - /// Predict a target using a linear binary classification model trained with the trainer. + /// Predict a target using a linear binary classification model trained with the trainer. /// /// The binary classification catalog trainer object. /// The label, or dependent variable. @@ -26,7 +26,7 @@ public static class LbfgsBinaryStaticExtensions /// Enforce non-negative weights. /// Weight of L1 regularization term. /// Weight of L2 regularization term. - /// Memory size for . Low=faster, less accurate. + /// Memory size for . Low=faster, less accurate. /// Threshold for optimizer convergence. /// A delegate that is called every time the /// method is called on the @@ -50,7 +50,7 @@ public static (Scalar score, Scalar probability, Scalar pred var rec = new TrainerEstimatorReconciler.BinaryClassifier( (env, labelName, featuresName, weightsName) => { - var trainer = new LbfgsLogisticRegressionTrainer(env, labelName, featuresName, weightsName, + var trainer = new LbfgsLogisticRegressionBinaryTrainer(env, labelName, featuresName, weightsName, l1Regularization, l2Regularization, optimizationTolerance, historySize, enforceNonNegativity); if (onFit != null) @@ -63,7 +63,7 @@ public static (Scalar score, Scalar probability, Scalar pred } /// - /// Predict a target using a linear binary classification model trained with the trainer. + /// Predict a target using a linear binary classification model trained with the trainer. /// /// The binary classification catalog trainer object. /// The label, or dependent variable. @@ -95,7 +95,7 @@ public static (Scalar score, Scalar probability, Scalar pred options.FeatureColumnName = featuresName; options.ExampleWeightColumnName = weightsName; - var trainer = new LbfgsLogisticRegressionTrainer(env, options); + var trainer = new LbfgsLogisticRegressionBinaryTrainer(env, options); if (onFit != null) return trainer.WithOnFitDelegate(trans => onFit(trans.Model)); @@ -113,7 +113,7 @@ public static (Scalar score, Scalar probability, Scalar pred public static class LbfgsRegressionStaticExtensions { /// - /// Predict a target using a linear regression model trained with the trainer. + /// Predict a target using a linear regression model trained with the trainer. /// /// The regression catalog trainer object. /// The label, or dependent variable. @@ -122,7 +122,7 @@ public static class LbfgsRegressionStaticExtensions /// Enforce non-negative weights. /// Weight of L1 regularization term. /// Weight of L2 regularization term. - /// Memory size for . Low=faster, less accurate. + /// Memory size for . Low=faster, less accurate. /// Threshold for optimizer convergence. /// A delegate that is called every time the /// method is called on the @@ -159,7 +159,7 @@ public static Scalar LbfgsPoissonRegression(this RegressionCatalog.Regres } /// - /// Predict a target using a linear regression model trained with the trainer. + /// Predict a target using a linear regression model trained with the trainer. /// /// The regression catalog trainer object. /// The label, or dependent variable. @@ -209,7 +209,7 @@ public static Scalar LbfgsPoissonRegression(this RegressionCatalog.Regres public static class LbfgsMulticlassStaticExtensions { /// - /// Predict a target using a maximum entropy classification model trained with the L-BFGS method implemented in . + /// Predict a target using a maximum entropy classification model trained with the L-BFGS method implemented in . /// /// The multiclass classification catalog trainer object. /// The label, or dependent variable. @@ -218,7 +218,7 @@ public static class LbfgsMulticlassStaticExtensions /// Enforce non-negative weights. /// Weight of L1 regularization term. /// Weight of L2 regularization term. - /// Memory size for . Low=faster, less accurate. + /// Memory size for . Low=faster, less accurate. /// Threshold for optimizer convergence. /// A delegate that is called every time the /// method is called on the @@ -243,7 +243,7 @@ public static (Vector score, Key predictedLabel) var rec = new TrainerEstimatorReconciler.MulticlassClassificationReconciler( (env, labelName, featuresName, weightsName) => { - var trainer = new LbfgsMaximumEntropyTrainer(env, labelName, featuresName, weightsName, + var trainer = new LbfgsMaximumEntropyMulticlassTrainer(env, labelName, featuresName, weightsName, l1Regularization, l2Regularization, optimizationTolerance, historySize, enforceNonNegativity); if (onFit != null) @@ -255,7 +255,7 @@ public static (Vector score, Key predictedLabel) } /// - /// Predict a target using a maximum entropy classification model trained with the L-BFGS method implemented in . + /// Predict a target using a maximum entropy classification model trained with the L-BFGS method implemented in . /// /// The multiclass classification catalog trainer object. /// The label, or dependent variable. @@ -273,7 +273,7 @@ public static (Vector score, Key predictedLabel) Key label, Vector features, Scalar weights, - LbfgsMaximumEntropyTrainer.Options options, + LbfgsMaximumEntropyMulticlassTrainer.Options options, Action onFit = null) { Contracts.CheckValue(label, nameof(label)); @@ -288,7 +288,7 @@ public static (Vector score, Key predictedLabel) options.FeatureColumnName = featuresName; options.ExampleWeightColumnName = weightsName; - var trainer = new LbfgsMaximumEntropyTrainer(env, options); + var trainer = new LbfgsMaximumEntropyMulticlassTrainer(env, options); if (onFit != null) return trainer.WithOnFitDelegate(trans => onFit(trans.Model)); diff --git a/src/Microsoft.ML.StaticPipe/SdcaStaticExtensions.cs b/src/Microsoft.ML.StaticPipe/SdcaStaticExtensions.cs index 326dd54dec..58ebcc798b 100644 --- a/src/Microsoft.ML.StaticPipe/SdcaStaticExtensions.cs +++ b/src/Microsoft.ML.StaticPipe/SdcaStaticExtensions.cs @@ -154,7 +154,7 @@ public static (Scalar score, Scalar probability, Scalar pred var rec = new TrainerEstimatorReconciler.BinaryClassifier( (env, labelName, featuresName, weightsName) => { - var trainer = new SdcaCalibratedBinaryTrainer(env, labelName, featuresName, weightsName, l2Regularization, l1Threshold, numberOfIterations); + var trainer = new SdcaLogisticRegressionBinaryTrainer(env, labelName, featuresName, weightsName, l2Regularization, l1Threshold, numberOfIterations); if (onFit != null) { return trainer.WithOnFitDelegate(trans => @@ -192,7 +192,7 @@ public static (Scalar score, Scalar probability, Scalar pred public static (Scalar score, Scalar probability, Scalar predictedLabel) Sdca( this BinaryClassificationCatalog.BinaryClassificationTrainers catalog, Scalar label, Vector features, Scalar weights, - SdcaCalibratedBinaryTrainer.Options options, + SdcaLogisticRegressionBinaryTrainer.Options options, Action> onFit = null) { Contracts.CheckValue(label, nameof(label)); @@ -207,7 +207,7 @@ public static (Scalar score, Scalar probability, Scalar pred options.LabelColumnName = labelName; options.FeatureColumnName = featuresName; - var trainer = new SdcaCalibratedBinaryTrainer(env, options); + var trainer = new SdcaLogisticRegressionBinaryTrainer(env, options); if (onFit != null) { return trainer.WithOnFitDelegate(trans => @@ -365,7 +365,7 @@ public static (Vector score, Key predictedLabel) Sdca( var rec = new TrainerEstimatorReconciler.MulticlassClassificationReconciler( (env, labelName, featuresName, weightsName) => { - var trainer = new SdcaCalibratedMulticlassTrainer(env, labelName, featuresName, weightsName, l2Regularization, l1Threshold, numberOfIterations); + var trainer = new SdcaMaximumEntropyMulticlassTrainer(env, labelName, featuresName, weightsName, l2Regularization, l1Threshold, numberOfIterations); if (onFit != null) return trainer.WithOnFitDelegate(trans => onFit(trans.Model)); return trainer; @@ -393,7 +393,7 @@ public static (Vector score, Key predictedLabel) Sdca( Key label, Vector features, Scalar weights, - SdcaCalibratedMulticlassTrainer.Options options, + SdcaMaximumEntropyMulticlassTrainer.Options options, Action onFit = null) { Contracts.CheckValue(label, nameof(label)); @@ -408,7 +408,7 @@ public static (Vector score, Key predictedLabel) Sdca( options.LabelColumnName = labelName; options.FeatureColumnName = featuresName; - var trainer = new SdcaCalibratedMulticlassTrainer(env, options); + var trainer = new SdcaMaximumEntropyMulticlassTrainer(env, options); if (onFit != null) return trainer.WithOnFitDelegate(trans => onFit(trans.Model)); return trainer; diff --git a/test/BaselineOutput/Common/EntryPoints/core_ep-list.tsv b/test/BaselineOutput/Common/EntryPoints/core_ep-list.tsv index d85bb468d4..6d6714bc31 100644 --- a/test/BaselineOutput/Common/EntryPoints/core_ep-list.tsv +++ b/test/BaselineOutput/Common/EntryPoints/core_ep-list.tsv @@ -58,18 +58,18 @@ Trainers.LightGbmClassifier Train a LightGBM multi class model. Microsoft.ML.Tra Trainers.LightGbmRanker Train a LightGBM ranking model. Microsoft.ML.Trainers.LightGbm.LightGbm TrainRanking Microsoft.ML.Trainers.LightGbm.LightGbmRankingTrainer+Options Microsoft.ML.EntryPoints.CommonOutputs+RankingOutput Trainers.LightGbmRegressor LightGBM Regression Microsoft.ML.Trainers.LightGbm.LightGbm TrainRegression Microsoft.ML.Trainers.LightGbm.LightGbmRegressionTrainer+Options Microsoft.ML.EntryPoints.CommonOutputs+RegressionOutput Trainers.LinearSvmBinaryClassifier Train a linear SVM. Microsoft.ML.Trainers.LinearSvmTrainer TrainLinearSvm Microsoft.ML.Trainers.LinearSvmTrainer+Options Microsoft.ML.EntryPoints.CommonOutputs+BinaryClassificationOutput -Trainers.LogisticRegressionBinaryClassifier Logistic Regression is a method in statistics used to predict the probability of occurrence of an event and can be used as a classification algorithm. The algorithm predicts the probability of occurrence of an event by fitting data to a logistical function. Microsoft.ML.Trainers.LbfgsLogisticRegressionTrainer TrainBinary Microsoft.ML.Trainers.LbfgsLogisticRegressionTrainer+Options Microsoft.ML.EntryPoints.CommonOutputs+BinaryClassificationOutput -Trainers.LogisticRegressionClassifier Maximum entrypy classification is a method in statistics used to predict the probabilities of parallel events. The model predicts the probabilities of parallel events by fitting data to a softmax function. Microsoft.ML.Trainers.LbfgsMaximumEntropyTrainer TrainMulticlass Microsoft.ML.Trainers.LbfgsMaximumEntropyTrainer+Options Microsoft.ML.EntryPoints.CommonOutputs+MulticlassClassificationOutput +Trainers.LogisticRegressionBinaryClassifier Logistic Regression is a method in statistics used to predict the probability of occurrence of an event and can be used as a classification algorithm. The algorithm predicts the probability of occurrence of an event by fitting data to a logistical function. Microsoft.ML.Trainers.LbfgsLogisticRegressionBinaryTrainer TrainBinary Microsoft.ML.Trainers.LbfgsLogisticRegressionBinaryTrainer+Options Microsoft.ML.EntryPoints.CommonOutputs+BinaryClassificationOutput +Trainers.LogisticRegressionClassifier Maximum entrypy classification is a method in statistics used to predict the probabilities of parallel events. The model predicts the probabilities of parallel events by fitting data to a softmax function. Microsoft.ML.Trainers.LbfgsMaximumEntropyMulticlassTrainer TrainMulticlass Microsoft.ML.Trainers.LbfgsMaximumEntropyMulticlassTrainer+Options Microsoft.ML.EntryPoints.CommonOutputs+MulticlassClassificationOutput Trainers.NaiveBayesClassifier Train a MulticlassNaiveBayesTrainer. Microsoft.ML.Trainers.NaiveBayesMulticlassTrainer TrainMulticlassNaiveBayesTrainer Microsoft.ML.Trainers.NaiveBayesMulticlassTrainer+Options Microsoft.ML.EntryPoints.CommonOutputs+MulticlassClassificationOutput Trainers.OnlineGradientDescentRegressor Train a Online gradient descent perceptron. Microsoft.ML.Trainers.OnlineGradientDescentTrainer TrainRegression Microsoft.ML.Trainers.OnlineGradientDescentTrainer+Options Microsoft.ML.EntryPoints.CommonOutputs+RegressionOutput Trainers.OrdinaryLeastSquaresRegressor Train an OLS regression model. Microsoft.ML.Trainers.OlsTrainer TrainRegression Microsoft.ML.Trainers.OlsTrainer+Options Microsoft.ML.EntryPoints.CommonOutputs+RegressionOutput Trainers.PcaAnomalyDetector Train an PCA Anomaly model. Microsoft.ML.Trainers.RandomizedPcaTrainer TrainPcaAnomaly Microsoft.ML.Trainers.RandomizedPcaTrainer+Options Microsoft.ML.EntryPoints.CommonOutputs+AnomalyDetectionOutput Trainers.PoissonRegressor Train an Poisson regression model. Microsoft.ML.Trainers.LbfgsPoissonRegressionTrainer TrainRegression Microsoft.ML.Trainers.LbfgsPoissonRegressionTrainer+Options Microsoft.ML.EntryPoints.CommonOutputs+RegressionOutput Trainers.StochasticDualCoordinateAscentBinaryClassifier Train an SDCA binary model. Microsoft.ML.Trainers.Sdca TrainBinary Microsoft.ML.Trainers.LegacySdcaBinaryTrainer+Options Microsoft.ML.EntryPoints.CommonOutputs+BinaryClassificationOutput -Trainers.StochasticDualCoordinateAscentClassifier The SDCA linear multi-class classification trainer. Microsoft.ML.Trainers.Sdca TrainMulticlass Microsoft.ML.Trainers.SdcaCalibratedMulticlassTrainer+Options Microsoft.ML.EntryPoints.CommonOutputs+MulticlassClassificationOutput +Trainers.StochasticDualCoordinateAscentClassifier The SDCA linear multi-class classification trainer. Microsoft.ML.Trainers.Sdca TrainMulticlass Microsoft.ML.Trainers.SdcaMaximumEntropyMulticlassTrainer+Options Microsoft.ML.EntryPoints.CommonOutputs+MulticlassClassificationOutput Trainers.StochasticDualCoordinateAscentRegressor The SDCA linear regression trainer. Microsoft.ML.Trainers.Sdca TrainRegression Microsoft.ML.Trainers.SdcaRegressionTrainer+Options Microsoft.ML.EntryPoints.CommonOutputs+RegressionOutput Trainers.StochasticGradientDescentBinaryClassifier Train an Hogwild SGD binary model. Microsoft.ML.Trainers.LegacySgdBinaryTrainer TrainBinary Microsoft.ML.Trainers.LegacySgdBinaryTrainer+Options Microsoft.ML.EntryPoints.CommonOutputs+BinaryClassificationOutput -Trainers.SymSgdBinaryClassifier Train a symbolic SGD. Microsoft.ML.Trainers.SymbolicSgdTrainer TrainSymSgd Microsoft.ML.Trainers.SymbolicSgdTrainer+Options Microsoft.ML.EntryPoints.CommonOutputs+BinaryClassificationOutput +Trainers.SymSgdBinaryClassifier Train a symbolic SGD. Microsoft.ML.Trainers.SymbolicSgdLogisticRegressionBinaryTrainer TrainSymSgd Microsoft.ML.Trainers.SymbolicSgdLogisticRegressionBinaryTrainer+Options Microsoft.ML.EntryPoints.CommonOutputs+BinaryClassificationOutput Transforms.ApproximateBootstrapSampler Approximate bootstrap sampling. Microsoft.ML.Transforms.BootstrapSample GetSample Microsoft.ML.Transforms.BootstrapSamplingTransformer+Options Microsoft.ML.EntryPoints.CommonOutputs+TransformOutput Transforms.BinaryPredictionScoreColumnsRenamer For binary prediction, it renames the PredictedLabel and Score columns to include the name of the positive class. Microsoft.ML.EntryPoints.ScoreModel RenameBinaryPredictionScoreColumns Microsoft.ML.EntryPoints.ScoreModel+RenameBinaryPredictionScoreColumnsInput Microsoft.ML.EntryPoints.CommonOutputs+TransformOutput Transforms.BinNormalizer The values are assigned into equidensity bins and a value is mapped to its bin_number/number_of_bins. Microsoft.ML.Data.Normalize Bin Microsoft.ML.Transforms.NormalizeTransform+BinArguments Microsoft.ML.EntryPoints.CommonOutputs+TransformOutput diff --git a/test/Microsoft.ML.Benchmarks/KMeansAndLogisticRegressionBench.cs b/test/Microsoft.ML.Benchmarks/KMeansAndLogisticRegressionBench.cs index 5f851f9475..663c1383d3 100644 --- a/test/Microsoft.ML.Benchmarks/KMeansAndLogisticRegressionBench.cs +++ b/test/Microsoft.ML.Benchmarks/KMeansAndLogisticRegressionBench.cs @@ -40,7 +40,7 @@ public CalibratedModelParametersBase(); + var environment = EnvironmentFactory.CreateClassificationEnvironment(); cmd.ExecuteMamlCommand(environment); } } diff --git a/test/Microsoft.ML.Core.Tests/UnitTests/TestEntryPoints.cs b/test/Microsoft.ML.Core.Tests/UnitTests/TestEntryPoints.cs index 01413dead3..e485d39775 100644 --- a/test/Microsoft.ML.Core.Tests/UnitTests/TestEntryPoints.cs +++ b/test/Microsoft.ML.Core.Tests/UnitTests/TestEntryPoints.cs @@ -132,7 +132,7 @@ public void EntryPointScoring() var dataView = GetBreastCancerDataviewWithTextColumns(); dataView = Env.CreateTransform("Term{col=F1}", dataView); var trainData = FeatureCombiner.PrepareFeatures(Env, new FeatureCombiner.FeatureCombinerInput() { Data = dataView, Features = new[] { "F1", "F2", "Rest" } }); - var lrModel = LbfgsLogisticRegressionTrainer.TrainBinary(Env, new LbfgsLogisticRegressionTrainer.Options { TrainingData = trainData.OutputData }).PredictorModel; + var lrModel = LbfgsLogisticRegressionBinaryTrainer.TrainBinary(Env, new LbfgsLogisticRegressionBinaryTrainer.Options { TrainingData = trainData.OutputData }).PredictorModel; var model = ModelOperations.CombineTwoModels(Env, new ModelOperations.SimplePredictorModelInput() { TransformModel = trainData.Model, PredictorModel = lrModel }).PredictorModel; var scored1 = ScoreModel.Score(Env, new ScoreModel.Input() { Data = dataView, PredictorModel = model }).ScoredData; @@ -325,7 +325,7 @@ public void EntryPointCatalogCheckDuplicateParams() Env.ComponentCatalog.RegisterAssembly(typeof(LightGbmBinaryModelParameters).Assembly); Env.ComponentCatalog.RegisterAssembly(typeof(TensorFlowTransformer).Assembly); Env.ComponentCatalog.RegisterAssembly(typeof(ImageLoadingTransformer).Assembly); - Env.ComponentCatalog.RegisterAssembly(typeof(SymbolicSgdTrainer).Assembly); + Env.ComponentCatalog.RegisterAssembly(typeof(SymbolicSgdLogisticRegressionBinaryTrainer).Assembly); Env.ComponentCatalog.RegisterAssembly(typeof(SaveOnnxCommand).Assembly); Env.ComponentCatalog.RegisterAssembly(typeof(TimeSeriesProcessingEntryPoints).Assembly); Env.ComponentCatalog.RegisterAssembly(typeof(ParquetLoader).Assembly); @@ -362,12 +362,12 @@ public void EntryPointInputBuilderOptionals() { var catalog = Env.ComponentCatalog; - InputBuilder ib1 = new InputBuilder(Env, typeof(LbfgsLogisticRegressionTrainer.Options), catalog); + InputBuilder ib1 = new InputBuilder(Env, typeof(LbfgsLogisticRegressionBinaryTrainer.Options), catalog); // Ensure that InputBuilder unwraps the Optional correctly. var weightType = ib1.GetFieldTypeOrNull("ExampleWeightColumnName"); Assert.True(weightType.Equals(typeof(string))); - var instance = ib1.GetInstance() as LbfgsLogisticRegressionTrainer.Options; + var instance = ib1.GetInstance() as LbfgsLogisticRegressionBinaryTrainer.Options; Assert.True(instance.ExampleWeightColumnName == null); ib1.TrySetValue("ExampleWeightColumnName", "OtherWeight"); @@ -420,14 +420,14 @@ public void EntryPointCreateEnsemble() for (int i = 0; i < nModels; i++) { var data = splitOutput.TrainData[i]; - var lrInput = new LbfgsLogisticRegressionTrainer.Options + var lrInput = new LbfgsLogisticRegressionBinaryTrainer.Options { TrainingData = data, L1Regularization = (Single)0.1 * i, L2Regularization = (Single)0.01 * (1 + i), NormalizeFeatures = NormalizeOption.No }; - predictorModels[i] = LbfgsLogisticRegressionTrainer.TrainBinary(Env, lrInput).PredictorModel; + predictorModels[i] = LbfgsLogisticRegressionBinaryTrainer.TrainBinary(Env, lrInput).PredictorModel; individualScores[i] = ScoreModel.Score(Env, new ScoreModel.Input { Data = splitOutput.TestData[nModels], PredictorModel = predictorModels[i] }) @@ -676,7 +676,7 @@ public void EntryPointCalibrate() var splitOutput = CVSplit.Split(Env, new CVSplit.Input { Data = dataView, NumFolds = 3 }); - var lrModel = LbfgsLogisticRegressionTrainer.TrainBinary(Env, new LbfgsLogisticRegressionTrainer.Options { TrainingData = splitOutput.TestData[0] }).PredictorModel; + var lrModel = LbfgsLogisticRegressionBinaryTrainer.TrainBinary(Env, new LbfgsLogisticRegressionBinaryTrainer.Options { TrainingData = splitOutput.TestData[0] }).PredictorModel; var calibratedLrModel = Calibrate.FixedPlatt(Env, new Calibrate.FixedPlattInput { Data = splitOutput.TestData[1], UncalibratedPredictorModel = lrModel }).PredictorModel; @@ -724,14 +724,14 @@ public void EntryPointPipelineEnsemble() data = new ColumnConcatenatingTransformer(Env, "Features", new[] { "Features1", "Features2" }).Transform(data); data = new ValueToKeyMappingEstimator(Env, "Label", "Label", keyOrdinality: ValueToKeyMappingEstimator.KeyOrdinality.ByValue).Fit(data).Transform(data); - var lrInput = new LbfgsLogisticRegressionTrainer.Options + var lrInput = new LbfgsLogisticRegressionBinaryTrainer.Options { TrainingData = data, L1Regularization = (Single)0.1 * i, L2Regularization = (Single)0.01 * (1 + i), NormalizeFeatures = NormalizeOption.Yes }; - predictorModels[i] = LbfgsLogisticRegressionTrainer.TrainBinary(Env, lrInput).PredictorModel; + predictorModels[i] = LbfgsLogisticRegressionBinaryTrainer.TrainBinary(Env, lrInput).PredictorModel; var transformModel = new TransformModelImpl(Env, data, splitOutput.TrainData[i]); predictorModels[i] = ModelOperations.CombineTwoModels(Env, @@ -985,14 +985,14 @@ public void EntryPointPipelineEnsembleText() }, data); } - var lrInput = new LbfgsLogisticRegressionTrainer.Options + var lrInput = new LbfgsLogisticRegressionBinaryTrainer.Options { TrainingData = data, L1Regularization = (Single)0.1 * i, L2Regularization = (Single)0.01 * (1 + i), NormalizeFeatures = NormalizeOption.Yes }; - predictorModels[i] = LbfgsLogisticRegressionTrainer.TrainBinary(Env, lrInput).PredictorModel; + predictorModels[i] = LbfgsLogisticRegressionBinaryTrainer.TrainBinary(Env, lrInput).PredictorModel; var transformModel = new TransformModelImpl(Env, data, splitOutput.TrainData[i]); predictorModels[i] = ModelOperations.CombineTwoModels(Env, @@ -1318,7 +1318,7 @@ public void EntryPointPipelineEnsembleGetSummary() data = new ColumnConcatenatingTransformer(Env, new ColumnConcatenatingTransformer.ColumnOptions("Features", i % 2 == 0 ? new[] { "Features", "Cat" } : new[] { "Cat", "Features" })).Transform(data); if (i % 2 == 0) { - var lrInput = new LbfgsLogisticRegressionTrainer.Options + var lrInput = new LbfgsLogisticRegressionBinaryTrainer.Options { TrainingData = data, NormalizeFeatures = NormalizeOption.Yes, @@ -1326,7 +1326,7 @@ public void EntryPointPipelineEnsembleGetSummary() ShowTrainingStatistics = true, ComputeStandardDeviation = new ComputeLRTrainingStdThroughMkl() }; - predictorModels[i] = LbfgsLogisticRegressionTrainer.TrainBinary(Env, lrInput).PredictorModel; + predictorModels[i] = LbfgsLogisticRegressionBinaryTrainer.TrainBinary(Env, lrInput).PredictorModel; var transformModel = new TransformModelImpl(Env, data, splitOutput.TrainData[i]); predictorModels[i] = ModelOperations.CombineTwoModels(Env, @@ -3347,7 +3347,7 @@ public void EntryPointLinearPredictorSummary() InputFile = inputFile, }).Data; - var lrInput = new LbfgsLogisticRegressionTrainer.Options + var lrInput = new LbfgsLogisticRegressionBinaryTrainer.Options { TrainingData = dataView, NormalizeFeatures = NormalizeOption.Yes, @@ -3355,16 +3355,16 @@ public void EntryPointLinearPredictorSummary() ShowTrainingStatistics = true, ComputeStandardDeviation = new ComputeLRTrainingStdThroughMkl() }; - var model = LbfgsLogisticRegressionTrainer.TrainBinary(Env, lrInput).PredictorModel; + var model = LbfgsLogisticRegressionBinaryTrainer.TrainBinary(Env, lrInput).PredictorModel; - var mcLrInput = new LbfgsMaximumEntropyTrainer.Options + var mcLrInput = new LbfgsMaximumEntropyMulticlassTrainer.Options { TrainingData = dataView, NormalizeFeatures = NormalizeOption.Yes, NumberOfThreads = 1, ShowTrainingStatistics = true }; - var mcModel = LbfgsMaximumEntropyTrainer.TrainMulticlass(Env, mcLrInput).PredictorModel; + var mcModel = LbfgsMaximumEntropyMulticlassTrainer.TrainMulticlass(Env, mcLrInput).PredictorModel; var output = SummarizePredictor.Summarize(Env, new SummarizePredictor.Input() { PredictorModel = model }); diff --git a/test/Microsoft.ML.Functional.Tests/DataTransformation.cs b/test/Microsoft.ML.Functional.Tests/DataTransformation.cs index 068e3c90b5..3790d84cdd 100644 --- a/test/Microsoft.ML.Functional.Tests/DataTransformation.cs +++ b/test/Microsoft.ML.Functional.Tests/DataTransformation.cs @@ -143,8 +143,8 @@ void ExtensibilityModifyTextFeaturization() Norm = TextFeaturizingEstimator.NormFunction.L1 }, "SentimentText") .AppendCacheCheckpoint(mlContext) - .Append(mlContext.BinaryClassification.Trainers.SdcaCalibrated( - new SdcaCalibratedBinaryTrainer.Options { NumberOfThreads = 1 })); + .Append(mlContext.BinaryClassification.Trainers.SdcaLogisticRegression( + new SdcaLogisticRegressionBinaryTrainer.Options { NumberOfThreads = 1 })); // Train the model. var model = pipeline.Fit(data); diff --git a/test/Microsoft.ML.Functional.Tests/Evaluation.cs b/test/Microsoft.ML.Functional.Tests/Evaluation.cs index 94e1647da7..13909716ae 100644 --- a/test/Microsoft.ML.Functional.Tests/Evaluation.cs +++ b/test/Microsoft.ML.Functional.Tests/Evaluation.cs @@ -94,7 +94,7 @@ public void TrainAndEvaluateBinaryClassificationWithCalibration() var pipeline = mlContext.Transforms.Text.FeaturizeText("Features", "SentimentText") .AppendCacheCheckpoint(mlContext) .Append(mlContext.BinaryClassification.Trainers.LbfgsLogisticRegression( - new LbfgsLogisticRegressionTrainer.Options { NumberOfThreads = 1 })); + new LbfgsLogisticRegressionBinaryTrainer.Options { NumberOfThreads = 1 })); // Train the model. var model = pipeline.Fit(data); @@ -151,8 +151,8 @@ public void TrainAndEvaluateMulticlassClassification() var pipeline = mlContext.Transforms.Concatenate("Features", Iris.Features) .Append(mlContext.Transforms.Conversion.MapValueToKey("Label")) .AppendCacheCheckpoint(mlContext) - .Append(mlContext.MulticlassClassification.Trainers.SdcaCalibrated( - new SdcaCalibratedMulticlassTrainer.Options { NumberOfThreads = 1})); + .Append(mlContext.MulticlassClassification.Trainers.SdcaMaximumEntropy( + new SdcaMaximumEntropyMulticlassTrainer.Options { NumberOfThreads = 1})); // Train the model. var model = pipeline.Fit(data); @@ -274,7 +274,7 @@ public void TrainAndEvaluateWithPrecisionRecallCurves() var pipeline = mlContext.Transforms.Text.FeaturizeText("Features", "SentimentText") .AppendCacheCheckpoint(mlContext) .Append(mlContext.BinaryClassification.Trainers.LbfgsLogisticRegression( - new LbfgsLogisticRegressionTrainer.Options { NumberOfThreads = 1 })); + new LbfgsLogisticRegressionBinaryTrainer.Options { NumberOfThreads = 1 })); // Train the model. var model = pipeline.Fit(data); diff --git a/test/Microsoft.ML.Functional.Tests/IntrospectiveTraining.cs b/test/Microsoft.ML.Functional.Tests/IntrospectiveTraining.cs index 83cc8e745b..89caf8c4f2 100644 --- a/test/Microsoft.ML.Functional.Tests/IntrospectiveTraining.cs +++ b/test/Microsoft.ML.Functional.Tests/IntrospectiveTraining.cs @@ -422,8 +422,8 @@ private IEstimator>> StepTwo(MLContext mlContext) { return mlContext.Transforms.Conversion.MapValueToKey("Label") - .Append(mlContext.MulticlassClassification.Trainers.SdcaCalibrated( - new SdcaCalibratedMulticlassTrainer.Options { + .Append(mlContext.MulticlassClassification.Trainers.SdcaMaximumEntropy( + new SdcaMaximumEntropyMulticlassTrainer.Options { MaximumNumberOfIterations = 10, NumberOfThreads = 1 })); } diff --git a/test/Microsoft.ML.Functional.Tests/Training.cs b/test/Microsoft.ML.Functional.Tests/Training.cs index 908e4c1b14..2499ecc634 100644 --- a/test/Microsoft.ML.Functional.Tests/Training.cs +++ b/test/Microsoft.ML.Functional.Tests/Training.cs @@ -43,8 +43,8 @@ public void CompareTrainerEvaluations() .AppendCacheCheckpoint(mlContext); // Create a selection of learners. - var sdcaTrainer = mlContext.BinaryClassification.Trainers.SdcaCalibrated( - new SdcaCalibratedBinaryTrainer.Options { NumberOfThreads = 1 }); + var sdcaTrainer = mlContext.BinaryClassification.Trainers.SdcaLogisticRegression( + new SdcaLogisticRegressionBinaryTrainer.Options { NumberOfThreads = 1 }); var fastTreeTrainer = mlContext.BinaryClassification.Trainers.FastTree( new FastTreeBinaryTrainer.Options { NumberOfThreads = 1 }); @@ -226,7 +226,7 @@ public void ContinueTrainingLogisticRegression() .AppendCacheCheckpoint(mlContext); var trainer = mlContext.BinaryClassification.Trainers.LbfgsLogisticRegression( - new LbfgsLogisticRegressionTrainer.Options { NumberOfThreads = 1, MaximumNumberOfIterations = 10 }); + new LbfgsLogisticRegressionBinaryTrainer.Options { NumberOfThreads = 1, MaximumNumberOfIterations = 10 }); // Fit the data transformation pipeline. var featurization = featurizationPipeline.Fit(data); @@ -269,7 +269,7 @@ public void ContinueTrainingLogisticRegressionMulticlass() .AppendCacheCheckpoint(mlContext); var trainer = mlContext.MulticlassClassification.Trainers.LbfgsMaximumEntropy( - new LbfgsMaximumEntropyTrainer.Options { NumberOfThreads = 1, MaximumNumberOfIterations = 10 }); + new LbfgsMaximumEntropyMulticlassTrainer.Options { NumberOfThreads = 1, MaximumNumberOfIterations = 10 }); // Fit the data transformation pipeline. var featurization = featurizationPipeline.Fit(data); @@ -407,8 +407,8 @@ public void ContinueTrainingSymbolicStochasticGradientDescent() var featurizationPipeline = mlContext.Transforms.Text.FeaturizeText("Features", "SentimentText") .AppendCacheCheckpoint(mlContext); - var trainer = mlContext.BinaryClassification.Trainers.SymbolicSgd( - new SymbolicSgdTrainer.Options + var trainer = mlContext.BinaryClassification.Trainers.SymbolicSgdLogisticRegression( + new SymbolicSgdLogisticRegressionBinaryTrainer.Options { NumberOfThreads = 1, NumberOfIterations = 10 @@ -452,7 +452,7 @@ public void MetacomponentsFunctionAsExpectedOva() // Create a model training an OVA trainer with a binary classifier. var binaryClassificationTrainer = mlContext.BinaryClassification.Trainers.LbfgsLogisticRegression( - new LbfgsLogisticRegressionTrainer.Options { MaximumNumberOfIterations = 10, NumberOfThreads = 1, }); + new LbfgsLogisticRegressionBinaryTrainer.Options { MaximumNumberOfIterations = 10, NumberOfThreads = 1, }); var binaryClassificationPipeline = mlContext.Transforms.Concatenate("Features", Iris.Features) .AppendCacheCheckpoint(mlContext) .Append(mlContext.Transforms.Conversion.MapValueToKey("Label")) diff --git a/test/Microsoft.ML.Predictor.Tests/TestPredictors.cs b/test/Microsoft.ML.Predictor.Tests/TestPredictors.cs index 88cb40f9e0..0c46c7a7c1 100644 --- a/test/Microsoft.ML.Predictor.Tests/TestPredictors.cs +++ b/test/Microsoft.ML.Predictor.Tests/TestPredictors.cs @@ -40,7 +40,7 @@ protected override void InitializeEnvironment(IHostEnvironment environment) base.InitializeEnvironment(environment); environment.ComponentCatalog.RegisterAssembly(typeof(LightGbmBinaryModelParameters).Assembly); - environment.ComponentCatalog.RegisterAssembly(typeof(SymbolicSgdTrainer).Assembly); + environment.ComponentCatalog.RegisterAssembly(typeof(SymbolicSgdLogisticRegressionBinaryTrainer).Assembly); } /// @@ -739,7 +739,7 @@ public void TestEnsembleCombiner() TrainingData = dataView, NormalizeFeatures = NormalizeOption.No }).PredictorModel, - LbfgsLogisticRegressionTrainer.TrainBinary(ML, new LbfgsLogisticRegressionTrainer.Options() + LbfgsLogisticRegressionBinaryTrainer.TrainBinary(ML, new LbfgsLogisticRegressionBinaryTrainer.Options() { FeatureColumnName = "Features", LabelColumnName = DefaultColumnNames.Label, @@ -747,7 +747,7 @@ public void TestEnsembleCombiner() TrainingData = dataView, NormalizeFeatures = NormalizeOption.No }).PredictorModel, - LbfgsLogisticRegressionTrainer.TrainBinary(ML, new LbfgsLogisticRegressionTrainer.Options() + LbfgsLogisticRegressionBinaryTrainer.TrainBinary(ML, new LbfgsLogisticRegressionBinaryTrainer.Options() { FeatureColumnName = "Features", LabelColumnName = DefaultColumnNames.Label, @@ -776,7 +776,7 @@ public void TestMulticlassEnsembleCombiner() LabelColumnName = DefaultColumnNames.Label, TrainingData = dataView }).PredictorModel, - LbfgsMaximumEntropyTrainer.TrainMulticlass(Env, new LbfgsMaximumEntropyTrainer.Options() + LbfgsMaximumEntropyMulticlassTrainer.TrainMulticlass(Env, new LbfgsMaximumEntropyMulticlassTrainer.Options() { FeatureColumnName = "Features", LabelColumnName = DefaultColumnNames.Label, @@ -784,7 +784,7 @@ public void TestMulticlassEnsembleCombiner() TrainingData = dataView, NormalizeFeatures = NormalizeOption.No }).PredictorModel, - LbfgsMaximumEntropyTrainer.TrainMulticlass(Env, new LbfgsMaximumEntropyTrainer.Options() + LbfgsMaximumEntropyMulticlassTrainer.TrainMulticlass(Env, new LbfgsMaximumEntropyMulticlassTrainer.Options() { FeatureColumnName = "Features", LabelColumnName = DefaultColumnNames.Label, diff --git a/test/Microsoft.ML.StaticPipelineTesting/Training.cs b/test/Microsoft.ML.StaticPipelineTesting/Training.cs index 07f555f768..b98cacd2f1 100644 --- a/test/Microsoft.ML.StaticPipelineTesting/Training.cs +++ b/test/Microsoft.ML.StaticPipelineTesting/Training.cs @@ -118,7 +118,7 @@ public void SdcaBinaryClassification() var est = reader.MakeNewEstimator() .Append(r => (r.label, preds: catalog.Trainers.Sdca(r.label, r.features, null, - new SdcaCalibratedBinaryTrainer.Options { MaximumNumberOfIterations = 2, NumberOfThreads = 1 }, + new SdcaLogisticRegressionBinaryTrainer.Options { MaximumNumberOfIterations = 2, NumberOfThreads = 1 }, onFit: (p) => { pred = p; }))); var pipe = reader.Append(est); @@ -744,7 +744,7 @@ public void LogisticRegressionBinaryClassification() var est = reader.MakeNewEstimator() .Append(r => (r.label, preds: catalog.Trainers.LbfgsLogisticRegression(r.label, r.features, null, - new LbfgsLogisticRegressionTrainer.Options { L1Regularization = 10, NumberOfThreads = 1 }, onFit: (p) => { pred = p; }))); + new LbfgsLogisticRegressionBinaryTrainer.Options { L1Regularization = 10, NumberOfThreads = 1 }, onFit: (p) => { pred = p; }))); var pipe = reader.Append(est); @@ -784,7 +784,7 @@ public void MulticlassLogisticRegression() r.label, r.features, null, - new LbfgsMaximumEntropyTrainer.Options { NumberOfThreads = 1 }, + new LbfgsMaximumEntropyMulticlassTrainer.Options { NumberOfThreads = 1 }, onFit: p => pred = p))); var pipe = reader.Append(est); diff --git a/test/Microsoft.ML.Tests/FeatureContributionTests.cs b/test/Microsoft.ML.Tests/FeatureContributionTests.cs index 1a1b576278..d1f691d8c5 100644 --- a/test/Microsoft.ML.Tests/FeatureContributionTests.cs +++ b/test/Microsoft.ML.Tests/FeatureContributionTests.cs @@ -168,8 +168,8 @@ public void TestSGDBinary() [Fact] public void TestSSGDBinary() { - TestFeatureContribution(ML.BinaryClassification.Trainers.SymbolicSgd( - new SymbolicSgdTrainer.Options() + TestFeatureContribution(ML.BinaryClassification.Trainers.SymbolicSgdLogisticRegression( + new SymbolicSgdLogisticRegressionBinaryTrainer.Options() { NumberOfThreads = 1 }), diff --git a/test/Microsoft.ML.Tests/OnnxConversionTest.cs b/test/Microsoft.ML.Tests/OnnxConversionTest.cs index 1c957c264d..eb22493efc 100644 --- a/test/Microsoft.ML.Tests/OnnxConversionTest.cs +++ b/test/Microsoft.ML.Tests/OnnxConversionTest.cs @@ -385,7 +385,7 @@ public void MulticlassLogisticRegressionOnnxConversionTest() var pipeline = mlContext.Transforms.Normalize("Features"). Append(mlContext.Transforms.Conversion.MapValueToKey("Label")). - Append(mlContext.MulticlassClassification.Trainers.LbfgsMaximumEntropy(new LbfgsMaximumEntropyTrainer.Options() { NumberOfThreads = 1 })); + Append(mlContext.MulticlassClassification.Trainers.LbfgsMaximumEntropy(new LbfgsMaximumEntropyMulticlassTrainer.Options() { NumberOfThreads = 1 })); var model = pipeline.Fit(data); var transformedData = model.Transform(data); diff --git a/test/Microsoft.ML.Tests/PermutationFeatureImportanceTests.cs b/test/Microsoft.ML.Tests/PermutationFeatureImportanceTests.cs index a40e3536dd..db49bbf161 100644 --- a/test/Microsoft.ML.Tests/PermutationFeatureImportanceTests.cs +++ b/test/Microsoft.ML.Tests/PermutationFeatureImportanceTests.cs @@ -152,7 +152,7 @@ public void TestPfiBinaryClassificationOnDenseFeatures() { var data = GetDenseDataset(TaskType.BinaryClassification); var model = ML.BinaryClassification.Trainers.LbfgsLogisticRegression( - new LbfgsLogisticRegressionTrainer.Options { NumberOfThreads = 1 }).Fit(data); + new LbfgsLogisticRegressionBinaryTrainer.Options { NumberOfThreads = 1 }).Fit(data); var pfi = ML.BinaryClassification.PermutationFeatureImportance(model, data); // Pfi Indices: @@ -190,7 +190,7 @@ public void TestPfiBinaryClassificationOnSparseFeatures() { var data = GetSparseDataset(TaskType.BinaryClassification); var model = ML.BinaryClassification.Trainers.LbfgsLogisticRegression( - new LbfgsLogisticRegressionTrainer.Options { NumberOfThreads = 1 }).Fit(data); + new LbfgsLogisticRegressionBinaryTrainer.Options { NumberOfThreads = 1 }).Fit(data); var pfi = ML.BinaryClassification.PermutationFeatureImportance(model, data); // Pfi Indices: @@ -269,7 +269,7 @@ public void TestPfiMulticlassClassificationOnSparseFeatures() { var data = GetSparseDataset(TaskType.MulticlassClassification); var model = ML.MulticlassClassification.Trainers.LbfgsMaximumEntropy( - new LbfgsMaximumEntropyTrainer.Options { MaximumNumberOfIterations = 1000 }).Fit(data); + new LbfgsMaximumEntropyMulticlassTrainer.Options { MaximumNumberOfIterations = 1000 }).Fit(data); var pfi = ML.MulticlassClassification.PermutationFeatureImportance(model, data); diff --git a/test/Microsoft.ML.Tests/Scenarios/Api/CookbookSamples/CookbookSamplesDynamicApi.cs b/test/Microsoft.ML.Tests/Scenarios/Api/CookbookSamples/CookbookSamplesDynamicApi.cs index e2a71c27cd..febd4a6447 100644 --- a/test/Microsoft.ML.Tests/Scenarios/Api/CookbookSamples/CookbookSamplesDynamicApi.cs +++ b/test/Microsoft.ML.Tests/Scenarios/Api/CookbookSamples/CookbookSamplesDynamicApi.cs @@ -159,7 +159,7 @@ private ITransformer TrainOnIris(string irisDataPath) // Cache data in memory for steps after the cache check point stage. .AppendCacheCheckpoint(mlContext) // Use the multi-class SDCA model to predict the label using features. - .Append(mlContext.MulticlassClassification.Trainers.SdcaCalibrated()); + .Append(mlContext.MulticlassClassification.Trainers.SdcaMaximumEntropy()); // Train the model. var trainedModel = pipeline.Fit(trainData); @@ -417,7 +417,7 @@ private void CrossValidationOn(string dataPath) // Notice that unused part in the data may not be cached. .AppendCacheCheckpoint(mlContext) // Use the multi-class SDCA model to predict the label using features. - .Append(mlContext.MulticlassClassification.Trainers.SdcaCalibrated()); + .Append(mlContext.MulticlassClassification.Trainers.SdcaMaximumEntropy()); // Split the data 90:10 into train and test sets, train and evaluate. var split = mlContext.Data.TrainTestSplit(data, testFraction: 0.1); diff --git a/test/Microsoft.ML.Tests/Scenarios/Api/Estimators/DecomposableTrainAndPredict.cs b/test/Microsoft.ML.Tests/Scenarios/Api/Estimators/DecomposableTrainAndPredict.cs index 016aca6d3d..78e6305d65 100644 --- a/test/Microsoft.ML.Tests/Scenarios/Api/Estimators/DecomposableTrainAndPredict.cs +++ b/test/Microsoft.ML.Tests/Scenarios/Api/Estimators/DecomposableTrainAndPredict.cs @@ -31,8 +31,8 @@ void DecomposableTrainAndPredict() var pipeline = new ColumnConcatenatingEstimator (ml, "Features", "SepalLength", "SepalWidth", "PetalLength", "PetalWidth") .Append(new ValueToKeyMappingEstimator(ml, "Label"), TransformerScope.TrainTest) - .Append(ml.MulticlassClassification.Trainers.SdcaCalibrated( - new SdcaCalibratedMulticlassTrainer.Options { MaximumNumberOfIterations = 100, Shuffle = true, NumberOfThreads = 1, })) + .Append(ml.MulticlassClassification.Trainers.SdcaMaximumEntropy( + new SdcaMaximumEntropyMulticlassTrainer.Options { MaximumNumberOfIterations = 100, Shuffle = true, NumberOfThreads = 1, })) .Append(new KeyToValueMappingEstimator(ml, "PredictedLabel")); var model = pipeline.Fit(data).GetModelFor(TransformerScope.Scoring); diff --git a/test/Microsoft.ML.Tests/Scenarios/Api/Estimators/Extensibility.cs b/test/Microsoft.ML.Tests/Scenarios/Api/Estimators/Extensibility.cs index 71088fb4c5..e3553df150 100644 --- a/test/Microsoft.ML.Tests/Scenarios/Api/Estimators/Extensibility.cs +++ b/test/Microsoft.ML.Tests/Scenarios/Api/Estimators/Extensibility.cs @@ -40,8 +40,8 @@ void Extensibility() var pipeline = new ColumnConcatenatingEstimator (ml, "Features", "SepalLength", "SepalWidth", "PetalLength", "PetalWidth") .Append(new CustomMappingEstimator(ml, action, null), TransformerScope.TrainTest) .Append(new ValueToKeyMappingEstimator(ml, "Label"), TransformerScope.TrainTest) - .Append(ml.MulticlassClassification.Trainers.SdcaCalibrated( - new SdcaCalibratedMulticlassTrainer.Options { MaximumNumberOfIterations = 100, Shuffle = true, NumberOfThreads = 1 })) + .Append(ml.MulticlassClassification.Trainers.SdcaMaximumEntropy( + new SdcaMaximumEntropyMulticlassTrainer.Options { MaximumNumberOfIterations = 100, Shuffle = true, NumberOfThreads = 1 })) .Append(new KeyToValueMappingEstimator(ml, "PredictedLabel")); var model = pipeline.Fit(data).GetModelFor(TransformerScope.Scoring); diff --git a/test/Microsoft.ML.Tests/Scenarios/Api/Estimators/PredictAndMetadata.cs b/test/Microsoft.ML.Tests/Scenarios/Api/Estimators/PredictAndMetadata.cs index 311bbb0927..cfbdd079ed 100644 --- a/test/Microsoft.ML.Tests/Scenarios/Api/Estimators/PredictAndMetadata.cs +++ b/test/Microsoft.ML.Tests/Scenarios/Api/Estimators/PredictAndMetadata.cs @@ -29,8 +29,8 @@ void PredictAndMetadata() var pipeline = ml.Transforms.Concatenate("Features", "SepalLength", "SepalWidth", "PetalLength", "PetalWidth") .Append(ml.Transforms.Conversion.MapValueToKey("Label"), TransformerScope.TrainTest) - .Append(ml.MulticlassClassification.Trainers.SdcaCalibrated( - new SdcaCalibratedMulticlassTrainer.Options { MaximumNumberOfIterations = 100, Shuffle = true, NumberOfThreads = 1, })); + .Append(ml.MulticlassClassification.Trainers.SdcaMaximumEntropy( + new SdcaMaximumEntropyMulticlassTrainer.Options { MaximumNumberOfIterations = 100, Shuffle = true, NumberOfThreads = 1, })); var model = pipeline.Fit(data).GetModelFor(TransformerScope.Scoring); var engine = ml.Model.CreatePredictionEngine(model); diff --git a/test/Microsoft.ML.Tests/Scenarios/Api/Estimators/SimpleTrainAndPredict.cs b/test/Microsoft.ML.Tests/Scenarios/Api/Estimators/SimpleTrainAndPredict.cs index 923b074bac..0e7da9c206 100644 --- a/test/Microsoft.ML.Tests/Scenarios/Api/Estimators/SimpleTrainAndPredict.cs +++ b/test/Microsoft.ML.Tests/Scenarios/Api/Estimators/SimpleTrainAndPredict.cs @@ -63,7 +63,7 @@ public void SimpleTrainAndPredictSymSGD() // Pipeline. var pipeline = ml.Transforms.Text.FeaturizeText("Features", "SentimentText") .AppendCacheCheckpoint(ml) - .Append(ml.BinaryClassification.Trainers.SymbolicSgd(new SymbolicSgdTrainer.Options + .Append(ml.BinaryClassification.Trainers.SymbolicSgdLogisticRegression(new SymbolicSgdLogisticRegressionBinaryTrainer.Options { NumberOfThreads = 1 })); diff --git a/test/Microsoft.ML.Tests/Scenarios/IrisPlantClassificationTests.cs b/test/Microsoft.ML.Tests/Scenarios/IrisPlantClassificationTests.cs index 838729bbaf..b92b95ad32 100644 --- a/test/Microsoft.ML.Tests/Scenarios/IrisPlantClassificationTests.cs +++ b/test/Microsoft.ML.Tests/Scenarios/IrisPlantClassificationTests.cs @@ -32,8 +32,8 @@ public void TrainAndPredictIrisModelTest() .Append(mlContext.Transforms.Normalize("Features")) .Append(mlContext.Transforms.Conversion.MapValueToKey("Label")) .AppendCacheCheckpoint(mlContext) - .Append(mlContext.MulticlassClassification.Trainers.SdcaCalibrated( - new SdcaCalibratedMulticlassTrainer.Options { NumberOfThreads = 1 })); + .Append(mlContext.MulticlassClassification.Trainers.SdcaMaximumEntropy( + new SdcaMaximumEntropyMulticlassTrainer.Options { NumberOfThreads = 1 })); // Read training and test data sets string dataPath = GetDataPath(TestDatasets.iris.trainFilename); diff --git a/test/Microsoft.ML.Tests/Scenarios/IrisPlantClassificationWithStringLabelTests.cs b/test/Microsoft.ML.Tests/Scenarios/IrisPlantClassificationWithStringLabelTests.cs index 010a973741..256cddbd71 100644 --- a/test/Microsoft.ML.Tests/Scenarios/IrisPlantClassificationWithStringLabelTests.cs +++ b/test/Microsoft.ML.Tests/Scenarios/IrisPlantClassificationWithStringLabelTests.cs @@ -37,8 +37,8 @@ public void TrainAndPredictIrisModelWithStringLabelTest() .Append(mlContext.Transforms.Normalize("Features")) .Append(mlContext.Transforms.Conversion.MapValueToKey("Label", "IrisPlantType"), TransformerScope.TrainTest) .AppendCacheCheckpoint(mlContext) - .Append(mlContext.MulticlassClassification.Trainers.SdcaCalibrated( - new SdcaCalibratedMulticlassTrainer.Options { NumberOfThreads = 1 })) + .Append(mlContext.MulticlassClassification.Trainers.SdcaMaximumEntropy( + new SdcaMaximumEntropyMulticlassTrainer.Options { NumberOfThreads = 1 })) .Append(mlContext.Transforms.Conversion.MapKeyToValue(("Plant", "PredictedLabel"))); // Train the pipeline diff --git a/test/Microsoft.ML.Tests/Scenarios/TensorflowTests.cs b/test/Microsoft.ML.Tests/Scenarios/TensorflowTests.cs index 2e5c2397a1..ef62dcae77 100644 --- a/test/Microsoft.ML.Tests/Scenarios/TensorflowTests.cs +++ b/test/Microsoft.ML.Tests/Scenarios/TensorflowTests.cs @@ -39,7 +39,7 @@ public void TensorFlowTransforCifarEndToEndTest() .Append(new ColumnConcatenatingEstimator(mlContext, "Features", "Output")) .Append(new ValueToKeyMappingEstimator(mlContext, "Label")) .AppendCacheCheckpoint(mlContext) - .Append(mlContext.MulticlassClassification.Trainers.SdcaCalibrated()); + .Append(mlContext.MulticlassClassification.Trainers.SdcaMaximumEntropy()); var transformer = pipeEstimator.Fit(data); diff --git a/test/Microsoft.ML.Tests/ScenariosWithDirectInstantiation/IrisPlantClassificationTests.cs b/test/Microsoft.ML.Tests/ScenariosWithDirectInstantiation/IrisPlantClassificationTests.cs index cb5afe4b86..f2098c68e5 100644 --- a/test/Microsoft.ML.Tests/ScenariosWithDirectInstantiation/IrisPlantClassificationTests.cs +++ b/test/Microsoft.ML.Tests/ScenariosWithDirectInstantiation/IrisPlantClassificationTests.cs @@ -30,8 +30,8 @@ public void TrainAndPredictIrisModelUsingDirectInstantiationTest() .Append(mlContext.Transforms.Normalize("Features")) .Append(mlContext.Transforms.Conversion.MapValueToKey("Label")) .AppendCacheCheckpoint(mlContext) - .Append(mlContext.MulticlassClassification.Trainers.SdcaCalibrated( - new SdcaCalibratedMulticlassTrainer.Options { NumberOfThreads = 1 })); + .Append(mlContext.MulticlassClassification.Trainers.SdcaMaximumEntropy( + new SdcaMaximumEntropyMulticlassTrainer.Options { NumberOfThreads = 1 })); // Read training and test data sets string dataPath = GetDataPath(TestDatasets.iris.trainFilename); diff --git a/test/Microsoft.ML.Tests/TrainerEstimators/LbfgsTests.cs b/test/Microsoft.ML.Tests/TrainerEstimators/LbfgsTests.cs index b3bd9ccb6f..1174c87aca 100644 --- a/test/Microsoft.ML.Tests/TrainerEstimators/LbfgsTests.cs +++ b/test/Microsoft.ML.Tests/TrainerEstimators/LbfgsTests.cs @@ -60,7 +60,7 @@ public void TestLRNoStats() { (IEstimator pipe, IDataView dataView) = GetBinaryClassificationPipeline(); - pipe = pipe.Append(ML.BinaryClassification.Trainers.LbfgsLogisticRegression(new LbfgsLogisticRegressionTrainer.Options { ShowTrainingStatistics = true })); + pipe = pipe.Append(ML.BinaryClassification.Trainers.LbfgsLogisticRegression(new LbfgsLogisticRegressionBinaryTrainer.Options { ShowTrainingStatistics = true })); var transformerChain = pipe.Fit(dataView) as TransformerChain>>; var linearModel = transformerChain.LastTransformer.Model.SubModel as LinearBinaryModelParameters; var stats = linearModel.Statistics as ModelStatisticsBase; @@ -81,7 +81,7 @@ public void TestLRWithStats() (IEstimator pipe, IDataView dataView) = GetBinaryClassificationPipeline(); pipe = pipe.Append(ML.BinaryClassification.Trainers.LbfgsLogisticRegression( - new LbfgsLogisticRegressionTrainer.Options + new LbfgsLogisticRegressionBinaryTrainer.Options { ShowTrainingStatistics = true, ComputeStandardDeviation = new ComputeLRTrainingStdThroughMkl(), @@ -182,7 +182,7 @@ public void TestMLRWithStats() { (IEstimator pipe, IDataView dataView) = GetMulticlassPipeline(); - var trainer = ML.MulticlassClassification.Trainers.LbfgsMaximumEntropy(new LbfgsMaximumEntropyTrainer.Options + var trainer = ML.MulticlassClassification.Trainers.LbfgsMaximumEntropy(new LbfgsMaximumEntropyMulticlassTrainer.Options { ShowTrainingStatistics = true }); diff --git a/test/Microsoft.ML.Tests/TrainerEstimators/SdcaTests.cs b/test/Microsoft.ML.Tests/TrainerEstimators/SdcaTests.cs index 66186109ba..d418e8ad98 100644 --- a/test/Microsoft.ML.Tests/TrainerEstimators/SdcaTests.cs +++ b/test/Microsoft.ML.Tests/TrainerEstimators/SdcaTests.cs @@ -23,8 +23,8 @@ public void SdcaWorkout() var binaryData = ML.Transforms.Conversion.ConvertType("Label", outputKind: DataKind.Boolean) .Fit(data.AsDynamic).Transform(data.AsDynamic); - var binaryTrainer = ML.BinaryClassification.Trainers.SdcaCalibrated( - new SdcaCalibratedBinaryTrainer.Options { ConvergenceTolerance = 1e-2f, MaximumNumberOfIterations = 10 }); + var binaryTrainer = ML.BinaryClassification.Trainers.SdcaLogisticRegression( + new SdcaLogisticRegressionBinaryTrainer.Options { ConvergenceTolerance = 1e-2f, MaximumNumberOfIterations = 10 }); TestEstimatorCore(binaryTrainer, binaryData); var nonCalibratedBinaryTrainer = ML.BinaryClassification.Trainers.SdcaNonCalibrated( @@ -37,8 +37,8 @@ public void SdcaWorkout() TestEstimatorCore(regressionTrainer, data.AsDynamic); var mcData = ML.Transforms.Conversion.MapValueToKey("Label").Fit(data.AsDynamic).Transform(data.AsDynamic); - var mcTrainer = ML.MulticlassClassification.Trainers.SdcaCalibrated( - new SdcaCalibratedMulticlassTrainer.Options { ConvergenceTolerance = 1e-2f, MaximumNumberOfIterations = 10 }); + var mcTrainer = ML.MulticlassClassification.Trainers.SdcaMaximumEntropy( + new SdcaMaximumEntropyMulticlassTrainer.Options { ConvergenceTolerance = 1e-2f, MaximumNumberOfIterations = 10 }); TestEstimatorCore(mcTrainer, mcData); Done(); @@ -63,7 +63,7 @@ public void SdcaLogisticRegression() // Step 2: Create a binary classifier. // We set the "Label" column as the label of the dataset, and the "Features" column as the features column. - var pipeline = mlContext.BinaryClassification.Trainers.SdcaCalibrated(labelColumnName: "Label", featureColumnName: "Features", l2Regularization: 0.001f); + var pipeline = mlContext.BinaryClassification.Trainers.SdcaLogisticRegression(labelColumnName: "Label", featureColumnName: "Features", l2Regularization: 0.001f); // Step 3: Train the pipeline created. var model = pipeline.Fit(data); @@ -151,7 +151,7 @@ public void SdcaMulticlassLogisticRegression() // We set the "Label" column as the label of the dataset, and the "Features" column as the features column. var pipeline = mlContext.Transforms.Conversion.MapValueToKey("LabelIndex", "Label"). - Append(mlContext.MulticlassClassification.Trainers.SdcaCalibrated(labelColumnName: "LabelIndex", featureColumnName: "Features", l2Regularization: 0.001f)); + Append(mlContext.MulticlassClassification.Trainers.SdcaMaximumEntropy(labelColumnName: "LabelIndex", featureColumnName: "Features", l2Regularization: 0.001f)); // Step 3: Train the pipeline created. var model = pipeline.Fit(data); diff --git a/test/Microsoft.ML.Tests/TrainerEstimators/SymSgdClassificationTests.cs b/test/Microsoft.ML.Tests/TrainerEstimators/SymSgdClassificationTests.cs index 5d1774fd62..0a5ebc7fe6 100644 --- a/test/Microsoft.ML.Tests/TrainerEstimators/SymSgdClassificationTests.cs +++ b/test/Microsoft.ML.Tests/TrainerEstimators/SymSgdClassificationTests.cs @@ -16,7 +16,7 @@ public partial class TrainerEstimators public void TestEstimatorSymSgdClassificationTrainer() { (var pipe, var dataView) = GetBinaryClassificationPipeline(); - var trainer = new SymbolicSgdTrainer(Env, new SymbolicSgdTrainer.Options()); + var trainer = new SymbolicSgdLogisticRegressionBinaryTrainer(Env, new SymbolicSgdLogisticRegressionBinaryTrainer.Options()); var pipeWithTrainer = pipe.Append(trainer); TestEstimatorCore(pipeWithTrainer, dataView); @@ -32,14 +32,14 @@ public void TestEstimatorSymSgdInitPredictor() (var pipe, var dataView) = GetBinaryClassificationPipeline(); var transformedData = pipe.Fit(dataView).Transform(dataView); - var initPredictor = ML.BinaryClassification.Trainers.SdcaCalibrated().Fit(transformedData); + var initPredictor = ML.BinaryClassification.Trainers.SdcaLogisticRegression().Fit(transformedData); var data = initPredictor.Transform(transformedData); - var withInitPredictor = new SymbolicSgdTrainer(Env, new SymbolicSgdTrainer.Options()).Fit(transformedData, + var withInitPredictor = new SymbolicSgdLogisticRegressionBinaryTrainer(Env, new SymbolicSgdLogisticRegressionBinaryTrainer.Options()).Fit(transformedData, modelParameters: initPredictor.Model.SubModel); var outInitData = withInitPredictor.Transform(transformedData); - var notInitPredictor = new SymbolicSgdTrainer(Env, new SymbolicSgdTrainer.Options()).Fit(transformedData); + var notInitPredictor = new SymbolicSgdLogisticRegressionBinaryTrainer(Env, new SymbolicSgdLogisticRegressionBinaryTrainer.Options()).Fit(transformedData); var outNoInitData = notInitPredictor.Transform(transformedData); int numExamples = 10; From 3dfa9cfda27e7816eb41130024ea4a53c210a747 Mon Sep 17 00:00:00 2001 From: Wei-Sheng Chin Date: Mon, 25 Mar 2019 13:56:52 -0700 Subject: [PATCH 10/12] Update baseline because of class renaming --- .../Common/Command/CommandTrainMlrWithStats-summary.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/BaselineOutput/Common/Command/CommandTrainMlrWithStats-summary.txt b/test/BaselineOutput/Common/Command/CommandTrainMlrWithStats-summary.txt index 51540ac0ea..3f6d28c5b6 100644 --- a/test/BaselineOutput/Common/Command/CommandTrainMlrWithStats-summary.txt +++ b/test/BaselineOutput/Common/Command/CommandTrainMlrWithStats-summary.txt @@ -1,4 +1,4 @@ -LbfgsMaximumEntropyTrainer bias and non-zero weights +LbfgsMaximumEntropyMulticlassTrainer bias and non-zero weights Iris-setosa+(Bias) 2.265129 Iris-versicolor+(Bias) 0.7695086 Iris-virginica+(Bias) -3.034663 From 8af0d21a162d0fba8581841dd228209e34268e58 Mon Sep 17 00:00:00 2001 From: Wei-Sheng Chin Date: Mon, 25 Mar 2019 14:11:55 -0700 Subject: [PATCH 11/12] Fix newly-added file Remove empty line to trigger build --- test/Microsoft.ML.Functional.Tests/Prediction.cs | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/test/Microsoft.ML.Functional.Tests/Prediction.cs b/test/Microsoft.ML.Functional.Tests/Prediction.cs index 627e06e775..c19770bf9e 100644 --- a/test/Microsoft.ML.Functional.Tests/Prediction.cs +++ b/test/Microsoft.ML.Functional.Tests/Prediction.cs @@ -44,8 +44,8 @@ public void ReconfigurablePrediction() // Create a training pipeline. var pipeline = mlContext.Transforms.Text.FeaturizeText("Features", "SentimentText") .AppendCacheCheckpoint(mlContext) - .Append(mlContext.BinaryClassification.Trainers.LogisticRegression( - new LogisticRegressionBinaryTrainer.Options { NumberOfThreads = 1 })); + .Append(mlContext.BinaryClassification.Trainers.LbfgsLogisticRegression( + new LbfgsLogisticRegressionBinaryTrainer.Options { NumberOfThreads = 1 })); // Train the model. var model = pipeline.Fit(data); @@ -74,10 +74,9 @@ public void ReconfigurablePrediction() public void ReconfigurablePredictionNoPipeline() { var mlContext = new MLContext(seed: 1); - var data = mlContext.Data.LoadFromEnumerable(TypeTestData.GenerateDataset()); - var pipeline = mlContext.BinaryClassification.Trainers.LogisticRegression( - new Trainers.LogisticRegressionBinaryTrainer.Options { NumberOfThreads = 1 }); + var pipeline = mlContext.BinaryClassification.Trainers.LbfgsLogisticRegression( + new Trainers.LbfgsLogisticRegressionBinaryTrainer.Options { NumberOfThreads = 1 }); var model = pipeline.Fit(data); var newModel = mlContext.BinaryClassification.ChangeModelThreshold(model, -2.0f); var rnd = new Random(1); From 7b7cf8d740d82977152f903f310516cc2bb9df94 Mon Sep 17 00:00:00 2001 From: Wei-Sheng Chin Date: Mon, 25 Mar 2019 15:36:29 -0700 Subject: [PATCH 12/12] More new files.. --- .../BinaryClassification/StochasticDualCoordinateAscent.cs | 4 ++-- .../StochasticDualCoordinateAscentWithOptions.cs | 4 ++-- .../BinaryClassification/SymbolicStochasticGradientDescent.cs | 2 +- .../SymbolicStochasticGradientDescentWithOptions.cs | 4 ++-- .../StochasticDualCoordinateAscent.cs | 2 +- .../Dynamic/Trainers/Regression/PoissonRegression.cs | 2 +- .../Trainers/Regression/PoissonRegressionWithOptions.cs | 4 ++-- 7 files changed, 11 insertions(+), 11 deletions(-) diff --git a/docs/samples/Microsoft.ML.Samples/Dynamic/Trainers/BinaryClassification/StochasticDualCoordinateAscent.cs b/docs/samples/Microsoft.ML.Samples/Dynamic/Trainers/BinaryClassification/StochasticDualCoordinateAscent.cs index 9135a6586e..d4a366ceb1 100644 --- a/docs/samples/Microsoft.ML.Samples/Dynamic/Trainers/BinaryClassification/StochasticDualCoordinateAscent.cs +++ b/docs/samples/Microsoft.ML.Samples/Dynamic/Trainers/BinaryClassification/StochasticDualCoordinateAscent.cs @@ -60,8 +60,8 @@ public static void Example() // If we wanted to specify more advanced parameters for the algorithm, // we could do so by tweaking the 'advancedSetting'. var advancedPipeline = mlContext.Transforms.Text.FeaturizeText("SentimentText", "Features") - .Append(mlContext.BinaryClassification.Trainers.SdcaCalibrated( - new SdcaCalibratedBinaryTrainer.Options { + .Append(mlContext.BinaryClassification.Trainers.SdcaLogisticRegression( + new SdcaLogisticRegressionBinaryTrainer.Options { LabelColumnName = "Sentiment", FeatureColumnName = "Features", ConvergenceTolerance = 0.01f, // The learning rate for adjusting bias from being regularized diff --git a/docs/samples/Microsoft.ML.Samples/Dynamic/Trainers/BinaryClassification/StochasticDualCoordinateAscentWithOptions.cs b/docs/samples/Microsoft.ML.Samples/Dynamic/Trainers/BinaryClassification/StochasticDualCoordinateAscentWithOptions.cs index d8c89a47bd..c08e9c56fa 100644 --- a/docs/samples/Microsoft.ML.Samples/Dynamic/Trainers/BinaryClassification/StochasticDualCoordinateAscentWithOptions.cs +++ b/docs/samples/Microsoft.ML.Samples/Dynamic/Trainers/BinaryClassification/StochasticDualCoordinateAscentWithOptions.cs @@ -22,7 +22,7 @@ public static void Example() var trainTestData = mlContext.Data.TrainTestSplit(data, testFraction: 0.1); // Define the trainer options. - var options = new SdcaCalibratedBinaryTrainer.Options() + var options = new SdcaLogisticRegressionBinaryTrainer.Options() { // Make the convergence tolerance tighter. ConvergenceTolerance = 0.05f, @@ -33,7 +33,7 @@ public static void Example() }; // Create data training pipeline. - var pipeline = mlContext.BinaryClassification.Trainers.SdcaCalibrated(options); + var pipeline = mlContext.BinaryClassification.Trainers.SdcaLogisticRegression(options); // Fit this pipeline to the training data. var model = pipeline.Fit(trainTestData.TrainSet); diff --git a/docs/samples/Microsoft.ML.Samples/Dynamic/Trainers/BinaryClassification/SymbolicStochasticGradientDescent.cs b/docs/samples/Microsoft.ML.Samples/Dynamic/Trainers/BinaryClassification/SymbolicStochasticGradientDescent.cs index 4453f929d3..8d35c621a1 100644 --- a/docs/samples/Microsoft.ML.Samples/Dynamic/Trainers/BinaryClassification/SymbolicStochasticGradientDescent.cs +++ b/docs/samples/Microsoft.ML.Samples/Dynamic/Trainers/BinaryClassification/SymbolicStochasticGradientDescent.cs @@ -19,7 +19,7 @@ public static void Example() // Leave out 10% of data for testing. var split = mlContext.Data.TrainTestSplit(data, testFraction: 0.1); // Create data training pipeline. - var pipeline = mlContext.BinaryClassification.Trainers.SymbolicSgd(labelColumnName: "IsOver50K", numberOfIterations: 25); + var pipeline = mlContext.BinaryClassification.Trainers.SymbolicSgdLogisticRegression(labelColumnName: "IsOver50K", numberOfIterations: 25); var model = pipeline.Fit(split.TrainSet); // Evaluate how the model is doing on the test data. diff --git a/docs/samples/Microsoft.ML.Samples/Dynamic/Trainers/BinaryClassification/SymbolicStochasticGradientDescentWithOptions.cs b/docs/samples/Microsoft.ML.Samples/Dynamic/Trainers/BinaryClassification/SymbolicStochasticGradientDescentWithOptions.cs index bf5a836ecc..bb6c74bebb 100644 --- a/docs/samples/Microsoft.ML.Samples/Dynamic/Trainers/BinaryClassification/SymbolicStochasticGradientDescentWithOptions.cs +++ b/docs/samples/Microsoft.ML.Samples/Dynamic/Trainers/BinaryClassification/SymbolicStochasticGradientDescentWithOptions.cs @@ -19,8 +19,8 @@ public static void Example() // Leave out 10% of data for testing. var split = mlContext.Data.TrainTestSplit(data, testFraction: 0.1); // Create data training pipeline - var pipeline = mlContext.BinaryClassification.Trainers.SymbolicSgd( - new ML.Trainers.SymbolicSgdTrainer.Options() + var pipeline = mlContext.BinaryClassification.Trainers.SymbolicSgdLogisticRegression( + new ML.Trainers.SymbolicSgdLogisticRegressionBinaryTrainer.Options() { LearningRate = 0.2f, NumberOfIterations = 10, diff --git a/docs/samples/Microsoft.ML.Samples/Dynamic/Trainers/MulticlassClassification/StochasticDualCoordinateAscent.cs b/docs/samples/Microsoft.ML.Samples/Dynamic/Trainers/MulticlassClassification/StochasticDualCoordinateAscent.cs index af632b5808..ce43ab733f 100644 --- a/docs/samples/Microsoft.ML.Samples/Dynamic/Trainers/MulticlassClassification/StochasticDualCoordinateAscent.cs +++ b/docs/samples/Microsoft.ML.Samples/Dynamic/Trainers/MulticlassClassification/StochasticDualCoordinateAscent.cs @@ -30,7 +30,7 @@ public static void Example() // Convert the string labels into key types. mlContext.Transforms.Conversion.MapValueToKey("Label") // Apply StochasticDualCoordinateAscent multiclass trainer. - .Append(mlContext.MulticlassClassification.Trainers.SdcaCalibrated()); + .Append(mlContext.MulticlassClassification.Trainers.SdcaMaximumEntropy()); // Split the data into training and test sets. Only training set is used in fitting // the created pipeline. Metrics are computed on the test. diff --git a/docs/samples/Microsoft.ML.Samples/Dynamic/Trainers/Regression/PoissonRegression.cs b/docs/samples/Microsoft.ML.Samples/Dynamic/Trainers/Regression/PoissonRegression.cs index 549c7f6ad3..44565c783e 100644 --- a/docs/samples/Microsoft.ML.Samples/Dynamic/Trainers/Regression/PoissonRegression.cs +++ b/docs/samples/Microsoft.ML.Samples/Dynamic/Trainers/Regression/PoissonRegression.cs @@ -21,7 +21,7 @@ public static void Example() var trainingData = mlContext.Data.LoadFromEnumerable(dataPoints); // Define the trainer. - var pipeline = mlContext.Regression.Trainers.PoissonRegression(); + var pipeline = mlContext.Regression.Trainers.LbfgsPoissonRegression(); // Train the model. var model = pipeline.Fit(trainingData); diff --git a/docs/samples/Microsoft.ML.Samples/Dynamic/Trainers/Regression/PoissonRegressionWithOptions.cs b/docs/samples/Microsoft.ML.Samples/Dynamic/Trainers/Regression/PoissonRegressionWithOptions.cs index e1ee16211f..53c3422b07 100644 --- a/docs/samples/Microsoft.ML.Samples/Dynamic/Trainers/Regression/PoissonRegressionWithOptions.cs +++ b/docs/samples/Microsoft.ML.Samples/Dynamic/Trainers/Regression/PoissonRegressionWithOptions.cs @@ -22,7 +22,7 @@ public static void Example() var trainingData = mlContext.Data.LoadFromEnumerable(dataPoints); // Define trainer options. - var options = new PoissonRegressionTrainer.Options + var options = new LbfgsPoissonRegressionTrainer.Options { // Reduce optimization tolerance to speed up training at the cost of accuracy. OptmizationTolerance = 1e-4f, @@ -33,7 +33,7 @@ public static void Example() }; // Define the trainer. - var pipeline = mlContext.Regression.Trainers.PoissonRegression(options); + var pipeline = mlContext.Regression.Trainers.LbfgsPoissonRegression(options); // Train the model. var model = pipeline.Fit(trainingData);