<?php
/*
 * Copyright 2014 Google Inc.
 *
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not
 * use this file except in compliance with the License. You may obtain a copy of
 * the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 * License for the specific language governing permissions and limitations under
 * the License.
 */

namespace Google\Service\Aiplatform;

class GoogleCloudAiplatformV1SchemaTrainingjobDefinitionAutoMlForecastingInputs extends \Google\Collection
{
  protected $collection_key = 'unavailableAtForecastColumns';
  /**
   * Additional experiment flags for the time series forcasting training.
   *
   * @var string[]
   */
  public $additionalExperiments;
  /**
   * Names of columns that are available and provided when a forecast is
   * requested. These columns contain information for the given entity
   * (identified by the time_series_identifier_column column) that is known at
   * forecast. For example, predicted weather for a specific day.
   *
   * @var string[]
   */
  public $availableAtForecastColumns;
  /**
   * The amount of time into the past training and prediction data is used for
   * model training and prediction respectively. Expressed in number of units
   * defined by the `data_granularity` field.
   *
   * @var string
   */
  public $contextWindow;
  protected $dataGranularityType = GoogleCloudAiplatformV1SchemaTrainingjobDefinitionAutoMlForecastingInputsGranularity::class;
  protected $dataGranularityDataType = '';
  /**
   * If probabilistic inference is enabled, the model will fit a distribution
   * that captures the uncertainty of a prediction. At inference time, the
   * predictive distribution is used to make a point prediction that minimizes
   * the optimization objective. For example, the mean of a predictive
   * distribution is the point prediction that minimizes RMSE loss. If quantiles
   * are specified, then the quantiles of the distribution are also returned.
   * The optimization objective cannot be minimize-quantile-loss.
   *
   * @var bool
   */
  public $enableProbabilisticInference;
  protected $exportEvaluatedDataItemsConfigType = GoogleCloudAiplatformV1SchemaTrainingjobDefinitionExportEvaluatedDataItemsConfig::class;
  protected $exportEvaluatedDataItemsConfigDataType = '';
  /**
   * The amount of time into the future for which forecasted values for the
   * target are returned. Expressed in number of units defined by the
   * `data_granularity` field.
   *
   * @var string
   */
  public $forecastHorizon;
  protected $hierarchyConfigType = GoogleCloudAiplatformV1SchemaTrainingjobDefinitionHierarchyConfig::class;
  protected $hierarchyConfigDataType = '';
  /**
   * The geographical region based on which the holiday effect is applied in
   * modeling by adding holiday categorical array feature that include all
   * holidays matching the date. This option only allowed when data_granularity
   * is day. By default, holiday effect modeling is disabled. To turn it on,
   * specify the holiday region using this option.
   *
   * @var string[]
   */
  public $holidayRegions;
  /**
   * Objective function the model is optimizing towards. The training process
   * creates a model that optimizes the value of the objective function over the
   * validation set. The supported optimization objectives: * "minimize-rmse"
   * (default) - Minimize root-mean-squared error (RMSE). * "minimize-mae" -
   * Minimize mean-absolute error (MAE). * "minimize-rmsle" - Minimize root-
   * mean-squared log error (RMSLE). * "minimize-rmspe" - Minimize root-mean-
   * squared percentage error (RMSPE). * "minimize-wape-mae" - Minimize the
   * combination of weighted absolute percentage error (WAPE) and mean-absolute-
   * error (MAE). * "minimize-quantile-loss" - Minimize the quantile loss at the
   * quantiles defined in `quantiles`. * "minimize-mape" - Minimize the mean
   * absolute percentage error.
   *
   * @var string
   */
  public $optimizationObjective;
  /**
   * Quantiles to use for minimize-quantile-loss `optimization_objective`, or
   * for probabilistic inference. Up to 5 quantiles are allowed of values
   * between 0 and 1, exclusive. Required if the value of optimization_objective
   * is minimize-quantile-loss. Represents the percent quantiles to use for that
   * objective. Quantiles must be unique.
   *
   * @var []
   */
  public $quantiles;
  /**
   * The name of the column that the Model is to predict values for. This column
   * must be unavailable at forecast.
   *
   * @var string
   */
  public $targetColumn;
  /**
   * The name of the column that identifies time order in the time series. This
   * column must be available at forecast.
   *
   * @var string
   */
  public $timeColumn;
  /**
   * Column names that should be used as attribute columns. The value of these
   * columns does not vary as a function of time. For example, store ID or item
   * color.
   *
   * @var string[]
   */
  public $timeSeriesAttributeColumns;
  /**
   * The name of the column that identifies the time series.
   *
   * @var string
   */
  public $timeSeriesIdentifierColumn;
  /**
   * Required. The train budget of creating this model, expressed in milli node
   * hours i.e. 1,000 value in this field means 1 node hour. The training cost
   * of the model will not exceed this budget. The final cost will be attempted
   * to be close to the budget, though may end up being (even) noticeably
   * smaller - at the backend's discretion. This especially may happen when
   * further model training ceases to provide any improvements. If the budget is
   * set to a value known to be insufficient to train a model for the given
   * dataset, the training won't be attempted and will error. The train budget
   * must be between 1,000 and 72,000 milli node hours, inclusive.
   *
   * @var string
   */
  public $trainBudgetMilliNodeHours;
  protected $transformationsType = GoogleCloudAiplatformV1SchemaTrainingjobDefinitionAutoMlForecastingInputsTransformation::class;
  protected $transformationsDataType = 'array';
  /**
   * Names of columns that are unavailable when a forecast is requested. This
   * column contains information for the given entity (identified by the
   * time_series_identifier_column) that is unknown before the forecast For
   * example, actual weather on a given day.
   *
   * @var string[]
   */
  public $unavailableAtForecastColumns;
  /**
   * Validation options for the data validation component. The available options
   * are: * "fail-pipeline" - default, will validate against the validation and
   * fail the pipeline if it fails. * "ignore-validation" - ignore the results
   * of the validation and continue
   *
   * @var string
   */
  public $validationOptions;
  /**
   * Column name that should be used as the weight column. Higher values in this
   * column give more importance to the row during model training. The column
   * must have numeric values between 0 and 10000 inclusively; 0 means the row
   * is ignored for training. If weight column field is not set, then all rows
   * are assumed to have equal weight of 1.
   *
   * @var string
   */
  public $weightColumn;
  protected $windowConfigType = GoogleCloudAiplatformV1SchemaTrainingjobDefinitionWindowConfig::class;
  protected $windowConfigDataType = '';

  /**
   * Additional experiment flags for the time series forcasting training.
   *
   * @param string[] $additionalExperiments
   */
  public function setAdditionalExperiments($additionalExperiments)
  {
    $this->additionalExperiments = $additionalExperiments;
  }
  /**
   * @return string[]
   */
  public function getAdditionalExperiments()
  {
    return $this->additionalExperiments;
  }
  /**
   * Names of columns that are available and provided when a forecast is
   * requested. These columns contain information for the given entity
   * (identified by the time_series_identifier_column column) that is known at
   * forecast. For example, predicted weather for a specific day.
   *
   * @param string[] $availableAtForecastColumns
   */
  public function setAvailableAtForecastColumns($availableAtForecastColumns)
  {
    $this->availableAtForecastColumns = $availableAtForecastColumns;
  }
  /**
   * @return string[]
   */
  public function getAvailableAtForecastColumns()
  {
    return $this->availableAtForecastColumns;
  }
  /**
   * The amount of time into the past training and prediction data is used for
   * model training and prediction respectively. Expressed in number of units
   * defined by the `data_granularity` field.
   *
   * @param string $contextWindow
   */
  public function setContextWindow($contextWindow)
  {
    $this->contextWindow = $contextWindow;
  }
  /**
   * @return string
   */
  public function getContextWindow()
  {
    return $this->contextWindow;
  }
  /**
   * Expected difference in time granularity between rows in the data.
   *
   * @param GoogleCloudAiplatformV1SchemaTrainingjobDefinitionAutoMlForecastingInputsGranularity $dataGranularity
   */
  public function setDataGranularity(GoogleCloudAiplatformV1SchemaTrainingjobDefinitionAutoMlForecastingInputsGranularity $dataGranularity)
  {
    $this->dataGranularity = $dataGranularity;
  }
  /**
   * @return GoogleCloudAiplatformV1SchemaTrainingjobDefinitionAutoMlForecastingInputsGranularity
   */
  public function getDataGranularity()
  {
    return $this->dataGranularity;
  }
  /**
   * If probabilistic inference is enabled, the model will fit a distribution
   * that captures the uncertainty of a prediction. At inference time, the
   * predictive distribution is used to make a point prediction that minimizes
   * the optimization objective. For example, the mean of a predictive
   * distribution is the point prediction that minimizes RMSE loss. If quantiles
   * are specified, then the quantiles of the distribution are also returned.
   * The optimization objective cannot be minimize-quantile-loss.
   *
   * @param bool $enableProbabilisticInference
   */
  public function setEnableProbabilisticInference($enableProbabilisticInference)
  {
    $this->enableProbabilisticInference = $enableProbabilisticInference;
  }
  /**
   * @return bool
   */
  public function getEnableProbabilisticInference()
  {
    return $this->enableProbabilisticInference;
  }
  /**
   * Configuration for exporting test set predictions to a BigQuery table. If
   * this configuration is absent, then the export is not performed.
   *
   * @param GoogleCloudAiplatformV1SchemaTrainingjobDefinitionExportEvaluatedDataItemsConfig $exportEvaluatedDataItemsConfig
   */
  public function setExportEvaluatedDataItemsConfig(GoogleCloudAiplatformV1SchemaTrainingjobDefinitionExportEvaluatedDataItemsConfig $exportEvaluatedDataItemsConfig)
  {
    $this->exportEvaluatedDataItemsConfig = $exportEvaluatedDataItemsConfig;
  }
  /**
   * @return GoogleCloudAiplatformV1SchemaTrainingjobDefinitionExportEvaluatedDataItemsConfig
   */
  public function getExportEvaluatedDataItemsConfig()
  {
    return $this->exportEvaluatedDataItemsConfig;
  }
  /**
   * The amount of time into the future for which forecasted values for the
   * target are returned. Expressed in number of units defined by the
   * `data_granularity` field.
   *
   * @param string $forecastHorizon
   */
  public function setForecastHorizon($forecastHorizon)
  {
    $this->forecastHorizon = $forecastHorizon;
  }
  /**
   * @return string
   */
  public function getForecastHorizon()
  {
    return $this->forecastHorizon;
  }
  /**
   * Configuration that defines the hierarchical relationship of time series and
   * parameters for hierarchical forecasting strategies.
   *
   * @param GoogleCloudAiplatformV1SchemaTrainingjobDefinitionHierarchyConfig $hierarchyConfig
   */
  public function setHierarchyConfig(GoogleCloudAiplatformV1SchemaTrainingjobDefinitionHierarchyConfig $hierarchyConfig)
  {
    $this->hierarchyConfig = $hierarchyConfig;
  }
  /**
   * @return GoogleCloudAiplatformV1SchemaTrainingjobDefinitionHierarchyConfig
   */
  public function getHierarchyConfig()
  {
    return $this->hierarchyConfig;
  }
  /**
   * The geographical region based on which the holiday effect is applied in
   * modeling by adding holiday categorical array feature that include all
   * holidays matching the date. This option only allowed when data_granularity
   * is day. By default, holiday effect modeling is disabled. To turn it on,
   * specify the holiday region using this option.
   *
   * @param string[] $holidayRegions
   */
  public function setHolidayRegions($holidayRegions)
  {
    $this->holidayRegions = $holidayRegions;
  }
  /**
   * @return string[]
   */
  public function getHolidayRegions()
  {
    return $this->holidayRegions;
  }
  /**
   * Objective function the model is optimizing towards. The training process
   * creates a model that optimizes the value of the objective function over the
   * validation set. The supported optimization objectives: * "minimize-rmse"
   * (default) - Minimize root-mean-squared error (RMSE). * "minimize-mae" -
   * Minimize mean-absolute error (MAE). * "minimize-rmsle" - Minimize root-
   * mean-squared log error (RMSLE). * "minimize-rmspe" - Minimize root-mean-
   * squared percentage error (RMSPE). * "minimize-wape-mae" - Minimize the
   * combination of weighted absolute percentage error (WAPE) and mean-absolute-
   * error (MAE). * "minimize-quantile-loss" - Minimize the quantile loss at the
   * quantiles defined in `quantiles`. * "minimize-mape" - Minimize the mean
   * absolute percentage error.
   *
   * @param string $optimizationObjective
   */
  public function setOptimizationObjective($optimizationObjective)
  {
    $this->optimizationObjective = $optimizationObjective;
  }
  /**
   * @return string
   */
  public function getOptimizationObjective()
  {
    return $this->optimizationObjective;
  }
  public function setQuantiles($quantiles)
  {
    $this->quantiles = $quantiles;
  }
  public function getQuantiles()
  {
    return $this->quantiles;
  }
  /**
   * The name of the column that the Model is to predict values for. This column
   * must be unavailable at forecast.
   *
   * @param string $targetColumn
   */
  public function setTargetColumn($targetColumn)
  {
    $this->targetColumn = $targetColumn;
  }
  /**
   * @return string
   */
  public function getTargetColumn()
  {
    return $this->targetColumn;
  }
  /**
   * The name of the column that identifies time order in the time series. This
   * column must be available at forecast.
   *
   * @param string $timeColumn
   */
  public function setTimeColumn($timeColumn)
  {
    $this->timeColumn = $timeColumn;
  }
  /**
   * @return string
   */
  public function getTimeColumn()
  {
    return $this->timeColumn;
  }
  /**
   * Column names that should be used as attribute columns. The value of these
   * columns does not vary as a function of time. For example, store ID or item
   * color.
   *
   * @param string[] $timeSeriesAttributeColumns
   */
  public function setTimeSeriesAttributeColumns($timeSeriesAttributeColumns)
  {
    $this->timeSeriesAttributeColumns = $timeSeriesAttributeColumns;
  }
  /**
   * @return string[]
   */
  public function getTimeSeriesAttributeColumns()
  {
    return $this->timeSeriesAttributeColumns;
  }
  /**
   * The name of the column that identifies the time series.
   *
   * @param string $timeSeriesIdentifierColumn
   */
  public function setTimeSeriesIdentifierColumn($timeSeriesIdentifierColumn)
  {
    $this->timeSeriesIdentifierColumn = $timeSeriesIdentifierColumn;
  }
  /**
   * @return string
   */
  public function getTimeSeriesIdentifierColumn()
  {
    return $this->timeSeriesIdentifierColumn;
  }
  /**
   * Required. The train budget of creating this model, expressed in milli node
   * hours i.e. 1,000 value in this field means 1 node hour. The training cost
   * of the model will not exceed this budget. The final cost will be attempted
   * to be close to the budget, though may end up being (even) noticeably
   * smaller - at the backend's discretion. This especially may happen when
   * further model training ceases to provide any improvements. If the budget is
   * set to a value known to be insufficient to train a model for the given
   * dataset, the training won't be attempted and will error. The train budget
   * must be between 1,000 and 72,000 milli node hours, inclusive.
   *
   * @param string $trainBudgetMilliNodeHours
   */
  public function setTrainBudgetMilliNodeHours($trainBudgetMilliNodeHours)
  {
    $this->trainBudgetMilliNodeHours = $trainBudgetMilliNodeHours;
  }
  /**
   * @return string
   */
  public function getTrainBudgetMilliNodeHours()
  {
    return $this->trainBudgetMilliNodeHours;
  }
  /**
   * Each transformation will apply transform function to given input column.
   * And the result will be used for training. When creating transformation for
   * BigQuery Struct column, the column should be flattened using "." as the
   * delimiter.
   *
   * @param GoogleCloudAiplatformV1SchemaTrainingjobDefinitionAutoMlForecastingInputsTransformation[] $transformations
   */
  public function setTransformations($transformations)
  {
    $this->transformations = $transformations;
  }
  /**
   * @return GoogleCloudAiplatformV1SchemaTrainingjobDefinitionAutoMlForecastingInputsTransformation[]
   */
  public function getTransformations()
  {
    return $this->transformations;
  }
  /**
   * Names of columns that are unavailable when a forecast is requested. This
   * column contains information for the given entity (identified by the
   * time_series_identifier_column) that is unknown before the forecast For
   * example, actual weather on a given day.
   *
   * @param string[] $unavailableAtForecastColumns
   */
  public function setUnavailableAtForecastColumns($unavailableAtForecastColumns)
  {
    $this->unavailableAtForecastColumns = $unavailableAtForecastColumns;
  }
  /**
   * @return string[]
   */
  public function getUnavailableAtForecastColumns()
  {
    return $this->unavailableAtForecastColumns;
  }
  /**
   * Validation options for the data validation component. The available options
   * are: * "fail-pipeline" - default, will validate against the validation and
   * fail the pipeline if it fails. * "ignore-validation" - ignore the results
   * of the validation and continue
   *
   * @param string $validationOptions
   */
  public function setValidationOptions($validationOptions)
  {
    $this->validationOptions = $validationOptions;
  }
  /**
   * @return string
   */
  public function getValidationOptions()
  {
    return $this->validationOptions;
  }
  /**
   * Column name that should be used as the weight column. Higher values in this
   * column give more importance to the row during model training. The column
   * must have numeric values between 0 and 10000 inclusively; 0 means the row
   * is ignored for training. If weight column field is not set, then all rows
   * are assumed to have equal weight of 1.
   *
   * @param string $weightColumn
   */
  public function setWeightColumn($weightColumn)
  {
    $this->weightColumn = $weightColumn;
  }
  /**
   * @return string
   */
  public function getWeightColumn()
  {
    return $this->weightColumn;
  }
  /**
   * Config containing strategy for generating sliding windows.
   *
   * @param GoogleCloudAiplatformV1SchemaTrainingjobDefinitionWindowConfig $windowConfig
   */
  public function setWindowConfig(GoogleCloudAiplatformV1SchemaTrainingjobDefinitionWindowConfig $windowConfig)
  {
    $this->windowConfig = $windowConfig;
  }
  /**
   * @return GoogleCloudAiplatformV1SchemaTrainingjobDefinitionWindowConfig
   */
  public function getWindowConfig()
  {
    return $this->windowConfig;
  }
}

// Adding a class alias for backwards compatibility with the previous class name.
class_alias(GoogleCloudAiplatformV1SchemaTrainingjobDefinitionAutoMlForecastingInputs::class, 'Google_Service_Aiplatform_GoogleCloudAiplatformV1SchemaTrainingjobDefinitionAutoMlForecastingInputs');
