6 Bagging und Boosting Gegeben sei ein Lernalgo L, der nur etwas besser als per Münzwurf zwei Klassen auseinanderhalten kann. Ziel: verwende L zur Konstruktion eines besseren Verfahrens bei konstanter Stichprobengröße. 6.1 Bagging (Leo Breiman, 1996) gegeben: klassifizierte Beispiele S = ((x1 , b1 ), . . . , (xm , sm )), ungerades k Für i = 1, . . . , k: Yi := ziehe m mal rein zufällig mit zurücklegen aus S. Berechne hi aus Yi mittels Lernalgo L. Klassifiziere neue x durch Mehrheitsentscheid zwischen h1 (x), . . . , hk (x). 6.2 Boosting Definition Eine Konzeptklasse C ist effizient PAC-lernbar, wenn für alle C ∈ C, alle ε, alle δ und alle Verteilungen D ein Algorithmus existiert, der in Zeit aus Lernbeispielen aus der Verteilung D eine Hypothese H macht, die mit Wahrscheinlichkeit ≥ 1 − δ die Bedingung FD (C, H) ≤ ε erfüllt, und die Laufzeit von A polynomial in 1/ε und 1/δ ist. Genügt auch δ = 1/2? 6.2 Boosting Definition Eine Konzeptklasse C ist effizient PAC-lernbar, wenn für alle C ∈ C, alle ε, alle δ und alle Verteilungen D ein Algorithmus existiert, der aus Lernbeispielen aus der Verteilung D eine Hypothese H macht, die mit Wahrscheinlichkeit ≥ 1 − δ die Bedingung FD (C, H) ≤ ε erfüllt, und die Laufzeit von A polynomial in 1/ε und 1/δ ist. Genügt auch δ = 1/2? Behauptung: Es genügt sogar die Existenz eines Algorithmus A und einer Konstante c, so dass für alle ε dass für jede Verteilung D in polynomialer Zeit (in 1/ε und 1/δ) Beispielen einliest und eine Hypothese H ausgibt, die mit W’keit 1/nc Fehler FD (H, C) ≤ ε hat, wobei n die Anzahl der Bits eines Beispiels ist. Beweis: mal laufen, mit Fehlerparameter ε/4. Wähle n /ε weiteren Beispielen aus den Ergebnissen eins aus, dass auf O ln 1−n −c Lasse A nc ln 3 1−n−c Fehler ≤ ε/2 macht. Zeige mit Chernoff, dass das langt. Behauptung: Es genügt sogar die Existenz eines Algorithmus A und einer Konstante c, so dass für alle ε dass für jede Verteilung D in polynomialer Zeit (in 1/ε und 1/δ) Beispielen einliest und eine Hypothese H ausgibt, die mit W’keit 1/nc Fehler FD (H, C) ≤ ε hat, wobei n die Anzahl der Bits eines Beispiels ist. Beweis: mal laufen, mit Fehlerparameter ε/4. Wähle n /ε weiteren Beispielen aus den Ergebnissen eins aus, das auf O ln 1−n −c Lasse A nc ln 3 1−n−c Fehler ≤ ε/2 macht. Zeige mit Chernoff, dass das langt. Kearns, Valiant (1988): Wieso alle ε? Genügt auch ein festes ε < 12 ? Wieso alle ε? Genügt auch ein festes ε < 12 ? Beispiele: einseitiger Fehler stochastisch unabhängige Fehler Ein Algorithmus A ist ein schwacher Lerner für die Konzeptklasse C, wenn es ein ε < 12 gibt, so dass A jedes C ∈ C für jede Verteilung D in polynomialer Zeit mit W’keit n−c (n =Anzahl der Beispiele, c konstant) bis auf einen Fehler ε lernt. Also: Kann ich aus einem schwachem Lerner einen starken bauen? Ein Algorithmus A ist ein schwacher Lerner für die Konzeptklasse C, wenn es ein ε < 12 gibt, so dass A jedes C ∈ C für jede Verteilung D in polynomialer Zeit mit W’keit n−c (n =Anzahl der Beispiele, c konstant) bis auf einen Fehler ε lernt. Also: Kann ich aus einem schwachem Lerner einen starken bauen? Boosting mit Nachziehen (Das Original!) (Freud, Schapire, 1989) c := 1 − ε Mindestgenauigkeit des Lernalgo A auf jeder beliebigen Verteilung D. (vernachlässige δ zunächst) Wende A auf Daten aus Zielverteilung D1 an → Hypothese H1 mit Korrektheit c1 ≥ c. D1 (x) für H (x) korrekt 1 2c1 D2 (x) := D1 (x) für H1 (x) falsch 2(1−c1 ) (Damit hat H1 auf D2 Fehler 0.5) Wende A auf D2 an → Hypothese H2 mit c2 ≥ c. (ziehe aus D2 mit rejection sampling!) Wende A auf {x : H1 (x) 6= H2 (x)} an → Hypothese H3 mit c3 ≥ c. Ergebnis für x: H1 (x) falls H1 (x) = H2 (x), sonst H3 (x) Boosting mit Nachziehen (Das Original!) (Freud, Schapire, 1989) c := 1 − ε Mindestgenauigkeit des Lernalgo A auf jeder beliebigen Verteilung D. (vernachlässige δ zunächst) Wende A auf Daten aus Zielverteilung D1 an → Hypothese H1 mit Korrektheit c1 ≥ c. D1 (x) für H (x) korrekt 1 2c1 D2 (x) := D1 (x) für H1 (x) falsch 2(1−c1 ) (Damit hat H1 auf D2 Fehler 0.5) Wende A auf D2 an → Hypothese H2 mit c2 ≥ c. (ziehe aus D2 mit rejection sampling!) Wende A auf {x : H1 (x) 6= H2 (x)} an → Hypothese H3 mit c3 ≥ c. Ergebnis für x: H1 (x) falls H1 (x) = H2 (x), sonst H3 (x) Boosting mit Nachziehen (Das Original!) (Freud, Schapire, 1989) c := 1 − ε Mindestgenauigkeit des Lernalgo A auf jeder beliebigen Verteilung D. (vernachlässige δ zunächst) Wende A auf Daten aus Zielverteilung D1 an → Hypothese H1 mit Korrektheit c1 ≥ c. D1 (x) für H (x) korrekt 1 2c1 D2 (x) := D1 (x) für H1 (x) falsch 2(1−c1 ) (Damit hat H1 auf D2 Fehler 0.5) Wende A auf D2 an → Hypothese H2 mit c2 ≥ c. (ziehe aus D2 mit rejection sampling!) Wende A auf {x : H1 (x) 6= H2 (x)} an → Hypothese H3 mit c3 ≥ c. Ergebnis für x: H1 (x) falls H1 (x) = H2 (x), sonst H3 (x) Boosting mit Nachziehen (Das Original!) (Freud, Schapire, 1989) c := 1 − ε Mindestgenauigkeit des Lernalgo A auf jeder beliebigen Verteilung D. (vernachlässige δ zunächst) Wende A auf Daten aus Zielverteilung D1 an → Hypothese H1 mit Korrektheit c1 ≥ c. D1 (x) für H (x) korrekt 1 2c1 D2 (x) := D1 (x) für H1 (x) falsch 2(1−c1 ) (Damit hat H1 auf D2 Fehler 0.5) Wende A auf D2 an → Hypothese H2 mit c2 ≥ c. (ziehe aus D2 mit rejection sampling!) Wende A auf {x : H1 (x) 6= H2 (x)} an → Hypothese H3 mit c3 ≥ c. Ergebnis für x: H1 (x) falls H1 (x) = H2 (x), sonst H3 (x) Boosting mit Nachziehen (Das Original!) (Freud, Schapire, 1989) c := 1 − ε Mindestgenauigkeit des Lernalgo A auf jeder beliebigen Verteilung D. (vernachlässige δ zunächst) Wende A auf Daten aus Zielverteilung D1 an → Hypothese H1 mit Korrektheit c1 ≥ c. D1 (x) für H (x) korrekt 1 2c1 D2 (x) := D1 (x) für H1 (x) falsch 2(1−c1 ) (Damit hat H1 auf D2 Fehler 0.5) Wende A auf D2 an → Hypothese H2 mit c2 ≥ c. (ziehe aus D2 mit rejection sampling!) Wende A auf {x : H1 (x) 6= H2 (x)} an → Hypothese H3 mit c3 ≥ c. Ergebnis für x: H1 (x) falls H1 (x) = H2 (x), sonst H3 (x) 1.0 0.8 0.6 0.4 0.0 0.2 3 * x^2 − 2 * x^3 Damit sinkt der Fehler von ε auf 3ε2 − 2ε3 . 0.0 0.2 0.4 0.6 0.8 1.0 x (Beweis an der Tafel!) Wir können also obige Prozedur wiederholen bis der Fehler so klein ist wie wir ihn haben wollen. Ist bei A δ 6= 0, wächst es pro Iteration um Faktor ≤ 3. Mit zuvor besprochenen Methoden kriegen wir’s aber wieder klein. Kann man sowas ähnliches machen wenn man nur eine feste Trainigsmenge hat? Ziel kann dann sein: Bringe Trainingsfehler auf 0. AdaBoost Freud, Schapire, 1996 wj := 1 für j = 1, . . . , m für i = 1, . . . , T : D(xj ) = wj / P i wi wende A auf D an → Ht mit Fehler εt auf D. βt := εt /(1 − εt ) Für alle i: Falls Ht (xi ) korrekt: wi := wi · βt (Auf so entstehendem D hat Ht Fehler 0.5) P Klassifiziere neue x gemäß sign( i ln(1/βi ) · hi (x)). Behauptung: Wenn A Fehler = mit T Schritten einen Fehler ≤ e 1 2 − γ macht, dann erhält man nach Adaboost −2T γ 2 auf der Trainingsmenge!!! Beweis an der Tafel... Dieselbe Abschätzung erhält man bei unabhängigen Schätzungen mit der 2 Hoeffding-Abschätzung Ws(K > p + γ) ≤ e−2nγ Behauptung: Wenn A Fehler = mit T Schritten einen Fehler ≤ e 1 2 − γ macht, dann erhält man nach Adaboost −2T γ 2 auf der Trainingsmenge!!! Beweis an der Tafel... Dieselbe Abschätzung erhält man bei unabhängigen Schätzungen mit der 2 Hoeffding-Abschätzung Ws(K > p + γ) ≤ e−2nγ Behauptung: Wenn A Fehler = mit T Schritten einen Fehler ≤ e 1 2 − γ macht, dann erhält man nach Adaboost −2T γ 2 auf der Trainingsmenge!!! Beweis an der Tafel... Dieselbe Abschätzung erhält man bei unabhängigen Schätzungen mit der 2 Hoeffding-Abschätzung Ws(K > p + γ) ≤ e−2nγ Behauptung: Wenn A Fehler = mit T Schritten einen Fehler ≤ e 1 2 − γ macht, dann erhält man nach Adaboost −2T γ 2 auf der Trainingsmenge!!! Beweis an der Tafel... Dieselbe Abschätzung erhält man bei unabhängigen Schätzungen mit der 2 Hoeffding-Abschätzung Ws(K > p + γ) ≤ e−2nγ 4 2 0 −2 Gegeben einen schwachen Lerner, kann Boosting sogar hier die roten von den blauen trennen: −4 −2 0 Wirklich???? Ist das sinnvoll????? 2 4 4 2 0 −2 Gegeben einen schwachen Lerner, kann Boosting sogar hier die roten von den blauen trennen: −4 −2 0 Wirklich???? Ist das sinnvoll????? 2 4 Die beste Klassifikation (im Hinblick auf spätere Testmengen) ist die Vertikale in der 0. Das Beispiel hat Bayes-Fehler 6,68% (Das ist die Fehlerrate der Bayes-Klassifikation, die jeweis die Klasse mit der höchsten a-posteriori-W’keit auswählt) Man kann auf Testmengen nicht besser sein als der Bayes-Fehler. Also gibt es bei positivem Bayes-Fehler keine schwachen Lerner! Die beste Klassifikation (im Hinblick auf spätere Testmengen) ist die Vertikale in der 0. Das Beispiel hat Bayes-Fehler 6,68% (Das ist die Fehlerrate der Bayes-Klassifikation, die jeweis die Klasse mit der höchsten a-posteriori-W’keit auswählt) Man kann auf Testmengen nicht besser sein als der Bayes-Fehler. Also gibt es bei positivem Bayes-Fehler keine schwachen Lerner! Die beste Klassifikation (im Hinblick auf spätere Testmengen) ist die Vertikale in der 0. Das Beispiel hat Bayes-Fehler 6,68% (Das ist die Fehlerrate der Bayes-Klassifikation, die jeweis die Klasse mit der höchsten a-posteriori-W’keit auswählt) Man kann auf Testmengen nicht besser sein als der Bayes-Fehler. Also gibt es bei positivem Bayes-Fehler keine schwachen Lerner! Die beste Klassifikation (im Hinblick auf spätere Testmengen) ist die Vertikale in der 0. Das Beispiel hat Bayes-Fehler 6,68% (Das ist die Fehlerrate der Bayes-Klassifikation, die jeweis die Klasse mit der höchsten a-posteriori-W’keit auswählt) Man kann auf Testmengen nicht besser sein als der Bayes-Fehler. Also gibt es bei positivem Bayes-Fehler keine schwachen Lerner! Breiman (1997) Arcing classifiers “Good Weaklearners Are Hard to Find” AdaBoost ist kein Boosting, da es nur die Lernbeispiele beliebig gut lernt, i.a. aber nicht die Testbeispiele (auch nicht mit schwachem Lerner). Lineare Diskrimination kann (in Beispielen) durch AdaBoost nicht verbessert werden. Bias-Varianz-Zerlegung: AdaBoost ist gut als Methode der Varianz-Reduktion und der Stabilisierung, aber nicht zur Bias-Reduktion. klassische Bias-Varianz-Zerlegung bei der linearen Regression: Y = f ∗ (X) + ε mit E(ε | X) = 0 Trainingsmenge T = {(x1 , y1 ), . . . , (xN , yN )}, f (x, T ) damit gelernter Prediktor für y aus x. Quadratischer Prediktionsfehler: F (f (., T )) = EX,Y (Y − f (X, T ))2 (Indizes markieren hier das Zufällige, über das der E berechnet wird). fA (x) = ET (f (x, T )) Ist der mittlere Prediktionswert für festes x, gemittelt über die m öglichen Trainingsmengen (A wie average). fA (x) = ET (f (x, T )) Bias(f ) = EX (f ∗ (X) − fA (X))2 Var(f ) = EX,T (fA (X) − f (X, T ))2 Bias-Varianz-Zerlegung für den Prediktionsfehler: F (f ) = Eε2 + Bias(f ) + Var(f ) Breiman überträgt diese Zerlegung auf Klassifikationsprobleme: Sei C ∗ (x) = arg maxj Pr(j|x) der Bayes-Klassifikator B die Menge, auf der C ∗ stimmt, U der Rest. Bias(C) := Pr{X, Y | (C ∗ (X) = Y, X ∈ B}−ET Pr{X, Y | (C(X, T ) = Y, X ∈ B} Var(C) := Pr{X, Y | (C ∗ (X) = Y, X ∈ U } − ET Pr{X, Y | C(X, T ) = Y, X ∈ U } Dann gilt für den Klassifikationsfehler F : F (C) = F (C ∗ ) + Bias(C) + Var(C) Breiman behauptet: AdaBoost kann die Bias nicht verringern, aber die Varianz der Klassifikation verringern. Es taugt nichts bei linearer Diskriminanz, ist aber gut für instabile Verfahren wie Klassifikationsbäume. Freud und Schapire (1997) Discussion of the Paper “Arcing Classifiers” by Leo Breiman: zeigen Beispiele, bei denen AdaBoost Var und Bias reduzieren kann. zum Problem Testfehler6=Trainingsfehler: Verweis auf hard-margin-Argumente Breiman behauptet: AdaBoost kann die Bias nicht verringern, aber die Varianz der Klassifikation verringern. Es taugt nichts bei linearer Diskriminanz, ist aber gut für instabile Verfahren wie Klassifikationsbäume. Freud und Schapire (1997) Discussion of the Paper “Arcing Classifiers” by Leo Breiman: zeigen Beispiele, bei denen AdaBoost Var und Bias reduzieren kann. zum Problem Testfehler6=Trainingsfehler: Verweis auf hard-margin-Argumente Breiman behauptet: AdaBoost kann die Bias nicht verringern, aber die Varianz der Klassifikation verringern. Es taugt nichts bei linearer Diskriminanz, ist aber gut für instabile Verfahren wie Klassifikationsbäume. Freud und Schapire (1997) Discussion of the Paper “Arcing Classifiers” by Leo Breiman: zeigen Beispiele, bei denen AdaBoost Var und Bias reduzieren kann. zum Problem Testfehler6=Trainingsfehler: Verweis auf hard-margin-Argumente Erstaunliches und Unerklärliches: AdaBoost funktioniert in der Praxis erstaunlich gut. Woran liegt das? Boosting-Erklärung ist nicht ausreichend, da es kaum schwache Lerner gibt! Verfahren, die den Trainingsfehler auf 0 bringen, produzieren in der Regel schlechte Testfehler wegen Overfitting. Beobachtung: AdaBoost verursacht relativ wenig overfitting. Wieso??? (Hard-Margin-Erklärung nicht wirklich überzeugend) “This mystery should be most interesting to some of our more theoretically motivated statisticians.” (Breiman, 2000) Erklärungs- und Verbesserungsansätze von Friedman, Hastie, Tibshirani (2000) Adaboost ist ein gieriger Minimierungsalgorithmus für den exponentiellen Fehler in einem additiven Modell. Vorschlag: Vielleicht ist es noch besser mit logit-Fehlerfunktion. → LogitBoost. Varianten auch für Regression und für Klassifikation mit mehr als 2 Klassen.