CoBoostowanie
CoBoost to częściowo nadzorowany algorytm szkoleniowy zaproponowany przez Collinsa i Singera w 1999 r. Pierwotnym zastosowaniem algorytmu było zadanie klasyfikacji nazwanych jednostek przy użyciu bardzo słabych uczniów. Może być używany do przeprowadzania uczenia częściowo nadzorowanego w przypadkach, w których występuje redundancja funkcji.
Można to postrzegać jako połączenie współtrenowania i wzmacniania . Każdy przykład jest dostępny w dwóch widokach (podsekcjach zestawu funkcji), a wzmacnianie jest stosowane iteracyjnie na przemian z każdym widokiem przy użyciu przewidywanych etykiet utworzonych w alternatywnym widoku w poprzedniej iteracji. CoBoosting nie jest prawidłowym algorytmem wzmacniającym w uczenia się PAC .
Motywacja
CoBoosting był próbą Collinsa i Singera ulepszenia poprzednich prób wykorzystania redundancji funkcji do szkolenia klasyfikatorów w sposób częściowo nadzorowany. Wykazano, że CoTraining, przełomowa praca Bluma i Mitchella, jest potężną platformą do uczenia się klasyfikatorów, biorąc pod uwagę niewielką liczbę przykładów nasion, poprzez iteracyjne wprowadzanie reguł na liście decyzyjnej. Zaletą CoBoosting do CoTraining jest to, że uogólnia wzorzec CoTraining, dzięki czemu można go używać z dowolnym klasyfikatorem. CoBoosting dokonuje tego wyczynu, zapożyczając koncepcje od AdaBoost .
Zarówno w CoTrain, jak i CoBoost przykładowe zestawy szkoleniowe i testowe muszą mieć dwie właściwości. Po pierwsze, przestrzeń cech przykładów można podzielić na dwie przestrzenie cech (lub widoki), tak że każdy widok jest wystarczająco wyrazisty, aby można go było sklasyfikować. istnieją dwie funkcje takie że dla Displaystyle , . Choć idealne, to ograniczenie jest w rzeczywistości zbyt silne ze względu na szum i inne czynniki, a zamiast tego oba algorytmy dążą do maksymalizacji zgodności między dwiema funkcjami. Druga właściwość polega na tym, że te dwa widoki nie mogą być silnie skorelowane.
Algorytm
wejście: ,
Zainicjuj: .
dla i dla :
Ustaw pseudoetykiety:
Ustaw wirtualny rozkład:
gdzie
Znajdź słabą hipotezę .
Wybierz wartość dla błąd szkolenia.
Zaktualizuj wartość dla obecnego silnego klasyfikatora bezprogowego:
Ostateczny wynik silnego klasyfikatora to
Konfigurowanie AdaBoost
CoBoosting opiera się na algorytmie AdaBoost , który daje CoBoosting zdolność uogólniania, ponieważ AdaBoost może być używany w połączeniu z wieloma innymi algorytmami uczenia się. Ta kompilacja zakłada zadanie klasyfikacji w dwóch klasach, chociaż można ją dostosować do klasyfikacji w wielu klasach. W ramach AdaBoost słabe klasyfikatory są generowane szeregowo, a także rozkład na przykłady w zbiorze uczącym. Każdemu słabemu klasyfikatorowi przypisuje się wagę, a ostateczny silny klasyfikator definiuje się jako znak sumy słabych klasyfikatorów ważonych przypisaną im wagą. (Zobacz stronę Wikipedii AdaBoost dla notacji). W ramach AdaBoost Schapire i Singer wykazali, że błąd szkolenia jest ograniczony następującym równaniem:
gdzie współczynnikiem normalizującym dla rozkładu . Z w równaniu dla otrzymujemy:
Gdzie w obecnej słabej hipotezie. Zdefiniowano trzy równania opisujące sumę rozkładów, dla których obecna hipoteza wybrała poprawną lub błędną etykietę. Należy zauważyć, że klasyfikator może powstrzymać się od wybrania etykiety dla przykładu, w którym podana etykieta to 0. Dwie etykiety są wybierane jako -1 lub 1.
Schapire i Singer wykazali, że wartość (a tym samym błąd szkolenia), wybierając następującą wartość:
Zapewnienie wartości ufności dla obecnego hipotetycznego klasyfikatora na podstawie liczby poprawnie sklasyfikowanych przykładów w porównaniu z liczbą błędnie sklasyfikowanych przykładów ważonych rozkładem na przykłady. To równanie można wygładzić aby zrekompensować przypadki, w których małe. Wyprowadzając z tego równania otrzymujemy:
W ten sposób błąd uczenia jest minimalizowany przez wybranie słabej hipotezy w każdej iteracji, która minimalizuje poprzednie równanie.
AdaBoost z dwoma widokami
CoBoosting rozszerza te ramy w przypadku, gdy mamy oznaczony zestaw treningowy (przykłady z i nieoznaczony zestaw treningowy (z ), a także spełniać warunki redundancji cech w postaci . Algorytm trenuje dwa klasyfikatory w taki sam sposób, jak AdaBoost , które zgadzają się co do oznaczonych zestawów treningowych z poprawnymi etykietami i maksymalizuje zgodność między dwoma klasyfikatorami w nieoznakowanym zbiorze treningowym. Ostateczny klasyfikator jest znakiem sumy dwóch silnych klasyfikatorów. rozszerzony w następujący sposób, gdzie jest rozszerzeniem }
Gdzie sumą wagi hipotez według ich wartości ufności dla 2). jest znakiem . Przy każdej iteracji CoBoost oba klasyfikatory są iteracyjnie aktualizowane. sol silnym wyjściem klasyfikatora dla widoku do iteracji możemy ustawić pseudoetykiety dla j -tej aktualizacji na:
W którym widok niż aktualnie jest podzielony na dwie części tak, że . Gdzie
Rozkład na przykłady dla każdego widoku iteracji jest zdefiniowany w następujący sposób:
jot można przepisać
Co jest identyczne z równaniem w AdaBoost. W ten sposób ten proces może być użyty do aktualizacji wartości, jak w przypadku AdaBoost przy użyciu i re . Zmieniając to, minimalizacja i w ten sposób { jest minimalizowane w zachłanny sposób.