首页 > 解决方案 > 有没有办法使用 curl 命令来训练时间序列 Google AutoML Tables 模型?

问题描述

下面给出的 JSON 文件是用于使用 Google AutoML 表训练分类或回归模型的 request.json。

{
  "datasetId": "dataset-id",
  "displayName": "model-display-name",
  "tablesModelMetadata": {
    "trainBudgetMilliNodeHours": "train-budget-milli-node-hours",
    "optimizationObjective": "optimization-objective",
    "targetColumnSpec": {
      "name": "projects/project-id/locations/location/datasets/dataset-id/tableSpecs/table-id/columnSpecs/target-column-id"
    }
  },
}

我需要通过在 json 文件中提供“时间序列标识符”列和“预测地平线”来使用 curl 命令训练时间序列模型。所以我理想的请求文件是

{
  "datasetId": "dataset-id",
  "displayName": "model-display-name",
  "tablesModelMetadata": {
    "trainBudgetMilliNodeHours": "train-budget-milli-node-hours",
    "optimizationObjective": "optimization-objective",
    "forecastHorizon": "horizon",
    "timeseriesIdentifier":"column-id",
    "targetColumnSpec": {
      "name": "projects/project-id/locations/location/datasets/dataset-id/tableSpecs/table-id/columnSpecs/target-column-id"
    }
  },
}

这样我就可以使用命令传递上面给出的 request.json 文件

curl -X POST \
-H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
https://endpoint/v1beta1/projects/project-id/locations/location/models/

有没有办法做到这一点?

标签: curlgoogle-cloud-platformtime-seriesgoogle-cloud-automl

解决方案


目前,Cloud Auto ML Tables 提供回归或分类问题的预测。

您应该考虑使用 BigQuery ML 为时间序列模型创建模型语句,您可以使用REST API在 curl 命令中传递参数“timeSeriesIdColumn”和“horizo​​n”。

JSON 表示

{
  "trainingOptions": {
    {
     "maxIterations": string,
     "lossType": enum (LossType),
     "learnRate": number,
     "l1Regularization": number,
     "l2Regularization": number,
     "minRelativeProgress": number,
     "warmStart": boolean,
     "earlyStop": boolean,
     "inputLabelColumns": [
       string
     ],
     "dataSplitMethod": enum (DataSplitMethod),
     "dataSplitEvalFraction": number,
     "dataSplitColumn": string,
     "learnRateStrategy": enum (LearnRateStrategy),
     "initialLearnRate": number,
     "labelClassWeights": {
       string: number,
       ...
     },
     "userColumn": string,
     "itemColumn": string,
     "distanceType": enum (DistanceType),
     "numClusters": string,
     "modelUri": string,
     "optimizationStrategy": enum (OptimizationStrategy),
     "hiddenUnits": [
       string
     ],
     "batchSize": string,
     "dropout": number,
     "maxTreeDepth": string,
     "subsample": number,
     "minSplitLoss": number,
     "numFactors": string,
     "feedbackType": enum (FeedbackType),
     "walsAlpha": number,
     "kmeansInitializationMethod": enum (KmeansInitializationMethod),
     "kmeansInitializationColumn": string,
     "timeSeriesTimestampColumn": string,
     "timeSeriesDataColumn": string,
     "autoArima": boolean,
     "nonSeasonalOrder": {
       object (ArimaOrder)
     },
     "dataFrequency": enum (DataFrequency),
     "includeDrift": boolean,
     "holidayRegion": enum (HolidayRegion),
     "timeSeriesIdColumn": string,
     "horizon": string,
     "preserveInputStructs": boolean,
     "autoArimaMaxOrder": string
   }
     },
  "startTime": string,
  "results": [
    {
      object (IterationResult)
    }
  ],
  "evaluationMetrics": {
    object (EvaluationMetrics)
  },
  "dataSplitResult": {
    object (DataSplitResult)
  }
}

卷曲命令:

curl \
  'https://bigquery.googleapis.com/bigquery/v2/projects/YOUR_PROJECT/model/YOUR_MODEL?key=[YOUR_API_KEY]' \
  --header 'Authorization: Bearer [YOUR_ACCESS_TOKEN]' \
  -d @request.json \ \
  --compressed

推荐阅读