createPredictor method
- required FeaturizationConfig featurizationConfig,
- required int forecastHorizon,
- required InputDataConfig inputDataConfig,
- required String predictorName,
- String? algorithmArn,
- EncryptionConfig? encryptionConfig,
- EvaluationParameters? evaluationParameters,
- List<
String> ? forecastTypes, - HyperParameterTuningJobConfig? hPOConfig,
- bool? performAutoML,
- bool? performHPO,
- List<
Tag> ? tags, - Map<
String, String> ? trainingParameters,
Creates an Amazon Forecast predictor.
In the request, provide a dataset group and either specify an algorithm or let Amazon Forecast choose an algorithm for you using AutoML. If you specify an algorithm, you also can override algorithm-specific hyperparameters.
Amazon Forecast uses the algorithm to train a predictor using the latest version of the datasets in the specified dataset group. You can then generate a forecast using the CreateForecast operation.
To see the evaluation metrics, use the GetAccuracyMetrics operation.
You can specify a featurization configuration to fill and aggregate the
data fields in the TARGET_TIME_SERIES
dataset to improve
model training. For more information, see FeaturizationConfig.
For RELATED_TIME_SERIES datasets, CreatePredictor
verifies
that the DataFrequency
specified when the dataset was created
matches the ForecastFrequency
. TARGET_TIME_SERIES datasets
don't have this restriction. Amazon Forecast also verifies the delimiter
and timestamp format. For more information, see
howitworks-datasets-groups.
By default, predictors are trained and evaluated at the 0.1 (P10), 0.5
(P50), and 0.9 (P90) quantiles. You can choose custom forecast types to
train and evaluate your predictor by setting the
ForecastTypes
.
AutoML
If you want Amazon Forecast to evaluate each algorithm and choose the one
that minimizes the objective function
, set
PerformAutoML
to true
. The objective
function
is defined as the mean of the weighted losses over the
forecast types. By default, these are the p10, p50, and p90 quantile
losses. For more information, see EvaluationResult.
When AutoML is enabled, the following properties are disallowed:
-
AlgorithmArn
-
HPOConfig
-
PerformHPO
-
TrainingParameters
May throw InvalidInputException. May throw ResourceAlreadyExistsException. May throw ResourceNotFoundException. May throw ResourceInUseException. May throw LimitExceededException.
Parameter featurizationConfig
:
The featurization configuration.
Parameter forecastHorizon
:
Specifies the number of time-steps that the model is trained to predict.
The forecast horizon is also called the prediction length.
For example, if you configure a dataset for daily data collection (using
the DataFrequency
parameter of the CreateDataset
operation) and set the forecast horizon to 10, the model returns
predictions for 10 days.
The maximum forecast horizon is the lesser of 500 time-steps or 1/3 of the TARGET_TIME_SERIES dataset length.
Parameter inputDataConfig
:
Describes the dataset group that contains the data to use to train the
predictor.
Parameter predictorName
:
A name for the predictor.
Parameter algorithmArn
:
The Amazon Resource Name (ARN) of the algorithm to use for model training.
Required if PerformAutoML
is not set to true
.
Supported algorithms:
-
arn:aws:forecast:::algorithm/ARIMA
-
arn:aws:forecast:::algorithm/CNN-QR
-
arn:aws:forecast:::algorithm/Deep_AR_Plus
-
arn:aws:forecast:::algorithm/ETS
-
arn:aws:forecast:::algorithm/NPTS
-
arn:aws:forecast:::algorithm/Prophet
Parameter encryptionConfig
:
An AWS Key Management Service (KMS) key and the AWS Identity and Access
Management (IAM) role that Amazon Forecast can assume to access the key.
Parameter evaluationParameters
:
Used to override the default evaluation parameters of the specified
algorithm. Amazon Forecast evaluates a predictor by splitting a dataset
into training data and testing data. The evaluation parameters define how
to perform the split and the number of iterations.
Parameter forecastTypes
:
Specifies the forecast types used to train a predictor. You can specify up
to five forecast types. Forecast types can be quantiles from 0.01 to 0.99,
by increments of 0.01 or higher. You can also specify the mean forecast
with mean
.
The default value is
."0.10", "0.50", "0.9"
Parameter hPOConfig
:
Provides hyperparameter override values for the algorithm. If you don't
provide this parameter, Amazon Forecast uses default values. The
individual algorithms specify which hyperparameters support hyperparameter
optimization (HPO). For more information, see
aws-forecast-choosing-recipes.
If you included the HPOConfig
object, you must set
PerformHPO
to true.
Parameter performAutoML
:
Whether to perform AutoML. When Amazon Forecast performs AutoML, it
evaluates the algorithms it provides and chooses the best algorithm and
configuration for your training dataset.
The default value is false
. In this case, you are required to
specify an algorithm.
Set PerformAutoML
to true
to have Amazon
Forecast perform AutoML. This is a good option if you aren't sure which
algorithm is suitable for your training data. In this case,
PerformHPO
must be false.
Parameter performHPO
:
Whether to perform hyperparameter optimization (HPO). HPO finds optimal
hyperparameter values for your training data. The process of performing
HPO is known as running a hyperparameter tuning job.
The default value is false
. In this case, Amazon Forecast
uses default hyperparameter values from the chosen algorithm.
To override the default values, set PerformHPO
to
true
and, optionally, supply the
HyperParameterTuningJobConfig object. The tuning job specifies a
metric to optimize, which hyperparameters participate in tuning, and the
valid range for each tunable hyperparameter. In this case, you are
required to specify an algorithm and PerformAutoML
must be
false.
The following algorithms support HPO:
- DeepAR+
- CNN-QR
Parameter tags
:
The optional metadata that you apply to the predictor to help you
categorize and organize them. Each tag consists of a key and an optional
value, both of which you define.
The following basic restrictions apply to tags:
- Maximum number of tags per resource - 50.
- For each resource, each tag key must be unique, and each tag key can have only one value.
- Maximum key length - 128 Unicode characters in UTF-8.
- Maximum value length - 256 Unicode characters in UTF-8.
- If your tagging schema is used across multiple services and resources, remember that other services may have restrictions on allowed characters. Generally allowed characters are: letters, numbers, and spaces representable in UTF-8, and the following characters: + - = . _ : / @.
- Tag keys and values are case sensitive.
-
Do not use
aws:
,AWS:
, or any upper or lowercase combination of such as a prefix for keys as it is reserved for AWS use. You cannot edit or delete tag keys with this prefix. Values can have this prefix. If a tag value hasaws
as its prefix but the key does not, then Forecast considers it to be a user tag and will count against the limit of 50 tags. Tags with only the key prefix ofaws
do not count against your tags per resource limit.
Parameter trainingParameters
:
The hyperparameters to override for model training. The hyperparameters
that you can override are listed in the individual algorithms. For the
list of supported algorithms, see aws-forecast-choosing-recipes.
Implementation
Future<CreatePredictorResponse> createPredictor({
required FeaturizationConfig featurizationConfig,
required int forecastHorizon,
required InputDataConfig inputDataConfig,
required String predictorName,
String? algorithmArn,
EncryptionConfig? encryptionConfig,
EvaluationParameters? evaluationParameters,
List<String>? forecastTypes,
HyperParameterTuningJobConfig? hPOConfig,
bool? performAutoML,
bool? performHPO,
List<Tag>? tags,
Map<String, String>? trainingParameters,
}) async {
ArgumentError.checkNotNull(featurizationConfig, 'featurizationConfig');
ArgumentError.checkNotNull(forecastHorizon, 'forecastHorizon');
ArgumentError.checkNotNull(inputDataConfig, 'inputDataConfig');
ArgumentError.checkNotNull(predictorName, 'predictorName');
_s.validateStringLength(
'predictorName',
predictorName,
1,
63,
isRequired: true,
);
_s.validateStringLength(
'algorithmArn',
algorithmArn,
0,
256,
);
final headers = <String, String>{
'Content-Type': 'application/x-amz-json-1.1',
'X-Amz-Target': 'AmazonForecast.CreatePredictor'
};
final jsonResponse = await _protocol.send(
method: 'POST',
requestUri: '/',
exceptionFnMap: _exceptionFns,
// TODO queryParams
headers: headers,
payload: {
'FeaturizationConfig': featurizationConfig,
'ForecastHorizon': forecastHorizon,
'InputDataConfig': inputDataConfig,
'PredictorName': predictorName,
if (algorithmArn != null) 'AlgorithmArn': algorithmArn,
if (encryptionConfig != null) 'EncryptionConfig': encryptionConfig,
if (evaluationParameters != null)
'EvaluationParameters': evaluationParameters,
if (forecastTypes != null) 'ForecastTypes': forecastTypes,
if (hPOConfig != null) 'HPOConfig': hPOConfig,
if (performAutoML != null) 'PerformAutoML': performAutoML,
if (performHPO != null) 'PerformHPO': performHPO,
if (tags != null) 'Tags': tags,
if (trainingParameters != null)
'TrainingParameters': trainingParameters,
},
);
return CreatePredictorResponse.fromJson(jsonResponse.body);
}