internal SdcaRegressionTrainer(IHostEnvironment env, Options options, string featureColumn, string labelColumn, string weightColumn = null)
            : base(env, options, TrainerUtils.MakeR4ScalarColumn(labelColumn), TrainerUtils.MakeR4ScalarWeightColumn(weightColumn))
        {
            Host.CheckValue(labelColumn, nameof(labelColumn));
            Host.CheckValue(featureColumn, nameof(featureColumn));

            _loss = options.LossFunction.CreateComponent(env);
            Loss  = _loss;
        }
Exemplo n.º 2
0
 /// <summary>
 /// Initializes a new instance of <see cref="OrdinaryLeastSquaresRegressionTrainer"/>
 /// </summary>
 internal OrdinaryLeastSquaresRegressionTrainer(IHostEnvironment env, Options options)
     : base(Contracts.CheckRef(env, nameof(env)).Register(LoadNameValue), TrainerUtils.MakeR4VecFeature(options.FeatureColumnName),
            TrainerUtils.MakeR4ScalarColumn(options.LabelColumnName), TrainerUtils.MakeR4ScalarWeightColumn(options.ExampleWeightColumnName))
 {
     Host.CheckValue(options, nameof(options));
     Host.CheckUserArg(options.L2Weight >= 0, nameof(options.L2Weight), "L2 regularization term cannot be negative");
     _l2Weight = options.L2Weight;
     _perParameterSignificance = options.PerParameterSignificance;
 }
 /// <summary>
 /// Initializes a new instance of <see cref="OlsTrainer"/>
 /// </summary>
 internal OlsTrainer(IHostEnvironment env, Options options)
     : base(Contracts.CheckRef(env, nameof(env)).Register(LoadNameValue), TrainerUtils.MakeR4VecFeature(options.FeatureColumnName),
            TrainerUtils.MakeR4ScalarColumn(options.LabelColumnName), TrainerUtils.MakeR4ScalarWeightColumn(options.ExampleWeightColumnName))
 {
     Host.CheckValue(options, nameof(options));
     Host.CheckUserArg(options.L2Regularization >= 0, nameof(options.L2Regularization), "L2 regularization term cannot be negative");
     _l2Weight = options.L2Regularization;
     _perParameterSignificance = options.CalculateStatistics;
 }
Exemplo n.º 4
0
        internal LbfgsTrainerBase(IHostEnvironment env,
                                  TOptions options,
                                  SchemaShape.Column labelColumn,
                                  Action <TOptions> advancedSettings = null)
            : base(Contracts.CheckRef(env, nameof(env)).Register(RegisterName), TrainerUtils.MakeR4VecFeature(options.FeatureColumnName),
                   labelColumn, TrainerUtils.MakeR4ScalarWeightColumn(options.ExampleWeightColumnName))
        {
            Host.CheckValue(options, nameof(options));
            LbfgsTrainerOptions = options;

            // Apply the advanced args, if the user supplied any.
            advancedSettings?.Invoke(options);

            options.FeatureColumnName       = FeatureColumn.Name;
            options.LabelColumnName         = LabelColumn.Name;
            options.ExampleWeightColumnName = WeightColumn.Name;
            Host.CheckUserArg(!LbfgsTrainerOptions.UseThreads || LbfgsTrainerOptions.NumberOfThreads > 0 || LbfgsTrainerOptions.NumberOfThreads == null,
                              nameof(LbfgsTrainerOptions.NumberOfThreads), "Must be positive (or empty for default)");
            Host.CheckUserArg(LbfgsTrainerOptions.L2Regularization >= 0, nameof(LbfgsTrainerOptions.L2Regularization), "Must be non-negative");
            Host.CheckUserArg(LbfgsTrainerOptions.L1Regularization >= 0, nameof(LbfgsTrainerOptions.L1Regularization), "Must be non-negative");
            Host.CheckUserArg(LbfgsTrainerOptions.OptmizationTolerance > 0, nameof(LbfgsTrainerOptions.OptmizationTolerance), "Must be positive");
            Host.CheckUserArg(LbfgsTrainerOptions.IterationsToRemember > 0, nameof(LbfgsTrainerOptions.IterationsToRemember), "Must be positive");
            Host.CheckUserArg(LbfgsTrainerOptions.NumberOfIterations > 0, nameof(LbfgsTrainerOptions.NumberOfIterations), "Must be positive");
            Host.CheckUserArg(LbfgsTrainerOptions.StochasticGradientDescentInitilaizationTolerance >= 0, nameof(LbfgsTrainerOptions.StochasticGradientDescentInitilaizationTolerance), "Must be non-negative");
            Host.CheckUserArg(LbfgsTrainerOptions.NumberOfThreads == null || LbfgsTrainerOptions.NumberOfThreads.Value >= 0, nameof(LbfgsTrainerOptions.NumberOfThreads), "Must be non-negative");

            Host.CheckParam(!(LbfgsTrainerOptions.L2Regularization < 0), nameof(LbfgsTrainerOptions.L2Regularization), "Must be non-negative, if provided.");
            Host.CheckParam(!(LbfgsTrainerOptions.L1Regularization < 0), nameof(LbfgsTrainerOptions.L1Regularization), "Must be non-negative, if provided");
            Host.CheckParam(!(LbfgsTrainerOptions.OptmizationTolerance <= 0), nameof(LbfgsTrainerOptions.OptmizationTolerance), "Must be positive, if provided.");
            Host.CheckParam(!(LbfgsTrainerOptions.IterationsToRemember <= 0), nameof(LbfgsTrainerOptions.IterationsToRemember), "Must be positive, if provided.");

            L2Weight      = LbfgsTrainerOptions.L2Regularization;
            L1Weight      = LbfgsTrainerOptions.L1Regularization;
            OptTol        = LbfgsTrainerOptions.OptmizationTolerance;
            MemorySize    = LbfgsTrainerOptions.IterationsToRemember;
            MaxIterations = LbfgsTrainerOptions.NumberOfIterations;
            SgdInitializationTolerance = LbfgsTrainerOptions.StochasticGradientDescentInitilaizationTolerance;
            Quiet                = LbfgsTrainerOptions.Quiet;
            InitWtsDiameter      = LbfgsTrainerOptions.InitialWeightsDiameter;
            UseThreads           = LbfgsTrainerOptions.UseThreads;
            NumThreads           = LbfgsTrainerOptions.NumberOfThreads;
            DenseOptimizer       = LbfgsTrainerOptions.DenseOptimizer;
            EnforceNonNegativity = LbfgsTrainerOptions.EnforceNonNegativity;

            if (EnforceNonNegativity && ShowTrainingStats)
            {
                ShowTrainingStats = false;
                using (var ch = Host.Start("Initialization"))
                {
                    ch.Warning("The training statistics cannot be computed with non-negativity constraint.");
                }
            }

            ShowTrainingStats = false;
            _srcPredictor     = default;
        }
Exemplo n.º 5
0
        internal LbfgsTrainerBase(IHostEnvironment env,
                                  TArgs args,
                                  SchemaShape.Column labelColumn,
                                  Action <TArgs> advancedSettings = null)
            : base(Contracts.CheckRef(env, nameof(env)).Register(RegisterName), TrainerUtils.MakeR4VecFeature(args.FeatureColumn),
                   labelColumn, TrainerUtils.MakeR4ScalarWeightColumn(args.WeightColumn))
        {
            Host.CheckValue(args, nameof(args));
            Args = args;

            // Apply the advanced args, if the user supplied any.
            advancedSettings?.Invoke(args);

            args.FeatureColumn = FeatureColumn.Name;
            args.LabelColumn   = LabelColumn.Name;
            args.WeightColumn  = WeightColumn.Name;
            Host.CheckUserArg(!Args.UseThreads || Args.NumThreads > 0 || Args.NumThreads == null,
                              nameof(Args.NumThreads), "numThreads must be positive (or empty for default)");
            Host.CheckUserArg(Args.L2Weight >= 0, nameof(Args.L2Weight), "Must be non-negative");
            Host.CheckUserArg(Args.L1Weight >= 0, nameof(Args.L1Weight), "Must be non-negative");
            Host.CheckUserArg(Args.OptTol > 0, nameof(Args.OptTol), "Must be positive");
            Host.CheckUserArg(Args.MemorySize > 0, nameof(Args.MemorySize), "Must be positive");
            Host.CheckUserArg(Args.MaxIterations > 0, nameof(Args.MaxIterations), "Must be positive");
            Host.CheckUserArg(Args.SgdInitializationTolerance >= 0, nameof(Args.SgdInitializationTolerance), "Must be non-negative");
            Host.CheckUserArg(Args.NumThreads == null || Args.NumThreads.Value >= 0, nameof(Args.NumThreads), "Must be non-negative");

            Host.CheckParam(!(Args.L2Weight < 0), nameof(Args.L2Weight), "Must be non-negative, if provided.");
            Host.CheckParam(!(Args.L1Weight < 0), nameof(Args.L1Weight), "Must be non-negative, if provided");
            Host.CheckParam(!(Args.OptTol <= 0), nameof(Args.OptTol), "Must be positive, if provided.");
            Host.CheckParam(!(Args.MemorySize <= 0), nameof(Args.MemorySize), "Must be positive, if provided.");

            L2Weight      = Args.L2Weight;
            L1Weight      = Args.L1Weight;
            OptTol        = Args.OptTol;
            MemorySize    = Args.MemorySize;
            MaxIterations = Args.MaxIterations;
            SgdInitializationTolerance = Args.SgdInitializationTolerance;
            Quiet                = Args.Quiet;
            InitWtsDiameter      = Args.InitWtsDiameter;
            UseThreads           = Args.UseThreads;
            NumThreads           = Args.NumThreads;
            DenseOptimizer       = Args.DenseOptimizer;
            EnforceNonNegativity = Args.EnforceNonNegativity;

            if (EnforceNonNegativity && ShowTrainingStats)
            {
                ShowTrainingStats = false;
                using (var ch = Host.Start("Initialization"))
                {
                    ch.Warning("The training statistics cannot be computed with non-negativity constraint.");
                }
            }

            ShowTrainingStats = false;
            _srcPredictor     = default;
        }
Exemplo n.º 6
0
        internal SdcaMulticlassClassificationTrainerBase(IHostEnvironment env, MulticlassOptions options,
                                                         string featureColumn, string labelColumn, string weightColumn = null)
            : base(env, options, TrainerUtils.MakeU4ScalarColumn(labelColumn), TrainerUtils.MakeR4ScalarWeightColumn(weightColumn))
        {
            Host.CheckValue(labelColumn, nameof(labelColumn));
            Host.CheckValue(featureColumn, nameof(featureColumn));

            _loss = options.InternalLoss ?? options.LossFunctionFactory.CreateComponent(env);
            Loss  = _loss;
        }
Exemplo n.º 7
0
        internal SdcaMultiClassTrainer(IHostEnvironment env, Arguments args,
                                       string featureColumn, string labelColumn, string weightColumn = null)
            : base(env, args, TrainerUtils.MakeU4ScalarColumn(labelColumn), TrainerUtils.MakeR4ScalarWeightColumn(weightColumn))
        {
            Host.CheckValue(labelColumn, nameof(labelColumn));
            Host.CheckValue(featureColumn, nameof(featureColumn));

            _loss = args.LossFunction.CreateComponent(env);
            Loss  = _loss;
        }
Exemplo n.º 8
0
 internal LdSvmTrainer(IHostEnvironment env, Options options)
     : base(Contracts.CheckRef(env, nameof(env)).Register(LoadNameValue),
            TrainerUtils.MakeR4VecFeature(options.FeatureColumnName),
            TrainerUtils.MakeBoolScalarLabel(options.LabelColumnName),
            TrainerUtils.MakeR4ScalarWeightColumn(options.ExampleWeightColumnName))
 {
     Host.CheckValue(options, nameof(options));
     CheckOptions(Host, options);
     _options = options;
 }
Exemplo n.º 9
0
 /// <summary>
 /// Initializes a new instance of <see cref="SdcaMultiClassTrainer"/>
 /// </summary>
 /// <param name="env">The environment to use.</param>
 /// <param name="labelColumn">The label, or dependent variable.</param>
 /// <param name="featureColumn">The features, or independent variables.</param>
 /// <param name="weights">The optional example weights.</param>
 /// <param name="loss">The custom loss.</param>
 /// <param name="l2Const">The L2 regularization hyperparameter.</param>
 /// <param name="l1Threshold">The L1 regularization hyperparameter. Higher values will tend to lead to more sparse model.</param>
 /// <param name="maxIterations">The maximum number of passes to perform over the data.</param>
 internal SdcaMultiClassTrainer(IHostEnvironment env,
                                string labelColumn   = DefaultColumnNames.Label,
                                string featureColumn = DefaultColumnNames.Features,
                                string weights       = null,
                                ISupportSdcaClassificationLoss loss = null,
                                float?l2Const     = null,
                                float?l1Threshold = null,
                                int?maxIterations = null)
     : base(env, featureColumn, TrainerUtils.MakeU4ScalarColumn(labelColumn), TrainerUtils.MakeR4ScalarWeightColumn(weights),
            l2Const, l1Threshold, maxIterations)
 {
     Host.CheckNonEmpty(featureColumn, nameof(featureColumn));
     Host.CheckNonEmpty(labelColumn, nameof(labelColumn));
     _loss = loss ?? SdcaTrainerOptions.LossFunction.CreateComponent(env);
     Loss  = _loss;
 }
Exemplo n.º 10
0
 /// <summary>
 /// Initializes a new instance of <see cref="SdcaRegressionTrainer"/>
 /// </summary>
 /// <param name="env">The environment to use.</param>
 /// <param name="labelColumn">The label, or dependent variable.</param>
 /// <param name="featureColumn">The features, or independent variables.</param>
 /// <param name="weights">The optional example weights.</param>
 /// <param name="loss">The custom loss.</param>
 /// <param name="l2Const">The L2 regularization hyperparameter.</param>
 /// <param name="l1Threshold">The L1 regularization hyperparameter. Higher values will tend to lead to more sparse model.</param>
 /// <param name="maxIterations">The maximum number of passes to perform over the data.</param>
 /// <param name="advancedSettings">A delegate to set more settings.
 /// The settings here will override the ones provided in the direct method signature,
 /// if both are present and have different values.
 /// The columns names, however need to be provided directly, not through the <paramref name="advancedSettings"/>.</param>
 public SdcaRegressionTrainer(IHostEnvironment env,
                              string labelColumn              = DefaultColumnNames.Label,
                              string featureColumn            = DefaultColumnNames.Features,
                              string weights                  = null,
                              ISupportSdcaRegressionLoss loss = null,
                              float?l2Const     = null,
                              float?l1Threshold = null,
                              int?maxIterations = null,
                              Action <Arguments> advancedSettings = null)
     : base(env, featureColumn, TrainerUtils.MakeR4ScalarLabel(labelColumn), TrainerUtils.MakeR4ScalarWeightColumn(weights), advancedSettings,
            l2Const, l1Threshold, maxIterations)
 {
     Host.CheckNonEmpty(featureColumn, nameof(featureColumn));
     Host.CheckNonEmpty(labelColumn, nameof(labelColumn));
     _loss = loss ?? Args.LossFunction.CreateComponent(env);
     Loss  = _loss;
 }
Exemplo n.º 11
0
        private RandomizedPcaTrainer(IHostEnvironment env, Options options, string featureColumnName, string exampleWeightColumnName,
                                     int rank = 20, int oversampling = 20, bool center = true, int?seed = null)
            : base(Contracts.CheckRef(env, nameof(env)).Register(LoadNameValue), TrainerUtils.MakeR4VecFeature(featureColumnName), default, TrainerUtils.MakeR4ScalarWeightColumn(exampleWeightColumnName))
        {
            // if the args are not null, we got here from maml, and the internal ctor.
            if (options != null)
            {
                _rank           = options.Rank;
                _ensureZeroMean = options.EnsureZeroMean;
                _oversampling   = options.Oversampling;
                _seed           = options.Seed ?? Host.Rand.Next();
            }
            else
            {
                _rank           = rank;
                _ensureZeroMean = center;
                _oversampling   = oversampling;
                _seed           = seed ?? Host.Rand.Next();
            }

            _featureColumn = featureColumnName;

            Host.CheckUserArg(_rank > 0, nameof(_rank), "Rank must be positive");
            Host.CheckUserArg(_oversampling >= 0, nameof(_oversampling), "Oversampling must be non-negative");
        }