Metody zespołowe: mistrz uczenia maszynowego Kaggle

Opublikowany: 2022-03-11

Przysłowie „Co dwie głowy to nie jedna” nabiera nowego znaczenia w przypadku zespołów uczenia maszynowego. Metody zespołowe to jedne z najbardziej utytułowanych rodzin ML na zawodach Kaggle, gdzie często wygrywają konkursy z imponującymi wynikami.

Ale minęło stulecie przed Kagglem, kiedy statystyk Sir Francis Galton zauważył siłę zagregowanej inteligencji. Natknął się na konkurs na targach bydła, w którym uczestnicy musieli odgadnąć wagę wołu. Osiemset osób przedstawiło domysły, ale ich poziomy umiejętności były różne: rolnicy i rzeźnicy odgadywali razem z mieszkańcami miasta, którzy nigdy nie widzieli wołu z bliska, więc Galton uznał, że średnie przypuszczenie byłoby całkiem błędne.

Okazało się, że średnia domysłów tłumu różniła się o niecały funt (<0,1%). Jednak nawet najlepsze indywidualne prognozy były chybione.

Jak to możliwe? Co umożliwiło tak nieoczekiwany wynik?

Co sprawia, że ​​zestawy maszyn są tak skuteczne?

Wydarzenie, które zmusiło Galtona do zakwestionowania jego przekonań, ilustruje również, co sprawia, że ​​zespoły są tak potężne: jeśli masz różne i niezależne modele , wytrenowane przy użyciu różnych części danych dla tego samego problemu, będą działać lepiej razem niż pojedynczo. Powód? Każdy model nauczy się innej części koncepcji. Dlatego każdy model będzie generował prawidłowe wyniki i błędy w oparciu o swoją „wiedzę”.

Ale najciekawsze jest to, że każda prawdziwa część uzupełnia pozostałe, podczas gdy błędy wzajemnie się znoszą:

Obraz przedstawiający koncepcję ośmiu różnych modeli, z których każdy uczy się innego zestawu faktów, które mogą się pokrywać lub nie. Wynik łączy to, czego nauczył się każdy model, i eliminuje niektóre z ich błędów.

Musisz trenować modele o dużej wariancji (takie jak drzewa decyzyjne) na różnych podzbiorach danych. Ta dodatkowa wariancja oznacza, że ​​każdy model nadmiernie pasuje do różnych danych, ale po połączeniu wariancja znika, jak za dotknięciem czarodziejskiej różdżki. Tworzy to nowy, solidniejszy model.

Podobnie jak w przypadku Galtona, gdy wszystkie dane ze wszystkich źródeł są połączone, wynik jest „mądrzejszy” niż pojedyncze punkty danych.

Bliższe spojrzenie na naukę zespołową w konkursach Kaggle

Podczas konkursu Otto Group Product Classification Challenge uczestnicy musieli zbudować model predykcyjny, który byłby w stanie rozróżnić główne kategorie produktów.

Tutaj możesz zobaczyć, jak zbudowano zwycięski model. Było to połączenie trzech warstw: pierwsza miała 33 modele, druga dodała trzy kolejne (XGBoost, sieć neuronowa i AdaBoost), a trzecia była średnią ważoną wyników poprzedniej warstwy. Był to zarówno bardzo skomplikowany model, jak i zespół.

Kolejnym sukcesem Kaggle jest model stworzony przez Chenglong Chen podczas konkursu Crowdflower Search Results Relevance. Wyzwaniem było stworzenie predyktora, którego można by użyć do pomiaru trafności wyników wyszukiwania. Możesz przeczytać pełne wyjaśnienie jego metody, ale ponieważ naszym punktem zainteresowania są zespoły, najważniejszą częścią tej historii jest to, że zwycięskie rozwiązanie wykorzystywało zespół 35 modeli, z których wiele również było zespołami – meta-zespół, więc mówić.

Metody zespołowe

Istnieje wiele sposobów implementacji metod zespołowych w uczeniu maszynowym. Przyjrzymy się niektórym z najpopularniejszych metod:

  • Parcianka
    • Losowy las
  • Wzmacnianie
    • AdaBoost
    • Wzmocnienie gradientu i XGBoost
  • Hybrydowe metody zespołowe
    • Głosowanie
    • Układanie
    • Kaskadowe

Parcianka

Jak wspomniano, musisz trenować wiele modeli na różnych podzbiorach danych. W praktyce nie jest to łatwe, ponieważ dla wielu modeli potrzeba znacznie więcej danych niż w przypadku pojedynczego modelu, a czasami nie jest łatwo uzyskać zestawy danych o wysokiej jakości. Dzieje się tak, gdy przydaje się bagging (agregacja ładowania początkowego), ponieważ dzieli dane przez proces ładowania początkowego: losową próbkę z zamiennikiem, co skutkuje różnymi nakładającymi się podzbiorami.

Po wytrenowaniu modeli zespołowych konstruujesz ostateczną prognozę, agregując każdą prognozę modelu za pomocą dowolnej preferowanej metryki: średniej, mediany, trybu i tak dalej. Możesz również użyć prawdopodobieństw przewidywania modelu, aby utworzyć metrykę ważoną:

Diagram przedstawiający zastosowanie techniki workowania do dzielenia danych przez Bootstrap, agregujący każdą prognozę modelu z różnych podzbiorów w celu uzyskania ostatecznego wyniku.

Jeśli chcemy używać drzew decyzyjnych jako modeli, ale mamy kilka silnych atrybutów predykcyjnych w naszych danych, wszystkie drzewa będą podobne. Dzieje się tak, ponieważ te same atrybuty będą zwykle znajdować się w węźle głównym, dając podobne wyniki w każdej gałęzi drzewa.

Losowy las

Jedną z technik rozwiązania tego problemu jest losowy las . Tworzy zespół workowania przy użyciu drzew, ale każdy węzeł ogranicza swoje możliwe atrybuty do losowego podzbioru. To wymusza inne modele, rozwiązując poprzedni problem. Sprawia to również, że losowy las jest bardzo dobrym modelem do wyboru funkcji.

Las losowy jest jednym z najpopularniejszych modeli ML, ponieważ zapewnia dobrą wydajność przy niskiej wariancji i czasie treningu.

Wzmacnianie

Funkcja Boosting wykorzystuje również metodę ładowania początkowego do trenowania modeli, przy czym główną różnicą jest to, że dodaje wagi do każdego wystąpienia na podstawie błędów przewidywania modelu. Podczas gdy bagging jest procesem równoległym, boosting jest procesem sekwencyjnym, w którym każdy model ma więcej prawdopodobieństw. Umożliwia to dostęp do niektórych wystąpień poprzednich prognoz modelu.

Dzięki tej modyfikacji boosting próbuje skupić się na błędnie sklasyfikowanych instancjach, aby osiągnąć lepszą globalną wydajność:

Diagram przedstawiający różne podejścia stosowane przy zbieraniu i wzmacnianiu, ilustrujący równoległy charakter zbierania i sekwencyjny charakter wzmacniania.

Dodaje też wagi do modeli. Predyktory o lepszej wydajności w czasie treningu będą miały większą wagę na etapie przewidywania.

Przyjrzyjmy się bliżej niektórym z najpopularniejszych modeli doładowania:

AdaBoost

AdaBoost był jednym z pierwszych wdrożeń boostingu. Wykonuje prawie dokładnie to, co opisaliśmy ogólnie w zakresie wzmacniania i wykorzystuje drzewa decyzyjne jako modele. Wyjaśnijmy fazę treningu za pomocą pseudokodowania:

 For each instance i Assign w[i] (weight, same for all) For each iteration t Generate a subset s[t] by weighted boosting (using the w[i] weights) Train model m[t] using s[t] Store m[t] Calculate e[t] (error rate of m[t]) Assign error rate e[t] to stored m[t] model If (e[t] <= a_threshold) Exit for Update weights using m[t] errors

W czasie predykcji waży każdą predykcję w oparciu o obliczoną dla każdej z nich stopę błędu e[t] . Wyniki o wysokim poziomie błędu będą miały mniejszą wagę niż inne z lepszą dokładnością.

Wzmocnienie gradientu i XGBoost

Jednym z głównych problemów podczas uczenia tak wielu modeli i łączenia ich ze sobą jest znalezienie najlepszej konfiguracji hiperparametrów. Trudno jest znaleźć najlepszą konfigurację dla jednego modelu; znalezienie najlepszej konfiguracji dla n modeli zwiększa złożoność wykładniczo. Idealna konfiguracja dla modelu izolowanego prawdopodobnie nie jest taka sama jak konfiguracja dla modelu, który musi współpracować z innymi. W związku z tym należy przeszukiwać konfigurację wszystkich modeli jednocześnie, ale jak?

Wzmocnienie gradientowe stanowi eleganckie rozwiązanie tego problemu. Tworzy funkcję straty, która ma jako dane wejściowe wszystkie wartości hiperparametrów wszystkich modeli, a jako dane wyjściowe błąd całego zespołu. Poprzez opadanie gradientu znajduje minimalną wartość funkcji (tj. najmniejszy błąd), a tym samym najlepszą konfigurację hiperparametru dla każdego modelu.

Takie podejście wprowadza problem skalowania. Wejdź do króla uczenia maszynowego dla uporządkowanych danych: ekstremalne zwiększanie gradientu, w skrócie XGBoost. Jest to niezwykle wydajna implementacja zwiększania gradientu, dzięki różnym technikom, takim jak przetwarzanie równoległe, wbudowana funkcja walidacji krzyżowej, regularyzacja w celu uniknięcia nadmiernego dopasowania i optymalizacja sprzętu. XGBoost zapewnia wyjątkową wydajność.

XGBoost stał się popularny, gdy jego twórca użył go do wyzwania Kaggle i wygrał z dużą przewagą. Opublikował wynik i stworzył wrapper Pythona, aby umożliwić korzystanie z niego większej liczbie osób. Kiedy wiele osób dostrzegło jego potencjał, XGBoost szybko stał się mistrzem ML.

Hybrydowe metody zespołowe

Ale historia na tym się nie kończy. Widzieliśmy wiele typów zespołów, które używają tego samego rodzaju modelu — dlaczego nie spróbować kombinacji różnych modeli? Jeśli zrobisz to dobrze, możesz stworzyć jeszcze potężniejszą metodę ML: zespół hybrydowy .

Głosowanie

Głosowanie to jedno z najprostszych podejść do tworzenia zespołu hybrydowego. Uczy wielu różnych algorytmów modeli i sprawia, że ​​„głosują” w fazie przewidywania:

Diagram przedstawiający przepływ danych do trzech wytrenowanych modeli: Maszyna wektorów nośnych, Regresja logistyczna i KNN. Wynik dla pierwszego i drugiego to 1, podczas gdy wynik dla regresji logistycznej to 0. Wynik końcowy to 1.

Możesz dodać wagi do każdego modelu na podstawie jego wydajności lub przewidywanego prawdopodobieństwa i wygenerować głos ważony.

Układanie

Układanie w stosy rozwija ideę głosowania poprzez dodanie nowej warstwy nad modelami podstawowymi, aby uzyskać ostateczną prognozę, a nie tylko obliczać średnią lub większość. Dodaje koncepcję meta-uczenia się, ponieważ nowa warstwa uczy się nie z danych, ale z przewidywań modelu:

Diagram przedstawiający przepływ danych do trzech wytrenowanych modeli podstawowych, łącząc ich dane wyjściowe w modelu skumulowanym przed wyświetleniem ostatecznych danych wyjściowych.

Możesz układać wszystkie meta-warstwy, które lubisz, co daje model z wieloma poziomami. W przypadku modeli skumulowanych zalecam używanie drzew decyzyjnych, maszyn SVM lub perceptronów. W przypadku modeli podstawowych możesz użyć dowolnej metody, nawet innego zestawu, tworząc zestaw zestawów. Stacking działa jeszcze lepiej w przypadku modeli bazowych, takich jak drzewa decyzyjne, które generują nie tylko predykcję wartości, ale także prawdopodobieństwo jej poprawności.

Układanie w stos jest mniej popularne niż pakowanie lub zwiększanie, ponieważ trudniej jest zinterpretować, czego uczą się modele ułożone w stos, oraz ponieważ istnieje znacznie większa liczba wariantów: można bawić się wieloma kombinacjami algorytmów modelu, konfiguracjami hiperparametrów i warstwami układania. Jednak przy odpowiedniej kombinacji modeli układanie w stos może być nawet silniejsze niż wzmacnianie i pakowanie.

Kaskadowe

Kaskadowanie jest używane, gdy chcesz mieć dużą pewność przewidywania. Wykorzystuje podejście piętrowe, ale ma tylko jeden model w każdej warstwie. Na każdym poziomie modele odrzucają instancje, które ich zdaniem nie należą do pożądanej klasy.

Dzięki kaskadowaniu proste modele oceniają dane, zanim zrobią to modele złożone. Na etapie predykcji dane otrzymuje pierwszy model. Jeśli pewność nie jest większa niż x (wartość musi być wysoka, coś większa niż 0,9), przekazuje instancję do następnego modelu. W przeciwnym razie kaskada zwraca przewidywane dane wyjściowe tego modelu. Jeśli żadna warstwa nie może przewidzieć pożądanej klasy z dużym stopniem pewności, zespół zwraca klasę ujemną.

Klasycznym przypadkiem użycia tego modelu jest przewidywanie, kiedy transakcja może być oszukańcza. Załóżmy, że system oblicza miliony transakcji dziennie i nie da się kontrolować każdej z nich ręcznie. Korzystanie z zestawu kaskadowego może z bardzo dużym prawdopodobieństwem odrzucić transakcje, które nie są fałszywe, pozostawiając tylko niewielki podzbiór transakcji do ręcznego sprawdzenia:

Schemat przedstawiający wykorzystanie kaskadowania do wykrywania nieuczciwych transakcji. Dwa modele odrzucają możliwość oszustwa z pewnością wyższą niż 0,9, podczas gdy jeden z kolejnych modeli wykrywa mniejszą pewność, co skłania do ręcznego sprawdzenia.

Te modele są dobrymi opcjami, gdy potrzebujesz doskonałej metryki przywołania.

W przeciwieństwie do głosowania i układania w stosy, zespół kaskadowy wykorzystuje podejście wielostanowe, a nie podejście wieloeksperckie. Ważne jest, aby zachować ostrożność w przypadku bardzo głębokiego kaskadowania, ponieważ może to spowodować nadmierne dopasowanie.

Wartość metod zespołowych

Łączenie wielu modeli pozwala nam tworzyć lepsze i potężniejsze predyktory, jak to ma miejsce, gdy ludzie pracują razem. Nakreśliliśmy trzy rodziny zespołów — workowanie, boostowanie i hybrydy — i zobaczyliśmy, jak trenują i przewidują.

Drzewo decyzyjne może być bardzo słabym i niestabilnym modelem (z dużą wariancją), ale tłum różnych drzew (las losowy) może być bardzo dokładnym i stabilnym predyktorem. Jedną z głównych zalet zestawów jest to, że konstruują modele o niskiej wariancji i niskim poziomie błędu systematycznego, co jest jednym z największych kompromisów w uczeniu maszynowym. W większości przypadków przewyższają inne metody, a czasami są nawet lepsze niż głębokie uczenie. Są one słabsze niż głębokie sieci neuronowe tylko wtedy, gdy działają na danych nieustrukturyzowanych.

Jeśli będziemy kontynuować porównanie do głębokich sieci neuronowych, możemy również powiedzieć, że zespoły są zwykle lżejsze i szybsze w fazie uczenia i testowania. Ponadto nie wymagają do działania drogiego sprzętu, takiego jak wydajne, dyskretne procesory graficzne.

Prawdą jest, że zespołom brakuje możliwości intuicyjnego zrozumienia przez ludzi, ponieważ dziesiątki lub setki pracujących jednocześnie modeli tworzy ogromne i złożone narzędzie. Na szczęście niektóre techniki pozwalają nam zrozumieć, w jaki sposób te metody podejmują decyzje. Jedną z najpopularniejszych jest LIME, metoda, która tworzy interpretowalne wyjaśnienia dla konkretnego wystąpienia w dowolnym modelu uczenia maszynowego.

Konkursy Kaggle nie istnieją wyłącznie po to, by programiści mogli się dobrze bawić, zdobywać nowe umiejętności lub wygrywać nagrody. Ostatecznym celem jest stworzenie silnych modeli i wypuszczenie ich na wolność, aby pozwolić im na magię w rzeczywistych scenariuszach. Tego rodzaju modele są wykorzystywane przez organizacje zajmujące się problemami krytycznymi. Na przykład wykrywanie oszustw jest powszechnym przypadkiem użycia w branżach takich jak bankowość i podróże, które mają do czynienia z dużymi kwotami pieniędzy przenoszonymi w ramach pojedynczych transakcji.

Zespoły dają lepsze prognozy z mniejszą wariancją i odchyleniem niż inne modele. Jednak trudno jest zinterpretować to, czego się uczą, co może mieć krytyczne znaczenie w niektórych wrażliwych aplikacjach. Jednym z przykładów jest branża pożyczek osobistych: model ML może określić, czy dana osoba kwalifikuje się do pożyczki. Jeśli jednak klient zapyta, dlaczego instytucja finansowa odmówiła udzielenia pożyczki, powinno być szczegółowe wyjaśnienie, a nie tylko „ponieważ tak powiedział nasz model ML”.

Ostatecznie, niezależnie od tego, czy chcesz tworzyć zaawansowane modele ML dla aplikacji korporacyjnych, dużych banków lub małych firm, czy po prostu brać udział w konkursach, aby zwiększyć swoją reputację zawodową, zespoły powinny być Twoim wyborem.