使用案例 - Amazon Redshift

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] [, ...] )

函數的名稱和輸入引數的資料類型。請參閱所有支援資料類型的資料類型Geographygeometryhllsketch 不受支援。

您也可以使用兩部分記號在結構描述內提供函式名稱,例如 myschema.myfunction

RETURNS data_type

函數所傳回值的資料類型。請參閱所有支援資料類型的資料類型Geographygeometryhllsketch 不受支援。

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