Boosting jest ogólną metodą służącą zwiększeniu skuteczności dowolnego algorytmu uczenia. Idea Budowanie “mocnego i złożonego klasyfikatora” ze “słabych i prostych klasyfikatorów”. \pause\block
Leslie Valiant i Michael Kearns byli pierwszymi, którzy pokazali, że “słabe” algorytmy uczące, których skuteczność jest nawet niewiele lepsza niż losowe zgadywanie, mogą być wykorzystane do stworzenia dowolnie skutecznego “silnego” klasyfikatora.
Robert Schapire jako pierwszy przedstawił algorytm wzmacniania działający w czasie wielomianowym.
Yoav Freund zaproponował znacznie bardziej efektywny algorytm wzmacniania, który mimo tego, że był w pewnym sensie optymalny, miał pewne istotne w praktyce wady.
Pierwsze eksperymenty z tymi wczesnymi algorytmami wzmacniania zostały przeprowadzone przez zespół Drucker, Schapire, Simard i dotyczyły zadania OCR (ang. optical character recognition), w którym sieci neuronowe były użyte jako “proste” klasyfikatory.
Freund i Schapire przedstawili algorytm AdaBoost, który rozwiązał wiele
praktycznych trudności wcześniejszych algorytmów wzmacniania.
Algorytm na wejściu otrzymuje zbiór treningowy , gdzie każdy należy do pewnej dziedziny problemu , natomiast każda etykieta (decyzja) należy do pewnego zbioru . Dla ułatwienia będziemy na razie zakładać, że .
AdaBoost (Adaptive Boosting) wywołuje wybrany “słaby” algorytm uczący w serii T iteracji. Zakładamy, że błąd uzyskiwanych klasyfikatorów na zbiorze treningowym jest mniejszy niż .
Jedną z głównych idei algorytmu jest strojenie rozkładu (lub wag elementów) dla zbioru treningowego. Wagę -tego elementu ze zbioru treningowego w iteracji będziemy oznaczali przez .
Początkowo wszystkie wagi są ustawione na równe wartości;
Po każdej iteracji, wagi elementów źle klasyfikowanych są zwiększane. Dzięki temu mamy możliwość skierowania uwagi “słabego” klasyfikatora na pewne elementy (trudne do wyuczenia) ze zbioru treningowego.
Zadaniem “słabego” algorytmu uczącego jest zbudowanie klasyfikatora (ang. hypothesis) odpowiedniego dla aktualnego rozkładu .
Skuteczność takiego klasyfikatora jest mierzona przez jego błąd (z uwzględnieniem rozkładu ):
W praktyce “słaby” algorytm uczący może być algorytmem, który uwzględnia rozkład . Nie jest to jednak konieczne. Kiedy algorytm nie pozwala na bezpośrednie uwzględnienie rozkładu , losuje się (względem ) podzbiór zbioru treningowego, na którym następnie wywołuje się algorytm uczący.
Kiedy AdaBoost dostaje klasyfikator dobierany jest parametr . Intuicyjnie odpowiada za wagę jaką przykładamy do klasyfikatora . Zauważmy, że gdy . Ponadto rośnie kiedy maleje.
Rozkład jest następnie zmieniany tak, aby zwiększyć (zmniejszyć) wagi elementów zbioru treningowego, które są źle (dobrze) klasyfikowane przez . Stąd wagi mają tendencję do skupiania się na “trudnych” przykładach.
Dane: , gdzie ,
Inicjalizacja: dla
for do:
<+-> Wykorzystując “słaby” algorytm uczący zbuduj klasyfikator
(uwzględniając rozkład ).
<+->
<+->
<+-> Uaktualnij wagi elementów zbioru treningowego:
jest czynnikiem normalizującym (wybranym tak, aby było rozkładem).
Wynikowy klasyfikator powstaje za pomocą ważonego głosowania klasyfikatorów , gdzie jest wagą przypisaną klasyfikatorowi .
1 | 2 | |||
słabe klasyfikatory | ||||
wagi | ||||
Treść automatycznie generowana z plików źródłowych LaTeXa za pomocą oprogramowania wykorzystującego LaTeXML.
strona główna | webmaster | o portalu | pomoc
© Wydział Matematyki, Informatyki i Mechaniki UW, 2009-2010. Niniejsze materiały są udostępnione bezpłatnie na licencji Creative Commons Uznanie autorstwa-Użycie niekomercyjne-Bez utworów zależnych 3.0 Polska.
Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego.
Projekt współfinansowany przez Ministerstwo Nauki i Szkolnictwa Wyższego i przez Uniwersytet Warszawski.