Obciążenie a wariancja – złoty środek w uczeniu modelu (bias-variance tradeoff)

W tym artykule opowiemy sobie o jednym z głównych problemów nadzorowanego uczenia maszynowego, którym jest znalezienie kompromisu pomiędzy redukcją obciążenia a redukcją wariancji w modelowaniu (ang. bias-variance tradeoff).

Bias-variance tradeoff

W uczeniu nadzorowanym algorytm opracowuje model na podstawie danych treningowych. Generalnie, celem każdego z algorytmów uczenia nadzorowanego jest znalezienie takiej funkcji f, która dane wejściowe X (czyli na przykład wektor cech – jakaś waga, wzrost i długość włosów) przyporządkowuje jak najlepiej do odpowiedniej wartości wyjściowej Y (czyli przykładowo kategorii – „kobieta”). Taka funkcja w praktyce nie będzie dawać nam jednak idealnych predykcji (prawidłowo przewidywać wartości Y dla każdego z wejść X) i będzie popełniać błędy. Błąd, który popełnia model można zdekomponować na 3 składniki:

  • obciążenie (ang. bias)
  • wariancja (ang. variance)
  • błąd nieredukowalny (ang. irreducible error)

Błąd nieredukowalny, jak sama nazwa wskazuje nie może być zredukowany. Jest on spowodowany samym ujęciem problemu i mogą mieć na niego wpływ czynniki takie jak na przykład nieznane zmienne. Skupmy się zatem na składnikach błędu w uczeniu maszynowym, na które możemy mieć wpływ.

Obciążenie (bias)

Modele uczenia maszynowego generalnie działają na pewnych założeniach. Im założenia naszego modelu są prostsze, tym obciążenie naszego modelu jest większe. Im założenie są bardziej skomplikowane, a model bardziej dopasowany do danych treningowych, tym obciążenie jest niższe.

Model uczenia maszynowego, który radzi sobie świetnie w środowisku, w którym jest trenowany – ma niskie obciążenie. Niekoniecznie jednak musi radzić on sobie równie dobrze w nieznajomym środowisku. Jeżeli model uzyskuje znacznie gorsze wyniki na danych treningowych, niż na danych testowych – oznacza to że jest on przetrenowany. Jest to wskazówka, że w modelu znajduje się zbyt wiele szczegółów i jest on za bardzo dopasowany do danych treningowych. Oznacza to, że jego wariancja jest wysoka.

Wariancja (variance)

Wariancja jest to wielkość, która mówi nam o tym jak dobrze nasz model szacuje zmienną celu w przypadku użycia innego zbioru testowego. Innymi słowy, wielkość ta opisuje jak dobrze nasz model uchwycił ukryte wzorce w danych i w jakim stopniu jest w stanie przenosić je na inne zbiory danych (nazywamy to generalizacją). Duża wariancja oznacza, że model słabiej radzi sobie w nieznanym środowisku. Najlepiej jeżeli dokładność modelu nie różni się znacząco pomiędzy zbiorem treningowym, a różnymi zbiorami testowymi.

Kompromis

Problem utworzenia modelu o odpowiednim stopniu generalizacji wyrażany jest poprzez kompromis pomiędzy obciążeniem a wariancją. Przedstawia go poniższy rysunek.

źródło: https://pl.wikipedia.org

Widzimy, że wraz z coraz większą złożonością modelu spada jego obciążenie (model staje się coraz bardziej dopasowany do danych treningowych i popełnia coraz mniejszy błąd na nich), jednak rośnie jego wariancja (model jest zbytnio przystosowany do danych treningowych, więc traci niejako możliwość generalizacji i słabiej radzi sobie na innych danych). Kiedy zmniejszamy błąd, zwiększamy wariancję i vice versa. Kluczem jest tutaj odnalezienie punktu, w którym wartości te będą optymalne dla problemu, który modelujemy (z reguły chcemy, aby różnice w dokładności naszego predyktora pomiędzy poszczególnymi zbiorami danych były jak najmniejsze).

Jak poradzić sobie z problemem?

W celu poszukiwania złotego środka pomocne okażą się metody takie jak: regularyzacja https://belgradesaxperience.com/lettera-o/index.html , uczenie zespołowe (bagging i bootstrap), czy też walidacja krzyżowa. Więcej o tych metodach znajdziecie w innych artykułach, zostańcie z nami!

Referencje

  • Jason Brownlee ’Machine Learning Mastery’, 2016
  • Imran Ahmad, ’40 Algorithms Every Programmer Should Know’, 2020

Dodaj komentarz