

 Amazon Redshift 將不再支援從修補程式 198 開始建立新的 Python UDFs。現有 Python UDF 將繼續正常運作至 2026 年 6 月 30 日。如需詳細資訊，請參閱[部落格文章](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/)。

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# CREATE MODEL
<a name="r_CREATE_MODEL"></a>

**Topics**
+ [先決條件](#r_create_model_prereqs)
+ [所需權限](#r_simple_create_model-privileges)
+ [成本控制](#r_create_model_cost)
+ [完整的 CREATE MODEL](#r_full_create_model)
+ [Parameters](#r_create_model_parameters)
+ [使用須知](r_create_model_usage_notes.md)
+ [使用案例](r_create_model_use_cases.md)

## 先決條件
<a name="r_create_model_prereqs"></a>

使用 CREATE MODEL 陳述式之前，請先完成 [使用 Amazon Redshift ML 的叢集設定](getting-started-machine-learning.md#cluster-setup) 中的先決條件。以下是先決條件的概要。
+ 使用 AWS 管理主控台或命令列界面 (AWS CLI) 建立 AWS Amazon Redshift 叢集。
+ 在建立叢集時連接 AWS Identity and Access Management (IAM) 政策。
+ 若要允許 Amazon Redshift 和 SageMaker AI 擔任與其他服務互動的角色，請將適當的信任政策新增至 IAM 角色。

如需 IAM 角色、信任政策和其他先決條件的詳細資訊，請參閱 [使用 Amazon Redshift ML 的叢集設定](getting-started-machine-learning.md#cluster-setup)。

接下來，你可以找到 CREATE MODEL 陳述式的不同使用案例。
+ [簡易 CREATE MODEL](r_create_model_use_cases.md#r_simple_create_model)
+ [CREATE MODEL 和使用者指引](r_create_model_use_cases.md#r_user_guidance_create_model)
+ [CREATE XGBoost 模型與 AUTO OFF](r_create_model_use_cases.md#r_auto_off_create_model)
+ [使用自有模型 (BYOM) - 本機推論](r_create_model_use_cases.md#r_byom_create_model)
+ [使用自有模型 (BYOM) - 遠端推論](r_create_model_use_cases.md#r_byom_create_model_remote)
+ [CREATE MODEL 與 K-MEANS](r_create_model_use_cases.md#r_k-means_create_model)
+ [完整的 CREATE MODEL](#r_full_create_model)

## 所需權限
<a name="r_simple_create_model-privileges"></a>

以下是 CREATE MODEL 所需的權限：
+ 超級使用者
+ 具有 CREATE MODEL 權限的使用者
+ 具有 GRANT CREATE MODEL 權限的角色

## 成本控制
<a name="r_create_model_cost"></a>

 Amazon Redshift ML 會使用現有的叢集資源建立預測模型，因此您不必支付額外費用。但是，如果您需要調整叢集大小或想要訓練模型，則可能會產生額外費用。Amazon Redshift ML 會使用 Amazon SageMaker AI 來訓練模型，這確實會產生額外的相關費用。有一些方法可以控制額外成本，例如限制訓練所耗用的時間上限，或限制用於訓練模型的訓練範例數量。如需詳細資訊，請參閱[使用 Amazon Redshift 資料 API](https://docs.aws.amazon.com/redshift/latest/dg/cost.html)。

## 完整的 CREATE MODEL
<a name="r_full_create_model"></a>

以下概述完整 CREATE MODEL 語法的基本選項。

### 完整的 CREATE MODEL 語法
<a name="r_auto_off-create-model-synposis"></a>

以下是 CREATE MODEL 陳述式的完整語法。

**重要**  
使用 CREATE MODEL 陳述式建立模型時，請遵循下列語法中的關鍵字順序。

```
CREATE MODEL model_name
FROM { table_name | ( select_statement )  | 'job_name' }
[ TARGET column_name ]
FUNCTION function_name [ ( data_type [, ...] ) ] 
[ RETURNS data_type ] 
  -- supported only for BYOM
[ SAGEMAKER 'endpoint_name'[:'model_name']] 
  -- supported only for BYOM remote inference
IAM_ROLE { default | 'arn:aws:iam::<account-id>:role/<role-name>' }
[ AUTO ON / OFF ]
  -- default is AUTO ON
[ MODEL_TYPE { XGBOOST | MLP | LINEAR_LEARNER | KMEANS | FORECAST } ]
  -- not required for non AUTO OFF case, default is the list of all supported types
  -- required for AUTO OFF
[ PROBLEM_TYPE ( REGRESSION | BINARY_CLASSIFICATION | MULTICLASS_CLASSIFICATION ) ]
  -- not supported when AUTO OFF
[ OBJECTIVE ( 'MSE' | 'Accuracy' | 'F1' | 'F1_Macro' | 'AUC' |
             'reg:squarederror' | 'reg:squaredlogerror'| 'reg:logistic'|
             'reg:pseudohubererror' | 'reg:tweedie' | 'binary:logistic' | 'binary:hinge',
             'multi:softmax' | 'RMSE' | 'WAPE' | 'MAPE' | 'MASE' | 'AverageWeightedQuantileLoss' ) ]
  -- for AUTO ON: first 5 are valid
  -- for AUTO OFF: 6-13 are valid
  -- for FORECAST: 14-18 are valid
[ PREPROCESSORS 'string' ]
  -- required for AUTO OFF, when it has to be 'none'
  -- optional for AUTO ON
[ HYPERPARAMETERS { DEFAULT | DEFAULT EXCEPT ( Key 'value' (,...) ) } ]
  -- support XGBoost hyperparameters, except OBJECTIVE
  -- required and only allowed for AUTO OFF
  -- default NUM_ROUND is 100
  -- NUM_CLASS is required if objective is multi:softmax (only possible for AUTO OFF)
 [ SETTINGS (
   S3_BUCKET 'amzn-s3-demo-bucket',  |
    -- required
  TAGS 'string', |
    -- optional
  KMS_KEY_ID 'kms_string', |
    -- optional
  S3_GARBAGE_COLLECT on / off, |
    -- optional, defualt is on.
  MAX_CELLS integer, |
    -- optional, default is 1,000,000
  MAX_RUNTIME integer (, ...) |
    -- optional, default is 5400 (1.5 hours)
  HORIZON integer, |
    -- required if creating a forecast model
  FREQUENCY integer, |
    -- required if creating a forecast model
  PERCENTILES string, |
    -- optional if creating a forecast model
  MAX_BATCH_ROWS integer -- optional for BYOM remote inference
    ) ]
```

## Parameters
<a name="r_create_model_parameters"></a>

model\_name  
模型的名稱。結構描述中的模型名稱必須是唯一的。

FROM \{ *table\_name* \| ( *select\_query* ) \| *'job\_name'*\}  
指定訓練資料的 table\_name 或查詢。這可以是系統中現有的資料表，也可以是與 Amazon RedShift 相容的 SELECT 查詢，並以括號括住，也就是 ()。查詢結果中至少必須有兩個資料列。

TARGET *column\_name*  
成為預測目標的資料欄名稱。該資料欄必須存在於 FROM 子句中。

FUNCTION *function\_name* ( *data\_type* [, ...] )  
要建立的函數名稱和輸入引數的資料類型。您可以提供資料庫中結構描述的結構描述名稱，而非函式名稱。

RETURNS *data\_type*  
從模型的函式傳回的資料類型。傳回的 `SUPER` 資料類型僅適用於具有遠端推論的 BYOM。

SAGEMAKER *'endpoint\_name'*[:*'model\_name'*]  
Amazon SageMaker AI 端點的名稱。如果端點名稱指向多模型端點，請新增要使用的模型名稱。端點必須託管在與 Amazon Redshift 叢集 AWS 區域 相同的 中。

IAM\_ROLE \{ default \| 'arn:aws:iam::<account-id>:role/<role-name>'\}  
 使用預設關鍵字，讓 Amazon Redshift 使用設定為預設並在執行 CREATE MODEL 命令時與叢集關聯的 IAM 角色。或者，您可以指定 IAM 角色的 ARN 以使用該角色。

[ AUTO ON / OFF ]  
 開啟或關閉預處理器、演算法和超參數選擇的 CREATE MODEL 自動探索。在建立預測模型時指定開啟，以使用 AutoPredictor，其中 Amazon Forecast 會將最佳演算法組合套用至資料集中的每個時間序列。

 *MODEL\_TYPE \{ XGBOOST \| MLP \| LINEAR\_LEARNER \| KMEANS \| FORECAST \}*   
(選擇性) 指定模型類型。您可以指定是否要訓練特定模型類型的模型，例如 XGBoost、多層感知器 (MLP)、KMEANS 或線性學習程式，這些都是 Amazon SageMaker AI Autopilot 支援的演算法。如果未指定參數，則會在訓練期間搜尋所有支援的模型類型，以取得最佳模型。您也可以在 Redshift ML 中建立預測模型，以建立準確的時間序列預測。

 *PROBLEM\_TYPE ( REGRESSION \| BINARY\_CLASSIFICATION \| MULTICLASS\_CLASSIFICATION )*   
(選擇性) 指定問題類型。如果您知道問題類型，則可以將 Amazon Redshift 限制為僅搜尋該特定模型類型的最佳模型。如果未指定此參數，則訓練期間會根據您的資料探索問題類型。

OBJECTIVE ( 'MSE' \| 'Accuracy' \| 'F1' \| 'F1Macro' \| 'AUC' \| 'reg:squarederror' \| 'reg:squaredlogerror' \| 'reg:logistic' \| 'reg:pseudohubererror' \| 'reg:tweedie' \| 'binary:logistic' \| 'binary:hinge' \| 'multi:softmax' \| 'RMSE' \| 'WAPE' \| 'MAPE' \| 'MASE' \| 'AverageWeightedQuantileLoss' )  
(選擇性) 指定用來測量機器學習系統預測品質的目標指標名稱。此指標會在訓練期間進行最佳化，從資料中提供模型參數值的最佳估計值。如果您沒有明確指定指標，則預設行為是自動將 MSE: 用於迴歸、將 F1: 用於二進制分類、將 Accuracy: 用於多類別分類。如需目標的相關資訊，請參閱 *Amazon SageMaker AI API 參考*中的 [AutoMLJobObjective](https://docs.aws.amazon.com//sagemaker/latest/APIReference/API_AutoMLJobObjective.html) 和 XGBOOST 文件中的[學習任務參數](https://xgboost.readthedocs.io/en/latest/parameter.html#learning-task-parameters)。RMSE、WAPE、MAPE、MASE 和 AverageWeightedQuantileLoss 僅適用於預測模型。如需詳細資訊，請參閱 [CreateAutoPredictor](https://docs.aws.amazon.com/forecast/latest/dg/API_CreateAutoPredictor.html#forecast-CreateAutoPredictor-request-OptimizationMetric) API 操作。

 *PREPROCESSORS 'string' *   
(選擇性) 指定特定資料欄集的特定預處理器組合。格式會是 columnSets 清單，以及要套用到每一組資料欄的適當轉換。Amazon Redshift 會將特定轉換清單中的所有轉換套用至對應 ColumnSet 中的所有資料欄。例如，若要將帶有 Imputer 的 OneHotenCoder 套用至資料欄 t1 和 t2，請使用以下範例命令。  

```
CREATE MODEL customer_churn
FROM customer_data
TARGET 'Churn'
FUNCTION predict_churn
IAM_ROLE { default | 'arn:aws:iam::<account-id>:role/<role-name>' }
PROBLEM_TYPE BINARY_CLASSIFICATION
OBJECTIVE 'F1'
PREPROCESSORS '[
...
  {"ColumnSet": [
      "t1",
      "t2"
    ],
    "Transformers": [
      "OneHotEncoder",
      "Imputer"
    ]
  },
  {"ColumnSet": [
      "t3"
    ],
    "Transformers": [
      "OneHotEncoder"
    ]
  },
  {"ColumnSet": [
      "temp"
    ],
    "Transformers": [
      "Imputer",
      "NumericPassthrough"
    ]
  }
]'
SETTINGS (
  S3_BUCKET 'amzn-s3-demo-bucket'
)
```

HYPERPARAMETERS \{ DEFAULT \| DEFAULT EXCEPT ( key ‘value’ (,..) ) \}  
指定使用預設的 XGBoost 參數或以使用者指定的值覆寫。這些值必須用單引號括住。以下是 XGBoost 及其預設值的參數範例。      
[See the AWS documentation website for more details](http://docs.aws.amazon.com/zh_tw/redshift/latest/dg/r_CREATE_MODEL.html)

SETTINGS ( S3\_BUCKET *'amzn-s3-demo-bucket'*, \| TAGS 'string', \| KMS\_KEY\_ID *'kms\_string' *, \| S3\_GARBAGE\_COLLECT on / off, \| MAX\_CELLS integer , \| MAX\_RUNTIME (,...) , \| HORIZON integer, \| FREQUENCY forecast\_frequency, \| PERCENTILES array of strings )  
S3\_BUCKET 子句會指定用來儲存中繼結果的 Amazon S3 位置。  
(選用) TAGS 參數是以逗號分隔的索引鍵值配對清單，可用來標記在 Amazon SageMaker AI 中建立的資源和 Amazon Forecast。標籤可協助您整理資源和配置成本。配對中的值是可選的，因此您可以使用 `key=value` 格式或直接建立索引鍵來建立標籤。如需 Amazon Redshift 中標籤的相關資訊，請參閱[標記概觀](https://docs.aws.amazon.com/redshift/latest/mgmt/amazon-redshift-tagging.html)。  
（選用） KMS\_KEY\_ID 指定 Amazon Redshift 是否使用伺服器端加密搭配 AWS KMS 金鑰來保護靜態資料。傳輸中的資料會受到 Secure Sockets Layer (SSL) 保護。  
(選擇性) S3\_GARBAGE\_COLLECT \{ ON \| OFF \} 會指定 Amazon Redshift 是否對用於訓練模型的結果資料集和模型執行垃圾回收。如果設定為 OFF，用於訓練模型的結果資料集和模型會保留在 Amazon S3 中，並可用於其他用途。如果設定為 ON，Amazon Redshift 會在訓練完成後刪除 Amazon S3 中的成品。預設值為 ON。  
(選擇性) MAX\_CELLS 會指定訓練資料中的儲存格數目。此值是記錄數目 (訓練查詢或資料表中) 乘以欄數的乘積。預設值為 1,000,000。  
(選擇性) MAX\_RUNTIME 會指定訓練的時間上限。視資料集大小而定，訓練工作通常會更快完成。這會指定訓練應耗用的時間上限。預設值為 5,400 (90 分鐘)。  
HORIZON 會指定預測模型可傳回的預測數量上限。模型一經過訓練，就無法再變更此整數。如果訓練預測模型，則需要此參數。  
FREQUENCY 會指定您希望預測使用多細微的時間單位。可用選項為 `Y | M | W | D | H | 30min | 15min | 10min | 5min | 1min`。如果訓練預測模型，則需要此參數。  
(選擇性) PERCENTILES 是逗號分隔的字串，可指定用來訓練預測器的預測類型。預測類型可以是 0.01 到 0.99 之間的分位數，增量單位為 0.01 或更高。您也可以使用平均值指定平均預測。您最多可以指定五種預測類型。

 MAX\_BATCH\_ROWS *integer*   
(選用) Amazon Redshift 在單一批次請求中針對單一 SageMaker AI 調用傳送的列數上限。只有具有遠端推論的 BYOM 才支援。此參數的最小值為 1。最大值為 `INT_MAX`，或 2,147,483,647。只有在輸入和傳回的資料類型皆為 *SUPER* 時，才需要此參數。預設值為 `INT_MAX`，或 2,147,483,647。