A biblioteca de modelos do RDS SQLFlow oferece diversos modelos adequados para diferentes cenários. Selecione o modelo apropriado com base no tipo de problema a ser resolvido. Este tópico descreve os diferentes modelos e seus algoritmos.
Visão geral dos modelos
Modelos de classificação
Os modelos de classificação resolvem situações em que um conjunto de dados contém múltiplas categorias e é necessário determinar a qual categoria novos dados pertencem. Esses modelos ajudam a responder perguntas binárias (sim ou não) e de classificação multiclasse (A, B ou C). Para mais informações, consulte Modelos de classificação.
Cenários
Classificação de imagens: tarefas como reconhecimento de dígitos manuscritos e de objetos.
Classificação de texto: tarefas como análise de sentimentos e identificação de spam.
Sistemas de recomendação: previsão da intenção de compra de usuários no comércio eletrônico.
Diagnóstico médico: análise de informações de pacientes para prever riscos de doenças.
Modelos de regressão
Modelos de regressão são adequados para dados com relações quantificáveis. Eles estimam a relação entre os dados e fazem previsões para novos conjuntos com base nessa estimativa. Para mais informações, consulte Modelos de regressão. Um modelo de regressão é construído com base na relação entre variáveis de entrada (recursos) e variáveis de saída (resultados) para atender aos requisitos nos cenários a seguir.
Cenários
Economia: previsão de indicadores econômicos, como preços de imóveis e ações. Nesse cenário, a regressão linear ajuda a compreender eficientemente as relações entre diferentes variáveis.
Medicina: previsão de resultados de saúde, como níveis de glicose no sangue, com base em recursos como estilo de vida e informações genéticas.
Marketing: análise da relação entre gastos com publicidade e receita de vendas para otimizar estratégias de marketing.
Engenharia: previsão do desempenho de produtos, cujos resultados servem para construir modelos baseados em vários parâmetros.
Ciências sociais: análise de fenômenos sociais, como o impacto do nível de escolaridade na renda.
Modelos de clustering
Modelos de clustering classificam dados em um conjunto com base em similaridades específicas e geram novos modelos de instância aplicáveis aos cenários abaixo. Para mais informações, consulte Modelos de clustering. Esses modelos fornecem um método de aprendizado não supervisionado para machine learning (ML), classificando amostras distintas conforme a similaridade de recursos. Nos resultados, as amostras do mesmo grupo são semelhantes entre si, enquanto as de grupos diferentes apresentam diferenças significativas. Devido à capacidade de identificar padrões potenciais em dados não rotulados, os modelos de clustering são amplamente utilizados em análise de dados e reconhecimento de padrões.
Cenários
Classificação de clientes: fornecedores utilizam análise de clustering para pesquisar profundamente os padrões de comportamento e preferências dos usuários, implementando estratégias de marketing de precisão.
Processamento de imagens: durante a classificação de imagens e o reconhecimento de objetos, pixels com recursos semelhantes precisam ser agrupados na mesma categoria por meio de clustering.
Detecção de anomalias: amostras que não pertencem a nenhum cluster devem ser identificadas para detectar possíveis outliers, como ataques no campo da segurança cibernética.
Clustering de documentos: muitos documentos precisam ser classificados por tópico ou conteúdo para facilitar a recuperação de informações e a compilação de dados.
Bioinformática: na análise de dados de expressão gênica, pesquisadores usam análise de clusters para identificar grupos de genes semelhantes.
Modelos de classificação
DNNClassifier
Introdução
O Deep Neural Network Classifier (DNNClassifier) é uma API avançada fornecida pelo TensorFlow para construir modelos de rede neural profunda (DNN) destinados a previsões binárias ou multiclasse. A API utiliza uma rede multicamadas totalmente conectada para capturar relações não lineares nos dados, treinando e otimizando pesos e vieses para minimizar a perda entre a saída do modelo e a categoria real.
O DNNClassifier oferece os seguintes benefícios:
Facilidade de uso: atua como uma API avançada que simplifica a construção de modelos de deep learning.
Modularidade: permite configurar flexivelmente a estrutura da rede, como o número e o tamanho das camadas ocultas.
Treinamento paralelo: possibilita o uso de CPUs multicore ou GPUs para acelerar o treinamento.
Múltiplos recursos de entrada: suporta a combinação de recursos numéricos e categóricos.
Parâmetros
Parâmetro | Descrição |
model.hidden_units | Número de neurônios na camada oculta de um modelo DNN. Por exemplo, se o valor estiver no intervalo [128, 32], o modelo conterá duas camadas ocultas, com 128 e 32 neurônios, respectivamente. |
model.n_classes | Número total de categorias que o modelo pode classificar (aplicável a modelos classificadores). Por exemplo, |
model.optimizer | Otimizador utilizado para o treinamento do modelo. |
model.batch_norm | Define se deve usar batch_norm após cada camada oculta. Valores válidos:
|
model.dropout | Probabilidade de dropout. Valor de exemplo: 0,5. Valor padrão: None. |
Exemplo
### Training
SELECT * FROM iris.train TO TRAIN DNNClassifier WITH
model.n_classes = 3,
train.epoch = 10
COLUMN sepal_length, sepal_width, petal_length, petal_width
LABEL class
INTO sqlflow_models.my_dnn_model;
## Prediction
SELECT * FROM iris.test
TO PREDICT iris.predict.class
USING sqlflow_models.my_dnn_model;
XGBoost gbtree
Introdução
O Extreme Gradient Boosting (XGBoost) é um algoritmo eficiente de árvore de gradient boosting, amplamente utilizado para classificação e regressão. O modelo XGBoost gbtree usa árvores de decisão como aprendizes base.
O algoritmo apresenta as seguintes características:
Alto desempenho: em várias tarefas de classificação, o BoostedTreesClassifier do XGBoost atinge maior precisão do que métodos tradicionais.
Adaptabilidade: avalia automaticamente a importância dos recursos e se adapta a diferentes distribuições de dados.
Interpretabilidade: analisa a importância dos recursos, permitindo entender como o modelo toma decisões.
Prevenção de overfitting: as Boosted Trees podem usar técnicas de regularização para evitar eficazmente o overfitting ao percorrer árvores profundas.
Capacidade de lidar com valores ausentes: trata adequadamente valores ausentes em uma amostra, evitando problemas de pré-processamento.
Treinamento paralelo e distribuído: permite treinar modelos eficientemente em grandes conjuntos de dados.
Exemplo
## Used for binary classification
SELECT * FROM train_table
TO TRAIN xgboost.gbtree
WITH objective="binary:logistic", validation.select="SELECT * FROM val_table"
LABEL class
INTO my_xgb_classification_model;
## Used for multi-class classification
SELECT * FROM train_table
TO TRAIN xgboost.gbtree
WITH objective="multi:softmax", num_class=3, validation.select="SELECT * FROM val_table"
LABEL class
INTO my_xgb_classification_model;
## Used for regression tasks
SELECT * FROM train_table
TO TRAIN xgboost.gbtree
WITH objective="reg:squarederror", validation.select="SELECT * FROM val_table"
LABEL target
INTO my_xgb_regression_model;
GCN
Introdução
Uma Graph Convolutional Network (GCN) é um modelo de deep learning projetado especificamente para processar dados estruturados em grafos, aplicando convoluções sobre o grafo. As GCNs capturam eficazmente relações complexas entre nós e os recursos estruturais profundos dos grafos. Essa capacidade permite analisar dados com estruturas e relacionamentos complexos, como os envolvidos em redes sociais, sistemas de recomendação e redes biológicas. Uma GCN recebe um grafo como entrada, composto por nós e arestas. Em muitos cenários de negócios, os dados podem ser naturalmente representados em uma estrutura de grafo, como redes sociais e grafos de conhecimento. As GCNs utilizam convoluções de grafos em redes neurais convolucionais (CNNs) e atualizam a representação de cada nó agregando informações de recursos de nós vizinhos. Dessa forma, a representação de um nó inclui os recursos de seus vizinhos.
Cenários
Análise de redes sociais: execução de tarefas como recomendação de usuários, previsão de relacionamentos e detecção de comunidades.
Classificação de nós: classificação de nós ou entidades em um grafo de conhecimento ou estrutura similar, prevendo a categoria de um nó específico. Pode ser usado para classificar marcas ou produtos.
Segmentação de imagens: aplicação em imagens compostas por pixels para melhorar o desempenho da segmentação de imagens e do reconhecimento de objetos.
Modelos de regressão
DNNRegressor
Introdução
O DNNRegressor é uma API avançada fornecida pelo TensorFlow para deep learning em tarefas de regressão. Pertencente ao módulo TensorFlow Estimator, ele processa dados estruturados, como dados em tabelas ou no formato CSV. O DNNRegressor também aprende relações de dados não lineares complexas para prever saídas de valores contínuos, como preços ou probabilidades.
Parâmetros
|
Parâmetro |
Descrição |
|
n_classes |
Número total de categorias que o modelo pode classificar (aplicável a modelos classificadores). Por exemplo, |
|
optimizer |
Otimizador utilizado para o treinamento do modelo. |
|
sparse_combiner |
Especifica o método de processamento quando a entrada da coluna categórica contém múltiplos valores idênticos, por exemplo: |
Exemplo
## Training
SELECT f9, target FROM housing.train
TO TRAIN DNNRegressor WITH model.hidden_units = [10, 20]
COLUMN EMBEDDING(CATEGORY_ID(f9, 1000), 2, "sum")
LABEL target
INTO housing.dnn_model;
## Prediction
SELECT f9, target FROM housing.test
TO PREDICT housing.predict.class USING housing.dnn_model;
RNNBasedTimeSeriesModel
Introdução
O RNNBasedTimeSeriesModel, uma Recurrent Neural Network (RNN), é um modelo de previsão baseado em séries temporais de Long Short-Term Memory (LSTM). Ele prevê valores futuros usando valores passados como recursos. Uma RNN é uma rede neural capaz de processar dados sequenciais. Em cada passo de tempo, as RNNs recebem não apenas os dados do ponto atual, mas também consideram os dados de estado do ponto anterior. São adequadas para processar dados de séries temporais, como preços de ações, leituras de temperatura e linguagem natural.
As RNNs oferecem os seguintes benefícios:
Capacidade de memória: armazenam informações de entradas anteriores, permitindo capturar dependências de longo prazo em séries temporais.
Comprimento de entrada dinâmico: lidam com sequências de entrada de qualquer comprimento, o que é especialmente importante para dados de séries temporais.
Mapeamento não linear: estabelecem relações não lineares entre dados de entrada e saída, possibilitando tarefas complexas de previsão em séries temporais.
Geração de sequências: além de tarefas de previsão, geram dados de séries temporais, como música e informações textuais.
Parâmetros
|
Parâmetro |
Descrição |
|
model.stack_units |
Número de camadas LSTM e o tamanho de cada camada. Valor padrão: [500, 500]. |
|
model.n_in |
Número de pontos de tempo de entrada. |
|
model.n_out |
Número de pontos de tempo de saída. |
Exemplo
## Training
SELECT sepal_length, sepal_width, petal_length, concat(petal_width,',',class) as class
FROM iris.train
TO TRAIN sqlflow_models.RNNBasedTimeSeriesModel WITH
model.n_in=3,
model.stack_units = [10, 10],
model.n_out=2,
model.model_type="lstm",
validation.metrics= "MeanAbsoluteError,MeanSquaredError"
LABEL class
INTO sqlflow_models.my_dnn_regts_model_2;
## Prediction
SELECT sepal_length, sepal_width, petal_length, concat(petal_width,',',class) as class
FROM iris.test
TO PREDICT iris.predict_ts_2.class
USING sqlflow_models.my_dnn_regts_model_2;
Modelos de clustering
DeepEmbeddingClusterModel
Introdução
O DeepEmbeddingClusterModel combina métodos de deep learning e clustering. É usado principalmente para aprender automaticamente representações de embedding de baixa dimensão dos dados e realizar clustering no espaço de embedding.
O DeepEmbeddingClusterModel oferece os seguintes benefícios:
Deep learning: utiliza redes neurais profundas para extração de recursos, aprendendo automaticamente representações úteis dos dados e capturando relações não lineares complexas.
Representação incorporada: projeta dados de alta dimensão em um espaço de embedding de menor dimensão, simplificando o clustering e melhorando seu desempenho.
Capacidades de clustering: realiza clustering diretamente no espaço de embedding para reduzir a distância entre pontos de dados do mesmo tipo, aumentando a precisão e a interpretabilidade do clustering.
Capacidades de generalização: na maioria dos casos, processa dados ruidosos e complexos graças às vantagens do deep learning.
Escalabilidade: processa conjuntos de dados volumosos e itera e atualize dados eficazmente com base em deep learning.
Parâmetros
|
Parâmetro |
Descrição |
|
model.n_clusters |
Número de categorias de clustering. Valor padrão: 10. |
|
model.kmeans_init |
Número de vezes que o algoritmo K-means é executado para obter o melhor ponto central. Valor padrão: 20. |
|
model.run_pretrain |
Define se deve realizar pré-treinamento. Valor padrão: True. |
|
model.pretrain_dims |
Dimensão de cada camada oculta quando o autoencoder é pré-treinado. Valor padrão: [500, 500, 2.000, 10]. |
|
model.pretrain_activation_func |
Função de ativação para a parte do autoencoder, valor padrão: |
|
model.pretrain_batch_size |
Tamanho do lote para treinamento do autoencoder. Valor padrão: 256. |
|
model.train_batch_size |
Tamanho do lote para treinamento. Valor padrão: 256. |
|
model.pretrain_epochs |
Número de épocas de pré-treinamento. Valor padrão: 10. |
|
model.pretrain_initializer |
Método de inicialização para parâmetros do autoencoder, valor padrão: |
|
model.pretrain_lr |
Taxa de aprendizado do pré-treinamento. Valor padrão: 1. |
|
model.train_lr |
Taxa de aprendizado do treinamento. Valor padrão: 0,1. |
|
model.train_max_iters |
Número máximo de passos de iteração de treinamento. Valor padrão: 8.000. |
|
model.update_interval |
Número de passos nos quais a distribuição necessária é atualizada. Valor padrão: 100. |
|
model.tol |
Tolerância. Valor padrão: 0,001. |
Exemplo
## Training
SELECT (sepal_length - 4.4) / 3.5 as sepal_length, (sepal_width - 2.0) / 2.2 as sepal_width, (petal_length - 1) / 5.9 as petal_length, (petal_width - 0.1) / 2.4 as petal_width
FROM iris.train
TO TRAIN sqlflow_models.DeepEmbeddingClusterModel
WITH
model.pretrain_dims = [10,10,3],
model.n_clusters = 3,
model.pretrain_epochs=5,
train.batch_size=10,
train.verbose=1
INTO sqlflow_models.my_clustering_model;
## Prediction
SELECT (sepal_length - 4.4) / 3.5 as sepal_length, (sepal_width - 2.0) / 2.2 as sepal_width, (petal_length - 1) / 5.9 as petal_length, (petal_width - 0.1) / 2.4 as petal_width
FROM iris.test
TO PREDICT iris.predict.class
USING sqlflow_models.my_clustering_model;