Amazon Redshift 自 2025 年 11 月 1 日起不再支援建立新的 Python UDF。如果您想要使用 Python UDF,請在該日期之前建立 UDF。現有 Python UDF 將繼續正常運作。如需詳細資訊,請參閱部落格文章
本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用案例
以下使用案例會示範如何使用 CREATE MODEL 來滿足您的需求。
簡易 CREATE MODEL
以下概述 CREATE MODEL 語法的基本選項。
簡易 CREATE MODEL 語法
CREATE MODEL model_name FROM { table_name | ( select_query ) } TARGET column_name FUNCTION prediction_function_name IAM_ROLE { default } SETTINGS ( S3_BUCKET 'amzn-s3-demo-bucket', [ MAX_CELLS integer ] )
簡易 CREATE MODEL 參數
- model_name
-
模型的名稱。結構描述中的模型名稱必須是唯一的。
- FROM { table_name | ( select_query ) }
-
指定訓練資料的 table_name 或查詢。這可以是系統中現有的資料表,也可以是與 Amazon RedShift 相容的 SELECT 查詢,並以括號括住,也就是 ()。查詢結果中至少必須有兩個資料列。
- TARGET column_name
-
成為預測目標的資料欄名稱。該資料欄必須存在於 FROM 子句中。
- FUNCTION prediction_function_name
-
該值會指定要由 CREATE MODEL 產生的 Amazon Redshift 機器學習函數名稱,並用於使用此模型進行預測。該函數會在與模型物件相同的結構描述中建立,並且可以多載。
Amazon Redshift 機器學習可支援模型,例如用於迴歸和分類的 Xtreme 梯度提升樹 (XGBoost) 模型。
- IAM_ROLE { default | 'arn:aws:iam::<account-id>:role/<role-name>' }
-
使用預設關鍵字,讓 Amazon Redshift 使用設定為預設並在執行 CREAT MODEL 命令時與叢集關聯的 IAM 角色。或者,您也可以指定 IAM 角色的 ARN 以使用該角色。
- S3_BUCKET 'amzn-s3-demo-bucket'
-
您之前建立的 Amazon S3 儲存貯體名稱,用於在 Amazon Redshift 和 SageMaker AI 之間共用訓練資料和成品。Amazon Redshift 會在卸載訓練資料之前,在此儲存貯體中建立一個子資料夾。訓練完成後,Amazon Redshift 會刪除建立的子資料夾及其內容。
- MAX_CELLS 整數
-
要從 FROM 子句匯出的儲存格數目上限。預設值為 1,000,000。
儲存格數目是訓練資料 (由 FROM 子句資料表或查詢產生) 中的資料列數乘以資料欄數的乘積。如果訓練資料中的儲存格數目大於 max_cell 參數所指定的儲存格數目,CREATE MODEL 會縮減 FROM 子句訓練資料,將訓練集的大小縮減到低於 MAX_CELLS。允許更大的訓練資料集可以產生更高的準確性,但也可能意味著模型需要更長的訓練時間和更高的成本。
如需 Amazon Redshift 使用成本的資訊,請參閱 使用 Amazon Redshift ML 的成本。
如需各種儲存格數目的成本和免費試用的相關資訊,請參閱 Amazon Redshift 定價
。
CREATE MODEL 和使用者指引
以下說明 簡易 CREATE MODEL 中所述選項之外的 CREATE MODEL 選項。
根據預設,CREATE MODEL 會搜尋特定資料集的最佳預處理和模型組合。您可能需要模型的額外控制項目或對其引入其他領域知識 (例如問題類型或目標)。在客戶流失案例中,如果「客戶不活躍」的結果很少見,則 F1 目標通常高於準確度目標。因為高準確度模型可能會一直預測到「客戶很活躍」,此結果雖然具有高準確度,但商業價值很小。如需 F1 目標的相關資訊,請參閱 Amazon SageMaker AI API 參考中的 AutoMLJobObjective。
然後,CREATE MODEL 會遵循您在指定層面的建議,例如目標。同時,CREATE MODEL 會自動發現最佳的預處理器和最佳的超參數。
CREATE MODEL 和使用者指引語法
CREATE MODEL 可為您可以指定的層面及 Amazon Redshift 可自動發現的層面提供更大的彈性。
CREATE MODEL model_name FROM { table_name | ( select_statement ) } TARGET column_name FUNCTION function_name IAM_ROLE { default } [ MODEL_TYPE { XGBOOST | MLP | LINEAR_LEARNER} ] [ PROBLEM_TYPE ( REGRESSION | BINARY_CLASSIFICATION | MULTICLASS_CLASSIFICATION ) ] [ OBJECTIVE ( 'MSE' | 'Accuracy' | 'F1' | 'F1Macro' | 'AUC') ] SETTINGS ( S3_BUCKET 'amzn-s3-demo-bucket', | S3_GARBAGE_COLLECT { ON | OFF }, | KMS_KEY_ID 'kms_key_id', | MAX_CELLS integer, | MAX_RUNTIME integer (, ...) )
CREATE MODEL 和使用者指引參數
- MODEL_TYPE { XGBOOST | MLP | LINEAR_LEARNER }
-
(選擇性) 指定模型類型。您可以指定是否要訓練特定模型類型的模型,例如 XGBoost、多層感知器 (MLP) 或線性學習程式,這些都是 Amazon SageMaker AI Autopilot 支援的演算法。如果未指定參數,則會在訓練期間搜尋所有支援的模型類型,以取得最佳模型。
- PROBLEM_TYPE ( REGRESSION | BINARY_CLASSIFICATION | MULTICLASS_CLASSIFICATION )
-
(選擇性) 指定問題類型。如果您知道問題類型,則可以將 Amazon Redshift 限制為僅搜尋該特定模型類型的最佳模型。如果未指定此參數,則訓練期間會根據您的資料探索問題類型。
- OBJECTIVE ( 'MSE' | 'Accuracy' | 'F1' | 'F1Macro' | 'AUC')
-
(選擇性) 指定用來測量機器學習系統預測品質的目標指標名稱。此指標會在訓練期間進行最佳化,從資料中提供模型參數值的最佳估計值。如果您沒有明確指定指標,則預設行為是自動將 MSE: 用於迴歸、將 F1: 用於二進制分類、將 Accuracy: 用於多類別分類。如需目標的詳細資訊,請參閱 Amazon SageMaker AI API 參考中的 AutoMLJobObjective。
- MAX_CELLS 整數
-
(選擇性) 指定訓練資料中的儲存格數目。此值是記錄數目 (訓練查詢或資料表中) 乘以欄數的乘積。預設值為 1,000,000。
- MAX_RUNTIME 整數
-
(選擇性) 指定訓練的時間上限。視資料集大小而定,訓練工作通常會更快完成。這會指定訓練應耗用的時間上限。預設值為 5,400 (90 分鐘)。
- S3_GARBAGE_COLLECT { ON | OFF }
-
(選擇性) 指定 Amazon Redshift 是否對用於訓練模型的結果資料集和模型執行垃圾回收。如果設定為 OFF,用於訓練模型的結果資料集和模型會保留在 Amazon S3 中,並可用於其他用途。如果設定為 ON,Amazon Redshift 會在訓練完成後刪除 Amazon S3 中的成品。預設值為 ON。
- KMS_KEY_ID 'kms_key_id'
-
(選擇性) 指定 Amazon Redshift 是否使用伺服器端加密搭配 AWS KMS 索引鍵來保護靜態資料。傳輸中的資料會受到 Secure Sockets Layer (SSL) 保護。
- 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' )
Amazon Redshift 支援以下轉換:
-
OneHotNCoder — 通常用於將離散值編碼為具有一個非零值的二進位向量。此轉換適用於許多機器學習模型。
-
OrdinalEncoder – 將離散值編碼為單一整數。此轉換適用於特定機器學習模型,例如 MLP 和線性學習程式。
-
NumericPassthrough – 將輸入按原樣傳遞到模型中。
-
Imputer – 填入遺漏值,而不是數字 (NaN) 值。
-
ImputerWithIndicator – 填入遺漏值和 NaN 值。此轉換也會建立指出是否有任何值遺失和填入的指示器。
-
Normalizer – 將值標準化,可改善許多機器學習演算法的效能。
-
DateTimeVectorizer – 建立向量內嵌,代表可在機器學習模型中使用的 datetime 資料類型欄。
-
PCA – 將資料投影到較低的維度空間中,以減少特徵數量,同時盡可能保留更多資訊。
-
StandardScaler – 透過移除平均值和縮放至單位變異來將特徵標準化。
-
MinMax – 透過將每個特徵縮放至指定範圍來轉換特徵。
Amazon Redshift ML 會儲存經過訓練的轉換,並在預測查詢中自動套用這些轉換。從模型產生預測時,您不需要指定這些轉換。
CREATE XGBoost 模型與 AUTO OFF
AUTO OFF CREATE MODEL 在預設的 CREATE MODEL 中通常有不同的目標。
如果進階使用者已知道想要的模型類型,以及訓練這些模型時所使用的超參數,您可以使用搭配 AUTO OFF 的 CREATE MODEL 來關閉預處理器和超參數的 CREATE MODEL 自動探索功能。若要這樣做,您必須明確指定模型類型。當 AUTO 設定為 OFF 時,XGBoost 是目前唯一支援的模型類型。您可以指定超參數。Amazon Redshift 會針對您指定的任何超參數使用預設值。
CREATE XGBoost 模型與 AUTO OFF 語法
CREATE MODEL model_name FROM { table_name | (select_statement ) } TARGET column_name FUNCTION function_name IAM_ROLE { default } AUTO OFF MODEL_TYPE XGBOOST OBJECTIVE { 'reg:squarederror' | 'reg:squaredlogerror' | 'reg:logistic' | 'reg:pseudohubererror' | 'reg:tweedie' | 'binary:logistic' | 'binary:hinge' | 'multi:softmax' | 'rank:pairwise' | 'rank:ndcg' } HYPERPARAMETERS DEFAULT EXCEPT ( NUM_ROUND '10', ETA '0.2', NUM_CLASS '10', (, ...) ) PREPROCESSORS 'none' SETTINGS ( S3_BUCKET 'amzn-s3-demo-bucket', | S3_GARBAGE_COLLECT { ON | OFF }, | KMS_KEY_ID 'kms_key_id', | MAX_CELLS integer, | MAX_RUNTIME integer (, ...) )
CREATE XGBoost 模型與 AUTO OFF 參數
- AUTO OFF
-
關閉預處理器、演算法和超參數選擇的 CREATE MODEL 自動探索。
- MODEL_TYPE XGBOOST
-
指定使用 XGBOOST 來訓練模型。
- OBJECTIVE str
-
指定演算法辨識的目標。Amazon Redshift 可支援 reg:squarederror、reg:squaredlogerror、reg:logistic、reg:pseudohubererror、reg:tweedie、binary:logistic、binary:hinge、multi:softmax。如需這些目標的相關資訊,請參閱 XGBoost 文件中的學習任務參數
。 - HYPERPARAMETERS { DEFAULT | DEFAULT EXCEPT ( key ‘value’ (,..) ) }
-
指定使用預設的 XGBoost 參數或以使用者指定的值覆寫。這些值必須用單引號括住。以下是 XGBoost 及其預設值的參數範例。
參數名稱 參數值 預設值 備註 num_class
Integer 多類別分類所需。
N/A num_round
Integer 100
N/A tree_method
String 自動 N/A max_depth
Integer 6 [0 , 10] min_child_weight Float 1 MinValue:0、MaxValue:120 子範例 Float 1 MinValue:0.5、MaxValue:1 Gamma Float 0 MinValue:0、MaxValue:5 alpha Float 0 MinValue:0、MaxValue:1000 eta Float 0.3 MinValue:0.1、MaxValue:0.5 colsample_byleve Float 1 MinValue:0.1、MaxValue:1 colsample_bynode Float 1 MinValue:0.1、MaxValue:1 colsample_bytree Float 1 MinValue:0.5、MaxValue:1 lambda Float 1 MinValue:0、MaxValue:1000 max_delta_step Integer 0 [0, 10]
下列範例會準備 XgBoost 的資料。
DROP TABLE IF EXISTS abalone_xgb; CREATE TABLE abalone_xgb ( length_val float, diameter float, height float, whole_weight float, shucked_weight float, viscera_weight float, shell_weight float, rings int, record_number int); COPY abalone_xgb FROM 's3://redshift-downloads/redshift-ml/abalone_xg/' REGION 'us-east-1' IAM_ROLE default IGNOREHEADER 1 CSV;
下列範例會使用指定的進階選項來建立 XGBoost 模型,例如 MODEL_TYPE、OBJECTIVE 和 PREPROCESSORS。
DROP MODEL abalone_xgboost_multi_predict_age; CREATE MODEL abalone_xgboost_multi_predict_age FROM ( SELECT length_val, diameter, height, whole_weight, shucked_weight, viscera_weight, shell_weight, rings FROM abalone_xgb WHERE record_number < 2500 ) TARGET rings FUNCTION ml_fn_abalone_xgboost_multi_predict_age IAM_ROLE default AUTO OFF MODEL_TYPE XGBOOST OBJECTIVE 'multi:softmax' PREPROCESSORS 'none' HYPERPARAMETERS DEFAULT EXCEPT (NUM_ROUND '100', NUM_CLASS '30') SETTINGS (S3_BUCKET 'amzn-s3-demo-bucket');
下列範例會使用推論查詢來對記錄編號大於 2500 的魚預測年齡。其使用從上述命令中建立的函數 ml_fn_abalone_xgboost_multi_predict_age。
select ml_fn_abalone_xgboost_multi_predict_age(length_val, diameter, height, whole_weight, shucked_weight, viscera_weight, shell_weight)+1.5 as age from abalone_xgb where record_number > 2500;
使用自有模型 (BYOM) - 本機推論
Amazon Redshift ML 支援透過使用自有模型 (BYOM) 進行本機推論。
以下概述 BYOM 的 CREATE MODEL 語法基本選項。您可以使用在 Amazon Redshift 外部訓練的模型搭配 Amazon SageMaker AI,以便在 Amazon Redshift 本機上進行資料庫內推論。
用於本機推論的 CREATE MODEL 語法
以下說明用於本機推論的 CREATE MODEL 語法。
CREATE MODEL model_name FROM ('job_name' | 's3_path' ) FUNCTION function_name ( data_type [, ...] ) RETURNS data_type IAM_ROLE { default } [ SETTINGS ( S3_BUCKET 'amzn-s3-demo-bucket', | --required KMS_KEY_ID 'kms_string') --optional ];
Amazon Redshift 目前僅支援對 BYOM 使用預先訓練的 XGBoost、MLP 和線性學習程式模型。您可以使用此路徑匯入 SageMaker AI Autopilot 和直接在 Amazon SageMaker AI 中訓練的模型,以進行本機推論。
用於本機推論的 CREATE MODEL 參數
- model_name
-
模型的名稱。結構描述中的模型名稱必須是唯一的。
- FROM ('job_name' | 's3_path' )
-
job_name 會使用 Amazon SageMaker AI 任務名稱作為輸入。工作名稱可以是 Amazon SageMaker AI 訓練任務名稱,也可以是 Amazon SageMaker AI Autopilot 任務名稱。工作必須在擁有 Amazon Redshift 叢集的相同 AWS 帳戶中建立。若要尋找任務名稱,請啟動 Amazon SageMaker AI。在訓練下拉式選單中,選擇訓練工作。
's3_path' 會指定 .tar.gz 模型成品檔案的 S3 位置,這會在建立模型時使用。
- FUNCTION function_name ( data_type [, ...] )
-
要建立的函數名稱和輸入引數的資料類型。您可以提供結構描述名稱。
- RETURNS data_type
-
函數所傳回值的資料類型。
- IAM_ROLE { default | 'arn:aws:iam::<account-id>:role/<role-name>'}
-
使用預設關鍵字,讓 Amazon Redshift 使用設定為預設並在執行 CREATE MODEL 命令時與叢集關聯的 IAM 角色。
對叢集進行身分驗證和授權時所使用的 IAM 角色使用 Amazon Resource Name (ARN)。
- SETTINGS ( S3_BUCKET 'amzn-s3-demo-bucket', | KMS_KEY_ID 'kms_string')
-
S3_BUCKET 子句會指定用來儲存中繼結果的 Amazon S3 位置。
(選用) KMS_KEY_ID 子句指定 Amazon Redshift 是否使用伺服器端加密搭配 AWS KMS金鑰來保護靜態資料。傳輸中的資料會受到 Secure Sockets Layer (SSL) 保護。
如需詳細資訊,請參閱CREATE MODEL 和使用者指引。
用於本機推論的 CREATE MODEL 範例
下列範例會建立先前在 Amazon SageMaker AI 中 (Amazon Redshift 外部) 訓練過的模型。由於 Amazon Redshift ML 支援該模型類型來進行本機推論,因此下列 CREATE MODEL 會建立可在 Amazon Redshift 本端使用的函數。您可以提供 SageMaker AI 訓練任務名稱。
CREATE MODEL customer_churn FROM 'training-job-customer-churn-v4' FUNCTION customer_churn_predict (varchar, int, float, float) RETURNS int IAM_ROLE default SETTINGS (S3_BUCKET 'amzn-s3-demo-bucket');
建立模型之後,您可以使用函數 customer_churn_predict 與指定的引數類型來進行預測。
使用自有模型 (BYOM) - 遠端推論
Amazon Redshift ML 也支援透過使用自有模型 (BYOM) 進行遠端推論。
以下概述 BYOM 的 CREATE MODEL 語法基本選項。
用於遠端推論的 CREATE MODEL 語法
以下說明用於遠端推論的 CREATE MODEL 語法。
CREATE MODEL model_name FUNCTION function_name ( data_type [, ...] ) RETURNS data_type SAGEMAKER 'endpoint_name'[:'model_name'] IAM_ROLE { default | 'arn:aws:iam::<account-id>:role/<role-name>' } [SETTINGS (MAX_BATCH_ROWS integer)];
用於遠端推論的 CREATE MODEL 參數
- model_name
-
模型的名稱。結構描述中的模型名稱必須是唯一的。
- FUNCTION fn_name ( [data_type] [, ...] )
-
函數的名稱和輸入引數的資料類型。請參閱所有支援資料類型的資料類型。
Geography、geometry和hllsketch不受支援。您也可以使用兩部分記號在結構描述內提供函式名稱,例如
myschema.myfunction。 - RETURNS data_type
-
函數所傳回值的資料類型。請參閱所有支援資料類型的資料類型。
Geography、geometry和hllsketch不受支援。 - SAGEMAKER 'endpoint_name'[:'model_name']
-
Amazon SageMaker AI 端點的名稱。如果端點名稱指向多模型端點,請新增要使用的模型名稱。端點必須託管在與 Amazon Redshift AWS 帳戶叢集相同的 AWS區域。若要尋找您的端點,請啟動 Amazon SageMaker AI。在推論下拉式功能表中,選擇端點。
- IAM_ROLE { default | 'arn:aws:iam::<account-id>:role/<role-name>'}
-
使用預設關鍵字,讓 Amazon Redshift 使用設定為預設並在執行 CREATE MODEL 命令時與叢集關聯的 IAM 角色。或者,您也可以指定 IAM 角色的 ARN 以使用該角色。
- MAX_BATCH_ROWS integer
-
Amazon Redshift 在單一批次請求中針對單一 SageMaker AI 調用傳送的列數上限。只有具有遠端推論的 BYOM 才支援。批次中的實際列數同樣取決於輸入大小,但小於或等於此值。此參數的最小值為 1。最大值為
INT_MAX,或 2,147,483,647。只有在輸入和傳回的資料類型皆為SUPER時,才需要此參數。預設值為INT_MAX,或 2,147,483,647。
將模型部署到 SageMaker AI 端點時,SageMaker AI 會在 Amazon Redshift 中建立模型的資訊。然後透過外部函數執行推斷。您可以使用 SHOW MODEL 命令來檢視 Amazon Redshift 叢集上的模型資訊。
用於遠端推論的 CREATE MODEL 使用須知
使用 CREATE Model 進行遠端推論之前,請考慮下列事項:
-
端點必須由擁有 Amazon Redshift 叢集的相同AWS帳戶託管。
-
請確定 Amazon SageMaker AI 端點具有足夠的資源來容納來自 Amazon Redshift 的推論呼叫,或是可以自動調整 Amazon SageMaker AI 端點的規模。
-
如果您不是使用
SUPER資料類型作為輸入,則模型只會接受逗號分隔值 (CSV) 格式的輸入,其對應至 SageMaker AI 中的內容類型text/CSV。 -
如果您不是使用
SUPER資料類型作為輸入,則模型的輸出會是單一值,其類型為您建立函式時所指定。輸出格式為透過 SageMaker AI 中的內容類型text/CSV的逗號分隔值 (CSV)。VARCHAR資料類型前後不可加上引號,也不可包含新行,而且每個輸出必須各為新的一行。 -
模型接受 null 作為空字串。
-
輸入資料類型為
SUPER時,只支援一個輸入引數。 -
輸入資料類型為
SUPER時,傳回的資料類型也必須是SUPER。 -
當輸入和傳回的資料類型皆為 SUPER 時,需要 MAX_BATCH_ROWS。
-
輸入資料類型為
SUPER時,端點調用的內容類型在 MAX_BATCH_ROWS 為1的情況下會是application/json,而在所有其他情況下則為application/jsonlines。 -
傳回的資料類型為
SUPER時,端點調用的接受類型在 MAX_BATCH_ROWS 為1的情況下會是application/json,而在所有其他情況下則為application/jsonlines。
用於遠端推論的 CREATE MODEL 範例
下列範例會建立使用 SageMaker AI 端點進行預測的模型。請確定端點正在執行以進行預測,並在 CREATE MODEL 命令中指定其名稱。
CREATE MODEL remote_customer_churn FUNCTION remote_fn_customer_churn_predict (varchar, int, float, float) RETURNS int SAGEMAKER 'customer-churn-endpoint' IAM_ROLE default;
下列範例會使用大型語言模型 (LLM) 建立具有遠端推論的 BYOM。Amazon SageMaker AI Jumpstart 上託管的 LLM 接受並傳回 application/json 內容類型,而且每次調用支援單一 JSON。輸入和傳回的資料類型必須為 SUPER,且 MAX_BATCH_ROWS 必須設定為 1。
CREATE MODEL sample_super_data_model FUNCTION sample_super_data_model_predict(super) RETURNS super SAGEMAKER 'sample_super_data_model_endpoint' IAM_ROLE default SETTINGS (MAX_BATCH_ROWS 1);
CREATE MODEL 與 K-MEANS
Amazon Redshift 支援可將未標示資料分組的 K 平均值演算法。此演算法可解決您想在資料中探索分組的叢集問題。未分類的資料會根據其相似性和差異進行分組和分割。
CREATE MODEL 與 K-MEANS 語法
CREATE MODEL model_name FROM { table_name | ( select_statement ) } FUNCTION function_name IAM_ROLE { default | 'arn:aws:iam::<account-id>:role/<role-name>' } AUTO OFF MODEL_TYPE KMEANS PREPROCESSORS 'string' HYPERPARAMETERS DEFAULT EXCEPT ( K 'val' [, ...] ) SETTINGS ( S3_BUCKET 'amzn-s3-demo-bucket', KMS_KEY_ID 'kms_string', | -- optional S3_GARBAGE_COLLECT on / off, | -- optional MAX_CELLS integer, | -- optional MAX_RUNTIME integer -- optional);
CREATE MODEL 與 K-MEANS 參數
- AUTO OFF
-
關閉預處理器、演算法和超參數選擇的 CREATE MODEL 自動探索。
- MODEL_TYPE KMEANS
-
指定使用 KMEANS 來訓練模型。
- PREPROCESSORS 'string'
-
指定特定資料欄集的特定預處理器組合。格式會是 columnSets 清單,以及要套用到每一組資料欄的適當轉換。Amazon Redshift 支援 3 個 K 平均值預處理器,即 StandardScaler、MinMax 和 NumericPassthrough。如果您不想對 K 平均值套用任何預處理,請明確選擇 NumericPassthrough 作為轉換器。如需轉換器的相關資訊,請參閱 CREATE MODEL 和使用者指引參數。
K 平均值演算法會使用歐幾里德距離來計算相似性。預處理資料可確保模型的特徵保持相同的比例並產生可靠的結果。
- HYPERPARAMETERS DEFAULT EXCEPT ( K 'val' [, ...] )
-
指定是否使用 K 平均值參數。使用 K 平均值演算法時,您必須指定
K參數。如需詳細資訊,請參閱《Amazon SageMaker AI 開發人員指南》中的 K 平均值超參數
下列範例會準備 K 平均值的資料。
CREATE MODEL customers_clusters FROM customers FUNCTION customers_cluster IAM_ROLE default AUTO OFF MODEL_TYPE KMEANS PREPROCESSORS '[ { "ColumnSet": [ "*" ], "Transformers": [ "NumericPassthrough" ] } ]' HYPERPARAMETERS DEFAULT EXCEPT ( K '5' ) SETTINGS (S3_BUCKET 'amzn-s3-demo-bucket'); select customer_id, customers_cluster(...) from customers;customer_id | customers_cluster -------------------- 12345 1 12346 2 12347 4 12348
CREATE MODEL 與預測
Redshift ML 中的預測模型會使用 Amazon Forecast 來建立準確的時間序列預測。這樣做可讓您使用一段時間內的歷史資料來預測未來事件。Amazon Forecast 的常見使用案例包括使用零售產品資料來決定如何為庫存定價格、製造數量資料來預測要訂購多少項目,以及使用 Web 流量資料來預測 Web 伺服器可能接收的流量。
Amazon Forecast 的配額限制會在 Amazon Redshift 預測模型中強制執行。例如,預測的最大數量為 100,但可調整。捨棄預測模型不會自動刪除 Amazon Forecast 中的相關聯資源。如果您刪除 Redshift 叢集,所有相關聯的模型也會被刪除。
請注意,預測模型目前僅適用於下列區域:
-
美國東部 (俄亥俄) (us-east-2)
-
美國東部 (維吉尼亞北部) (us-east-1)
-
美國西部 (奧勒岡) (us-west-2)
-
亞太區域 (孟買) (ap-south-1)
-
亞太區域 (首爾) (ap-northeast-2)
-
亞太地區 (新加坡) (ap-southeast-1)
-
亞太地區 (雪梨) (ap-southeast-2)
-
亞太區域 (東京) (ap-northeast-1)
-
歐洲 (法蘭克福) (eu-central-1)
-
歐洲 (愛爾蘭) (eu-west-1)
CREATE MODEL 與預測語法
CREATE [ OR REPLACE ] MODEL forecast_model_name FROM { table_name | ( select_query ) } TARGET column_name IAM_ROLE { default | 'arn:aws:iam::<account-id>:role/<role-name>'} AUTO ON MODEL_TYPE FORECAST SETTINGS ( S3_BUCKET 'amzn-s3-demo-bucket', HORIZON integer, FREQUENCY forecast_frequency [PERCENTILES '0.1', '0.5', '0.9'] )
CREATE MODEL 與預測參數
- forecast_model_name
-
模型的名稱。模型名稱必須是唯一的。
- FROM { table_name | ( select_query ) }
-
指定訓練資料的 table_name 或查詢。這可以是系統中現有的資料表,也可以是與 Amazon RedShift 相容的 SELECT 查詢 (以括號括住)。資料表或查詢結果至少必須有三個資料欄:(1) 指定時間序列名稱的 varchar 資料欄。每個資料集可以有多個時間序列;(2) 一個日期時間資料欄;以及 (3) 要預測的目標資料欄。此目標資料欄必須是整數或浮點數。如果您提供的資料集包含三個以上的資料欄,Amazon Redshift 會假設所有其他資料欄都是相關時間序列的一部分。請注意,相關的時間序列必須是整數或浮點數類型。如需相關時間序列的相關資訊,請參閱使用相關時間序列資料集。
- TARGET column_name
-
成為預測目標的資料欄名稱。該資料欄必須存在於 FROM 子句中。
- IAM_ROLE { default | 'arn:aws:iam::<account-id>:role/<role-name>' }
-
使用預設關鍵字,讓 Amazon Redshift 使用設定為預設並在執行 CREAT MODEL 命令時與叢集關聯的 IAM 角色。或者,您可以指定 IAM 角色的 ARN 以使用該角色。
- AUTO ON
-
開啟演算法和超參數選擇的 CREATE MODEL 自動探索。在建立預測模型時指定開啟,以使用 Forecast AutoPredictor,其中 Amazon Forecast 會將最佳演算法組合套用至資料集中的每個時間序列。
- MODEL_TYPE FORECAST
-
指定使用 FORECAST 來訓練模型。
- S3_BUCKET 'amzn-s3-demo-bucket'
-
您之前建立的 Amazon Simple Storage Service 儲存貯體名稱,用於在 Amazon Redshift 和 Amazon Forecast 之間共用訓練資料和成品。Amazon Redshift 會在卸載訓練資料之前,在此儲存貯體中建立一個子資料夾。訓練完成後,Amazon Redshift 會刪除建立的子資料夾及其內容。
- HORIZON 整數
-
預測模型可傳回的預測數量上限。模型一經過訓練,就無法再變更此整數。
- FREQUENCY forecast_frequency
-
指定您想要的預測細微程度。可用選項為
Y | M | W | D | H | 30min | 15min | 10min | 5min | 1min。如果您正在訓練預測模型,則需要此選項。 - PERCENTILES 字串
-
逗號分隔的字串,可指定用來訓練預測器的預測類型。預測類型可以是 0.01 到 0.99 之間的分位數,增量單位為 0.01 或更高。您也可以使用平均值指定平均預測。您最多可以指定五種預測類型。
下列範例說明如何建立簡單預測模型。
CREATE MODEL forecast_example FROM forecast_electricity_ TARGET target IAM_ROLE 'arn:aws:iam::<account-id>:role/<role-name>' AUTO ON MODEL_TYPE FORECAST SETTINGS (S3_BUCKET 'amzn-s3-demo-bucket', HORIZON 24, FREQUENCY 'H', PERCENTILES '0.25,0.50,0.75,mean', S3_GARBAGE_COLLECT OFF);
建立預測模型後,您可以使用預測資料建立新資料表。
CREATE TABLE forecast_model_results as SELECT Forecast(forecast_example)
然後,您可以查詢新資料表以取得預測。
SELECT * FROM forecast_model_results