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:

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

  1. Treine um modelo de representação vetorial.
  2. Indexe representações vetoriais com busca aproximada de vizinhos mais próximos (approximate nearest neighbor, ANN).
  3. 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.