Machine Learning 简明教程

Machine Learning - Bootstrap Aggregation (Bagging)

Bagging 是一种集成学习技术,它结合多个模型的预测,以提高单个模型的准确性和稳定性。它涉及通过有放回随机抽样来创建训练数据的多个子集。然后使用每个子集训练一个单独的模型,最终预测是通过对所有模型的预测进行平均而得出的。

Bagging 背后的主要思想是通过使用多个不太复杂但仍然准确的模型来减少单个模型的方差。通过对多个模型的预测进行平均,Bagging 降低了过拟合风险并提高了模型的稳定性。

How Does Bagging Work?

Bagging 算法按照以下步骤工作 −

  1. 通过有放回随机抽样创建训练数据的多个子集。

  2. 在每个数据子集上训练一个单独的模型。

  3. 使用每个模型对测试数据进行预测。

  4. 通过取平均值或多数投票来组合所有模型的预测。

Bagging 的关键特在于每个模型都训练在训练数据的不同子集上,这为集成引入了多样性。模型通常使用基本模型进行训练,例如决策树、逻辑回归或支持向量机。

Example

现在,让我们看看如何使用 Scikit-learn 库在 Python 中实现 Bagging。对于此示例,我们将使用著名的鸢尾花数据集。

from sklearn.datasets import load_iris
from sklearn.ensemble import BaggingClassifier
from sklearn.tree import DecisionTreeClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score

# Load the Iris dataset
iris = load_iris()

# Split the data into training and testing sets
X_train, X_test, y_train, y_test = train_test_split(iris.data, iris.target, test_size=0.2, random_state=42)

# Define the base estimator
base_estimator = DecisionTreeClassifier(max_depth=3)

# Define the Bagging classifier
bagging = BaggingClassifier(base_estimator=base_estimator, n_estimators=10, random_state=42)

# Train the Bagging classifier
bagging.fit(X_train, y_train)

# Make predictions on the testing set
y_pred = bagging.predict(X_test)

# Evaluate the model's accuracy
accuracy = accuracy_score(y_test, y_pred)
print("Accuracy:", accuracy)

在此示例中,我们首先使用 Scikit-learn 的 load_iris 函数加载鸢尾花数据集,并使用 train_test_split 函数将其划分为训练集和测试集。

然后,我们定义基准估计器,它是一个最大深度为 3 的决策树,以及包含 10 个决策树的装袋分类器。

我们使用 fit 方法训练 bagging 分类器,并使用 predict 方法对测试集进行预测。最后,我们使用 Scikit-learn metrics 模块中的 accuracy_score 函数评估模型的准确性。

Output

执行此代码时,将生成以下输出 −

Accuracy: 1.0