Przez całe dane rozumiem pociąg + test + walidacja
Po poprawieniu hiperparametru przy użyciu danych sprawdzania poprawności i wybraniu modelu przy użyciu danych testowych, czy nie lepiej byłoby, aby model został wyszkolony na całych danych, tak aby parametry były lepiej wyszkolone, niż model wyuczony na dane pociągu
machine-learning
Apoorva Abhishekh
źródło
źródło
Odpowiedzi:
Pytanie jest błędne. Wiele osób robi to, co mówisz, że „nie może”.
W rzeczywistości implementacja wyszukiwania siatki w szeroko wdrażanym pakiecie sklearn właśnie to robi. Chyba
refit=False
że przekwalifikuje ostateczny model z wykorzystaniem całych danych.Myślę, że w przypadku niektórych hiperparametrów może to nie być bardzo pożądane, ponieważ są one względne w stosunku do ilości danych. Rozważmy na przykład
min_samples_leaf
taktykę wstępnego przycinania drzewa decyzyjnego . Jeśli masz więcej danych, wstępne przycinanie może nie działać tak, jak chcesz.Ale znowu, większość ludzi w rzeczywistości przekwalifikowuje się, wykorzystując całe dane po weryfikacji krzyżowej, aby uzyskać najlepszy możliwy model.
Dodatek: @NeilSlater mówi poniżej, że niektóre osoby powstrzymują się przed CV. Innymi słowy, dzielą test na pociąg, a następnie dokonują wyboru modelu podczas szkolenia. Według niego, ponownie trenują, używając oryginalnego zestawu treningowego podzielonego, ale nie zestawu testowego. Zestaw testowy jest następnie wykorzystywany do ostatecznego oszacowania modelu. Osobiście widzę w tym trzy wady: (a) nie rozwiązuje problemu, o którym wspomniałem, ponieważ niektóre hiperparametry zależą od wielkości treningu, ponieważ i tak trenujesz ponownie, (b) podczas testowania wielu modeli wolę bardziej wyrafinowane metody takie jak zagnieżdżona weryfikacja krzyżowa, aby żadne dane nie zostały zmarnowane, oraz (c) wstrzymanie jest okropną metodą wnioskowania o tym, jak model uogólni się, gdy będzie mało danych.
źródło
refit
opcja funkcji GridSearchCV. Nie dostosowuje się ponownie do uwzględnienia danych testowych (nawet nie widzi tych danych).Tak, możesz.
Ponieważ dane testowe powinny pochodzić z podobnej dystrybucji do danych pociągu, nie zepsujesz swojego modelu. Jeśli odpowiednio przeszkoliłeś model, nie zauważysz żadnej znaczącej zmiany (oprócz lepszej metryki dokładności w stosunku do poprzednich danych testu / walidacji).
Jednak rzadko jest prawdą, że dane testowe pochodzą z dokładnie tej samej dystrybucji co dane pociągu, więc w prawdziwym scenariuszu przypadku zastosowania można uzyskać lepszą uogólnienie modelu.
źródło
Odpowiedź na to pytanie zależy od używanego algorytmu szkoleniowego (technologii). Na przykład widziałem pewne podejścia w klasyfikacji zespołów, w których zestawy szkoleniowe i walidacyjne (ale nie testowe) są na końcu łączone. Bardzo ważne jest, aby wiedzieć, że nawet walidacja jest wykorzystywana głównie do decydowania o hiperparametrach, niektóre z tych hiperparametrów mogą być funkcją wykorzystanych danych do treningu. Na przykład w walidacji DNN używanej do tego, by wiedzieć, kiedy przestać, ponieważ nadmierne dopasowanie może się zdarzyć w wyniku ciągłego dostrajania parametrów (wag) sieci, potrzebujemy sposobu, aby wiedzieć, kiedy przestać. Bez zestawu walidacyjnego będziesz chodził ślepo podczas treningu. Z drugiej strony, jeśli użyjesz dokładnie takiej samej liczby iteracji, jak określono wcześniej, istnieje wysoki problem, którego nie zyskasz na tych dodatkowych próbkach. Zestaw testowy w ogóle nie powinien być dotykany, jak wskazano powyżej, bez zestawu testowego nie będziesz miał metody oceny swojego modelu. To hazard, NIE MOŻESZ dostarczyć żadnego modelu ani rozwiązania bez oszacowania jego dokładności na prawdziwym rozkładzie danych (który reprezentują dane testowe).
źródło