Łączenie modeli uczenia maszynowego

20

Jestem trochę nowy w analizie danych / uczeniu maszynowym / itp. i czytałem o kilku sposobach łączenia wielu modeli i serii tego samego modelu w celu poprawy prognoz.

Mam wrażenie, że po przeczytaniu kilku artykułów (często interesujących i świetnych z teorii i liter greckich, ale bez kodu i faktycznych przykładów) mam wrażenie, że powinno wyglądać tak:

Biorę model ( knn, RFitp.) I otrzymuję listę klasyfikatorów od 0 do 1. Moje pytanie brzmi: jak połączyć każdą z tych list klasyfikatorów? Czy korzystam z tych samych modeli w zestawie treningowym, aby liczba kolumn wchodzących do ostatecznego modelu była taka sama, czy jest jakiś inny sposób?

Byłoby wspaniale, gdyby jakieś sugestie / przykłady zawierały kod R.

UWAGA: Dotyczy to zestawu danych w / 100 tys. Linii w zestawie szkoleniowym i 70 tys. W zestawie testowym i 10 kolumnach.

screechOwl
źródło

Odpowiedzi:

21

W rzeczywistości sprowadza się do jednej z technik „3B”: workowania, wzmacniania lub miksowania.

W workowaniu trenujesz wielu klasyfikatorów na różnych podzbiorach obiektów i łączysz odpowiedzi według średniej dla regresji i głosowania na klasyfikację (istnieją inne opcje dla bardziej złożonych sytuacji, ale pominę ją). Proporcja / wariancja głosowania może być interpretowana jako przybliżenie błędu, ponieważ poszczególne klasyfikatory są zwykle uważane za niezależne. RF to tak naprawdę zespół do pakowania.

Wzmocnienie jest szerszą rodziną metod, jednak ich głównym punktem jest to, że budujesz następny klasyfikator na podstawie pozostałości tego pierwszego, w ten sposób (teoretycznie) stopniowo zwiększając dokładność poprzez podkreślanie coraz bardziej subtelnych interakcji. Prognozy są więc zwykle łączone przez zsumowanie ich, coś w rodzaju obliczenia wartości funkcji w x przez zsumowanie wartości elementów jej szeregu Taylora dla x.
Najpopularniejsze wersje to (Stochastic) Gradient Boosting (z ładnymi podstawami matematycznymi) i AdaBoost (dobrze znany, w rzeczywistości konkretny przypadek GB). Z holistycznego punktu widzenia drzewo decyzyjne stanowi wzmocnienie trywialnych klasyfikatorów przestawnych.

Mieszanie to pomysł na zagnieżdżanie klasyfikatorów, tj. Uruchamianie jednego klasyfikatora w systemie informatycznym opartym na prognozach innych klasyfikatorów. W związku z tym jest to bardzo zmienna metoda, a na pewno nie zdefiniowany algorytm; może wymagać wielu obiektów (w większości przypadków klasyfikator „blendera” musi zostać przeszkolony na zestawie obiektów, które nie zostały użyte do zbudowania częściowych klasyfikatorów, aby uniknąć kłopotliwego dopasowania).
Prognozy częściowych klasyfikatorów są oczywiście łączone poprzez połączenie ich w system informacyjny przewidziany przez mikser.


źródło
7

Wyrażenie „łączenie modeli” jest niejasne, ale domyślam się, że pytasz o metody uczenia się w zespole. Najlepszym odniesieniem do zapoznania się z nimi są być może dokumenty Rich Caruana:

http://www.cs.cornell.edu/~caruana/ctp/ct.papers/caruana.icml04.icdm06long.pdf

W tym artykule nie ma rzeczywistego kodu, ale algorytm jest jasno opisany, więc nie powinno być problemu z kodowaniem go w dowolnym preferowanym języku.

użytkownik765195
źródło
2

Po rozejrzeniu się za pomocą powyższych odpowiedzi zdałem sobie sprawę, na czym polega mój problem. Próbowałem użyć prognoz innych modeli w tym samym modelu, który wykorzystano do ich przewidzenia. Innymi słowy, gdybym miał 5 zmiennych, kiedy uruchomiłem kNNmodel, dodałbym nową zmienną z przewidywaniami kNNmodelu i stworzyłem model z 6 zmiennymi, kiedy uruchomiłem losowy model Forest. Odkryłem, że zamiast tego wyniki z modeli należy podzielić na segmenty i uruchomić jako osobny model. Więc będę tworzyć prognozy z różnych modeli ( knn, RF, svd, itd), a następnie uruchomić oddzielny łącząc / mieszania / model układania używając tylko przewidywania jak zmienne i klasyfikacje, co do przewidzenia.

Myślę, że niektóre z moich problemów polegały na tym, że łącząc prognozy z innymi zmiennymi, mogły wystąpić pewne nadmierne dopasowanie lub wielokoliniowość, ale nie jestem pewien. Ktoś inny mógłby lepiej zrozumieć, co robiłem źle. W każdym razie dziękuję wszystkim za pomoc.

screechOwl
źródło