ml ensemble method - ghdrako/doc_snipets GitHub Wiki


tags:

  • ogolne

Ml ensemble method

Celem metod zespołowych (ang. ensemble method) jest łączenie różnych klasyfikatorów w jeden meta-klasyfikator wykazujący większa skuteczność uogólniania niż każdy ze składowych algorytmów.Istnieje kilka rożnych sposobów tworzenia zespołu klasyfikatorów.

W tym wzorcu projektowym wejściowych danych treningowych używa się do zbudowania kilku modeli. Funkcja alokacji określa, jakie podzbiory danych treningowych otrzymaja poszczególne modele. Czy każdy otrzyma pełny zbiór danych treningowych czy tylko próbkę. Czy każdy otrzyma wszystkie cechy, czy tylko podzbiór cech. Podjęte tu decyzje ukształtują trening słabszych modeli składających się na mocniejszy zespół.

Zespól modeli wymaga zróżnicowanych klasyfikatorów tzn takich które maja nieskorelowane klasyfikacje i muszą być powyżej progu losowego zgadywania. Różnorodność można osiągnąć w zespole poprzez dodanie klasyfikatorów uzwajanych różnych technik uczenia maszynowego. Źródłem różnorodności może być też sama funkcja allokacii która może działać jako manipulator danych i sztucznie różnicować dane wejściowe w celu rożnego obciążenia wynikowych modeli nawet jeśli one używają tego samego algorytmu uczenia maszynowego.

Bagging

Agregacja bootstrapowa (ang. bootstrap aggregation) w skrócie bagging to jedna z pierwszych metod zespołowych. Bagging zaczyna się od wygenerowania kliku nowych zbiorów treningowych poprzez próbkowanie bootstrapowe pierwotnych danych treningowych. Zbiorów tych następnie używa się do wygenerowania zbioru modeli z wykorzystaniem jednego algorytmu uczenia maszynowego. Prognozy modeli łączy się poprzez głosowanie w przypadku klasyfikacji i uśrednianie w przypadku predykcji liczbowej.

Choć bagging jest względnie prosta metoda zespołowa, to działa całkiem dobrze, kiedy jest używany z węglenie niestabilnymi algorytmami uczyenia maszynowego tzn generującymi modele które znacznie się zmieniają po niewielkiej zmianie danych wejściowych. Niestabilne modele maja zasadnicze znaczenie dla zagwarantowania różnorodności pomimo niewielkiej różnicy miedzy bootstrapowymi treningowymi zbiorami danych.

Z tej przyczyny baggingu używa się najczyściej w połączeniu z drzewami decyzyjnymi które często radykalnie się zmieniają po niewielkiej zmianie danych wejściowych.

Wzmacnianie

Inna popularna metoda zespołowa jest wzmacnianie (ang. boosting) która poprawia lug "wzmacnia" słabsze modele, tak aby osiągnęły trafność mocniejszych modeli.

Podobnie jak bagging, tak i wzmocnienie używa zespołów modeli wytrenowanych na ponownie próbkowanych danych oraz głosowania do ustalania końcowego werdyktu. Są jednak dwie kluczowe różnice. Po pierwsze próbki specjalnie konstruuje się tak aby wygenerować komplementarne modele. Oznacza to że prace nie można prowadzić równolegle, ponieważ modele wchodzące w skład zespołu nie są już od siebie niezależne. Po drugie zamiast przyznawać każdemu modelowi równy głos, wzmacnianie przyznaje im głos ważony na podstawie przeszłych wyników. Modele, które radzą sobie lepiej maja większy wpływ na końcowa prognozę zespołu.

Wzmacnianie zapewnia trafność, która często jest nieco lepsza a z pewnością nie gorsza od trafności najlepszego modelu w zespole. Ponieważ modele specjalnie buduje się tak aby wzajemnie się uzupełniały, trafność zespołu można zwiększać do dowolnie wysokiego poziomu poprzez proste dodanie kolejnego klasyfikatora, przy założeniu ze każdy kolejny klasyfikator działa lepiej niż ślepy los.

W 1997 powstał algorytm wzmacniania o nazwie AdaBoost będący skrótem od wzmocnienia adaptacyjnego (ang. adaptive boosting). Algorytm ten opiera sie na pomyśle generowania słabych modeli, które iteracyjnie uczą się coraz większej liczby trudnych do sklasyfikowania przykładów w danych treningowych poprzez przykładanie większej uwagi do do przykładów, które często są źle klasyfikowane.

Zaczynając od nieważonego zbioru danych, pierwszy klasyfikator próbuje wymodelować wynik. Przykłady, które klasyfikator przewidział poprawnie, będą rzadziej pojawiać się w treningowym zbiorze danych dla następnego klasyfikatora, i odwrotnie trudne do sklasyfikowania przykłady będą pojawiać się częściej. W kolejnych rundach modele są trenowane na coraz trudniejszych przykładach. Proces ten jest kontynuowany aż do osiągnięcia zadanego ogólnego wskaźnika błędów albo do momentu, w którym trafność przestanie rosnąć.

Choć zasady wzmocnienia można zastosować do niemal dowolnego typu modelu, techniki tej używa się najczyściej w połączeniu z drzewami decyzyjnymi.

Lasy losowe Jeszcze inna metoda zespołowa oparta na drzewach decyzyjnych, nazywana lasami losowymi (ang. random forest), wykorzystuje zasady baggingu, ale wprowadza dodatkowa różnorodność do drzew decyzyjnych, pozwalając algorytmowi na na wybieranie losowego podzbioru cech przy każdej próbie podziału. Zaczynając od węzła głównego, algorytm lasu losowego wybiera tylko spośród niewielkiej liczby cech wybranej losowo z pełnego zbioru predyktorów; w każdym następnym podziale rozważany jest inny losowy podzbiór. Jak w przypadku bagging, po wygenerowaniu zespołu drzew (lasu) algorytm przeprowadza proste głosowanie, aby wydać ostateczny werdykt.

To że każde drzewo jest zbudowane na różnych , losowo wybranych zbiorach cech, pomaga zagwarantować, ze kazde drzewo w zespole będzie unikatowe. Może się nawet zdarzyć, że dwa drzewa w lesie zostaną zbudowane na zupełnie rożnych zbiorach cech. Losowy wybór cech sprawia, ze pomimo zachłannej heurystyki nie zawsze sięga po te same "nisko wiszące owoce" za każdym razem, kiedy buduje drzewo, dzięki czemu może odkryć subtelne wzorce, które mogły umknąć standardowej metodzie konstruowania drzew. Z drugiej strony to ze kazde drzewo w lesie ma tylko jeden głos, ogranicza ryzyko nadmiernego dopasowania.

Nic wiec dziwnego ze lasy losowe szybko stały się jednym z najpopularniejszych algorytmów uczenia maszynowego. Drzewa losowe łączy wszechstronność i moc w jednej metodzie uczenia maszynowego i nie są szczególnie podatne ani na nadmierne, ani niedostateczne dopasowanie. Ponieważ algorytm budowania drzewa wykorzystuje tylko niewielka losowa cześć pełnego zbioru cech, lasy losowe mogą operować na ogromnych zbiorach danych , z którymi nie radzą sobie inne modele.

Zalety Wady
Uniwersalny model, który dobrze działa w większości zadań, łącznie z klasyfikacja i predykcja liczbowa W przeciwieństwie do drzew decyzyjnych model nie jest łatwo interpretowany
Radzi sobie z zaszumionymi i brakującymi danymi, a także z cechami kategorycznymi i ciągłymi Może mieć problem z cechami kategorycznymi o bardzo dużej liczbie poziomów
Wybiera tylko najważniejsze cechy Nie można go precyzyjne dostroić jeśli potrzebna jest wiesza trafność
Można używać go na danych o bardzo dużej liczbie cech bądź przykładów

Duża skuteczność w połączeniu z łatwością użycia sprawia że lasy losowe są doskonałym punktem wyjścia w rzeczywistych projektach uczenia maszynowego.

Wzmocnienie gradientowe

Wzmocnienie gradientowe (ang. gradient boosting) to rozwiniecie algorytmu wzmocnienia oparte na spostrzeżeniu, ze proces wzmacniania można traktować jako problem optymalizacji która da się rozwiązać technikami gradientu prostego. Słabe modele w zespole sa traktowane jako parametry do zoptymalizowania. Modele używające tej techniki sa nazywane maszynami wzmocnienia gradientowego (ang gradient boosting machines) lub uogólnionymi modelami wzmocnienia (ang generalized boosting models); obie angielskie nazwy skracają się do GBM.

Zalety Wady
Uniwersalny model, który dobrze działa w większości zadań łącznie z klasyfikacja i predykcja liczbowa Może wymagać dostrajania, aby dorównać trafności lasu losowemu i jeszcze intensywniejszego dostrajania żeby ja przewyższyć
Może osiągnąć jeszcze wyższa trafność niż lasy losowe Ponieważ istnieje kilka hiperparametrów do dostrojenia, znalezienie najlepszej kombinacji wymaga wielu iteracji dużej mocy obliczeniowej
Działa dobrze na dużych zbiorach danych

XGBoost Najnowoczśniejsza impelentacje techniki gradientowej można znależć w algorytmie XGBoost, który oferuje "ekstremalna" wersje wzmocnienia o poprawionej efektywnosci i trafności.

Ensemble methods

In machine learning, an ensemble method is a machine learning model that aggregates the predictions of individual models. Since ensemble methods combine the results of multiple models, they are less prone to error, and therefore tend to perform better.

Ensemble methods are generally classified into two types. The first type combines different machine learning models, such as scikit-learn's VotingClassifier, as chosen by the user. The second type of ensemble method combines many versions of the same model, as is the case with XGBoost and random forests. Random forests are among the most popular and widespread of all ensemble methods.

Although random forests use majority rules for classifiers, and the average of all models for regressors, they also use a special method called bagging, short for bootstrap aggregation, to select individual trees.

Bootstrap aggregation

Bootstrapping means sampling with replacement.

When it comes to random forests, bootstrapping works under the hood. The bootstrapping occurs when each decision tree is made. If the decision trees all consisted of the same samples, the trees would give similar predictions making the aggregate result similar to the individual tree. Instead, with random forests, the trees are built using bootstrapping, usually with the same number of samples as in the original dataset. Mathematical estimations are that two-thirds of the samples for each tree are unique, and one-third include duplicates.

After the bootstrapping phase of the model-build, each decision tree makes its own individual predictions. The result is a forest of trees whose predictions are aggregated into one final prediction using majority rules for classifiers and the average for regressors.

Random forest drawbacks

At the end of the day, the random forest is limited by its individual trees. If all trees make the same mistake, the random forest makes this mistake. There are scenarios, as is revealed in this case study before the data was shuffled, where random forests are unable to significantly improve upon errors due to challenges within the data that individual trees are unable to address.

An ensemble method capable of improving upon initial shortcomings, an ensemble method that will learn from the mistakes of trees in future rounds, could be advantageous. Boosting was designed to learn from the mistakes of trees in early rounds.

Boosting aggregation

Boosting, by contrast, learns from the mistakes of individual trees. The general idea is to adjust new trees based on the errors of previous trees.

In boosting, correcting errors for each new tree is a distinct approach from bagging. In a bagging model, new trees pay no attention to previous trees. Also, new trees are built from scratch using bootstrapping, and the final model aggregates all individual trees. In boosting, however, each new tree is built from the previous tree. The trees do not operate in isolation; instead, they are built on top of one another.

AdaBoost

AdaBoost is one of the earliest and most popular boosting models. In AdaBoost, each new tree adjusts its weights based on the errors of the previous trees. More attention is paid to predictions that went wrong by adjusting weights that affect those samples at a higher percentage. By learning from its mistakes, AdaBoost can transform weak learners into strong learners. A weak learner is a machine learning algorithm that barely performs better than chance. By contrast, a stronger learner has learned a considerable amount from data and performs quite well.

The general idea behind boosting algorithms is to transform weak learners into strong learners. A weak learner is hardly better than random guessing. But there is a purpose behind the weak start. Building on this general idea, boosting works by focusing on iterative error correction, not by establishing a strong baseline model. If the base model is too strong, the learning process is necessarily limited, thereby undermining the general strategy behind boosting models. Weak learners are transformed into strong learners through hundreds of iterations.
In this sense, a small edge goes a long way.

Distinguishing gradient boosting

Gradient boosting uses a different approach than AdaBoost. While gradient boosting also adjusts based on incorrect predictions, it takes this idea one step further: gradient boosting fits each new tree entirely based on the errors of the previous tree's predictions. That is, for each new tree, gradient boosting looks at the mistakes and then builds a new tree completely around these mistakes. The new tree doesn't care about the predictions that are already correct. Building a machine learning algorithm that solely focuses on the errors requires a comprehensive method that sums errors to make accurate final predictions. This method leverages residuals, the difference between the model's predictions and actual values.

Residuals

The residuals are the difference between the errors and the predictions of a given model. In statistics, residuals are commonly analyzed to determine how good a given linear regression model fits the data. The goal of linear regression is to minimize the square of the residuals.

Base learner

The initial decision tree in the gradient boosting regressor is called the base learner because it's at the base of the ensemble. It's the first learner in the process. The term learner here is indicative of a weak learner transforming into a strong learner.

XGBoost

XGBoost is an advanced version of gradient boosting with the same general structure, meaning that it transforms weak learners into strong learners by summing the residuals
of trees.