Alul- és túlillesztés a gépi tanulásban
Hiszed vagy sem, a való világban soha nem lesz tiszta és tökéletes adathalmazunk. Minden adatkészletben lesz néhány furcsa vagy hiányzó rész vagy kiegyensúlyozatlan adat. Vagy mi, a gépi tanulás fejlesztői be fogunk vezetni néhány hibát vagy hiányosságot a modellünkbe. Ennek egyik fő oka az, hogy azt akarjuk, hogy a modellünk képes legyen leírni egy mögöttes mintát. Sajnos a valós adatok természete az, hogy bizonyos szintű zajjal és kiugró értékekkel rendelkeznek, és a legtöbb esetben azt szeretnénk, ha a modell az adatokban lévő jelet ragadná meg, és nem a zajt.
Az adatok mögöttes mintázatának pontos megragadásához a modellnek esetleg be kell építenie a zajt. Ennek az a következménye, hogy a levezetett modell jól illeszkedik a modellezési adatokhoz, de nem általánosít elég jól más mintákra, amelyeket nem vontunk be a modellezési folyamatba.
Létezik egy terminológia annak leírására, hogy egy gépi tanulási modell mennyire jól tanul és általánosít új adatokra, ez a túlillesztés és az alulillesztés. A jó gépi tanulási modell célja, hogy jól általánosítson a képzési adathalmazról a problématerület bármely adathalmazára. Ez lehetővé teszi, hogy olyan adathalmaz alapján készítsünk előrejelzéseket, amelyet a modell még soha nem látott.
A statisztikában az illeszkedést úgy nevezik, hogy a modell mennyire áll közel a célosztályhoz / funkcióhoz / értékhez. A túlillesztés és az alulillesztés a gépi tanulási algoritmusok vagy modellek gyenge teljesítményének két legnagyobb oka.
Magyarázzuk el, mi a legjobb illeszkedés, a túlillesztés és az alulillesztés? Ezt követi néhány kód.
Mi a túlillesztés & alulillesztés?
A túlillesztés arra a forgatókönyvre utal, amikor egy gépi tanulási modell nem tud jól általánosítani vagy illeszkedni a nem látott adathalmazra. A gépi tanulás túlillesztésének egyértelmű jele, ha hibája a tesztelési vagy validálási adathalmazon sokkal nagyobb, mint a képzési adathalmazon mért hiba.
A túlillesztés a statisztikában használt kifejezés, amely egy olyan modellezési hibára utal, amely akkor fordul elő, amikor egy függvény túlságosan jól megfelel egy adathalmaznak. Ennek eredményeképpen a túlillesztés további adatokhoz nem tud illeszkedni, és ez befolyásolhatja a jövőbeli megfigyelések előrejelzésének pontosságát.
A túlillesztés akkor következik be, amikor egy modell olyan mértékben megtanulja a részleteket és a zajt a képzési adathalmazban, hogy az negatívan befolyásolja a modell teljesítményét egy új adathalmazon. Ez azt jelenti, hogy a zaj vagy a véletlenszerű ingadozások a képzési adathalmazban a modell felveszi és fogalomként tanulja meg. A probléma az, hogy ezek a fogalmak nem alkalmazhatók az új adathalmazokra, és negatívan befolyásolják a modell általánosítási képességét.
A túlillesztés ellentéte az alulillesztés.
Az alulillesztés olyan modellre utal, amely nem képes sem a képzési adathalmazt modellezni, sem új adathalmazokra általánosítani. Egy alulilleszkedő gépi tanulási modell nem megfelelő modell, és nyilvánvaló lesz, mivel gyenge teljesítményt nyújt a képzési adathalmazon.
Az alulilleszkedésről gyakran nem esik szó, mivel egy jó teljesítménymetrika esetén könnyen felismerhető.
Megértés példákkal
1. példa:
Tegyük fel, hogy három diák készült egy matematikavizsgára.
Az első diák csak az összeadás matematikai műveleteket tanulta, és kihagyta a többi matematikai műveletet, például a kivonást, osztást, szorzást stb.
A második diáknak különösen jó a memóriája. Így a második tanuló megjegyezte a tankönyvben bemutatott összes feladatot.
A harmadik tanuló pedig az összes matematikai műveletet megtanulta, és jól felkészült a vizsgára.
A vizsgán az egyik tanuló csak az összeadással kapcsolatos kérdéseket fogja tudni megoldani, és megbukik a többi matematikai művelettel kapcsolatban feltett problémákon vagy kérdéseken.
A kettes tanuló csak azokra a kérdésekre fog tudni válaszolni, amelyek történetesen a tankönyvben szerepelnek (mivel bemagolta azt), és más kérdésekre nem fog tudni válaszolni.
A hármas tanuló minden vizsgafeladatot elfogadhatóan meg tud oldani.
A gépi tanuló algoritmusok hasonlóan viselkednek, mint a három diákunk, néha az algoritmus által generált modell hasonló az első diákéhoz. A gyakorló adathalmaznak csak egy kis részéből tanulnak, ilyen esetekben a modell Underfitting.
Máskor a modell a teljes gyakorló adathalmazt megjegyzi, mint a második diák. Ismert példányokon nagyon jól teljesítenek, de a nem látott adatokon vagy ismeretlen példányokon rosszul hibáznak. Ilyen esetekben a modellről azt mondjuk, hogy túlilleszkedik.
Amikor pedig a modell mind a képzési adathalmazon, mind a nem látott adatokon vagy ismeretlen példányokon jól teljesít, mint a hármas diák, akkor jó illeszkedésről van szó.
2. példa:
Legyen egy másik példa, és tekintsük úgy, hogy Ön ellátogatott egy “X” városba, és taxival utazott. A barátaival beszélgetve később rájön, hogy a taxisofőr a szokásos viteldíj kétszer-háromszorosát számlázta ki Önnek. Ez azért történt, mert Ön új volt a városban, és a sofőr szó szerint átverte Önt.
Még vásárolt néhány dolgot egy utcai árustól, és végül ismét többet fizetett, mint amennyit ért. Végül úgy döntesz, hogy az emberek “X” városban tisztességtelenek. Ami emberi tulajdonság, az emberek gyakran általánosítanak. A gépi tanulási modelleknek is megvan ez a gyengesége, ha nem ügyelünk arra, hogy elkerüljük az elfogultságot a fejlesztési szakaszokban: modellezés, algoritmusok, jellemzők kiválasztása, képzési adathalmaz stb.
Tegyük fel, hogy ugyanabban az “X” városban egy másik taxisofőr ésszerűen és a mérőórának megfelelően számlázott Önnek, de a tapasztalat alapján úgy véli, hogy ez a sofőr is többet számlázott. Ezt nevezzük túlillesztésnek.
A fenti két példából elmondhatjuk, hogy ha a modell jól teljesít a teszt vagy nem látott adathalmazon, akkor az a legjobb illeszkedésű vagy jó modell. És ha nem teljesített jól a teszt vagy nem látott adathalmazon, de jól teljesített a képzési adathalmazon, akkor ez egy Overfit modell. És minden olyan modell, amely nem teljesített jól sem a képzési, sem a tesztadathalmazon, akkor az egy Underfit modell.
A következőkben egy példát fogunk látni python kóddal.
3. példa:
Ez a példa bemutatja az alul- és túlillesztés problémáit, valamint azt, hogy hogyan használhatjuk a lineáris regressziót polinomiális jellemzőkkel a nemlineáris függvények közelítésére.
Generáljunk két változót, mondjuk X és y. X valamilyen véletlen szám / minta lesz, ahol mint y a koszinuszfüggvény egy része.
Az adatok alapján a grafikon így fog kinézni… egyszerű ábrázolás X és y.
Tréningeljük a modellünket lineáris regresszióval, jósoljuk meg és vizualizáljuk.
Vizualizáljuk az előrejelzett modellt.
Láthatjuk, hogy az egyenes nem képes megragadni az adatokban lévő mintákat. Ez egy példa az alulillesztésre. A hiba hatalmas lesz ennél a modellnél.
Lássuk a polinomiális jellemzőt néhány fokozattal, és képezzük ki a modellünket.
Láthatjuk, hogy egy lineáris függvény (1. fokú polinom) nem elegendő a képzési minták illesztéséhez. Ezt nevezzük alulilleszkedésnek.
A 4. fokú polinom szinte tökéletesen közelíti a valódi függvényt. Ezt nevezzük legjobb illeszkedésnek vagy jó modellnek.
Nagyobb fokozatok esetén (15-ös fokozattal) azonban a modell túlilleszkedik a képzési adathalmazon, azaz megtanulja a képzési adatok zaját.
A túlilleszkedést/alulilleszkedést kvantitatívan értékeljük keresztvalidálással.
A validációs adathalmazon is kiszámítjuk az átlagos négyzetes hibát (MSE), minél magasabb, annál kisebb a valószínűsége, hogy a modell helyesen általánosít a képzési adathalmazról.
A teljes kódra a
https://colab.research.google.com/drive/1XzngJPT8WUyHFW-JxhrawVhPurJlv1cA?usp=sharing
Túlillesztés vagy alulillesztés felismerése
Az adatok tesztelése előtt szinte lehetetlen bármilyen illeszkedés (legyen az alulillesztés, legjobb illesztés vagy túlillesztés) felismerése. Segíthet a túlillesztés inherens jellemzőinek kezelésében, ami az adathalmaz általánosításának képtelenségét jelenti. Az adatokat tehát különböző részhalmazokra lehet szétválasztani, hogy megkönnyítsük a képzést és a tesztelést. Az adatokat két fő részre osztjuk, azaz egy tesztadathalmazra és egy képzési adathalmazra.
A felosztási technika az adathalmaz típusától függően változhat, és bármilyen felosztási technikát használhatunk.
Ha a modellünk sokkal jobban teljesít a képzési adathalmazon, mint a tesztadathalmazon, akkor valószínűleg túlillesztésről van szó Például a modellünk 99%-os pontossággal teljesített a képzési adathalmazon, de csak 50-55%-os pontossággal a tesztadathalmazon. Túlillesztettük a modellt, és nem teljesített jól a nem látott adathalmazon.
Ha a modellünk sokkal jobban teljesít a tesztadathalmazon, mint a képzési adathalmazon, akkor valószínűleg alulillesztettük.
Ha pedig a modellünk mind a képzési, mind a tesztadathalmazon jól teljesít, akkor a legjobb illesztésünk van. Például a modellünk 90%-os pontossággal teljesített a képzési adathalmazon, és 88% – 92%-os pontossággal teljesít a tesztadathalmazon. Ez a legjobban illeszkedő modell.
Egy másik egyszerű módja a kimutatásnak a keresztvalidálás. Ez megkísérli megvizsgálni a betanított modellt egy új adathalmazzal, hogy ellenőrizze annak előrejelzési pontosságát. Adott egy adathalmaz, ennek egy részét visszatartjuk (mondjuk 30%), míg a többit a modell képzéséhez használjuk. Miután a modellt betanították, a fenntartott adatokat felhasználják a modell pontosságának ellenőrzésére, összehasonlítva a képzéshez használt adatokból levezetett pontossággal. E kettő jelentős eltérése túlillesztést jelez.
Hogyan előzhetjük meg a túlillesztést vagy alulillesztést
A túlillesztés vagy alulillesztés felismerése hasznos, de nem oldja meg a problémát. Szerencsére több lehetőséget is kipróbálhat. Íme néhány a legnépszerűbb megoldások közül.
Az alulillesztés orvoslása az, hogy továbblépünk, és alternatív gépi tanulási algoritmusokat próbálunk ki. Mindazonáltal ez jó kontrasztot nyújt a túlillesztés problémájával szemben.
A túlillesztés megelőzésére különböző módszerek léteznek, amelyek közül néhányat az alábbiakban mutatunk be.
- Keresztellenőrzés:
- A keresztellenőrzés egy hatékony megelőző intézkedés a túlillesztés ellen.
- A kezdeti képzési adatokat több mini képzési-tesztelési felosztás létrehozására használja. Használja ezeket a felosztásokat a modell hangolásához.
- A standard k-szeres kereszt-hitelesítés során az adatokat k részhalmazra, úgynevezett foldokra osztjuk. Ezután iteratív módon k-1 hajtáson képezzük az algoritmust, miközben a fennmaradó hajtást használjuk tesztkészletként (az úgynevezett “visszatartott hajtás”).
- A kereszt-hitelesítés lehetővé teszi, hogy a hiperparamétereket csak az eredeti képzési adathalmazzal hangoljuk. Ez lehetővé teszi, hogy a tesztadathalmazt valóban nem látott adathalmazként tartsa meg a végleges modell kiválasztásához.
- Tréning több adattal
- Nem fog minden alkalommal működni, de a több adattal történő tréning segíthet az algoritmusoknak jobban felismerni a jelet.
- Amint a felhasználó több tréningadatot táplál a modellbe, az nem lesz képes az összes mintát túlilleszteni, és az eredmények elérése érdekében általánosításra kényszerül.
- A felhasználóknak folyamatosan több adatot kell gyűjteniük, mivel így növelhetik a modell pontosságát.
- Ez a módszer azonban költségesnek számít, ezért a felhasználóknak biztosítaniuk kell, hogy a felhasznált adatok relevánsak és tiszták legyenek.
- Természetesen ez nem mindig van így. Ha csak még több zajos adatot adunk hozzá, ez a technika nem segít. Ezért mindig biztosítani kell, hogy az adatok tiszták és relevánsak legyenek.
- Adatok bővítése
- A több adattal történő képzés alternatívája az adatok bővítése, amely az előbbihez képest kevésbé költséges.
- Ha nem tudunk folyamatosan több adatot gyűjteni, akkor a rendelkezésre álló adathalmazokat változatossá tehetjük.
- Az adatok bővítésével egy adatminta minden egyes alkalommal, amikor a modell feldolgozza, kissé másként néz ki. A folyamat hatására minden egyes adathalmaz egyedinek tűnik a modell számára, és megakadályozza, hogy a modell megtanulja az adathalmazok jellemzőit.
- Komplexitáscsökkentés vagy adategyszerűsítés
- A modell összetettsége miatt előfordulhat a túlillesztés, így a modellnek még nagy mennyiségű adat esetén is sikerül túlillesztenie a gyakorló adathalmazt.
- Az adategyszerűsítési módszer a túlillesztés csökkentésére szolgál a modell komplexitásának csökkentésével, hogy a modell elég egyszerű legyen ahhoz, hogy ne illeszkedjen túl.
- A megvalósítható műveletek közé tartozik a döntési fa metszése, a paraméterek számának csökkentése a Neurális Hálózatokban és a kiesés alkalmazása a Neurális Hálózatokon.
- A modell egyszerűsítése a modellt könnyebbé és gyorsabban futtathatóvá is teheti.
- Regularizáció
- A regularizáció a technikák széles körére utal, amelyekkel mesterségesen kényszeríthetjük a modellünket arra, hogy egyszerűbb legyen.
- A módszer attól függ, hogy milyen típusú tanulót használunk. Például metszhet egy döntési fát, használhat kiesést egy neurális hálózaton, vagy hozzáadhat egy büntető paramétert a költségfüggvényhez a regresszióban.
- Nagyon gyakran a regularizációs módszer egy hiperparaméter is, ami azt jelenti, hogy keresztvalidálással hangolható.
- A regularizáció megismeréséhez lásd az Abhishek Mishra által írt és nagyon jól elmagyarázott https://datascience.foundation/datatalk/regularization-machine-learning-teacher cikket.
- Ensembling
- Az ensembling olyan gépi tanulási módszer, amely több különálló modellből származó előrejelzések kombinálására szolgál. Az ensemblingnek többféle módszere létezik, de a két legelterjedtebb a következő: A Boosting és a Bagging.
- A Boosting úgy működik, hogy egyszerű alapmodellek felhasználásával növeli azok összesített komplexitását. Nagyszámú gyenge tanulót képez ki szekvenciába rendezve, úgy, hogy a szekvencia minden egyes tanulója tanul az előtte lévő tanuló hibáiból.
- A Boosting az egyszerű modellek előrejelzési rugalmasságát próbálja javítani.
- A Boosting a szekvenciában lévő összes gyenge tanulót egyesíti, hogy egy erős tanulót hozzon ki.
- A Bagging úgy működik, hogy sok erős tanulót képez ki párhuzamos mintába rendezve, majd ezeket kombinálja az előrejelzések optimalizálása érdekében.
- A kötegelés megpróbálja csökkenteni az összetett modellek túlillesztésének esélyét.
- A kötegelés ezután az összes erős tanulót egyesíti, hogy “kisimítsa” előrejelzéseiket.
- Korai leállítás
- Ha egy tanulási algoritmust iteratívan képezünk, mérhetjük, hogy a modell egyes iterációi milyen jól teljesítenek.
- Egy bizonyos számú iterációig az új iterációk javítják a modellt. Ezután a pont után azonban a modell általánosító képessége gyengülhet, mivel elkezd túlilleszkedni a képzési adatokhoz.
- A korai leállítás a képzési folyamat leállítására utal, mielőtt a tanuló átlépné ezt a pontot.
- Most ezt a technikát leginkább a mélytanulásban használják, míg más technikák (pl. regularizáció) előnyben részesülnek a klasszikus gépi tanulásban.
- A lineáris és SVM modellek esetében regularizációt kell hozzáadni.
- A döntési fa modellekben csökkenthetjük a maximális mélységet.
- A neurális hálózatokban pedig a túlillesztés csökkentése érdekében bevezethetjük a kieső réteget.
Gyors összefoglaló
A túlillesztés olyan modellezési hiba, amely torzítást vezet be a modellbe, mivel az túlságosan szorosan kapcsolódik az adathalmazhoz.
A túlillesztés miatt a modell csak a saját adathalmaza szempontjából releváns, más adathalmazok szempontjából pedig irreleváns.
A túlillesztés megelőzésére használt módszerek közül néhány az ensembling, az adatok bővítése, az adatok egyszerűsítése és a keresztellenőrzés.