6 Bagging und Boosting

Werbung
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.
Herunterladen