Ensemble
O aprendizado em conjunto combina as previsões de vários modelos por meio de bagging, boosting ou stacking para obter um erro menor do que o de qualquer modelo individual.
O aprendizado em conjunto treina vários modelos para a mesma tarefa e combina as previsões deles, por votação, média ou por meio de um combinador aprendido, em uma única saída que costuma ser mais precisa e estável do que a de qualquer membro individual. Isso funciona porque modelos diferentes cometem erros diferentes, e combiná-los anula parte do erro de cada um. Em 1995, Anders Krogh e Jesper Vedelsby demonstraram esse princípio formalmente para modelos de regressão com médias: o erro quadrático do conjunto é igual ao erro médio de seus membros menos a discordância média deles em relação ao conjunto. Portanto, um conjunto com previsões médias nunca é pior do que seu membro médio, e a diversidade entre os membros é o que o torna melhor.
Bagging, boosting e stacking#
Três famílias abrangem a maioria dos métodos de conjunto em aprendizado de máquina, e cada uma atua em um lado diferente do compromisso entre viés e variância.
Bagging, abreviação de agregação por bootstrap, foi introduzido por Leo Breiman em 1996. Ele treina cada membro de forma independente com uma amostra bootstrap, sorteada do conjunto de treinamento com reposição, e calcula a média ou a votação dos resultados, o que reduz principalmente a variância. É adequado para algoritmos instáveis, como árvores de decisão profundas. A floresta aleatória de Breiman, de 2001, acrescenta um subconjunto aleatório de atributos em cada divisão para tornar as árvores ainda mais diferentes.
O boosting treina os membros em sequência, cada um se concentrando nos erros do conjunto até então, o que reduz principalmente o viés. O AdaBoost, criado por Yoav Freund e Robert Schapire, aumenta o peso dos exemplos classificados incorretamente antes de treinar o próximo aprendiz fraco. O gradient boosting de Jerome Friedman ajusta cada nova árvore ao gradiente da função de perda, abordagem que está por trás do XGBoost, do LightGBM e do CatBoost, que continuam sendo os modelos mais fortes em muitos conjuntos de dados tabulares.
Stacking, ou generalização empilhada, foi proposto por David Wolpert em 1992. Um metamodelo, muitas vezes uma regressão logística, aprende a combinar modelos-base heterogêneos a partir das previsões deles em partições retidas, dando mais peso aos modelos cujas previsões nessas partições são mais confiáveis.
Este exemplo do scikit-learn compara uma única árvore com um conjunto de cada família em um conjunto de dados de diagnóstico de câncer de mama, usando validação cruzada de 5 partições:
from sklearn.datasets import load_breast_cancer
from sklearn.ensemble import GradientBoostingClassifier, RandomForestClassifier, StackingClassifier
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import cross_val_score
from sklearn.tree import DecisionTreeClassifier
X, y = load_breast_cancer(return_X_y=True) # 569 tumors, 30 measurements each
forest = RandomForestClassifier(n_estimators=200, random_state=0)
boosting = GradientBoostingClassifier(random_state=0)
models = {
"Single decision tree": DecisionTreeClassifier(random_state=0),
"Bagging (random forest)": forest,
"Boosting (gradient boosting)": boosting,
# Stacking: a logistic regression learns how to combine the forest and the boosted trees
"Stacking": StackingClassifier([("forest", forest), ("boosting", boosting)], LogisticRegression()),
}
for name, model in models.items():
print(f"{name}: {cross_val_score(model, X, y, cv=5).mean():.3f}")A árvore individual obtém 0.917, a floresta aleatória 0.960, o gradient boosting 0.963 e o modelo empilhado 0.963. Cada conjunto reduz aproximadamente pela metade o erro da árvore. O stacking iguala o membro mais forte porque 16 dos 23 tumores classificados incorretamente pela floresta também são classificados incorretamente pelas árvores com boosting, deixando pouca discordância para o metamodelo aproveitar.
Conjuntos em aprendizado profundo e visão computacional#
Conjuntos profundos treinam várias redes neurais com diferentes inicializações aleatórias e calculam a média das saídas. Em 2017, Balaji Lakshminarayanan e colegas da DeepMind mostraram que isso melhora tanto a precisão quanto a quantificação da incerteza, pois os membros discordam mais em entradas diferentes dos dados de treinamento. Na detecção de objetos, as caixas delimitadoras de vários detectores são reunidas e combinadas com a supressão não máxima (NMS) ou a fusão ponderada de caixas, que calcula a média das caixas sobrepostas em vez de manter apenas a mais confiante. Conjuntos de arquiteturas diferentes são comuns na análise de imagens médicas e em trabalhos para competições, nos quais a precisão importa mais do que o custo de inferência.
Esse custo aumenta com cada membro, o que limita os conjuntos em dispositivos de IA de borda. A destilação de conhecimento foi introduzida, em parte, para resolver esse problema: Geoffrey Hinton, Oriol Vinyals e Jeff Dean treinaram um único modelo para reproduzir as saídas médias de um conjunto. O Dropout é uma alternativa mais barata, pois o treinamento com essa técnica aproxima o cálculo da média de um número exponencial de sub-redes reduzidas.
Conjuntos, sopas de modelos e misturas de especialistas#
Um conjunto de modelos normalmente significa combinar redes treinadas separadamente durante a inferência, a forma mais comum de aprendizado em conjunto no aprendizado profundo. As sopas de modelos e outros métodos de fusão de modelos calculam a média dos pesos em vez das previsões, mantendo o custo de um único modelo, mas só funcionam com modelos ajustados a partir dos mesmos pesos pré-treinados. Uma mistura de especialistas (MoE) treina seus especialistas em conjunto com um roteador que envia cada entrada para alguns deles, permitindo que os especialistas se especializem em vez de cada um resolver a tarefa inteira.
Calcular a média dos pesos ao longo de uma única execução de treinamento aproxima um conjunto de checkpoints dessa execução com o custo de um modelo, como Pavel Izmailov e colegas demonstraram com a média estocástica de pesos em 2018. O treinamento do Ultralytics YOLO aplica esse método a cada execução do YOLO26: mantém uma média móvel exponencial dos pesos, atualizada após cada etapa do otimizador com um decaimento que aumenta gradualmente até 0.9999, e valida e salva essa média em best.pt e last.pt em vez dos pesos brutos.










