選取您的 Cookie 偏好設定

我們使用提供自身網站和服務所需的基本 Cookie 和類似工具。我們使用效能 Cookie 收集匿名統計資料,以便了解客戶如何使用我們的網站並進行改進。基本 Cookie 無法停用,但可以按一下「自訂」或「拒絕」以拒絕效能 Cookie。

如果您同意,AWS 與經核准的第三方也會使用 Cookie 提供實用的網站功能、記住您的偏好設定,並顯示相關內容,包括相關廣告。若要接受或拒絕所有非必要 Cookie,請按一下「接受」或「拒絕」。若要進行更詳細的選擇,請按一下「自訂」。

使用案例 - Amazon Redshift

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

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

使用案例

以下使用案例會示範如何使用 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

字串 Auto 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 Redshift 外部的 Amazon SageMaker AI 中訓練的模型。由於 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 整數

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的內容類型application/json時,則 MAX_BATCH_ROWS 為 1application/jsonlines所有其他情況下為 。

  • 當傳回的資料類型是端點調用的SUPER接受類型application/json時,表示 MAX_BATCH_ROWS 為 1application/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 上託管LLMs 接受並傳回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

下一個主題:

CREATE PROCEDURE

上一個主題:

使用須知
隱私權網站條款Cookie 偏好設定
© 2025, Amazon Web Services, Inc.或其附屬公司。保留所有權利。