Bagging

2.5.4

Bagging

Ενημέρωση 2020-03-11 Ανάγνωση 2 λεπτά
Σύνοψη
  • Το Bagging εκπαιδεύει τον ίδιο βασικό εκπαιδευτή σε πολλά bootstrap δείγματα και συγκεντρώνει τις προβλέψεις μέσω μέσου όρου ή ψηφοφορίας.
  • Το κύριο κέρδος είναι η μείωση της διακύμανσης, η οποία σταθεροποιεί εκπαιδευτές υψηλής διακύμανσης όπως τα βαθιά δέντρα απόφασης.
  • Ο αριθμός εκτιμητών και η πολυπλοκότητα του βασικού μοντέλου ελέγχουν την ισορροπία μεταξύ ευρωστίας, ακρίβειας και υπολογιστικού κόστους.

Εισαγωγή #

Το Bagging λειτουργεί δημιουργώντας σκόπιμα πολλές ελαφρώς διαφορετικές εκδοχές του συνόλου εκπαίδευσης. Κάθε μοντέλο κάνει διαφορετικά σφάλματα· η συγκέντρωση ακυρώνει μέρος αυτού του θορύβου, ώστε ο τελικός προβλεπτής να είναι πιο σταθερός από οποιοδήποτε μεμονωμένο μοντέλο.

Αναλυτική Επεξήγηση #

1. Διαδικασία #

  1. Δημιουργήστε πολλαπλά bootstrap δείγματα από τα δεδομένα εκπαίδευσης
  2. Εκπαιδεύστε το ίδιο μοντέλο σε κάθε δείγμα
  3. Υπολογίστε τον μέσο όρο των προβλέψεων για παλινδρόμηση ή ψηφοφορία για ταξινόμηση

Το Bagging μειώνει κυρίως τη διακύμανση και κάνει το μοντέλο πιο σταθερό.


2. Παράδειγμα σε Python #

import numpy as np
from sklearn.datasets import fetch_california_housing
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error
from sklearn.tree import DecisionTreeRegressor
from sklearn.ensemble import BaggingRegressor

X, y = fetch_california_housing(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)

base = DecisionTreeRegressor(max_depth=None, random_state=0)
bagging = BaggingRegressor(
    estimator=base,
    n_estimators=100,
    max_samples=0.8,
    max_features=0.8,
    bootstrap=True,
    random_state=0,
)
bagging.fit(X_train, y_train)

pred = bagging.predict(X_test)
print("RMSE:", mean_squared_error(y_test, pred, squared=False))
print("OOB score:", bagging.oob_score_)

3. Υπερπαράμετροι #

  • n_estimators: Αριθμός εκπαιδευτών. Περισσότερα δέντρα είναι πιο σταθερά αλλά πιο κοστοβόρα.
  • max_samples, max_features: Ποσοστό δειγμάτων/χαρακτηριστικών ανά εκπαιδευτή.
  • bootstrap: Αν γίνεται δειγματοληψία με αντικατάσταση· bootstrap_features κάνει το ίδιο για τα χαρακτηριστικά.
  • oob_score: Εκτίμηση γενίκευσης από δείγματα εκτός σάκου (out-of-bag).

4. Πλεονεκτήματα και μειονεκτήματα #

ΠλεονεκτήματαΜειονεκτήματα
Εύκολη υλοποίηση και παραλληλισμόςΠρέπει να διατηρούνται πολλά μοντέλα στη μνήμη
Μεγάλη μείωση διακύμανσηςΔεν μειώνει την πόλωση· οι αδύναμοι εκπαιδευτές πρέπει να είναι αρκετά καλοί
Η εκτίμηση OOB αποφεύγει επιπλέον διαχωρισμό επικύρωσηςΛιγότερο ερμηνεύσιμο από ένα μεμονωμένο δέντρο

5. Σύνοψη #

  • Το Bagging σταθεροποιεί τα μοντέλα μέσω αναδειγματοληψίας δεδομένων και υπολογισμού μέσου όρου προβλέψεων.
  • Δέντρα απόφασης + Bagging = Random Forest, επομένως η σχέση αξίζει να θυμάστε.
  • Λειτουργεί καλά σε μεγάλη κλίμακα όταν η εκπαίδευση μπορεί να παραλληλιστεί.