Underfitting i Overfitting w uczeniu maszynowym

Wierzcie lub nie, w prawdziwym świecie nigdy nie będziemy mieli czystego i doskonałego zbioru danych. Każdy zbiór danych będzie miał jakieś dziwne lub brakujące części lub niezrównoważone dane. Albo my, jako programiści uczenia maszynowego, wprowadzimy jakieś błędy lub niedociągnięcia do naszego modelu. Jednym z głównych powodów takiego stanu rzeczy jest to, że chcemy, aby nasz model był w stanie opisać ukryty wzorzec. Niestety natura prawdziwych danych jest to, że pochodzi z pewnym poziomem szumu i wartości odstających, a w przeważającej części chcemy, aby model uchwycić sygnał w danych, a nie hałas.

Teraz, aby uchwycić podstawowy wzór w danych dokładnie, model może mieć do włączenia hałasu. Implikacją jest to, że model pochodny dobrze pasuje do danych modelowania, ale nie generalizuje wystarczająco dobrze do innych próbek, które nie zostały uwzględnione w procesie modelowania.

Istnieje terminologia opisująca, jak dobrze model uczenia maszynowego uczy się i generalizuje do nowych danych, jest to przepasowanie i niedopasowanie. Celem dobrego modelu uczenia maszynowego jest dobre uogólnienie ze zbioru danych szkoleniowych na dowolny zbiór danych z dziedziny, której dotyczy problem. To pozwala nam dokonywać przewidywań na podstawie zbioru danych, którego model nigdy nie widział.

W statystyce dopasowanie jest określane jako, jak blisko twój model jest do klasy docelowej / funkcji / wartości. Overfitting i underfitting są dwiema największymi przyczynami słabej wydajności algorytmów uczenia maszynowego lub modeli.

Zrozummy, co to jest Best Fit, Overfitting i Underfitting? Poniżej znajduje się kilka kodów.

Co to jest Overfitting & Underfitting?

Overfitting odnosi się do scenariusza, w którym model uczenia maszynowego nie może generalizować lub dopasować dobrze na niewidzianym zbiorze danych. Wyraźnym znakiem przepasowania uczenia maszynowego jest to, że jego błąd na zbiorze danych testowych lub walidacyjnych jest znacznie większy niż błąd na zbiorze danych treningowych.

Overfitting jest terminem używanym w statystyce, który odnosi się do błędu modelowania, który występuje, gdy funkcja odpowiada zbyt blisko zbioru danych. W rezultacie, overfitting może nie pasować do dodatkowych danych, a to może wpłynąć na dokładność przewidywania przyszłych obserwacji.

Overfitting zdarza się, gdy model uczy się szczegółów i szumu w zestawie danych szkoleniowych w stopniu, który negatywnie wpływa na wydajność modelu na nowym zestawie danych. Oznacza to, że szum lub przypadkowe fluktuacje w zestawie danych szkoleniowych są odbierane i uczone przez model jako pojęcia. Problem polega na tym, że te koncepcje nie mają zastosowania do nowych zbiorów danych i negatywnie wpływają na zdolność modelu do generalizacji.

Przeciwieństwem przepasowania jest niedopasowanie.

Niedostosowanie odnosi się do modelu, który nie może ani modelować zbioru danych szkoleniowych, ani generalizować do nowych zbiorów danych. Niedopasowany model uczenia maszynowego nie jest odpowiednim modelem i będzie oczywisty, ponieważ będzie miał słabą wydajność na zbiorze danych szkoleniowych.

Niedostosowanie często nie jest omawiane, ponieważ jest łatwe do wykrycia, biorąc pod uwagę dobrą metrykę wydajności.

Understanding it with Examples

Przykład 1:

Powiedzmy, że trzech studentów przygotowało się do egzaminu z matematyki.

Pierwszy student studiował tylko operacje matematyczne dodawania i pomijał inne operacje matematyczne, takie jak odejmowanie, dzielenie, mnożenie itp.

Drugi student ma szczególnie dobrą pamięć. Tak więc, drugi uczeń zapamiętał wszystkie problemy przedstawione w podręczniku.

A trzeci uczeń studiował wszystkie operacje matematyczne i jest dobrze przygotowany do egzaminu.

W egzaminie student jeden będzie w stanie rozwiązać tylko pytania związane z Dodawanie i nie uda się w problemach lub pytania zadawane związane z innymi operacjami matematycznymi.

Student drugi będzie w stanie odpowiedzieć na pytania tylko wtedy, gdy pojawią się one w podręczniku (ponieważ zapamiętał go) i nie będzie w stanie odpowiedzieć na żadne inne pytania.

Student trzeci będzie w stanie w miarę dobrze rozwiązać wszystkie problemy egzaminacyjne.

Algorytmy uczenia maszynowego zachowują się podobnie do naszych trzech studentów, czasami model wygenerowany przez algorytm jest podobny do studenta pierwszego. Uczą się one tylko z niewielkiej części zbioru danych treningowych, w takich przypadkach model jest niedopasowany (Underfitting).

Czasami model zapamiętuje cały zbiór danych treningowych, jak w przypadku drugiego studenta. Wykonują one bardzo dobrze na znanych instancjach, ale źle wypadają na niewidzianych danych lub nieznanych instancjach. W takich przypadkach mówi się, że model jest przepasowany (Overfitting).

And when model does well in both the training dataset and on the unseen data or unknown instances like student three, it is a good fit.

Example 2:

Miejmy inny przykład i rozważmy, że odwiedziłeś miasto „X” i wziąłeś przejażdżkę w taksówce. Po rozmowie z przyjaciółmi, później zdajesz sobie sprawę, że taksówkarz obciążył cię dwa lub trzy razy więcej niż wynosi standardowa opłata. Zdarzyło się to, ponieważ byłeś nowy w mieście i kierowca dosłownie wziął cię na przejażdżkę.

Ponadto, kupiłeś kilka rzeczy od ulicznego sprzedawcy, a ty znowu skończyłeś płacąc więcej niż były warte. W końcu zdecydowałeś, że ludzie w mieście „X” są nieuczciwi. Co jest ludzką cechą, ludzie często generalizują. Modele uczenia maszynowego również mają tę słabość, jeśli nie jesteśmy ostrożni, aby uniknąć stronniczości podczas etapów rozwoju: modelowania, wyboru algorytmów, cech, zbioru danych treningowych itp.

Załóżmy, że w tym samym mieście „X” inny taksówkarz naliczył ci rozsądnie i zgodnie z licznikiem, ale na podstawie doświadczenia uważasz, że ten kierowca również naliczył więcej. To się nazywa Overfitting.

Z powyższych dwóch przykładów możemy powiedzieć, że jeśli model wykonuje dobrze na teście lub unseen dataset to jest to najlepsze dopasowanie lub dobry model. A jeśli nie radzi sobie dobrze na zbiorze testowym lub niewidzianym, ale radzi sobie dobrze na zbiorze treningowym, to jest to model Overfit. A każdy model, który nie wypadł dobrze ani na zbiorze danych treningowych, ani na zbiorze danych testowych jest modelem niedostosowanym (Underfit).

Następnie zobaczymy przykład z kodem Pythona.

Przykład 3:

Ten przykład demonstruje problemy niedopasowania i przepasowania oraz jak możemy użyć regresji liniowej z cechami wielomianowymi do aproksymacji funkcji nieliniowych.

Zgenerujmy dwie zmienne powiedzmy X i y. X będzie miał jakąś losową liczbę / próbkę, gdzie jako y jest częścią funkcji cosinus.

Na podstawie danych wykres będzie wyglądał jak… proste wykreślenie X i y.

Wytrenujmy nasz model używając Regresji Liniowej, prognozujmy i wizualizujmy go.

Wizualizujmy przewidywany model.

Widzimy, że linia prosta nie jest w stanie uchwycić wzorców w danych. Jest to przykład niedostatecznego dopasowania. Błąd będzie ogromny w tym modelu.

Rozważmy funkcję wielomianową z pewnymi stopniami i wytrenujmy nasz model.

Widzimy, że funkcja liniowa (wielomian ze stopniem 1) nie jest wystarczająca do dopasowania próbek treningowych. To się nazywa underfitting.

Wielomian stopnia 4 aproksymuje prawdziwą funkcję prawie idealnie. Nazywa się to Best Fit lub Good Model.

Jednakże dla wyższych stopni (ze stopniem 15) model będzie nadmiernie dopasowany do zbioru danych szkoleniowych, tj. uczy się szumu danych szkoleniowych.

Oceniamy ilościowo overfitting / underfitting za pomocą walidacji krzyżowej.

Obliczamy również średni błąd kwadratowy (MSE) na zbiorze danych walidacyjnych, im wyższy tym mniej prawdopodobne, że model generalizuje poprawnie ze zbioru danych szkoleniowych.

Pełny kod może być odniesiony do
https://colab.research.google.com/drive/1XzngJPT8WUyHFW-JxhrawVhPurJlv1cA?usp=sharing

Detecting Overfitting or Underfitting

Kluczowym wyzwaniem jest wykrycie jakiegokolwiek rodzaju dopasowania (czy to niedostosowania, czy najlepszego dopasowania lub przepasowania), jest prawie niemożliwe przed przetestowaniem danych. Może to pomóc w rozwiązaniu nieodłącznej charakterystyki overfitting, która jest niezdolnością do uogólnienia zbioru danych. Dane mogą być zatem podzielone na różne podzbiory, aby ułatwić szkolenie i testowanie. Dane są podzielone na dwie główne części, tj. zbiór danych testowych i zbiór danych szkoleniowych.

Technika podziału może się różnić w zależności od rodzaju zbioru danych i można użyć dowolnej techniki podziału.

Jeśli nasz model radzi sobie znacznie lepiej na zbiorze danych szkoleniowych niż na zbiorze danych testowych, to prawdopodobnie jesteśmy nadmiernie dopasowani Na przykład, nasz model wykonał z dokładnością 99% na zbiorze danych szkoleniowych, ale tylko 50-55% dokładności na zbiorze danych testowych. To jest Overfitting modelu i nie wykonał dobrze na unseen dataset.

Jeśli nasz model robi znacznie lepiej na zbiorze danych testowych niż na zbiorze danych szkoleniowych, wtedy jesteśmy prawdopodobnie underfitting.

And jeśli nasz model robi dobrze na obu zbiorach danych szkoleniowych i testowych, wtedy mamy najlepsze dopasowanie. Na przykład, nasz model osiągnął 90% dokładności na zestawie danych szkoleniowych i osiąga 88% – 92% dokładności na zestawie danych testowych. Jest to najlepiej dopasowany model.

Innym prostym sposobem na wykrycie tego jest użycie walidacji krzyżowej. To próba zbadania wyszkolonego modelu z nowym zestawem danych, aby sprawdzić jego dokładność predykcyjną. Biorąc pod uwagę zbiór danych, pewna jego część jest wstrzymywana (powiedzmy 30%), podczas gdy reszta jest używana do szkolenia modelu. Po wytrenowaniu modelu, zarezerwowane dane są następnie wykorzystywane do sprawdzenia dokładności modelu w porównaniu z dokładnością uzyskaną z danych użytych w treningu. Znacząca różnica w tych dwóch flagach overfitting.

How to Prevent Overfitting or Underfitting

Detecting overfitting or underfitting jest użyteczne, ale nie rozwiązuje problemu. Na szczęście, masz kilka opcji do wypróbowania. Oto kilka najbardziej popularnych rozwiązań.

Receptą na Underfitting, jest przejście dalej i wypróbowanie alternatywnych algorytmów uczenia maszynowego. Niemniej jednak, stanowi to dobry kontrast do problemu nadmiernego dopasowania.

Aby zapobiec nadmiernemu dopasowaniu, istnieją różne sposoby, a kilka z nich jest pokazanych poniżej.

  • Walidacja krzyżowa:
    • Walidacja krzyżowa jest potężnym środkiem zapobiegawczym przeciwko nadmiernemu dopasowaniu.
    • Użyj początkowych danych treningowych do wygenerowania wielu mini podziałów trening-test. Użyj tych podziałów, aby dostroić swój model.
    • W standardowej walidacji krzyżowej k-krotnej, dzielimy dane na k podzbiorów, zwanych fałdami. Następnie, iteracyjnie trenujemy algorytm na k-1 podzbiorach, używając pozostałego podzbioru jako zbioru testowego (zwanego „podzbiorem zatrzymanym”).
    • Walidacja krzyżowa pozwala na dostrojenie hiperparametrów przy użyciu tylko oryginalnego zbioru danych treningowych. Pozwala to na zachowanie testowego zbioru danych jako prawdziwie niewidzianego zbioru danych do wyboru ostatecznego modelu.
  • Trenuj z większą ilością danych
    • Nie będzie to działać za każdym razem, ale trening z większą ilością danych może pomóc algorytmom lepiej wykrywać sygnał.
    • Jak użytkownik podaje więcej danych treningowych do modelu, nie będzie on w stanie dopasować wszystkich próbek i będzie zmuszony do generalizacji, aby uzyskać wyniki.
    • Użytkownicy powinni stale zbierać więcej danych jako sposób na zwiększenie dokładności modelu.
    • Jednakże metoda ta jest uważana za kosztowną, dlatego użytkownicy powinni upewnić się, że używane dane są istotne i czyste.
    • Oczywiście, nie zawsze tak jest. Jeśli po prostu dodamy więcej hałaśliwych danych, ta technika nie pomoże. Dlatego należy zawsze upewnić się, że dane są czyste i istotne.
  • Powiększanie danych
    • Alternatywą dla treningu z większą ilością danych jest powiększanie danych, które jest mniej kosztowne w porównaniu z pierwszym rozwiązaniem.
    • Jeśli nie jesteś w stanie stale zbierać większej ilości danych, możesz sprawić, że dostępne zestawy danych będą wydawać się różnorodne.
    • Powiększanie danych sprawia, że próbka danych wygląda nieco inaczej za każdym razem, gdy jest przetwarzana przez model. Proces ten sprawia, że każdy zestaw danych wydaje się unikalny dla modelu i uniemożliwia modelowi uczenie się charakterystyk zestawów danych.
  • Reduce Complexity or Data Simplification
    • Overfitting może wystąpić z powodu złożoności modelu, takiej, że nawet przy dużej ilości danych, modelowi nadal udaje się przepasować zbiór danych szkoleniowych.
    • Metoda upraszczania danych jest stosowana w celu zmniejszenia nadmiernego dopasowania poprzez zmniejszenie złożoności modelu, aby uczynić go na tyle prostym, że nie będzie on nadmiernie dopasowany.
    • Niektóre z działań, które można wdrożyć, obejmują przycinanie drzewa decyzyjnego, zmniejszanie liczby parametrów w sieciach neuronowych i stosowanie dropoutu w sieciach neuronowych.
    • Uproszczenie modelu może również sprawić, że model będzie lżejszy i będzie działał szybciej.
  • Regularyzacja
    • Regularyzacja odnosi się do szerokiego zakresu technik sztucznego wymuszania prostoty modelu.
    • Metoda będzie zależała od typu uczącego, którego używasz. Na przykład, możesz przyciąć drzewo decyzyjne, użyć wyrzucania w sieci neuronowej lub dodać parametr kary do funkcji kosztu w regresji.
    • Często metoda regularyzacji jest również hiperparametrem, co oznacza, że może być dostrojona poprzez walidację krzyżową.
    • Aby dowiedzieć się więcej o regularizacji, zapoznaj się z artykułem https://datascience.foundation/datatalk/regularization-machine-learning-teacher napisanym i bardzo dobrze wyjaśnionym przez Abhishek Mishra.
  • Ensembling
    • Ensembling to metody uczenia maszynowego do łączenia przewidywań z wielu oddzielnych modeli. Istnieje kilka różnych metod dla ensemblingu, ale dwie najbardziej powszechne to: Boosting i Bagging.
    • Boosting działa poprzez użycie prostych modeli bazowych w celu zwiększenia ich zagregowanej złożoności. Trenuje dużą liczbę słabych uczących ułożonych w sekwencję, w taki sposób, że każdy uczący w sekwencji uczy się na błędach uczącego przed nim.
    • Boosting próbuje poprawić elastyczność predykcyjną prostych modeli.
    • Boosting łączy wszystkie słabe uczące w sekwencji, aby uzyskać jeden silny uczący.
    • Bagging działa poprzez trenowanie wielu silnych uczących ułożonych w równoległy wzór, a następnie łączenie ich w celu optymalizacji ich predykcji.
    • Bagging próbuje zmniejszyć szansę na przepasowanie złożonych modeli.
    • Bagging następnie łączy wszystkie silne uczące razem, aby „wygładzić” ich przewidywania.
  • Wczesne zatrzymanie
    • Gdy trenujesz algorytm uczący iteracyjnie, możesz zmierzyć, jak dobrze działa każda iteracja modelu.
    • Do pewnej liczby iteracji, nowe iteracje poprawiają model. Po przekroczeniu tego punktu zdolność modelu do generalizacji może jednak słabnąć, ponieważ zaczyna on nadmiernie dopasowywać dane szkoleniowe.
    • Wczesne zatrzymanie odnosi się do zatrzymania procesu szkolenia, zanim uczeń przekroczy ten punkt.
    • Dzisiaj ta technika jest najczęściej stosowana w głębokim uczeniu, podczas gdy inne techniki (np. regularization) są preferowane w klasycznym uczeniu maszynowym.
  • Trzeba dodać regularizację w przypadku modeli liniowych i SVM.
  • W modelach drzew decyzyjnych można zmniejszyć maksymalną głębokość.
  • W sieciach neuronowych można wprowadzić warstwę dropout, aby zmniejszyć przepasowanie.

Szybkie podsumowanie

Overfitting jest błędem modelowania, który wprowadza stronniczość do modelu, ponieważ jest on zbyt blisko związany ze zbiorem danych.

Overfitting sprawia, że model jest istotny tylko dla swojego zbioru danych i nieistotny dla żadnych innych zbiorów danych.

Niektóre z metod stosowanych w celu zapobiegania overfittingowi obejmują ensembling, powiększanie danych, upraszczanie danych i walidację krzyżową.

.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.