机器学习 - 自举汇聚 (Bagging)



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

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

Bagging 如何工作?

Bagging 算法按以下步骤工作:

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

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

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

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

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

示例

现在让我们看看如何使用 Scikit-learn 库在 Python 中实现 Bagging。在这个示例中,我们将使用著名的 Iris 数据集。

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 函数加载 Iris 数据集,并使用 train_test_split 函数将其分成训练集和测试集。

然后,我们定义基础估计器,它是一棵最大深度为 3 的决策树,以及 Bagging 分类器,它由 10 棵决策树组成。

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

输出

执行此代码后,将产生以下输出:

Accuracy: 1.0
广告