É um sistema que contem vários tipos de classificadores, com diferentes níveis e características, onde suas saídas são combinadas para assim gerar uma predição ou resultado melhor do que cada um individualmente produziria.

Bagging
O bagging ou bootstrap aggregation (Uma explicação sobre oque é bootstrap usando Brigadeiros) é um método em que existe vários classificadores do mesmo tipo, onde cada um desses classificadores pega randomicamente uma parte do conjunto de amostra, cada qual gera suas predições onde a mesma é levada em conta em um sistema de média ou votação para produzir uma predição final (Ver Figura 1 e 2).
OBS: Para cada parte do conjunto de amostra obtido randomicamente pelo classificador, essa amostra poderá ou não contem dados repetidos ou omitidos.
O bagging reduz a variação por causa da média/votação, mas com isso aumenta o viés de sua predição.


Exemplo de Bagging com Python usando o Arvore de Decisão
import pandas as pd
import numpy as np
from sklearn.preprocessing import LabelEncoder
from sklearn.metrics import confusion_matrix
from sklearn.model_selection import train_test_split
from sklearn.ensemble import BaggingClassifier
from sklearn.tree import DecisionTreeClassifier
from sklearn.naive_bayes import GaussianNB, BernoulliNB
from sklearn.linear_model import LogisticRegression
def CreateDataFrame(N):
columns = ['a','b','c','y']
df = pd.DataFrame(columns=columns)
for i in range(N):
a = np.random.randint(10)
b = np.random.randint(20)
c = np.random.randint(5)
y = "normal"
if((a+b+c)>25):
y="high"
elif((a+b+c)<12):
y= "low"
df.loc[i]= [a, b, c, y]
return df
df = CreateDataFrame(200)
print(df.head())
X = df[["a","b","c"]]
Y = df[["y"][0]]
#print("Printando o X")
#print(X)
#print("Printando o Y")
#print(Y)
le=LabelEncoder()
y=le.fit_transform(Y)
#print(y)
Xtrain, Xtest, ytrain, ytest = train_test_split(X, y, random_state=0)
dtc = DecisionTreeClassifier(criterion="entropy")
bag_model=BaggingClassifier(base_estimator=dtc, n_estimators=100, bootstrap=True)
bag_model=bag_model.fit(Xtrain,ytrain)
ytest_pred=bag_model.predict(Xtest)
print(bag_model.score(Xtest, ytest))
print(confusion_matrix(ytest, ytest_pred))
O código acima foi adaptado do site DataTechNotes.
Output:
$ python bagging.py
a b c y
0 9 0 1 low
1 3 9 2 normal
2 9 4 4 normal
3 1 17 1 normal
4 2 10 3 normal
0.94
[[ 1 0 1]
[ 0 13 1]
[ 0 1 33]]
Exemplo de Bagging com Python usando o Classificador KNN
Referências:
[ 1 ] – https://www.geeksforgeeks.org/ml-bagging-classifier/
[ 2 ] – http://www.peb.ufrj.br/teses/Tese0291_2018_01_20.pdf
[ 3 ] – https://scikit-learn.org/stable/modules/ensemble.html#bagging
[ 4 ] – https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.html#pandas.DataFrame
[ 5 ] – https://www.datatechnotes.com/2019/03/classification-with-bagging-classifier.html