Use instruções do RDS SQLFlow para executar treinamento, previsão e avaliação de modelos com eficiência. Este tópico descreve detalhadamente a especificação de sintaxe do RDS SQLFlow.
Introdução
As instruções do RDS SQLFlow permitem treinar, prever e avaliar modelos sem escrever código Python complexo. O RDS SQLFlow analisa automaticamente essas instruções e as converte em programas Python equivalentes, simplificando significativamente o processo de treinamento. A sintaxe do RDS SQLFlow abrange diversos recursos, incluindo:
Por exemplo, use o conjunto de dados iris para treinar um algoritmo DNNClassifier do TensorFlow. Nesse conjunto, as quatro primeiras colunas representam características botânicas de cada flor de íris, enquanto a última coluna corresponde ao rótulo que identifica a subespécie.
|
sepal_length |
sepal_width |
petal_length |
petal_width |
class |
|
6,4 |
2,8 |
5,6 |
2,2 |
2 |
|
5,0 |
2,3 |
3,3 |
1,0 |
1 |
|
... |
... |
... |
... |
... |
A instrução simples do RDS SQLFlow abaixo treina um modelo DNNClassifier com duas camadas ocultas, cada uma contendo dez unidades ocultas. Após o treinamento, o modelo é salvo na tabela sqlflow_models.my_dnn_model para previsões subsequentes. O RDS SQLFlow analisa automaticamente essas instruções e as converte em programas Python equivalentes, simplificando significativamente o processo de treinamento.
SELECT * FROM iris.train
TO TRAIN DNNClassifier
WITH model.hidden_units = [10, 10], model.n_classes = 3, train.epoch= 10
COLUMN sepal_length, sepal_width, petal_length, petal_width
LABEL class
INTO sqlflow_models.my_dnn_model;
Sintaxe de treinamento
As instruções de treinamento do RDS SQLFlow são compostas pelas cláusulas SELECT, TRAIN, COLUMN, LABEL e INTO.
SELECT select_expr [, select_expr ...]
FROM table_references
[WHERE where_condition]
[LIMIT row_count]
TO TRAIN model_identifier
[WITH
model_attr_expr [, model_attr_expr ...]
[, train_attr_expr ...]]
COLUMN column_expr [, column_expr ...]
| COLUMN column_expr [, column_expr ...] FOR column_name
[COLUMN column_expr [, column_expr ...] FOR column_name ...]
[LABEL label_expr]
INTO table_references;
Cláusula SELECT
A cláusula SELECT recupera dados de uma tabela específica.
Sintaxe:
SELECT select_expr [, select_expr ...]
FROM table_references
[WHERE where_condition]
[LIMIT row_count]
Descrição dos parâmetros:
|
Parâmetro |
Descrição |
|
select_expr |
Colunas de dados a recuperar. Especifique pelo menos uma coluna. |
|
table_references |
Tabela de onde os dados serão recuperados. |
|
where_condition |
Expressão para filtrar linhas. |
|
row_count |
Número máximo de linhas a recuperar. |
Exemplo:
Para treinar rapidamente um modelo de classificação binária no conjunto de dados de amostra (iris.train):
SELECT * FROM iris.train
WHERE class = 0 OR class = 1
LIMIT 1000
TO TRAIN ...
Cláusula TRAIN
A cláusula TRAIN define o tipo específico de modelo e seu algoritmo de treinamento.
Sintaxe:
TO TRAIN model_identifier
WITH
model_attr_expr [, model_attr_expr ...]
[, train_attr_expr ...]
Descrição dos parâmetros:
|
Parâmetro |
Descrição |
|
model_identifier |
Tipo de modelo, como DNNClassifier. Para mais modelos, consulte Models and algorithms. |
|
model_attr_expr |
Atributos do modelo, como |
|
train_attr_expr |
Atributos de treinamento, como |
Exemplo:
Para treinar um modelo DNNClassifier com duas camadas ocultas, cada uma com dez unidades ocultas, e 10 épocas de treinamento:
SELECT * FROM iris.train
TO TRAIN DNNClassifier
WITH
model.hidden_units = [10, 10],
model.n_classes = 3,
train.epoch = 10
...
Cláusula COLUMN
A cláusula COLUMN especifica os nomes dos campos das características de treinamento e seus métodos opcionais de pré-processamento.
Sintaxe:
COLUMN column_expr [, column_expr ...]
| COLUMN column_expr [, column_expr ...] FOR column_name
[COLUMN column_expr [, column_expr ...] FOR column_name ...]
Descrição dos parâmetros:
|
Parâmetro |
Descrição |
|
column_expr |
Nome do campo e método de pré-processamento para seu conteúdo, como |
|
column_name |
Nome da coluna de característica para entrada do modelo. |
Exemplo:
Para usar os campos sepal_length, sepal_width, petal_length e petal_width como características:
SELECT * FROM iris.train
TO TRAIN DNNClassifier WITH
model.hidden_units = [10, 10],
model.n_classes = 3,
train.epoch = 10
COLUMN sepal_length, sepal_width, petal_length, petal_width
...
Cláusula LABEL
A cláusula LABEL indica o nome do campo do rótulo de treinamento e seu método opcional de pré-processamento.
Sintaxe:
LABEL label_expr
Descrição dos parâmetros:
|
Parâmetro |
Descrição |
|
label_expr |
Nome do campo e método de pré-processamento para seu conteúdo, como |
Exemplo:
SELECT * FROM iris.train
TO TRAIN DNNClassifier WITH
model.hidden_units = [10, 10],
model.n_classes = 3,
train.epoch = 10
COLUMN sepal_length, sepal_width, petal_length, petal_width
LABEL class
...
Cláusula INTO
A cláusula INTO especifica o nome da tabela onde o modelo treinado será salvo.
Sintaxe:
INTO table_references
Descrição dos parâmetros:
|
Parâmetro |
Descrição |
|
table_references |
Nome da tabela onde o modelo treinado será salvo. |
Exemplo:
SELECT * FROM iris.train
TO TRAIN DNNClassifier WITH
model.hidden_units = [10, 10],
model.n_classes = 3,
train.epoch = 10
COLUMN sepal_length, sepal_width, petal_length, petal_width
LABEL class
INTO sqlflow_models.my_dnn_model;
Sintaxe de previsão
As instruções de previsão do RDS SQLFlow consistem nas cláusulas SELECT, PREDICT e USING.
SELECT select_expr [, select_expr ...]
FROM table_references
[WHERE where_condition]
[LIMIT row_count]
TO PREDICT result_table_reference
[WITH
attr_expr [, attr_expr ...]]
USING model_table_reference;
A estrutura de dados da cláusula SELECT antes de TO PREDICT deve ser consistente com a estrutura de dados usada na operação TO TRAIN da sintaxe de treinamento. Isso garante que a estrutura de dados utilizada nos processos de previsão e explicação corresponda à estrutura empregada durante a fase de treinamento.
Cláusulas PREDICT e USING
A cláusula PREDICT descreve a tabela onde os resultados da previsão serão gravados, USING indica a tabela de onde o modelo será carregado, e WITH define as configurações necessárias para a previsão.
Sintaxe:
TO PREDICT result_table_reference
[WITH
attr_expr [, attr_expr ...]]
USING model_table_reference;
Descrição dos parâmetros:
|
Parâmetro |
Descrição |
|
result_table_reference |
Tabela que armazena os resultados da previsão. |
|
attr_expr |
Atributos de configuração, como |
|
model_table_reference |
Tabela de onde o modelo é carregado para previsão. |
Exemplo:
Para usar um modelo armazenado na tabela sqlflow.my_dnn_model e salvar os resultados da previsão em uma coluna da tabela iris.predict:
SELECT * FROM iris.train
TO PREDICT iris.predict.class
USING sqlflow.my_dnn_model;
Sintaxe de explicação
As instruções de explicação do RDS SQLFlow são formadas por uma série de comandos SELECT, EXPLAIN e USING.
SELECT select_expr [, select_expr ...]
FROM table_references
[WHERE where_condition]
[LIMIT row_count]
TO EXPLAIN model_table_reference
[WITH
attr_expr [, attr_expr ...]]
[USING explainer];
A estrutura de dados da cláusula SELECT que precede TO EXPLAIN deve ser consistente com a estrutura de dados usada pela operação TO TRAIN em training syntax.
Cláusulas EXPLAIN e USING
A cláusula EXPLAIN especifica a tabela de onde o modelo é carregado e os atributos de configuração necessários. Já a cláusula USING define o explicador a ser utilizado.
Sintaxe:
TO EXPLAIN model_table_reference
[WITH
attr_expr [, attr_expr ...]]
USING explainer;
Descrição dos parâmetros:
|
Parâmetro |
Descrição |
|
model_table_reference |
Tabela de onde o modelo é carregado para previsão. |
|
attr_expr |
Atributos de configuração, como |
|
explainer |
Tipo de explicador, como |
Exemplo:
Para usar o TreeExplainer na explicação de um modelo armazenado em sqlflow_models.my_xgb_regression_model e plotar os resultados da análise em ordem classificada:
SELECT * FROM boston.train
TO EXPLAIN sqlflow_models.my_xgb_regression_model
WITH
summary.sort=True
USING TreeExplainer;
Sintaxe de avaliação
As instruções de avaliação do RDS SQLFlow compreendem os comandos SELECT, EVALUATE e INTO.
SELECT select_expr [, select_expr ...]
FROM table_references
[WHERE where_condition]
[LIMIT row_count]
TO EVALUATE model_table_reference
[WITH
attr_expr [, attr_expr ...]]
LABEL class
INTO evaluate_result_table;
A estrutura de dados da cláusula
SELECTantes deTO EVALUATEdeve ser consistente com a estrutura de dados usada na operaçãoTO TRAINdescrita em Training syntax.Conforme a teoria de aprendizado de máquina, não é adequado usar o conjunto de dados de treinamento para avaliação, pois isso pode gerar resultados excessivamente otimistas.
Cláusulas EVALUATE e INTO
A cláusula TO EVALUATE define o modelo a ser avaliado e as métricas utilizadas na avaliação. A cláusula INTO especifica a tabela onde os resultados da avaliação serão salvos.
Sintaxe:
TO EVALUATE model_table_reference
[WITH
attr_expr [, attr_expr ...]]
INTO evaluate_result_table;
Descrição dos parâmetros:
|
Parâmetro |
Descrição |
|
model_table_reference |
Modelo a ser avaliado, cujos resultados representam o desempenho do modelo ao prever novos dados. |
|
attr_expr |
Atributos para avaliação. Defina quais métricas serão geradas na tabela de resultados configurando |
|
evaluate_result_table |
Tabela que armazena os resultados da avaliação. |
Exemplo:
SELECT * FROM iris.test
TO EVALUATE sqlflow_models.my_dnn_model
WITH validation.metrics = Accuracy
LABEL class
INTO sqlflow_models.evaluate_result_table;
Sintaxe de otimização
O RDS SQLFlow utiliza as cláusulas TO MAXIMIZE e TO MINIMIZE para descrever e resolver problemas de programação matemática.
Sintaxe:
SELECT select_expr [, select_expr ...]
FROM table_references
[WHERE where_condition]
[LIMIT row_count]
TO MAXIMIZE|MINIMIZE
objective_expr
CONSTRAINT
constraint_expr [GROUP BY column_name]
[, constraint_expr [GROUP BY column_name]...]
WITH
variables="variable_value(column_name, ...)"
var_type="Integers|Reals|Binary|NonNegativeIntegers|..."
[USING solver_name]
INTO result_table_name;
Exemplo:
SELECT c1, c2, c3 FROM my_db.my_table
TO MAXIMIZE SUM(x * c1)
CONSTRAINT
SUM(x) <= c2 GROUP BY c1
x <= 3
WITH
variables="x(c3)",
var_type="NonNegativeIntegers"
USING glpk
INTO my_db.my_result_table;
Descrição dos parâmetros:
Parâmetro | Descrição |
TO MAXIMIZE |
|
CONSTRAINT |
|
WITH |
|
USING |
|
INTO |
|