Regressão Linear
Modelo linear, minimiza MSE (OLS). Simples, interpretável, solução fechada.
Supervisionado
Regressão
Finanças / Previsão
O(n·p²)
y = β₀ + β₁x₁ + ... + βₚxₚ | MSE = (1/n)Σ(yi−ŷi)²
Hiper.:fit_intercept (True), positive (False)
Normaliz.:Recomendado se features em escalas diferentes
Distribuição:ASSUME: resíduos normais, homocedasticidade, independência, linearidade, sem multicolinearidade
Python:sklearn.linear_model.LinearRegression, statsmodels.OLS, numpy.linalg.lstsq
R:stats::lm(), broom, caret, tidymodels
Ridge (L2) / Lasso (L1) / ElasticNet
Ridge: Σβj², mantém features. Lasso: Σ|βj|, zera coefs. ElasticNet: combina ambos.
Supervisionado
Regressão Regularizada
Ridge: +λ·Σβj² | Lasso: +λ·Σ|βj| | EN: α·L1+(1−α)·L2
Hiper.:alpha (1e-4 a 1e4, CV!), l1_ratio (EN, 0-1), max_iter, solver
Normaliz.:OBRIGATÓRIO (regularização sensível a escala!)
Distribuição:Mesmas da reg. linear. Lasso assume esparsidade
Python:sklearn.linear_model.Ridge/Lasso/ElasticNet/RidgeCV/LassoCV, statsmodels
R:glmnet::glmnet(alpha=0/1/0.5), MASS::lm.ridge, caret, tidymodels
Regressão Logística
Sigmoid → probabilidade. Decision boundary linear. Extensível via softmax (multiclasse).
Supervisionado
Classif. Binária / Multi
Medicina / Crédito / Spam
O(n·p)
P(y=1|x) = 1/(1+e^(−w^T·x−b)) | BCE = −[y·log(p)+(1−y)·log(1−p)]
Hiper.:C (0.001-1000), penalty (l1/l2/elasticnet/none), solver (lbfgs/liblinear/saga), max_iter, class_weight
Normaliz.:OBRIGATÓRIO (com regularização)
Distribuição:NÃO assume normalidade. ASSUME linearidade do log-odds
Python:sklearn.linear_model.LogisticRegression, statsmodels.Logit, torch.nn (custom)
R:stats::glm(family=binomial), glmnet, caret, tidymodels, nnet::multinom
KNN — K-Nearest Neighbors
Voto majoritário dos K vizinhos. Lazy learner. Sensível a escala e maldição da dimensionalidade.
Supervisionado
Classif. / Regressão
Recomendação / Imputação
O(n·d)/query
d(x,y) = √Σ(xi−yi)² | ŷ = mode(K vizinhos)
Hiper.:n_neighbors (3-15, ímpar, CV!), weights (uniform/distance), metric, p, leaf_size, algorithm
Normaliz.:OBRIGATÓRIO (StandardScaler ou MinMaxScaler)
Distribuição:NENHUMA. Não-paramétrico
Python:sklearn.neighbors.KNeighborsClassifier/Regressor, annoy (ANN), faiss
R:class::knn, caret, kknn, FNN, tidymodels
Naive Bayes
Bayes + independência condicional. Rápido, excelente para texto mesmo violando suposição.
Supervisionado
Classificação
Texto / Spam / Sentimento
O(n·p)
P(C|X) ∝ P(C) · Π P(xi|C)
Hiper.:alpha (Laplace, 0.01-10), var_smoothing (Gaussian, 1e-9), fit_prior, class_prior
Normaliz.:NÃO necessário (Multi/Bern). GaussianNB: recomendado
Distribuição:ASSUME independência condicional. GaussianNB: features NORMAIS. MultinomialNB: contagens
Python:sklearn.naive_bayes.GaussianNB/MultinomialNB/BernoulliNB/ComplementNB
R:e1071::naiveBayes, naivebayes, klaR, caret, tidymodels
SVM — Support Vector Machine
Hiperplano de máxima margem. Kernel trick: RBF, Poly. Eficaz em alta dimensionalidade.
Supervisionado
Classif. / Regressão
Texto / Imagem / Bio
O(n²·p)~O(n³)
max 2/‖w‖ s.t. yi(w^T·xi+b) ≥ 1 | K(x,z) = φ(x)^T·φ(z)
Hiper.:C (0.01-1000), kernel (linear/rbf/poly), gamma ('scale'/'auto'), degree (poly, 2-5)
Normaliz.:OBRIGATÓRIO (StandardScaler)
Distribuição:NENHUMA suposição. Não-paramétrico
Python:sklearn.svm.SVC/SVR/LinearSVC, thundersvm (GPU), libsvm
R:e1071::svm, kernlab::ksvm, caret, tidymodels, liquidSVM
Decision Tree (Árvore de Decisão)
Splits recursivos. Interpretável, sem normalização, captura interações naturalmente.
Supervisionado
Classif. / Regressão
Crédito / Diagnóstico
O(n·p·log n)
Gini = 1−Σpk² | Entropia = −Σpk·log₂(pk)
Hiper.:criterion (gini/entropy), max_depth (3-20), min_samples_split, min_samples_leaf, ccp_alpha, max_features
Normaliz.:NÃO necessário
Distribuição:NENHUMA. Não-paramétrico
Python:sklearn.tree.DecisionTreeClassifier/Regressor, dtreeviz (visualização), graphviz
R:rpart, rpart.plot, party::ctree, C50, tidymodels
Random Forest
Ensemble de árvores: bagging + random features. Robusto, versátil, OOB estimate.
Ensemble — Bagging
Classif. / Regressão
Tabular / Genômica
O(T·n·p·log n)
ŷ = mode(h₁,...,hT) | Cada ht: bootstrap + √p features
Hiper.:n_estimators (100-1000), max_depth (None/10-30), max_features ('sqrt'/'log2'), min_samples_split, oob_score
Normaliz.:NÃO necessário
Distribuição:NENHUMA. Não-paramétrico. Robusto a outliers
Python:sklearn.ensemble.RandomForestClassifier/Regressor, skranger (ranger wrapper)
R:randomForest, ranger (mais rápido!), randomForestSRC, caret, tidymodels
Gradient Boosting (GBDT)
Árvores sequenciais corrigindo resíduos via gradient descent funcional.
Ensemble — Boosting
Classif. / Regressão
Tabular
Fm(x) = Fm-1(x) + η·hm(x)
Hiper.:n_estimators (100-5000), learning_rate (0.01-0.3), max_depth (3-8), subsample
Normaliz.:NÃO necessário
Distribuição:NENHUMA
Python:sklearn.ensemble.GradientBoostingClassifier/Regressor, HistGradientBoosting (sklearn)
R:gbm, caret, tidymodels
XGBoost
GBDT otimizado: regulariz. L1/L2, NaN nativo, GPU. Rei do tabular e competições.
Ensemble — Boosting
Classif. / Reg. / Ranking
Kaggle / Indústria
Obj = Σ L(yi,ŷi) + Σ[γ·T + 0.5·λ·‖w‖²]
Hiper.:eta (0.01-0.3), max_depth (3-10), min_child_weight, subsample, colsample_bytree, lambda (L2), alpha (L1), gamma
Normaliz.:NÃO necessário
Distribuição:NENHUMA
Python:xgboost (xgb.XGBClassifier/Regressor, DMatrix), optuna (tuning)
R:xgboost::xgb.train/xgboost, caret, tidymodels
LightGBM / CatBoost
LightGBM: GOSS+EFB, leaf-wise, rápido. CatBoost: Ordered Target Encoding, menos tuning.
Ensemble — Boosting
Classif. / Regressão
Dados c/ Categóricas
LGBM Hiper.:num_leaves (31), learning_rate, min_child_samples, feature_fraction, reg_alpha/lambda
CatBoost Hiper.:iterations (1000), depth (6), l2_leaf_reg, cat_features
Normaliz.:NÃO necessário (ambos)
Distribuição:NENHUMA (ambos)
Python:lightgbm (lgb.LGBMClassifier), catboost (CatBoostClassifier/Pool)
R:lightgbm::lgb.train, catboost::catboost.train, caret, tidymodels
AdaBoost / Bagging / Stacking
AdaBoost: pesos em amostras erradas. Bagging: bootstrap+voto. Stacking: meta-learner.
Ensemble
Combinação
AdaBoost: αt = 0.5·ln((1−εt)/εt)
Ada Hiper.:n_estimators (50-500), learning_rate, estimator (stump)
Stacking Hiper.:estimators, final_estimator, cv
Normaliz.:Depende dos modelos base
Distribuição:Depende dos modelos base
Python:sklearn.ensemble.AdaBoostClassifier, BaggingClassifier, StackingClassifier/VotingClassifier
R:ada, adabag, ipred::bagging, caretEnsemble, stacks (tidymodels)
K-Means
K clusters minimizando inércia. Iterativo: atribui + recalcula centróides.
Não-Supervisionado
Clusterização
Segmentação / Marketing
O(n·K·d·I)
J = Σk Σ_{x∈Ck} ‖x−μk‖²
Hiper.:n_clusters (Elbow/Silhouette), init ('k-means++'), n_init (10), max_iter (300)
Normaliz.:OBRIGATÓRIO
Distribuição:ASSUME clusters esféricos/convexos de tamanho similar
Python:sklearn.cluster.KMeans/MiniBatchKMeans, scipy.cluster.vq, faiss.Kmeans (GPU)
R:stats::kmeans, cluster::pam, factoextra, ClusterR, tidymodels
DBSCAN / HDBSCAN
Densidade: clusters arbitrários + outliers (-1). Não precisa K. HDBSCAN: adaptativo.
Não-Supervisionado
Cluster + Outliers
Geoespacial / Anomalias
O(n log n)
DBSCAN Hiper.:eps (k-distance plot!), min_samples (2·dim ou ≥5)
HDBSCAN Hiper.:min_cluster_size, min_samples
Normaliz.:OBRIGATÓRIO
Distribuição:NENHUMA sobre forma
Python:sklearn.cluster.DBSCAN/OPTICS, hdbscan, cuml.DBSCAN (GPU)
R:dbscan::dbscan/hdbscan, fpc::dbscan, cluster
Hierarchical / GMM
Hierárquico: dendrograma. GMM: mistura de Gaussianas, soft clustering via EM.
Não-Supervisionado
Cluster
Bioinformática / Fala
GMM: P(x) = Σ πk · N(x|μk, Σk)
Hier. Hiper.:linkage (ward/complete/average), n_clusters ou distance_threshold
GMM Hiper.:n_components (BIC/AIC), covariance_type (full/diag)
Normaliz.:OBRIGATÓRIO (Ward). GMM: recomendado
Distribuição:GMM ASSUME mistura de Gaussianas
Python:sklearn.cluster.AgglomerativeClustering, scipy.cluster.hierarchy, sklearn.mixture.GaussianMixture
R:stats::hclust, cluster::agnes, mclust (GMM, excelente!), factoextra
PCA / t-SNE / UMAP
PCA: linear, máx variância. t-SNE: não-linear, vizinhança. UMAP: rápido, preserva global.
Não-Supervisionado
Redução / Visualização
Embeddings
PCA: C·v = λ·v | t-SNE: KL(P‖Q) | UMAP: topologia
PCA Hiper.:n_components (0.95=95%), svd_solver, whiten
t-SNE Hiper.:perplexity (5-50), learning_rate, n_iter
UMAP Hiper.:n_neighbors (5-50), min_dist, metric
Normaliz.:PCA: OBRIGATÓRIO. t-SNE/UMAP: recomendado
Distribuição:PCA: só variância linear. t-SNE/UMAP: nenhuma
Python:sklearn.decomposition.PCA, sklearn.manifold.TSNE, umap-learn, openTSNE, cuml (GPU)
R:stats::prcomp, Rtsne, uwot::umap, irlba (PCA rápido), FactoMineR
Apriori / FP-Growth / Isolation Forest
Associação: suporte/confiança/lift. Isolation Forest: anomalias com path curto.
Não-Supervisionado
Associação / Anomalias
Compras / Fraude / IoT
Suporte=freq(X∪Y)/N | IsoForest: Score=2^(−E[h]/c(n))
Assoc. Hiper.:min_support, min_confidence, min_lift
IF Hiper.:n_estimators, contamination, max_samples
Normaliz.:Assoc: N/A. IF: NÃO necessário
Distribuição:NENHUMA
Python:mlxtend (Apriori/FP-Growth), sklearn.ensemble.IsolationForest, pyod (detecção anomalias)
R:arules::apriori, arulesViz, isotree, solitude, caret
Q-Learning / SARSA
Q-Learning: off-policy, max Q'. SARSA: on-policy, Q(s',a'). TD learning.
Reforço
Controle
Jogos / Robótica
Q(s,a) ← Q(s,a) + α[r + γ·max Q(s',a') − Q(s,a)]
Hiper.:α (0.01-0.5), γ (0.9-0.999), ε (decay 1.0→0.01)
Python:gymnasium (env), stable-baselines3, RLlib, CleanRL, custom numpy
R:ReinforcementLearning, MDPtoolbox, gym (via reticulate)
Policy Gradient / Actor-Critic / PPO
REINFORCE: gradiente direto. PPO: clipped objective, estado da arte prático.
Reforço
Política Ótima
RLHF / Robótica / Games
PPO: L = min(rt·Ât, clip(rt, 1±ε)·Ât)
PPO Hiper.:clip_range (0.1-0.3), lr (3e-4), n_epochs (3-10), γ (0.99), gae_λ (0.95)
Python:stable-baselines3 (PPO/A2C/SAC/TD3), CleanRL, RLlib (Ray), TorchRL, trl (RLHF)
R:Não há pacote maduro. Usar reticulate → SB3
Cross-Validation / Métricas / Tuning
K-Fold, métricas (F1, AUC, MCC), tuning (Grid/Random/Bayesian).
Avaliação
Performance
F1 = 2PR/(P+R) | AUC-ROC | MCC | κ = (p0−pe)/(1−pe)
Python:sklearn.model_selection (KFold, cross_val_score, GridSearchCV, RandomizedSearchCV), sklearn.metrics, optuna, hyperopt
R:caret::trainControl, yardstick, rsample, tune (tidymodels), mlr3, MLmetrics
Normalização / Feature Engineering / Bias-Variance
Escalonamento, encoding, seleção, imputação. Erro = Bias² + Variância + Ruído.
Pré-processamento / Teoria
StandardScaler:z=(x−μ)/σ. P/: SVM, KNN, PCA, NN
MinMaxScaler:[0,1]. P/: NN, imagens
NÃO precisa:DT, RF, XGBoost, LightGBM, CatBoost, NB(Multi/Bern)
Python:sklearn.preprocessing (Standard/MinMax/RobustScaler, OneHotEncoder, LabelEncoder, OrdinalEncoder), sklearn.impute, sklearn.feature_selection, category_encoders, feature-engine
R:recipes (tidymodels), caret::preProcess, mice (imputação), vip, Boruta