Wiem, jak zaimplementować liniową funkcję celu i liniowe wzmocnienia w XGBoost. Moje konkretne pytanie brzmi: kiedy algorytm pasuje do resztkowego (lub ujemnego gradientu), czy używa jednej cechy na każdym etapie (tj. Modelu jednoczynnikowego) czy wszystkich cech (model wielowymiarowy)?
Będziemy wdzięczni za wszelkie odniesienia do dokumentacji dotyczącej liniowych wzmocnień w XGBoost.
EDYCJA: W XGBoost można zastosować liniowe wzmocnienia, ustawiając parametr „booster” na „gblinear”. Zobacz: http://www.ncbi.nlm.nih.gov/pmc/articles/PMC3885826/, aby uzyskać przydatne informacje na temat liniowego wzmocnienia. Zauważ, że nie mówię o funkcji celu (która może być również liniowa), ale o samych doładowaniach.
Dzięki!
regression
machine-learning
boosting
xgboost
Escachator
źródło
źródło
Odpowiedzi:
Krótka odpowiedź na pytanie:
Algorytm używa jednej funkcji lub wszystkie funkcje zależą od konfiguracji. W mojej długiej odpowiedzi wymienionej poniżej, zarówno w kikutach decyzyjnych, jak i liniowych przykładach uczniów, wykorzystują one wszystkie funkcje, ale jeśli chcesz, możesz również dopasować ich podzbiór. Kolumny (funkcje) próbkowania są postrzegane jako zmniejszające wariancję modelu lub zwiększające „niezawodność” modelu, szczególnie jeśli masz dużą liczbę funkcji.
W
xgboost
przypadku ucznia podstawowego drzewa można ustawićcolsample_bytree
przykładowe funkcje, aby pasowały do każdej iteracji. Dla liniowego ucznia bazowego nie ma takich opcji, więc powinno pasować do wszystkich funkcji. Ponadto niewiele osób korzysta z liniowego ucznia w xgboost lub generalnie do zwiększania gradientu.Długa odpowiedź dla liniowego jako słabego ucznia do wzmocnienia:
W większości przypadków nie możemy używać ucznia liniowego jako ucznia podstawowego. Powód jest prosty: dodanie wielu modeli liniowych razem nadal będzie modelem liniowym.
Wzmocnienie naszego modelu stanowi suma podstawowych uczniów:
gdzieM to liczba iteracji w ulepszaniu, bm jest modelem dla mth iteracja.
Jeśli na przykład podstawowy uczeń jest liniowy, załóżmy, że po prostu biegniemy2 iteracje i b1=β0+β1x i b2=θ0+θ1x , następnie
który jest prostym modelem liniowym! Innymi słowy, model zespołu ma „taką samą moc” jak podstawowy uczeń!
Co ważniejsze, jeśli użyjemy modelu liniowego jako podstawowego ucznia, możemy to zrobić tylko jeden krok, rozwiązując układ liniowyXTXβ=XTy zamiast przejść przez wielokrotne iteracje w ulepszaniu.
Dlatego ludzie chcieliby używać innych modeli niż model liniowy jako podstawowego ucznia. Drzewo to dobra opcja, ponieważ dodanie dwóch drzew nie jest równe jednemu drzewu. Demonstruję to w prostym przypadku: kikut decyzyjny, który jest drzewem z tylko 1 podziałem.
Robię dopasowanie funkcji, w której dane są generowane przez prostą funkcję kwadratową,f(x,y)=x2+y2 . Oto wypełniona prawda podłoża konturowego (po lewej) i dopasowanie do wzmocnienia kikuta ostatecznej decyzji (po prawej).
Teraz sprawdź pierwsze cztery iteracje.
Należy zauważyć, że w odróżnieniu od ucznia liniowego model w 4. iteracji nie może być osiągnięty przez jedną iterację (jeden kikut decyzyjny) z innymi parametrami.
Jak dotąd wyjaśniłem, dlaczego ludzie nie używają ucznia liniowego jako ucznia podstawowego. Jednak nic nie stoi na przeszkodzie, aby ludzie to zrobili. Jeśli użyjemy modelu liniowego jako podstawowego ucznia i ograniczymy liczbę iteracji, oznacza to rozwiązanie układu liniowego, ale ogranicz liczbę iteracji podczas procesu rozwiązywania.
Ten sam przykład, ale na wykresie 3d czerwona krzywa to dane, a zielona płaszczyzna to ostateczne dopasowanie. Łatwo można zobaczyć, model końcowy jest modelem liniowym i
z=mean(data$label)
jest równoległy do płaszczyzny x, y. (Możesz pomyśleć dlaczego? To dlatego, że nasze dane są „symetryczne”, więc każde przechylenie samolotu zwiększy stratę). Teraz sprawdź, co wydarzyło się w pierwszych 4 iteracjach: dopasowany model powoli osiąga optymalną wartość (średnią).Ostateczny wniosek, liniowy uczeń nie jest szeroko stosowany, ale nic nie stoi na przeszkodzie, aby ludzie używali go lub implementowali w bibliotece R. Ponadto można go użyć i ograniczyć liczbę iteracji w celu uregulowania modelu.
Powiązany post:
Zwiększanie gradientu dla regresji liniowej - dlaczego to nie działa?
Czy kikut decyzji jest modelem liniowym?
źródło