A döntési fa algoritmus a felügyelt tanulási algoritmus alá tartozik, amely mind az osztályozási, mind a regressziós problémához használható.

Ezért minden törekvő adattudósnak és gépi tanulási mérnöknek szükséges, hogy jól ismerje a döntési fákat.

Ebben a cikkben megvitatjuk, hogyan valósítsuk meg a döntési fát a python használatával, és meglátjuk, hogyan lehet metszeni a döntési fát.

Döntési fa osztályozása

Ebben a példában a mellrák adatkészletét fogom használni, amely dichotóm(1,0) célváltozót tartalmaz. Tehát kezdjük.

Először importálni fogjuk a szükséges könyvtárakat, és betöltjük a mellrák adatállományát a gépünkbe

Az adatkészlet felosztása

Az általunk használt adatok általában edzésadatokra és tesztadatokra vannak felosztva. A betanító halmaz egy ismert kimenetet tartalmaz, és a modell tanul ezeken az adatokon, hogy a későbbiekben más adatokra általánosítható legyen. Rendelkezésünkre áll a tesztadatkészlet (vagy részhalmaz), hogy teszteljük modellünk előrejelzését ezen a részhalmazon.

Ezt a Python SciKit-Learn könyvtárával fogjuk megtenni, a train_test_split metódussal.

Faosztály DecisionTreeClassifier használata határozati fa algoritmus és illesztési modell használatához a vonatadatokhoz.

nézzük meg, hogy modellünk mennyire teljesít a vonatadatokon.

Láthatjuk, hogy a modellünk túlillesztése a vonatadatokon, ami a döntési fa egyik hátránya, és később megvitatjuk, hogyan lehet megoldani ezt a problémát.

Lehetővé teszi a döntési fa grafikon ábrázolását

Most megjósoljuk a tesztsorozat eredményeit, és ellenőrizzük a pontosságot a modellünkkel:

A pontosság ellenőrzésére az accuracy_score értéket fogjuk használni, amely az osztályozás értékelési mérőszáma.

Itt láthatjuk, hogy modellünk nagyon jól teljesít a nem látott adatokon, 0,88 vagy 88%-os pontossággal. De vajon ez a legjobb modell, növelhetjük-e a modell pontosságát?

Tehát a válasz igen, növelhetjük a pontosságot. számos módszer áll rendelkezésre a döntési fa pontosságának növelésére.

Döntési fa metszése

A DecisionTreeClassifier olyan paramétereket biztosít, mint a min_sample_leaf és a max_depth, hogy megakadályozza a fa túlillesztését. A költség-bonyolultságú metszés egy másik lehetőség a fa méretének szabályozására. és az utólagos metszést költségkomplexitású metszéstechnikával fogjuk használni a döntési fa metszéséhez. Csökkenti a döntési fa méretét, ami kismértékben növelheti a képzési hibáit, de drasztikusan csökkenti a tesztelési hibáit, így jobban alkalmazkodóképes.

A DecisionTreeClassifier alkalmazásban ezt a metszéstechnikát a ccp_alpha költségkomplexitási paraméter paraméterezi. A ccp_alpha nagyobb értékei növelik a levágott csomópontok számát. Itt csak azt mutatjuk be, hogy a ccp_alpha milyen hatással van a fák rendszeresítésére, és hogyan válasszuk ki a ccp_alpha értéket az érvényességi pontszámok alapján.

Most lehetővé teszi a pontosság és az alfa ábrázolását a képzési és tesztelési készletekhez, hogy megtudja, melyik alfa érték ad nagy tesztpontosságot.

Ha a ccp_alpha nullára van állítva, és megtartja a DecisionTreeClassifier többi alapértelmezett paraméterét, a fa túlfitnessel, ami 100%-os betanítási és 88%-os tesztelési pontosságot eredményez. Ahogy az alfa növekszik, a fa nagyobb részét metszik, így egy olyan döntési fa jön létre, amely jobban általánosít. Tehát a ccp_alpha =0,015 beállítása maximalizálja a tesztelés pontosságát.

Tehát most tanítsuk a modellünket a ccp_alpha =0,015 értékkel, és ellenőrizzük, hogyan teljesít a döntési fa modellünk a nem látott adatokon.

Nézzük meg, hogyan teljesít a modellünk a vonatadatokon.

Most ellenőrizzük a nem látott adatok pontosságát

Amint azt korábban megbeszéltük, a döntési fa metszése kismértékben növeli a vonathibákat, de drasztikusan csökkenti a teszthibát. Így most már javítani tudjuk a döntési fa modellünket, és 0,93 vagy 93%-os pontosságot kaptunk.

Így a metszés után készítsük el a döntési fa grafikonját

A Fa metszés után és a Fa metszés előtt parcellák összehasonlításával láthatjuk, hogy a Fa metszés utáni parcellák száma kevesebb, mint a Fa metszés előtti parcellához képest.

Megtalálhatja a notebookot a my GitHubon, és közelebbről is megnézheti, mit csináltam. Ezenkívül lépjen kapcsolatba velem a LinkedIn-en, és beszéljük meg az adatokat!

Ha többet szeretne megtudni a túl- és alulillesztésről és a Bias-Variance Tradeoffról, kattintson ide.