Modelos
Um modelo de aprendizado de máquina (machine learning) é uma função parametrizada (ou família de funções) que mapeia entradas (atributos (features)) para saídas (previsões (predictions)). Diferentes famílias de modelos (model families) codificam diferentes suposições — chamadas vieses indutivos (inductive biases) — sobre como os dados são gerados. Escolher um bom modelo tem menos a ver com encontrar “o melhor algoritmo” e mais com alinhar esses vieses aos seus dados, restrições e objetivos.
Este artigo apresenta um panorama de famílias comuns de modelos de aprendizado de máquina, explica sua intuição teórica e oferece orientação prática sobre quando usar o quê. Para ajuste e comparação sistemáticos, veja Seleção de Modelos e Avaliação.
O que “modelo” significa em aprendizado de máquina
Em alto nível, o aprendizado supervisionado (supervised learning) escolhe uma função ( f_\theta ) de uma classe de hipóteses (hypothesis class) ( \mathcal{H} ) para minimizar uma perda esperada (expected loss):
[ \theta^* = \arg\min_\theta \ \mathbb{E}{(x,y)\sim \mathcal{D}} \left[\ell(f\theta(x), y)\right] ]
Na prática, você minimiza a perda empírica (empirical loss) em um conjunto de dados (dataset), somada à regularização (regularization):
[ \theta^* = \arg\min_\theta \ \frac{1}{n}\sum_{i=1}^n \ell(f_\theta(x_i), y_i) + \lambda \Omega(\theta) ]
Conceitos-chave por trás das famílias de modelos:
- Capacidade / expressividade: quão complexas as funções em ( \mathcal{H} ) podem ser.
- Viés indutivo: que tipos de padrões o modelo “prefere” (linearidade, suavidade, esparsidade, localidade, estrutura composicional).
- Otimização: quão fácil é treinar (convexa vs não convexa; estável vs “temperamental”).
- Regime de dados: conjuntos pequenos vs grandes; rótulos ruidosos; valores ausentes.
- Restrições: interpretabilidade (interpretability), latência, memória, incerteza (uncertainty), conformidade e manutenibilidade.
Um fluxo de trabalho prático geralmente começa com boas linhas de base (baselines) e itera: qualidade dos dados (IA centrada em dados (Data-Centric AI)), atributos (Engenharia de Atributos (Feature Engineering)), escolha de modelo e avaliação.
Um modelo mental rápido para “quando usar o quê”
Essas heurísticas não são absolutas, mas se sustentam em muitos sistemas reais:
- Dados tabulares (tabular data) (numéricos/categóricos mistos, valores ausentes): ensembles de árvores (tree ensembles) (boosting por gradiente (gradient boosting)) costumam ser os melhores.
- Atributos esparsos de alta dimensionalidade (saco de palavras (bag-of-words), IDs em codificação one-hot (one-hot)): modelos lineares (linear models) e SVMs lineares (linear SVMs) são fortes.
- Imagens, áudio, texto não estruturado: aprendizado profundo (deep learning) (Redes Neurais (Neural Networks)), frequentemente com modelos pré-treinados (pretrained models).
- Poucos dados + necessidade de incerteza: Processos Gaussianos (Gaussian Processes) ou Modelos Bayesianos (Bayesian Models).
- Necessidade de interpretabilidade: modelos lineares, árvores rasas, boosting por gradiente monotônico (monotonic gradient boosting) ou interpretação agnóstica ao modelo (model-agnostic interpretation) (Interpretabilidade (ML Clássico)).
- Busca por similaridade / recuperação (retrieval): Aprendizado de Métricas (Metric Learning) + representações vetoriais (embeddings) + índice de vizinhos mais próximos (nearest neighbor index).
- Ranqueamento (ranking) (busca/recomendação): Aprendizado para Ranqueamento (Learning to Rank), frequentemente com árvores com boosting por gradiente ou modelos profundos de ranqueamento.
- Desfechos de tempo até o evento (time-to-event): Análise de Sobrevivência (Survival Analysis).
- Estrutura não rotulada: Agrupamento (Clustering), Redução de Dimensionalidade (Dimensionality Reduction), Detecção de Anomalias (Anomaly Detection).
Modelos lineares (Regressão Linear/Logística e variantes)
Veja: Regressão Linear/Logística
Ideia central e teoria
Modelos lineares assumem que o alvo pode ser bem aproximado por uma função linear dos atributos:
- Regressão: ( \hat{y} = w^\top x + b )
- Classificação (logística): ( p(y=1|x) = \sigma(w^\top x + b) )
Eles são populares porque são:
- Rápidos para treinar e servir
- Frequentemente convexos (otimização fácil, ótimo global)
- Interpretáveis (pesos dos atributos podem ser inspecionados)
- Fortes com atributos esparsos de alta dimensionalidade
- Fáceis de regularizar (L1/L2/Elastic Net)
Quando usar
- Como linha de base para quase qualquer problema supervisionado
- Quando você precisa de simplicidade, velocidade e interpretabilidade
- Quando relações são aproximadamente aditivas/monotônicas
- Para classificação de texto com saco de palavras ou TF-IDF
- Para probabilidades calibradas (calibrated probabilities) (frequentemente melhor do que algumas alternativas, especialmente com regularização adequada e checagens de calibração (calibration))
Exemplo prático: linha de base de classificação de texto
from sklearn.pipeline import Pipeline
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.linear_model import LogisticRegression
clf = Pipeline([
("tfidf", TfidfVectorizer(ngram_range=(1,2), min_df=2)),
("lr", LogisticRegression(max_iter=2000, C=2.0))
])
clf.fit(train_texts, train_labels)
print(clf.score(test_texts, test_labels))
Limitações
- Subajusta (underfits) interações complexas, a menos que você faça engenharia de atributos
- Sensível ao escalonamento de atributos (especialmente com regularização)
- Pode ser frágil se a verdadeira fronteira de decisão for altamente não linear
Árvores de decisão e ensembles (Florestas Aleatórias (Random Forests), Boosting por Gradiente (Gradient Boosting))
Veja: Árvores de Decisão e Ensembles
Ideia central e teoria
Uma árvore de decisão (decision tree) particiona recursivamente o espaço de atributos para minimizar impureza (classificação) ou variância (regressão). Árvores únicas são fáceis de interpretar, mas instáveis (alta variância). Ensembles reduzem variância e/ou viés:
- Florestas aleatórias: bagging + subamostragem de atributos → redução de variância.
- Boosting por gradiente (XGBoost/LightGBM/CatBoost): adiciona árvores sequencialmente ajustando erros residuais → forte redução de viés.
Quando usar
- Conjuntos de dados tabulares com atributos heterogêneos
- Interações não lineares e efeitos de limiar
- Tamanhos moderados de dados (de milhares a milhões de linhas)
- Você quer alta acurácia com pouca engenharia de atributos
Boosting por gradiente costuma ser o “vencedor padrão” em benchmarks tabulares.
Exemplo prático: boosting por gradiente em dados tabulares
from sklearn.compose import ColumnTransformer
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import OneHotEncoder
from sklearn.impute import SimpleImputer
from sklearn.ensemble import HistGradientBoostingClassifier
num_pipe = Pipeline([
("impute", SimpleImputer(strategy="median"))
])
cat_pipe = Pipeline([
("impute", SimpleImputer(strategy="most_frequent")),
("onehot", OneHotEncoder(handle_unknown="ignore"))
])
pre = ColumnTransformer([
("num", num_pipe, numeric_cols),
("cat", cat_pipe, categorical_cols),
])
model = Pipeline([
("pre", pre),
("gbdt", HistGradientBoostingClassifier(max_depth=6, learning_rate=0.05))
])
model.fit(X_train, y_train)
Limitações
- Mais difícil de servir e manter do que modelos lineares (mais partes móveis)
- Pode superajustar (overfit) com boosting agressivo ou vazamento (leakage)
- Interpretação é possível, mas mais trabalhosa (importância de atributos, dependência parcial; veja Interpretabilidade (ML Clássico))
k-Vizinhos Mais Próximos (k-Nearest Neighbors, k-NN) e Bayes Ingênuo (Naive Bayes)
Veja: k-NN, Naive Bayes
k-NN
k-NN prevê usando os rótulos dos pontos de treino mais próximos sob uma métrica de distância. É “não paramétrico” (non-parametric) no sentido de que a complexidade cresce com o conjunto de dados.
Use quando:
- Os dados são de baixa dimensionalidade e existe uma boa métrica de distância
- Você precisa de uma linha de base simples
- O treinamento precisa ser trivial (mas a inferência pode ser cara)
Evite quando:
- Espaços de alta dimensionalidade (a distância se torna menos significativa)
- É necessário inferência de baixa latência sem indexação aproximada de vizinhos mais próximos
Bayes ingênuo
Bayes ingênuo é um modelo gerativo probabilístico (probabilistic generative model) com fortes suposições de independência condicional. Apesar de “ingênuo”, é competitivo para texto esparso.
Use quando:
- Classificação de texto com saco de palavras
- Você quer treinamento e inferência extremamente rápidos
- Você precisa de probabilidades razoáveis rapidamente (mas ainda verifique calibração)
Evite quando:
- Dependências entre atributos são críticas e prejudicam a acurácia
Máquinas de Vetores de Suporte (Support Vector Machines, SVMs) e métodos de kernel (kernel methods)
Veja: SVMs
Ideia central e teoria
SVMs buscam encontrar um separador de margem máxima. Com funções kernel (kernel), elas conseguem modelar fronteiras não lineares ao mapear implicitamente atributos para um espaço de maior dimensionalidade.
- SVM linear: forte em dados esparsos de alta dimensionalidade (como texto).
- SVM com kernel (RBF, polinomial): poderosa para conjuntos de dados de tamanho médio.
Quando usar
- Classificação com conjuntos de dados de tamanho médio
- Classificação esparsa de alta dimensionalidade (SVM linear)
- Fronteiras não lineares quando os dados não são enormes e você pode arcar com o custo de computação de kernel
Limitações
- Métodos de kernel escalam mal com o tamanho do conjunto de dados (memória/tempo)
- Saídas probabilísticas exigem calibração extra
- Escalonamento de atributos e hiperparâmetros importam muito
Modelos generativos probabilísticos (probabilistic generative models) (GMMs, HMMs, modelos de tópicos (topic models))
Muitos modelos “clássicos” representam explicitamente como os dados são gerados: ( p(x, y) ) em vez de modelar diretamente ( p(y|x) ).
Modelos de Mistura Gaussiana (Gaussian Mixture Models, GMMs)
Um modelo de mistura gaussiana modela dados como uma mistura de gaussianas e frequentemente é ajustado via EM.
Use quando:
- Agrupamento suave é útil (probabilidades de pertencimento ao cluster)
- Você precisa de um modelo de densidade para suportar Detecção de Anomalias
- Os dados são aproximadamente “clusters elípticos” no espaço de atributos
Veja também: Agrupamento
Modelos Ocultos de Markov (Hidden Markov Models, HMMs) e modelos de espaço de estados (state-space models)
Modelos ocultos de Markov modelam sequências com estados latentes discretos.
Use quando:
- Dados sequenciais com regimes interpretáveis (por exemplo, modos de operação de uma máquina)
- Você precisa de modelos probabilísticos de sequência com poucos dados
Limitações
- Têm dificuldade com dependências complexas de longo alcance em comparação com modelos profundos de sequência
Modelos bayesianos (Bayesian models) (máximo a posteriori (maximum a posteriori, MAP) vs Bayes completo (full Bayes))
Veja: Modelos Bayesianos
Ideia central e teoria
A modelagem bayesiana trata parâmetros como variáveis aleatórias com um prior (prior) ( p(\theta) ). Dados ( D ), você computa o posterior (posterior):
[ p(\theta|D) \propto p(D|\theta)p(\theta) ]
Abordagens bayesianas:
- Fornecem incerteza em parâmetros e previsões
- Permitem codificar conhecimento a priori
- Suportam modelagem hierárquica (compartilhando força estatística entre grupos)
Quando usar
- Conjuntos de dados pequenos/médios em que priors ajudam
- Você precisa de incerteza fundamentada (decisões sensíveis a risco)
- Você precisa de pooling parcial (por exemplo, muitas categorias com poucas amostras cada)
Nota prática
A inferência bayesiana completa pode ser cara; aproximações comuns incluem inferência variacional (variational inference) e MCMC (Monte Carlo via Cadeias de Markov (Markov chain Monte Carlo, MCMC)), ou usar ensembles e checagens de calibração quando Bayes completo é impraticável.
Processos Gaussianos (Gaussian Processes, GPs)
Veja: Processos Gaussianos
Ideia central e teoria
Um processo gaussiano define uma distribuição sobre funções ( f ). Usando uma função kernel ( k(x, x') ), ele codifica suposições de suavidade e estrutura. Processos gaussianos frequentemente entregam excelentes estimativas de incerteza.
Quando usar
- Regressão/classificação com poucos dados (centenas a poucos milhares de pontos)
- Você precisa de previsões cientes de incerteza (uncertainty-aware) (por exemplo, aprendizado ativo (active learning), otimização segura (safe optimization))
- Você consegue projetar um kernel que reflita a estrutura do domínio
Limitações
- Computacionalmente caro para ( n ) grande (embora processos gaussianos esparsos/aproximados ajudem)
- A escolha de kernel pode ser um gargalo
Redes neurais (neural networks) e aprendizado profundo (deep learning)
Relacionado: Redes Neurais, Retropropagação (Backpropagation), Descida do Gradiente (Gradient Descent), Arquitetura Transformer (Transformer Architecture)
Ideia central e teoria
Redes neurais aprendem representações hierárquicas de atributos ao compor transformações não lineares. O treinamento geralmente é feito por otimização baseada em gradiente em uma perda diferenciável.
Arquiteturas comuns:
- MLPs: de uso geral, frequentemente para dados tabulares e representações vetoriais
- CNNs: viés indutivo espacial → imagens/espectrogramas de áudio
- RNNs/LSTMs: modelagem de sequência (cada vez mais substituídas por Transformers)
- Transformers: baseados em atenção; dominantes em PLN e cada vez mais em visão/áudio e multimodal
Quando usar
- Dados não estruturados (texto, imagens, áudio)
- Grandes conjuntos de dados ou acesso a modelos pré-treinados fortes
- Você quer aprendizado ponta a ponta com mínima engenharia manual de atributos
- Você precisa aprender representações vetoriais para recuperação, ranqueamento ou alinhamento multimodal
Exemplo prático: classificador MLP pequeno (PyTorch)
import torch
import torch.nn as nn
model = nn.Sequential(
nn.Linear(d_in, 256),
nn.ReLU(),
nn.Dropout(0.2),
nn.Linear(256, 1)
)
loss_fn = nn.BCEWithLogitsLoss()
opt = torch.optim.AdamW(model.parameters(), lr=3e-4)
# training loop omitted: forward -> loss -> backward -> step
Limitações e ressalvas
- Mais hiperparâmetros, mais modos de falha (instabilidade de otimização, overfitting)
- Frequentemente menos interpretáveis sem ferramentas especializadas
- Podem exigir muitos dados; aprendizado por transferência (transfer learning) ajuda, mas não elimina problemas de dados
- Incerteza é não trivial; considere calibração, ensembles ou aproximações bayesianas
Aprendizado de métricas (metric learning) e modelos de representação vetorial
Veja: Aprendizado de Métricas
Ideia central
Em vez de prever rótulos diretamente, aprende-se um espaço de representação vetorial no qual distâncias refletem similaridade semântica. Objetivos típicos: perda contrastiva (contrastive loss), perda de tríplice (triplet loss) ou perdas proxy baseadas em softmax.
Quando usar
- Recuperação (encontrar itens/usuários/documentos similares)
- Reconhecimento facial, correspondência de produtos, deduplicação
- Cenários few-shot ou open-set, em que novas classes aparecem com frequência
Padrão prático
- Treine um modelo de representação vetorial.
- Indexe representações vetoriais com busca aproximada de vizinhos mais próximos (approximate nearest neighbor, ANN).
- Aplique k-NN, agrupamento ou um classificador leve por cima.
Modelos de sistemas de recomendação
Veja: Sistemas de Recomendação (Recommender Systems)
Famílias comuns
- Fatoração de matrizes (matrix factorization) / ALS implícito (implicit ALS): forte linha de base para interações usuário–item
- Modelos neurais de duas torres (two-tower neural models): codificadores separados de usuário/item → recuperação escalável
- Modelos sequenciais (sequence models): previsão do próximo item usando Transformers/RNNs
Quando usar
- Personalização com feedback implícito (cliques, visualizações, compras)
- Catálogos grandes de itens; recuperação sensível à latência
Sistemas de recomendação frequentemente combinam modelos: geração de candidatos (recuperação rápida) + ranqueamento (mais caro, porém mais preciso).
Aprendizado para ranqueamento (busca e ranqueamento)
Veja: Aprendizado para Ranqueamento
Ideia central
Otimizar objetivos alinhados a métricas de ranqueamento (por exemplo, NDCG), usando:
- Pointwise (predizer relevância)
- Pairwise (preferir item A sobre B)
- Listwise (otimizar a lista ranqueada inteira)
Quando usar
- Busca, anúncios, ranqueamento de feed, ranqueamento em recomendação
- Você tem contextos consulta–documento/usuário–item e sinais de relevância/engajamento
Escolhas comuns de alto desempenho: árvores com boosting por gradiente para atributos tabulares de ranqueamento; modelos profundos quando aprendizado de representações é essencial.
Modelos de previsão de séries temporais (time series forecasting)
Veja: Previsão de Séries Temporais
Famílias de modelos
- Clássicos: ARIMA/SARIMA, suavização exponencial, modelos de espaço de estados
- Aprendizado de máquina baseado em atributos: boosting por gradiente em atributos de defasagem (lags), atributos de calendário, promoções
- Profundos: RNNs/Transformers, convolução temporal, previsores baseados em difusão (emergentes)
Quando usar o quê
- Poucas séries, sazonalidade forte: métodos clássicos podem ser excelentes e interpretáveis
- Muitas séries relacionadas + covariáveis ricas: aprendizado de máquina ou aprendizado profundo pode compartilhar padrões e escalar melhor
- Necessidade de intervalos de incerteza: previsão probabilística (quantis, saídas distribucionais)
Análise de sobrevivência (tempo até o evento)
Veja: Análise de Sobrevivência
Ideia central
Predizer tempo até um evento com censura (censoring) (alguns sujeitos ainda não tiveram o evento). Modelos comuns:
- Riscos proporcionais de Cox
- Modelos de tempo de falha acelerado
- Árvores/florestas de sobrevivência, variantes de sobrevivência com boosting por gradiente
- Modelos profundos de sobrevivência para entradas de alta dimensionalidade
Quando usar
- Tempo até churn, tempo até falha, desfechos de pacientes, análise de retenção
- Qualquer cenário em que “ainda não ocorreu” seja um dado significativo (censura)
Aprendizado não supervisionado (unsupervised learning): agrupamento e redução de dimensionalidade
Veja: Agrupamento, Redução de Dimensionalidade
Agrupamento
- k-means: rápido, clusters esféricos, requer escolher (k)
- DBSCAN/HDBSCAN: encontra clusters de formato arbitrário, lida com ruído, não requer (k)
- Modelo de mistura gaussiana: clusters suaves com probabilidades
Use agrupamento para exploração, segmentação ou como um atributo (ID do cluster) em modelos posteriores. Valide clusters com cuidado; clusters “bonitos” podem ser artefatos.
Redução de dimensionalidade
- PCA: compressão linear, remoção de ruído, rápida
- t-SNE/UMAP: visualização não linear; ótima para exploração, mas pode distorcer a geometria global
Use redução para visualização, compressão ou como pré-processamento (por exemplo, antes de k-NN), mas evite superinterpretar gráficos em 2D.
Modelos de detecção de anomalias
Veja: Detecção de Anomalias
Abordagens comuns:
- Baseadas em densidade: modelo de mistura gaussiana, KDE (quando modelagem de densidade é viável)
- Baseadas em isolamento: Isolation Forest (forte linha de base tabular)
- Baseadas em fronteira: SVM de uma classe (one-class SVM)
- Baseadas em reconstrução: autoencoders (especialmente para sinais de alta dimensionalidade)
Use detecção de anomalias quando positivos são raros ou mal definidos. Trate a avaliação com cuidado; o ground truth frequentemente é incompleto.
Orientação prática: escolhendo modelos sob restrições reais
Comece pelos dados e pela implantação
Pergunte:
- Qual é o tipo de entrada: tabular, texto, imagem, grafo, série temporal?
- Quanta informação rotulada você tem? Quão ruidosa ela é?
- Qual é a latência de inferência aceitável e o orçamento de memória?
- Você precisa de explicações, probabilidades calibradas ou incerteza?
- Com que frequência o modelo será retreinado, e quão estável ele precisa ser?
Linhas de base padrão fortes por tipo de dado
- Tabular: boosting por gradiente + pré-processamento simples
- Texto esparso: TF-IDF + regressão logística / SVM linear
- Imagens: fine-tuning de CNN/ViT pré-treinados
- Recuperação: modelo de representação vetorial + índice ANN
- Séries temporais: linha de base clássica + boosting por gradiente em defasagens, depois considere modelos profundos
Trate desbalanceamento de classes explicitamente
Se positivos são raros, a escolha do modelo por si só não vai salvar você. Use ajuste de limiar, métricas apropriadas, ponderação, estratégias de amostragem e métodos especializados; veja Modelagem de Eventos Desbalanceados / Raros.
Não confunda “melhor offline” com “melhor em produção”
Modelos interagem com:
- Pipelines de dados (valores ausentes, drift, leakage)
- Loops de feedback (recomendações afetam o que usuários clicam)
- Necessidades de monitoramento e recalibração
Use avaliação rigorosa e testes de estresse; veja Avaliação.
Resumo: a decisão de “família de modelos” é sobre viés indutivo
- Modelos lineares: simples, rápidos, interpretáveis; ótimos para atributos esparsos/de alta dimensionalidade.
- Ensembles de árvores: melhor escolha para dados tabulares; capturam não linearidade com mínimo trabalho em atributos.
- SVMs/métodos de kernel: poderosos em cenários de escala média; fronteiras fortes, mas escalar pode ser difícil.
- Modelos generativos probabilísticos: úteis para densidade, dados ausentes, agrupamento e suposições de modelagem fundamentadas.
- Bayesianos/processos gaussianos: melhores quando incerteza e priors importam, frequentemente com conjuntos menores.
- Aprendizado profundo: aprendizado de representações para dados não estruturados e problemas em grande escala, frequentemente com modelos pré-treinados.
- Famílias especializadas (ranqueamento, recomendadores, séries temporais, sobrevivência): alinhe a estrutura de saída e a métrica de avaliação ao objetivo de negócio/científico.
Uma boa regra: escolha o modelo mais simples que atenda às suas restrições de acurácia e de produto, e então invista em qualidade de dados e disciplina de avaliação antes de partir para famílias mais complexas.