使用案例 - Amazon Redshift

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

使用案例

下列使用案例示範如何使用 CREATE MODEL 來滿足您的需求。

簡單 CREATE MODEL

下列摘要說明CREATEMODEL語法的基本選項。

簡單CREATEMODEL語法

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 ] )

簡單CREATEMODEL參數

model_name

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

FROM { table_name | ( select_query ) }

指定訓練資料的 table_name 或查詢。它們可以是系統中現有的資料表,也可以是括號隨附的 Amazon Redshift 相容SELECT查詢,也就是 ()。查詢結果中至少必須有兩個資料列。

TARGET column_name

成為預測目標的資料欄名稱。資料欄必須存在於FROM子句中。

FUNCTION prediction_function_name

指定 要由 產生的 Amazon Redshift 機器學習函數名稱,CREATEMODEL並用來使用此模型進行預測的值。該函數會在與模型物件相同的結構描述中建立,並且可以多載。

Amazon Redshift 機器學習支援模型,例如用於迴歸和分類的 Xtreme 梯度增強樹 (XGBoost) 模型。

IAM_ROLE { 預設 | 'arn:aws:iam::<account-id>:role/<role-name>' }

使用預設關鍵字讓 Amazon Redshift 在CREATMODEL命令執行時,使用設定為預設並與叢集相關聯的IAM角色。或者,您可以指定IAM角色ARN的 來使用該角色。

S3_BUCKET 'amzn-s3-demo-bucket'

您先前建立的 Amazon S3 儲存貯體名稱,用於在 Amazon Redshift 和 之間共用訓練資料和成品 SageMaker。Amazon Redshift 會在卸載訓練資料之前,在此儲存貯體中建立一個子資料夾。訓練完成後,Amazon Redshift 會刪除建立的子資料夾及其內容。

MAX_CELLS 整數

從FROM子句匯出的儲存格數目上限。預設值為 1,000,000。

儲存格數目是訓練資料 (由FROM子句資料表或查詢產生) 中資料列數目乘以資料欄數目的乘積。如果訓練資料中的儲存格數量超過 max_cells 參數指定的數量, 會CREATEMODEL減少子FROM句訓練資料,以減少低於 MAX_ 的訓練集大小CELLS。允許更大的訓練資料集可以產生更高的準確性,但也可能意味著模型需要更長的訓練時間和更高的成本。

如需 Amazon Redshift 使用成本的資訊,請參閱 使用 Amazon Redshift ML 的成本

如需各種儲存格數目的成本和免費試用的相關資訊,請參閱 Amazon Redshift 定價

CREATE MODEL 使用使用者指南

接下來,除了 中所述的選項CREATEMODEL之外,您還可以找到 的選項描述簡單 CREATE MODEL

根據預設, CREATE MODEL 會搜尋特定資料集的預先處理和模型的最佳組合。您可能需要模型的額外控制項目或對其引入其他領域知識 (例如問題類型或目標)。在客戶流失案例中,如果「客戶不活躍」的結果很少見,則 F1 目標通常高於準確度目標。因為高準確度模型可能會一直預測到「客戶很活躍」,此結果雖然具有高準確度,但商業價值很小。如需 F1 目標的相關資訊,請參閱 Amazon SageMaker API 參考 中的utoMLJob目標

然後, 會CREATEMODEL遵循您在指定方面的建議,例如目標。同時, CREATEMODEL會自動探索最佳前置處理器和最佳超參數。

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、多層 Perceptron (MLP) 或 Linear Learner,這些都是 Amazon SageMaker Autopilot 支援的演算法。如果未指定參數,則會在訓練期間搜尋所有支援的模型類型,以取得最佳模型。

PROBLEM_TYPE ( REGRESSION | BINARY_CLASSIFICATION | MULTICLASS_CLASSIFICATION )

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

OBJECTIVE ( 'MSE' | 'Accuracy' | 'F1' | 'F1Macro ' | 'AUC')

(選擇性) 指定用來測量機器學習系統預測品質的目標指標名稱。此指標會在訓練期間進行最佳化,從資料中提供模型參數值的最佳估計值。如果您未明確指定指標,預設行為是自動將 MSE: 用於迴歸、F1: 用於二進位分類、準確性: 用於多類別分類。如需目標的詳細資訊,請參閱 Amazon SageMaker API 參考 中的utoMLJob目標

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 '字串'

(選擇性) 指定特定資料欄集的特定預處理器組合。格式是 的清單columnSets,且要套用至每組資料欄的適當轉換。Amazon Redshift 會將特定轉換器清單中的所有轉換器套用至對應 中的所有資料欄 ColumnSet。例如,若要 OneHotEncoder 將 Imputer 套用至資料欄 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 支援以下轉換:

  • OneHotEncoder – 通常用於將離散值編碼為具有一個非零值的二進位向量。此轉換適用於許多機器學習模型。

  • OrdinalEncoder – 將離散值編碼為單一整數。此轉換器適用於特定機器學習模型,例如 MLP和 Linear Learner。

  • NumericPassthrough – 將輸入如原樣傳遞至模型中。

  • Imputer – 填入遺漏值,而不是數字 (NaN) 值。

  • ImputerWithIndicator – 填入缺少的值和 NaN 值。此轉換也會建立指出是否有任何值遺失和填入的指示器。

  • Normalizer – 將值標準化,可改善許多機器學習演算法的效能。

  • DateTimeVectorizer – 建立向量內嵌,代表可用於機器學習模型的日期時間資料類型資料欄。

  • PCA – 將資料投影到較低的維度空間,以減少功能數量,同時盡可能保留資訊。

  • StandardScaler – 透過移除平均值和擴展至單位差異來標準化特徵。

  • MinMax – 透過將每個功能擴展到指定範圍來轉換功能。

Amazon Redshift ML 會儲存經過訓練的轉換,並在預測查詢中自動套用這些轉換。從模型產生預測時,您不需要指定這些轉換。

CREATE XGBoost 具有 的模型 AUTO OFF

與預設 AUTOOFFCREATEMODEL的目標大致不同CREATEMODEL。

身為進階使用者,其已知道您想要使用的模型類型,且超參數在訓練這些模型時要使用,您可以使用 CREATE MODEL 搭配 AUTOOFF來關閉前置處理器和超參數的CREATEMODEL自動探索。若要這樣做,您必須明確指定模型類型。XGBoost 當 AUTO 設為 時, 目前是唯一支援的模型類型OFF。您可以指定超參數。Amazon Redshift 會針對您指定的任何超參數使用預設值。

CREATE XGBoost 具有語法AUTOOFF的模型

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 具有AUTOOFF參數的模型

AUTO OFF

關閉CREATEMODEL自動探索前置處理器、演算法和超參數選擇。

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 | DEFAULTEXCEPT( 鍵「值」 (,..) ) }

指定預設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_OBJECTIVE、 TYPE和 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) 進行本機推論。

下列摘要說明 CREATE MODEL 語法的選項BYOM。您可以在 Amazon Redshift 之外與 Amazon 搭配使用訓練的模型 SageMaker ,在 Amazon Redshift 本機進行資料庫內推論。

CREATE MODEL 本機推論的語法

下列說明本機推論的CREATEMODEL語法。

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 目前僅支援 的預先訓練 XGBoost、 MLP和 Linear Learner 模型BYOM。您可以使用此路徑,匯入直接在 Amazon 中訓練的 SageMaker Autopilot 和模型, SageMaker 以進行本機推論。

CREATE MODEL 本機推論的參數

model_name

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

FROM ('job_name' | 's3_path'

job_name 使用 Amazon SageMaker 任務名稱作為輸入。任務名稱可以是 Amazon SageMaker 訓練任務名稱或 Amazon SageMaker Autopilot 任務名稱。任務必須在擁有 Amazon Redshift 叢集的相同 AWS 帳戶中建立。若要尋找任務名稱,請啟動 Amazon SageMaker。在訓練下拉式選單中,選擇訓練工作

's3_path' 會指定 .tar.gz 模型成品檔案的 S3 位置,這會在建立模型時使用。

FUNCTION function_namedata_type 【, ...】 )

要建立的函數名稱和輸入引數的資料類型。您可以提供結構描述名稱。

RETURNS data_type

函數所傳回值的資料類型。

IAM_ROLE { 預設 | 'arn:aws:iam::<account-id>:role/<role-name>'}

使用預設關鍵字讓 Amazon Redshift 在CREATEMODEL命令執行時,使用設定為預設並與叢集相關聯的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 SageMaker之外在 Amazon 中訓練的模型。由於 Amazon Redshift ML 支援本機推論的模型類型,因此下列 會CREATEMODEL建立可在 Amazon Redshift 本機使用的函數。您可以提供 SageMaker 訓練任務名稱。

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) 進行遠端推論。

下列摘要說明 CREATE MODEL 語法的選項BYOM。

CREATE MODEL 遠端推論的語法

下列說明遠端推論的CREATEMODEL語法。

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 端點的名稱。如果端點名稱指向多模型端點,請新增要使用的模型名稱。端點必須託管在與 Amazon Redshift 叢集相同的 AWS 區域中。若要尋找您的端點,請啟動 Amazon SageMaker。在推論下拉式功能表中,選擇端點

IAM_ROLE { 預設 | 'arn:aws:iam::<account-id>:role/<role-name>'}

使用預設關鍵字讓 Amazon Redshift 在CREATEMODEL命令執行時,使用設定為預設並與叢集相關聯的IAM角色。或者,您可以指定IAM角色ARN的 來使用該角色。

MAX_BATCH_ROWS 整數

Amazon Redshift 在單一批次請求中針對單一 SageMaker 調用傳送的資料列數目上限。僅支援BYOM具有遠端推論的 。批次中的實際資料列數目也取決於輸入大小,但小於或等於此值。此參數的最小值為 1。最大值為 INT_MAX、 或 2,147,483,647。只有在輸入和傳回的資料類型皆為 時,才需要此參數SUPER。預設值為 INT_MAX、 或 2,147,483,647。

當模型部署到 SageMaker 端點時, 會在 Amazon Redshift 中 SageMaker 建立模型的資訊。然後透過外部函數執行推斷。您可以使用 SHOWMODEL命令來檢視 Amazon Redshift 叢集上的模型資訊。

CREATE MODEL 適用於遠端推論用量備註

使用 CREATEMODEL進行遠端推論之前,請考慮下列事項:

  • 端點必須由擁有 Amazon Redshift 叢集的相同 AWS 帳戶託管。

  • 請確定 Amazon SageMaker 端點有足夠的資源來容納來自 Amazon Redshift 的推論呼叫,或者 Amazon SageMaker 端點可以自動擴展。

  • 如果您不是使用SUPER資料類型做為輸入,則模型只會接受逗號分隔值 (CSV) 格式的輸入,對應 text/CSV中的內容類型 SageMaker。

  • 如果您不是使用SUPER資料類型做為輸入,則模型的輸出是建立函數時所指定類型的單一值。輸出的格式為逗號分隔值 (CSV),透過 text/CSV中的內容類型 SageMaker。VARCHAR資料類型不能為引號,且不能包含新行,且每個輸出都必須在新行中。

  • 模型接受 null 作為空字串。

  • 當輸入資料類型為 時SUPER,僅支援一個輸入引數。

  • 當輸入資料類型為 時SUPER,傳回的資料類型也必須為 SUPER

  • MAX當輸入和傳回的資料類型皆為 時,需要 _BATCH_ROWSSUPER。

  • 當輸入資料類型為端點調用的內容類型application/jsonSUPER,則 MAX_BATCH_ROWS 為 1application/jsonlines所有其他情況下為 。

  • 當傳回的資料類型是端點調用的接受類型application/jsonSUPER,即 MAX_BATCH_ROWS 是 1application/jsonlines所有其他情況下。

CREATE MODEL 適用於遠端推論範例

下列範例會建立使用 SageMaker 端點進行預測的模型。確定端點正在執行以進行預測,並在CREATEMODEL命令中指定其名稱。

CREATE MODEL remote_customer_churn FUNCTION remote_fn_customer_churn_predict (varchar, int, float, float) RETURNS int SAGEMAKER 'customer-churn-endpoint' IAM_ROLE default;

下列範例會使用大型語言模型模型 () 建立具有BYOM遠端推論的 LLM。LLMs 託管在 Amazon SageMaker Jumpstart 上接受並傳回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

關閉CREATEMODEL自動探索前置處理器、演算法和超參數選擇。

MODEL_TYPE KMEANS

指定使用 KMEANS 來訓練模型。

PREPROCESSORS '字串'

指定特定資料欄集的特定預處理器組合。格式是 的清單columnSets,且要套用至每組資料欄的適當轉換。Amazon Redshift 支援 3 個 K 平均值前置處理器,即 StandardScaler MinMax、 和 NumericPassthrough。如果您不想套用任何 K 平均值的預處理,請 NumericPassthrough 明確選擇 作為轉換器。如需轉換器的相關資訊,請參閱 CREATE MODEL 使用使用者指南參數

K 平均值演算法會使用歐幾里德距離來計算相似性。預處理資料可確保模型的特徵保持相同的比例並產生可靠的結果。

HYPERPARAMETERS DEFAULT EXCEPT ( K 'val' 【, ...】 )

指定是否使用 K 平均值參數。使用 K 平均值演算法時,您必須指定 K 參數。如需詳細資訊,請參閱 Amazon SageMaker 開發人員指南中的 K-Means 超參數

下列範例會準備 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 { 預設 | 'arn:aws:iam::<account-id>:role/<role-name>' }

使用預設關鍵字讓 Amazon Redshift 在CREATMODEL命令執行時,使用設定為預設並與叢集相關聯的IAM角色。或者,您可以指定IAM角色ARN的 來使用該角色。

AUTO 開啟

開啟演算法和超參數選擇的CREATEMODEL自動探索。在建立預測模型時指定 表示 使用預測 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