

 O Amazon Redshift não permitirá mais a criação de UDFs do Python a partir do Patch 198. As UDFs do Python existentes continuarão a funcionar normalmente até 30 de junho de 2026. Para ter mais informações, consulte a [publicação de blog ](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/). 

# Funções de machine learning
<a name="ml-function"></a>

Usando o machine learning (ML) do Amazon Redshift, é possível treinar modelos de ML usando instruções SQL e chamá-los em consultas SQL para previsão. A explicabilidade do modelo do Amazon Redshift ML contém valores relevantes de recursos para ajudar a entender como cada atributo dos dados de treinamento contribui para o resultado previsto.

Veja a seguir descrições das funções de machine learning para SQL compatíveis com o Amazon Redshift.

**Topics**
+ [Função EXPLAIN\$1MODEL](r_explain_model_function.md)

# Função EXPLAIN\$1MODEL
<a name="r_explain_model_function"></a>

A função EXPLAIN\$1MODEL retorna um tipo de dados SUPER que contém um relatório de explicabilidade do modelo em formato JSON. O relatório de explicabilidade contém informações sobre o valor Shapley para todos os recursos do modelo.

A função EXPLAIN\$1MODEL atualmente é compatível apenas com os modelos XGBoost AUTO ON ou AUTO OFF.

Quando o relatório de explicabilidade não está disponível, a função retorna status exibindo o andamento do modelo. Entre eles estão `Waiting for training job to complete`, `Waiting for processing job to complete` e `Processing job failed`. 

Quando você executa a instrução CREATE MODEL, o estado da explicação se torna `Waiting for training job to complete`. Quando o modelo foi treinado e uma solicitação de explicação é enviada, o estado de explicação se torna `Waiting for processing job to complete`. Quando a explicação do modelo for concluída com êxito, o relatório completo de explicabilidade estará disponível. Caso contrário, o estado se torna `Processing job failed`.

Ao executar a instrução CREATE MODEL, você pode usar o parâmetro opcional `MAX_RUNTIME` para especificar a quantidade máxima de tempo que o treinamento deve levar. Quando a criação do modelo atinge essa quantidade de tempo, o Amazon Redshift a interrompe. Se você atingir esse limite de tempo ao criar um modelo de piloto automático, o Amazon Redshift retornará o melhor modelo até o momento. A explicabilidade do modelo torna-se disponível quando o treinamento do modelo termina; portanto, se `MAX_RUNTIME` estiver definido para uma quantidade de tempo baixa, o relatório de explicabilidade pode não estar disponível. O tempo de treinamento varia e depende da complexidade do modelo, do tamanho dos dados e de outros fatores.

## Sintaxe
<a name="r_explain_model_function-synopsis"></a>

```
EXPLAIN_MODEL ('schema_name.model_name')
```

## Argumento
<a name="r_explain_model_function-argument"></a>

 *schema\$1name*   
O nome do esquema. Se nenhum schema\$1name for especificado, será selecionado o esquema atual.

 *model\$1name*   
O nome do modelo. O nome do modelo em um esquema deve ser exclusivo.

## Tipo de retorno
<a name="r_explain_model_function-return-type"></a>

A função EXPLAIN\$1MODEL retorna um tipo de dados SUPER, conforme mostrado a seguir.

```
{"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}}}}
```

## Exemplos
<a name="r_explain_model_function-examples"></a>

O seguinte exemplo retorna o estado de explicação `waiting for training job to complete`.

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

Quando a explicação do modelo for concluída com êxito, o relatório completo de explicabilidade estará disponível como mostrado a seguir.

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

Como a função EXPLAIN\$1MODEL retorna o tipo de dados SUPER, é possível consultar o relatório de explicabilidade. Ao fazer isso, você pode extrair valores `global_shap_values`, `expected_value` ou valores Shapley específicos de recursos.

O exemplo a seguir extrai `global_shap_values` para o modelo.

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

O exemplo a seguir extrai `global_shap_values` para o recurso x0.

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

Se o modelo for criado em um esquema específico e você tiver acesso ao modelo criado, poderá consultar a explicação do modelo conforme mostrado a seguir.

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