Krótka odpowiedź na pytanie:
kiedy algorytm pasuje do rezydualnego (lub ujemnego gradientu), czy używa jednej cechy na każdym etapie (tj. modelu jednoczynnikowego) czy wszystkich cech (model wielowymiarowy)?
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:
f(x)=∑m=1Mbm(x)
gdzie M 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 biegniemy 2 iteracje i b1=β0+β1x i b2=θ0+θ1x, następnie
f(x)=∑m=12bm(x)=β0+β1x+θ0+θ1x=(β0+θ0)+(β1+θ1)x
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 liniowy XTXβ=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?