As perguntas da entrevista de aprendizado de máquina em 2026 cobrem estatísticas, seleção de modelos, métricas de avaliação, algoritmos comuns, conceitos de aprendizado profundo e ML de produção. Este guia aborda as perguntas mais comuns sobre ML para funções de cientistas de dados e engenheiros de ML.
Conceitos básicos de ML
1. Qual é a compensação entre viés e variância?
- Viés: Erro devido a suposições erradas — modelo muito simples, inadequado aos dados de treinamento
- Variância: Erro de sensibilidade aos dados de treinamento — modelo muito complexo, overfits
- Troca: Reduzir o viés aumenta a variância e vice-versa
| Emitir | Sinais | Fix |
|---|---|---|
| Alto viés (underfitting) | Baixa precisão do trem E do teste | Mais recursos, modelo complexo, treinamento mais longo |
| Alta variação (overfitting) | Trem alto, baixa precisão de teste | Mais dados, regularização, abandono, modelo mais simples |
2. Explique precisão, recall e pontuação F1
# For binary classification:
# True Positive (TP): correctly predicted positive
# False Positive (FP): predicted positive, actually negative
# False Negative (FN): predicted negative, actually positive
# True Negative (TN): correctly predicted negative
# Precision = TP / (TP + FP)
# "Of all predicted positives, how many were actually positive?"
# Use when false positives are costly (spam filter: don't block legitimate email)
# Recall (Sensitivity) = TP / (TP + FN)
# "Of all actual positives, how many did we catch?"
# Use when false negatives are costly (cancer detection: don't miss cancer)
# F1 = 2 * (Precision * Recall) / (Precision + Recall)
# Harmonic mean — balanced metric when both matter
from sklearn.metrics import precision_score, recall_score, f1_score, classification_report
y_true = [1, 1, 0, 1, 0, 1, 0, 0, 1, 0]
y_pred = [1, 0, 0, 1, 0, 1, 1, 0, 1, 0]
print(f"Precision: {precision_score(y_true, y_pred):.2f}") # 0.80
print(f"Recall: {recall_score(y_true, y_pred):.2f}") # 0.80
print(f"F1: {f1_score(y_true, y_pred):.2f}") # 0.80
print(classification_report(y_true, y_pred))
3. O que é validação cruzada e por que é necessária?
from sklearn.model_selection import KFold, StratifiedKFold, cross_val_score
from sklearn.ensemble import RandomForestClassifier
# Problem: single train/test split can be misleading
# Solution: cross-validation — use all data for both training and testing
model = RandomForestClassifier(random_state=42)
# K-Fold (k=5 most common)
cv_scores = cross_val_score(model, X, y, cv=5, scoring='accuracy')
print(f"CV scores: {cv_scores}")
print(f"Mean: {cv_scores.mean():.3f} (+/- {cv_scores.std():.3f})")
# Stratified K-Fold — maintain class balance in each fold (for imbalanced data)
skf = StratifiedKFold(n_splits=5, shuffle=True, random_state=42)
stratified_scores = cross_val_score(model, X, y, cv=skf, scoring='f1')
# Key insight: cross-validation gives a DISTRIBUTION of scores, not a single number
# Use mean ± std to understand model reliability
4. Explique a regularização (L1, L2, Dropout)
from sklearn.linear_model import Lasso, Ridge, ElasticNet
# L1 (Lasso): penalty = lambda * |weights|
# Effect: sparse weights — some become exactly 0 (feature selection!)
lasso = Lasso(alpha=0.1) # alpha = lambda
# L2 (Ridge): penalty = lambda * weights^2
# Effect: all weights shrink toward 0 but don't reach 0
ridge = Ridge(alpha=1.0)
# ElasticNet: combination of L1 + L2
elastic = ElasticNet(alpha=0.1, l1_ratio=0.5)
# For deep learning: Dropout
import torch.nn as nn
model = nn.Sequential(
nn.Linear(100, 256),
nn.ReLU(),
nn.Dropout(p=0.3), # randomly zero 30% of neurons during training
nn.Linear(256, 128),
nn.ReLU(),
nn.Dropout(p=0.2),
nn.Linear(128, 1),
)
# At test time, dropout is automatically disabled
5. Explique a descida gradiente e suas variantes
# Gradient Descent: update weights in direction that reduces loss
# weights = weights - learning_rate * gradient
# Batch Gradient Descent:
# - Uses ALL training data to compute gradient
# - Stable but slow for large datasets
# Stochastic Gradient Descent (SGD):
# - Uses ONE sample per update
# - Fast but noisy/unstable
# Mini-batch SGD (most common):
# - Uses a batch (32, 64, 128, 256 samples) per update
# - Balance of speed and stability
# Adam (most popular optimizer in 2026):
# - Adaptive learning rates per parameter
# - Combines momentum + RMSprop
import torch.optim as optim
optimizer = optim.Adam(model.parameters(), lr=1e-3, weight_decay=1e-4)
# Learning rate schedulers
scheduler = optim.lr_scheduler.ReduceLROnPlateau(optimizer, patience=5, factor=0.5)
# Reduces LR when validation loss stops improving
6. Qual é a diferença entre classificação e regressão?
- Classificação: prever uma categoria (spam/não spam, doença/sem doença)
- Regressão: Preveja um valor contínuo (preço da casa, temperatura, estoque)
- Classificação binária: 2 aulas
- Multiclasse: 3+ aulas
- Multi-rótulo: Vários rótulos por exemplo
7. Como você lida com conjuntos de dados desequilibrados?
from imblearn.over_sampling import SMOTE
from imblearn.under_sampling import RandomUnderSampler
from sklearn.utils.class_weight import compute_class_weight
# Option 1: Oversampling (SMOTE — synthetic minority)
sm = SMOTE(random_state=42)
X_resampled, y_resampled = sm.fit_resample(X_train, y_train)
# Option 2: Undersampling (reduce majority class)
rus = RandomUnderSampler(random_state=42)
X_resampled, y_resampled = rus.fit_resample(X_train, y_train)
# Option 3: Class weights (tell model to penalize minority mistakes more)
weights = compute_class_weight('balanced', classes=[0,1], y=y_train)
class_weight_dict = {0: weights[0], 1: weights[1]}
from sklearn.ensemble import RandomForestClassifier
model = RandomForestClassifier(class_weight='balanced', random_state=42)
# Option 4: Use appropriate metric
# Don't use accuracy for imbalanced data!
# Use: F1, AUC-ROC, Precision-Recall AUC
8. Explique a arquitetura do transformador
Transformadores (introduzidos em “Attention Is All You Need” 2017) alimentam LLMs, BERT, GPT e a maioria dos modelos modernos de PNL/visão:
- Autoatenção: Cada token atende a todos os outros tokens – captura dependências de longo alcance
- Atenção multi-cabeça: Múltiplas cabeças de atenção aprendem relacionamentos diferentes
- Codificação posicional: Injeta informações de posição da sequência
- Camadas de feedforward: Transformar representações assistidas
- Codificador-Decodificador: Encoder codifica entrada; O decodificador gera saída (tradução, resumo)
- Somente decodificador: estilo GPT, gera texto autoregressivamente
Sucesso na entrevista de ML: conheça a compensação viés-variância intuitivamente (underfitting vs overfitting), explique claramente as métricas de avaliação (quando usar precisão vs recall vs F1), entenda a regularização e demonstre conhecimento de variantes de descida de gradiente. As questões de ML de produção abrangem engenharia de recursos, monitoramento de modelo e padrões de MLOps.
🔗 Share this article
✍️ Leave a Comment