Bagging i Boosting – czyli uczenie zespołowe

Uczenie zespołowe

Dwie tytułowe metody należą do obszaru tzw. uczenia zespołowego (ensemble learning). Uczenie zespołowe, jak sama nazwa wskazuje odnosi się do uczenia zespołu, jakiejś grupy. W tym przypadku, grupą będą proste algorytmy klasyfikacyjne lub regresji.

Posłużę się przykładem klasyfikacji, jeżeli budowalibyśmy algorytm uczenia zespołowego i chcielibyśmy wykorzystać drzewo decyzyjne jako podstawę, to nie użylibyśmy rozbudowanych drzew głębokości do 15 węzłów, a właśnie jak najprostsze np. do głębokość korzenia. Takich prostych klasyfikatorów w naszym algorytmie uczenia zespołowego może być bardzo dużo – nawet kilka tysięcy. Następnie, każdy prosty klasyfikator uczony jest na pewnej próbce danych z oryginalnego datasetu. W końcu, odbywa się etap predykcji, gdzie każdy wyuczony prosty klasyfikator przewiduje klasę do której należy wektor obserwacji i wybierana jest klasa, która została przewidziana przez większość klasyfikatorów. Przykładowo, jeżeli mamy 1000 klasyfikatorów i 501 odda głos na klasę 1, a 499 na klasę 0 to zostanie wybrana klasa 1. Oczywiście, sposób głosowania można modyfikować, żeby manipulować progiem odcięcia.

Okazuje się, że metody uczenia zespołowego osiągają zaskakujące dobre wyniki w porównaniu do standardowych metod uczenia maszynowego. Pozwalają one na redukcję wariancji (variance) modelu czyli jego przeuczenia oraz redukcję obciążenia (bias) czyli zwiększanie możliwości „uogólniania”. Wynika to z faktu, że korzystamy z mało złożonych estymatorów oraz z tego, że nie poszukujemy jednej najlepszej hipotezy w przestrzeni hipotez wyjaśniających badane zjawisko (jak standardowe algorytmy ML), a szukamy ich wiele. Jeżeli w przestrzeni rozwiązań istnieje kilka najlepszych hipotez, metody uczenia zespołowego je znajdą, natomiast tradycyjne algorytmy – nie, ze względu na to, że muszą wybrać tylko jedną.

Bagging i Boosting – dobór próby do uczenia klasyfikatorów

Jak napisałem wyżej, metody uczenia zespołowego dobierają losową próbę ze zwracaniem na której odbywa się uczenie prostych algorytmów. Tutaj pojawiają się pierwsze różnice pomiędzy tytułowymi metodami.

W przypadku Baggingu, każdy element ma takie samo prawdopodobieństwo pojawienia się w nowym data secie.

W Boostingu natomiast, obserwacje otrzymują wagi i niektóre pojawiają się w nowym datasecie częściej.

Zasadnicza różnica

Pod doborze próby, algorytm Baggingu każdy prosty model uczy niezależenie od siebie, co można zwizualizować w następujący sposób:

By Sirakorn – Own work, CC BY-SA 4.0, https://commons.wikimedia.org/w/index.php?curid=85888768

Natomiast w przypadku Boostingu każdy następny prosty model jest uczony w sposób sekwencyjny. To znaczy, że następny bierze pod uwagę sukces poprzedniego klasyfikatora. W każdym kolejnym kroku uczenia Boostingu, wagi są na nowo redystrybuowane. Źle przewidziane wektory obserwacji mają zwiększone wagi, w celu zwiększania nakładów na rozwiązanie tych najtrudniejszych przypadków. Każdy następny prosty klasyfikator będzie musiał radzić sobie z przewidywaniem tych cięższych przypadków. Widać to na poniższym obrazku:

By Sirakorn – Own work, CC BY-SA 4.0, https://commons.wikimedia.org/w/index.php?curid=85888769

Bagging i Boosting – głosowanie

W przypadku Baggingu etap głosowania to po prostu średnia z głosów albo głosowanie większościowe opisane w pierwszej części.

W Boostingu brana pod uwagę jest średnia ważona z głosów każdego prostego algorytmu. Wynika to z tego, że na etapie uczenia, również nakładane są wagi na każdy algorytm – te które osiągają lepsze wyniki klasyfikacji otrzymują wyższe wagi. Niektóre algorytmy Boostingu stawiają warunki do tego czy brać pod uwagę prosty klasyfikatora np. jeżeli nie osiągnął on co najmniej 50% dokładności predykcji na próbce nie będzie on brany pod uwagę w predykcji na oryginalnym datasecie. Istnieje szereg algorytmów boostingu, gdzie każdy działa w trochę inny sposób z pewnością pojawią się artykułu omawiające każdy z osobna.

To co zatem wybrać, bagging czy boosting?

Na to pytanie nie istnieje standardowa odpowiedź. Wszystko zależy od tego jakie zjawisko modelujemy jakie mamy dane itd.. Każdy problem powinniśmy traktować indywidualnie i przetestować szereg algorytmów. Istnieją jednak minimalne różnice http://opelz-blog.de/bokstaven-u/index.html , które pozwalają zasygnalizować użycie konkretnego modelu:

  • Jeżeli mamy problem nadmiernego dopasowania modelu (przeuczenia), najlepszym rozwiązaniem będzie użycie Baggingu, Boosting ze względu na nakładanie wag obserwacjom jak i klasyfikatorm, sam może ulegać temu problemowi,
  • jeżeli jednak mamy słabą jakość predykcji, czyli nasz model słabo uogólnia – problem biasu, lepszym rozwiązaniem będzie użycie metod Boostingu, ponieważ Bagging nie poprawia biasu w znaczącym stopniu.

1 Komentarz

Dodaj komentarz