EXPLAIN_ MODEL 函數 - Amazon Redshift

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

EXPLAIN_ MODEL 函數

該 EXPLAIN _ MODEL 函SUPER數返回包含JSON格式的模型可解釋報告的數據類型。可解釋性報告包含有關所有模型特徵的 Shapley 值的資訊。

EXPLAIN_ MODEL 功能目前僅支援 AUTO ON 或AUTOOFFXGBoost型號。

當可解釋性報告不可用時,函數會傳回顯示模型進度的狀態。其中包括 Waiting for training job to completeWaiting for processing job to completeProcessing job failed

當您執行CREATEMODEL陳述式時,解釋狀態會變成Waiting for training job to complete。當模型經過訓練並傳送解釋請求時,解釋狀態會變成 Waiting for processing job to complete。當模型解釋成功完成後,即可獲得完整的可解釋性報告。否則狀態變成 Processing job failed

當您執行CREATEMODEL陳述式時,您可以使用選擇性MAX_RUNTIME參數來指定訓練應採取的時間上限。一旦模型建立達到這段時間,Amazon Redshift 就會停止建立模型。如果您在建立自動駕駛模型時達到該時間限制,Amazon Redshift 將傳回目前為止最佳模型。模型訓練完成後,模型可解釋性就可用,因此如果 MAX_RUNTIME 設定的時間較短,則可解釋性報告可能無法使用。訓練時間會因模型複雜度、資料大小及其他因素而有所不同。

語法

EXPLAIN_MODEL ('schema_name.model_name')

引數

schema_name

結構描述的名稱。如果未指定 schema_name,則會選取目前的結構描述。

model_name

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

傳回類型

該 EXPLAIN _ MODEL 函數返回一個SUPER數據類型,如下所示。

{"version":"1.0","explanations":{"kernel_shap":{"label0":{"global_shap_values":{"x0":0.05,"x1":0.10,"x2":0.30,"x3":0.15},"expected_value":0.50}}}}

範例

下列範例會傳回解釋狀態 waiting for training job to complete

select explain_model('customer_churn_auto_model'); explain_model -------------------------------------------------------- {"explanations":"waiting for training job to complete"} (1 row)

當模型解釋成功完成時,完整的可解釋性報告如下。

select explain_model('customer_churn_auto_model'); explain_model ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ {"version":"1.0","explanations":{"kernel_shap":{"label0":{"global_shap_values":{"x0":0.05386043365892927,"x1":0.10801289723274592,"x2":0.23227865827017378,"x3":0.0676685133940455,"x4":0.0897097667672375,"x5":0.08502141653270926,"x6":0.07581993936077065,"x7":0.16462880604578135},"expected_value":0.8492974042892456}}}} (1 row)

由於 EXPLAIN _ MODEL 函數會傳回SUPER資料類型,因此您可以查詢無法解釋的報告。透過這樣做,您可以擷取 global_shap_valuesexpected_value 或特定於特徵的 Shapley 值。

以下範例會擷取模型的 global_shap_values

select json_table.report.explanations.kernel_shap.label0.global_shap_values from (select explain_model('customer_churn_auto_model') as report) as json_table; global_shap_values -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- {"state":0.10983770427197151,"account_length":0.1772441398408543,"area_code":0.08626823968639591,"phone":0.0736669595282712,"intl_plan":3.344907436910987,"vmail_plan":0.09646600597854467,"vmail_message":0.2064922655089351,"day_mins":2.015038015251777,"day_calls":0.13179511076780168,"day_charge":0.4941091720480879,"eve_mins":0.46081379198626105,"eve_calls":0.16913440417758477,"eve_charge":0.09651014369401761,"night_mins":0.44218153640050845,"night_calls":0.15311640089218997,"night_charge":0.13850366104495426,"intl_mins":0.7583662464883899,"intl_calls":0.47144468610485685,"intl_charge":0.10945894673611875,"cust_serv_calls":0.31822051038387733} (1 row)

以下範例會擷取特徵 x0 的 global_shap_values

select json_table.report.explanations.kernel_shap.label0.global_shap_values.x0 from (select explain_model('customer_churn_auto_model') as report) as json_table; x0 ------------------------ 0.05386043365892927 (1 row)

如果模型是在一個特定的結構描述中建立的,且您有權存取建立的模型,那麼您可以查詢模型解釋,如下所示。

-- Check the current schema SHOW search_path; search_path ------------------ $user, public (1 row) -- If you have the privilege to access the model explanation -- in `test_schema` SELECT explain_model('test_schema.test_model_name'); explain_model --------------------------------------------------------- {"explanations":"waiting for training job to complete"} (1 row)