Skip to content

Fix typo in time series forecasting API. #3944

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Jul 1, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -48,8 +48,8 @@ public static void Example()
// Instantiate the forecasting model.
var model = ml.Forecasting.ForecastBySsa(outputColumnName, inputColumnName, 5, 11, data.Count, 5,
confidenceLevel: 0.95f,
forcastingConfidentLowerBoundColumnName: "ConfidenceLowerBound",
forcastingConfidentUpperBoundColumnName: "ConfidenceUpperBound");
lowerBoundConfidenceColumn: "ConfidenceLowerBound",
upperBoundConfidenceColumn: "ConfidenceUpperBound");

// Train.
var transformer = model.Fit(dataView);
Expand Down
14 changes: 7 additions & 7 deletions src/Microsoft.ML.TimeSeries/ExtensionsCatalog.cs
Original file line number Diff line number Diff line change
Expand Up @@ -164,11 +164,11 @@ public static SrCnnAnomalyEstimator DetectAnomalyBySrCnn(this TransformsCatalog
/// <param name="rank">The desired rank of the subspace used for SSA projection (parameter r). This parameter should be in the range in [1, windowSize].
/// If set to null, the rank is automatically determined based on prediction error minimization.</param>
/// <param name="maxRank">The maximum rank considered during the rank selection process. If not provided (i.e. set to null), it is set to windowSize - 1.</param>
/// <param name="shouldStablize">The flag determining whether the model should be stabilized.</param>
/// <param name="shouldStabilize">The flag determining whether the model should be stabilized.</param>
/// <param name="shouldMaintainInfo">The flag determining whether the meta information for the model needs to be maintained.</param>
/// <param name="maxGrowth">The maximum growth on the exponential trend.</param>
/// <param name="forcastingConfidentLowerBoundColumnName">The name of the confidence interval lower bound column. If not specified then confidence intervals will not be calculated.</param>
/// <param name="forcastingConfidentUpperBoundColumnName">The name of the confidence interval upper bound column. If not specified then confidence intervals will not be calculated.</param>
/// <param name="lowerBoundConfidenceColumn">The name of the confidence interval lower bound column. If not specified then confidence intervals will not be calculated.</param>
/// <param name="upperBoundConfidenceColumn">The name of the confidence interval upper bound column. If not specified then confidence intervals will not be calculated.</param>
/// <param name="confidenceLevel">The confidence level for forecasting.</param>
/// <param name="variableHorizon">Set this to true if horizon will change after training(at prediction time).</param>
/// <example>
Expand All @@ -182,10 +182,10 @@ public static SrCnnAnomalyEstimator DetectAnomalyBySrCnn(this TransformsCatalog
public static SsaForecastingEstimator ForecastBySsa(
this ForecastingCatalog catalog, string outputColumnName, string inputColumnName, int windowSize, int seriesLength, int trainSize, int horizon,
bool isAdaptive = false, float discountFactor = 1, RankSelectionMethod rankSelectionMethod = RankSelectionMethod.Exact, int? rank = null,
int? maxRank = null, bool shouldStablize = true, bool shouldMaintainInfo = false, GrowthRatio? maxGrowth = null, string forcastingConfidentLowerBoundColumnName = null,
string forcastingConfidentUpperBoundColumnName = null, float confidenceLevel = 0.95f, bool variableHorizon = false) =>
int? maxRank = null, bool shouldStabilize = true, bool shouldMaintainInfo = false, GrowthRatio? maxGrowth = null, string lowerBoundConfidenceColumn = null,
string upperBoundConfidenceColumn = null, float confidenceLevel = 0.95f, bool variableHorizon = false) =>
new SsaForecastingEstimator(CatalogUtils.GetEnvironment(catalog), outputColumnName, inputColumnName, windowSize, seriesLength, trainSize,
horizon, isAdaptive, discountFactor, rankSelectionMethod, rank, maxRank, shouldStablize, shouldMaintainInfo, maxGrowth, forcastingConfidentLowerBoundColumnName,
forcastingConfidentUpperBoundColumnName, confidenceLevel, variableHorizon);
horizon, isAdaptive, discountFactor, rankSelectionMethod, rank, maxRank, shouldStabilize, shouldMaintainInfo, maxGrowth, lowerBoundConfidenceColumn,
upperBoundConfidenceColumn, confidenceLevel, variableHorizon);
}
}
40 changes: 20 additions & 20 deletions src/Microsoft.ML.TimeSeries/SSaForecasting.cs
Original file line number Diff line number Diff line change
Expand Up @@ -42,10 +42,10 @@ internal sealed class Options : TransformInputBase
public string Name;

[Argument(ArgumentType.AtMostOnce, HelpText = "The name of the confidence interval lower bound column.", ShortName = "cnfminname", SortOrder = 3)]
public string ForcastingConfidentLowerBoundColumnName;
public string LowerBoundConfidenceColumn;

[Argument(ArgumentType.AtMostOnce, HelpText = "The name of the confidence interval upper bound column.", ShortName = "cnfmaxnname", SortOrder = 3)]
public string ForcastingConfidentUpperBoundColumnName;
public string UpperBoundConfidenceColumn;

[Argument(ArgumentType.AtMostOnce, HelpText = "The discount factor in [0,1] used for online updates.", ShortName = "disc", SortOrder = 5)]
public float DiscountFactor = 1;
Expand All @@ -67,7 +67,7 @@ internal sealed class Options : TransformInputBase
public int? MaxRank = null;

[Argument(ArgumentType.AtMostOnce, HelpText = "The flag determining whether the model should be stabilized.", SortOrder = 3)]
public bool ShouldStablize = true;
public bool ShouldStabilize = true;

[Argument(ArgumentType.AtMostOnce, HelpText = "The flag determining whether the meta information for the model needs to be maintained.", SortOrder = 3)]
public bool ShouldMaintainInfo = false;
Expand Down Expand Up @@ -97,14 +97,14 @@ public BaseArguments(Options options)
{
Source = options.Source;
Name = options.Name;
ForcastingConfidentLowerBoundColumnName = options.ForcastingConfidentLowerBoundColumnName;
ForcastingConfidentUpperBoundColumnName = options.ForcastingConfidentUpperBoundColumnName;
LowerBoundConfidenceColumn = options.LowerBoundConfidenceColumn;
UpperBoundConfidenceColumn = options.UpperBoundConfidenceColumn;
WindowSize = options.WindowSize;
DiscountFactor = options.DiscountFactor;
IsAdaptive = options.IsAdaptive;
RankSelectionMethod = options.RankSelectionMethod;
Rank = options.Rank;
ShouldStablize = options.ShouldStablize;
ShouldStablize = options.ShouldStabilize;
MaxGrowth = options.MaxGrowth;
SeriesLength = options.SeriesLength;
TrainSize = options.TrainSize;
Expand Down Expand Up @@ -255,11 +255,11 @@ public sealed class SsaForecastingEstimator : IEstimator<SsaForecastingTransform
/// <param name="rank">The desired rank of the subspace used for SSA projection (parameter r). This parameter should be in the range in [1, windowSize].
/// If set to null, the rank is automatically determined based on prediction error minimization.</param>
/// <param name="maxRank">The maximum rank considered during the rank selection process. If not provided (i.e. set to null), it is set to windowSize - 1.</param>
/// <param name="shouldStablize">The flag determining whether the model should be stabilized.</param>
/// <param name="shouldStabilize">The flag determining whether the model should be stabilized.</param>
/// <param name="shouldMaintainInfo">The flag determining whether the meta information for the model needs to be maintained.</param>
/// <param name="maxGrowth">The maximum growth on the exponential trend.</param>
/// <param name="forcastingConfidentLowerBoundColumnName">The name of the confidence interval lower bound column. If not specified then confidence intervals will not be calculated.</param>
/// <param name="forcastingConfidentUpperBoundColumnName">The name of the confidence interval upper bound column. If not specified then confidence intervals will not be calculated.</param>
/// <param name="lowerBoundConfidenceColumn">The name of the confidence interval lower bound column. If not specified then confidence intervals will not be calculated.</param>
/// <param name="upperBoundConfidenceColumn">The name of the confidence interval upper bound column. If not specified then confidence intervals will not be calculated.</param>
/// <param name="confidenceLevel">The confidence level for forecasting.</param>
/// <param name="variableHorizon">Set this to true if horizon will change after training.</param>
internal SsaForecastingEstimator(IHostEnvironment env,
Expand All @@ -274,11 +274,11 @@ internal SsaForecastingEstimator(IHostEnvironment env,
RankSelectionMethod rankSelectionMethod = RankSelectionMethod.Exact,
int? rank = null,
int? maxRank = null,
bool shouldStablize = true,
bool shouldStabilize = true,
bool shouldMaintainInfo = false,
GrowthRatio? maxGrowth = null,
string forcastingConfidentLowerBoundColumnName = null,
string forcastingConfidentUpperBoundColumnName = null,
string lowerBoundConfidenceColumn = null,
string upperBoundConfidenceColumn = null,
float confidenceLevel = 0.95f,
bool variableHorizon = false)
: this(env, new SsaForecastingTransformer.Options
Expand All @@ -291,12 +291,12 @@ internal SsaForecastingEstimator(IHostEnvironment env,
RankSelectionMethod = rankSelectionMethod,
Rank = rank,
MaxRank = maxRank,
ShouldStablize = shouldStablize,
ShouldStabilize = shouldStabilize,
ShouldMaintainInfo = shouldMaintainInfo,
MaxGrowth = maxGrowth,
ConfidenceLevel = confidenceLevel,
ForcastingConfidentLowerBoundColumnName = forcastingConfidentLowerBoundColumnName,
ForcastingConfidentUpperBoundColumnName = forcastingConfidentUpperBoundColumnName,
LowerBoundConfidenceColumn = lowerBoundConfidenceColumn,
UpperBoundConfidenceColumn = upperBoundConfidenceColumn,
SeriesLength = seriesLength,
TrainSize = trainSize,
VariableHorizon = variableHorizon,
Expand Down Expand Up @@ -344,14 +344,14 @@ public SchemaShape GetOutputSchema(SchemaShape inputSchema)
resultDic[_options.Name] = new SchemaShape.Column(
_options.Name, SchemaShape.Column.VectorKind.Vector, NumberDataViewType.Single, false);

if (!string.IsNullOrEmpty(_options.ForcastingConfidentUpperBoundColumnName))
if (!string.IsNullOrEmpty(_options.UpperBoundConfidenceColumn))
{
resultDic[_options.ForcastingConfidentLowerBoundColumnName] = new SchemaShape.Column(
_options.ForcastingConfidentLowerBoundColumnName, SchemaShape.Column.VectorKind.Vector,
resultDic[_options.LowerBoundConfidenceColumn] = new SchemaShape.Column(
_options.LowerBoundConfidenceColumn, SchemaShape.Column.VectorKind.Vector,
NumberDataViewType.Single, false);

resultDic[_options.ForcastingConfidentUpperBoundColumnName] = new SchemaShape.Column(
_options.ForcastingConfidentUpperBoundColumnName, SchemaShape.Column.VectorKind.Vector,
resultDic[_options.UpperBoundConfidenceColumn] = new SchemaShape.Column(
_options.UpperBoundConfidenceColumn, SchemaShape.Column.VectorKind.Vector,
NumberDataViewType.Single, false);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,11 +28,11 @@ internal abstract class ForecastingArgumentsBase

[Argument(ArgumentType.Required, HelpText = "The name of the confidence interval lower bound column.", ShortName = "cnfminname",
SortOrder = 2)]
public string ForcastingConfidentLowerBoundColumnName;
public string LowerBoundConfidenceColumn;

[Argument(ArgumentType.Required, HelpText = "The name of the confidence interval upper bound column.", ShortName = "cnfmaxnname",
SortOrder = 2)]
public string ForcastingConfidentUpperBoundColumnName;
public string UpperBoundConfidenceColumn;

[Argument(ArgumentType.AtMostOnce, HelpText = "The length of series from the begining used for training.", ShortName = "wnd",
SortOrder = 3)]
Expand Down Expand Up @@ -67,8 +67,8 @@ private protected SequentialForecastingTransformBase(int windowSize, int initial
}

private protected SequentialForecastingTransformBase(ForecastingArgumentsBase args, string name, int outputLength, IHostEnvironment env)
: this(args.TrainSize, args.SeriesLength, args.Source, args.ForcastingConfidentLowerBoundColumnName,
args.ForcastingConfidentUpperBoundColumnName, args.Name, name, outputLength, env)
: this(args.TrainSize, args.SeriesLength, args.Source, args.LowerBoundConfidenceColumn,
args.UpperBoundConfidenceColumn, args.Name, name, outputLength, env)
{
}

Expand Down
6 changes: 3 additions & 3 deletions src/Microsoft.ML.TimeSeries/SsaForecastingBase.cs
Original file line number Diff line number Diff line change
Expand Up @@ -127,16 +127,16 @@ internal sealed class SsaForecastingBase : SequentialForecastingTransformBase<fl
internal SequenceModelerBase<Single, Single> Model;

public SsaForecastingBase(SsaForecastingOptions options, string name, IHostEnvironment env, SsaForecastingBaseWrapper parent)
: base(options.TrainSize, 0, options.Source, options.Name, options.ForcastingConfidentLowerBoundColumnName,
options.ForcastingConfidentUpperBoundColumnName, name, options.VariableHorizon ? 0: options.Horizon, env)
: base(options.TrainSize, 0, options.Source, options.Name, options.LowerBoundConfidenceColumn,
options.UpperBoundConfidenceColumn, name, options.VariableHorizon ? 0: options.Horizon, env)
{
Host.CheckUserArg(0 <= options.DiscountFactor && options.DiscountFactor <= 1, nameof(options.DiscountFactor), "Must be in the range [0, 1].");
IsAdaptive = options.IsAdaptive;
Horizon = options.Horizon;
ConfidenceLevel = options.ConfidenceLevel;
// Creating the master SSA model
Model = new AdaptiveSingularSpectrumSequenceModelerInternal(Host, options.TrainSize, options.SeriesLength, options.WindowSize,
options.DiscountFactor, options.RankSelectionMethod, options.Rank, options.MaxRank, !string.IsNullOrEmpty(options.ForcastingConfidentLowerBoundColumnName),
options.DiscountFactor, options.RankSelectionMethod, options.Rank, options.MaxRank, !string.IsNullOrEmpty(options.LowerBoundConfidenceColumn),
options.ShouldStablize, options.ShouldMaintainInfo, options.MaxGrowth);

StateRef = new State();
Expand Down
6 changes: 3 additions & 3 deletions test/BaselineOutput/Common/EntryPoints/core_manifest.json
Original file line number Diff line number Diff line change
Expand Up @@ -4095,7 +4095,7 @@
"Default": false
},
{
"Name": "ForcastingConfidentLowerBoundColumnName",
"Name": "LowerBoundConfidenceColumn",
"Type": "String",
"Desc": "The name of the confidence interval lower bound column.",
"Aliases": [
Expand All @@ -4107,7 +4107,7 @@
"Default": null
},
{
"Name": "ForcastingConfidentUpperBoundColumnName",
"Name": "UpperBoundConfidenceColumn",
"Type": "String",
"Desc": "The name of the confidence interval upper bound column.",
"Aliases": [
Expand Down Expand Up @@ -4153,7 +4153,7 @@
"Default": null
},
{
"Name": "ShouldStablize",
"Name": "ShouldStabilize",
"Type": "Bool",
"Desc": "The flag determining whether the model should be stabilized.",
"Required": false,
Expand Down
12 changes: 6 additions & 6 deletions test/Microsoft.ML.TimeSeries.Tests/TimeSeriesDirectApi.cs
Original file line number Diff line number Diff line change
Expand Up @@ -338,8 +338,8 @@ public void SsaForecast()
ConfidenceLevel = 0.95f,
Source = "Value",
Name = "Forecast",
ForcastingConfidentLowerBoundColumnName = "MinCnf",
ForcastingConfidentUpperBoundColumnName = "MaxCnf",
LowerBoundConfidenceColumn = "MinCnf",
UpperBoundConfidenceColumn = "MaxCnf",
WindowSize = 10,
SeriesLength = 11,
TrainSize = 22,
Expand Down Expand Up @@ -397,8 +397,8 @@ public void SsaForecastPredictionEngine()
SeriesLength = 11,
TrainSize = 22,
Horizon = 4,
ForcastingConfidentLowerBoundColumnName = "ConfidenceLowerBound",
ForcastingConfidentUpperBoundColumnName = "ConfidenceUpperBound",
LowerBoundConfidenceColumn = "ConfidenceLowerBound",
UpperBoundConfidenceColumn = "ConfidenceUpperBound",
VariableHorizon = true
};

Expand All @@ -413,8 +413,8 @@ public void SsaForecastPredictionEngine()
var model = ml.Transforms.Text.FeaturizeText("Text_Featurized", "Text")
.Append(ml.Transforms.Conversion.ConvertType("Value", "Value", DataKind.Single))
.Append(ml.Forecasting.ForecastBySsa("Forecast", "Value", 10, 11, 22, 4,
forcastingConfidentLowerBoundColumnName: "ConfidenceLowerBound",
forcastingConfidentUpperBoundColumnName: "ConfidenceUpperBound", variableHorizon: true))
lowerBoundConfidenceColumn: "ConfidenceLowerBound",
upperBoundConfidenceColumn: "ConfidenceUpperBound", variableHorizon: true))
.Append(ml.Transforms.Concatenate("Forecast", "Forecast", "ConfidenceLowerBound", "ConfidenceUpperBound"))
.Fit(dataView);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -95,8 +95,8 @@ void TestSsaForecastingEstimator()

// Train
var pipe = new SsaForecastingEstimator(Env, "Forecast", "Value", 10, 11, 22, 4,
forcastingConfidentLowerBoundColumnName: "ConfidenceLowerBound",
forcastingConfidentUpperBoundColumnName: "ConfidenceUpperBound");
lowerBoundConfidenceColumn: "ConfidenceLowerBound",
upperBoundConfidenceColumn: "ConfidenceUpperBound");

var xyData = new List<TestDataXY> { new TestDataXY() { A = new float[inputSize] } };
var stringData = new List<TestDataDifferntType> { new TestDataDifferntType() { data_0 = new string[inputSize] } };
Expand Down