機器學習 - 自舉匯聚 (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
廣告