logo

Döntési fa osztályozási algoritmusa

  • A döntési fa a Felügyelt tanulási technika amely mind osztályozási, mind regressziós feladatokra használható, de leginkább osztályozási feladatok megoldására előnyös. Ez egy fa szerkezetű osztályozó, ahol A belső csomópontok egy adathalmaz jellemzőit, az ágak a döntési szabályokat képviselik és minden levélcsomópont az eredményt jelenti.
  • Egy döntési fában két csomópont van, amelyek a határozati csomópont és Levélcsomópont. A döntési csomópontok bármilyen döntés meghozatalára szolgálnak, és több águk van, míg a levélcsomópontok ezeknek a döntéseknek a kimenetei, és nem tartalmaznak további ágakat.
  • A döntéseket vagy a tesztet az adott adathalmaz jellemzői alapján végzik el.
  • Ez egy grafikus ábrázolás, amely az adott feltételek alapján az összes lehetséges megoldást megkapja egy problémára/döntésre.
  • Döntési fának nevezik, mert a fához hasonlóan a gyökércsomóponttal kezdődik, amely további ágakra terjeszkedik és faszerű struktúrát hoz létre.
  • Fa építéséhez használjuk a CART algoritmus, ami azt jelenti Osztályozási és regressziós fa algoritmus.
  • Egy döntési fa egyszerűen feltesz egy kérdést, és a válasz alapján (Igen/Nem) tovább osztja a fát részfákra.
  • Az alábbi diagram bemutatja a döntési fa általános felépítését:

Megjegyzés: A döntési fa tartalmazhat kategorikus adatokat (IGEN/NEM), valamint numerikus adatokat.

Döntési fa osztályozási algoritmusa

Miért érdemes a döntési fákat használni?

A gépi tanulásban különféle algoritmusok léteznek, ezért a gépi tanulási modell létrehozásakor az adott adathalmazhoz és problémához a legjobb algoritmus kiválasztása a legfontosabb szempont. Az alábbiakban bemutatjuk a döntési fa használatának két okát:

  • A döntési fák általában az emberi gondolkodási képességet utánozzák döntéshozatal közben, így könnyen érthető.
  • A döntési fa mögött meghúzódó logika könnyen érthető, mert faszerű struktúrát mutat.

Döntési fa terminológiái

Gyökér csomópont:A gyökércsomópont onnan indul, ahol a döntési fa indul. Ez a teljes adatkészletet reprezentálja, amely további két vagy több homogén halmazra oszlik.Levél csomópont:A levélcsomópontok a végső kimeneti csomópontok, és a fa nem különíthető el tovább, miután megkapta a levél csomópontját.Hasítás:A felosztás az a folyamat, amikor a döntési csomópontot/gyökércsomópontot alcsomópontokra osztjuk az adott feltételeknek megfelelően.Elágazás/alfa:A fa felhasadásával keletkezett fa.Metszés:A metszés a nem kívánt ágak eltávolítása a fáról.Szülő/gyermek csomópont:A fa gyökércsomópontját szülőcsomópontnak, a többi csomópontot gyermekcsomópontnak nevezzük.

Hogyan működik a döntési fa algoritmus?

Egy döntési fában az adott adathalmaz osztályának előrejelzéséhez az algoritmus a fa gyökércsomópontjából indul ki. Ez az algoritmus összehasonlítja a gyökérattribútum értékeit a rekord (valós adatkészlet) attribútummal, és az összehasonlítás alapján követi az ágat, és a következő csomópontra ugrik.

tömböket használó struktúrák c

A következő csomópontnál az algoritmus ismét összehasonlítja az attribútum értékét a többi alcsomóponttal, és továbblép. A folyamatot addig folytatja, amíg el nem éri a fa levélcsomópontját. A teljes folyamat jobban megérthető az alábbi algoritmus segítségével:

    1. lépés:Kezdje a fát a gyökércsomóponttal, mondja S, amely a teljes adatkészletet tartalmazza.2. lépés:Keresse meg a legjobb attribútumot az adatkészletben a használatával Attribútum-kiválasztási mérték (ASM). 3. lépés:Osszuk az S-t részhalmazokra, amelyek a legjobb attribútumok lehetséges értékeit tartalmazzák.4. lépés:Hozza létre a döntési fa csomópontját, amely a legjobb attribútumot tartalmazza.5. lépés:Rekurzívan hozzon létre új döntési fákat a -3 lépésben létrehozott adatkészlet részhalmazainak felhasználásával. Folytassa ezt a folyamatot addig, amíg el nem éri azt a szakaszt, amikor nem tudja tovább osztályozni a csomópontokat, és a végső csomópontot levélcsomópontnak nevezi.

Példa: Tegyük fel, hogy van egy jelölt, akinek állásajánlata van, és el akarja dönteni, hogy elfogadja-e az ajánlatot, vagy sem. Tehát a probléma megoldásához a döntési fa a gyökércsomóponttal kezdődik (ASM fizetés attribútum). A gyökércsomópont tovább oszlik a következő döntési csomópontra (az irodától való távolság) és egy levélcsomópontra a megfelelő címkék alapján. A következő döntési csomópont további felosztásra kerül egy döntési csomópontra (Cab létesítmény) és egy levél csomópontra. Végül a döntési csomópont két levélcsomópontra oszlik (Elfogadott ajánlatok és Elutasított ajánlat). Tekintsük az alábbi diagramot:

Döntési fa osztályozási algoritmusa

Tulajdonságkiválasztási intézkedések

A döntési fa megvalósítása során felmerül a fő probléma, hogy hogyan lehet kiválasztani a legjobb attribútumot a gyökércsomóponthoz és az alcsomópontokhoz. Tehát az ilyen problémák megoldására létezik egy technika, amelyet ún Attribútum kiválasztási mérték vagy ASM. Ezzel a méréssel könnyen kiválaszthatjuk a legjobb attribútumot a fa csomópontjaihoz. Az ASM számára két népszerű technika létezik, amelyek a következők:

    Információszerzés Gini Index

1. Információszerzés:

  • Az információnyereség az entrópia változásainak mérése egy adatkészlet attribútum alapján történő szegmentálása után.
  • Kiszámítja, hogy egy szolgáltatás mennyi információt nyújt számunkra egy osztályról.
  • Az információnyereség értékének megfelelően felosztjuk a csomópontot és felépítjük a döntési fát.
  • Egy döntési fa algoritmus mindig megpróbálja maximalizálni az információerősítés értékét, és először a legnagyobb információs nyereséggel rendelkező csomópont/attribútum kerül felosztásra. Az alábbi képlet segítségével számítható ki:
 Information Gain= Entropy(S)- [(Weighted Avg) *Entropy(each feature) 

Entrópia: Az entrópia egy mérőszám egy adott attribútum szennyeződésének mérésére. Meghatározza az adatok véletlenszerűségét. Az entrópia a következőképpen számítható ki:

Entropy(s)= -P(yes)log2 P(yes)- P(no) log2 P(no)

Ahol,

    S = A minták teljes száma P(igen) = az igen valószínűsége P(nem)= a nem valószínűsége

2. Gini-index:

  • A Gini-index a szennyezettség vagy tisztaság mértéke, amelyet a CART (Osztályozási és regressziós fa) algoritmusban a döntési fa létrehozásakor használnak.
  • Az alacsony Gini-indexű attribútumot előnyben kell részesíteni a magas Gini-indexszel szemben.
  • Csak bináris felosztásokat hoz létre, a CART algoritmus pedig a Gini indexet használja a bináris felosztások létrehozásához.
  • A Gini-indexet az alábbi képlettel lehet kiszámítani:
 Gini Index= 1- &#x2211;<sub>j</sub>P<sub>j</sub><sup>2</sup> 

Metszés: Optimális döntési fa létrehozása

A metszés egy olyan folyamat, amely során törlik a fából a szükségtelen csomópontokat az optimális döntési fa létrehozása érdekében.

A túl nagy fa növeli a túlillesztés kockázatát, és előfordulhat, hogy egy kis fa nem rögzíti az adatkészlet minden fontos jellemzőjét. Ezért egy olyan technikát, amely csökkenti a tanulási fa méretét a pontosság csökkentése nélkül, metszésnek nevezik. Főleg kétféle fa létezik metszés használt technológia:

    Költségösszetett metszés Csökkentett hibametszés.

A döntési fa előnyei

  • Könnyű megérteni, mivel ugyanazt a folyamatot követi, amelyet az ember követ, miközben a való életben bármilyen döntést hoz.
  • Nagyon hasznos lehet döntési problémák megoldásában.
  • Segít átgondolni a probléma összes lehetséges kimenetelét.
  • Más algoritmusokhoz képest kevesebb adattisztításra van szükség.

A döntési fa hátrányai

  • A döntési fa sok réteget tartalmaz, ami bonyolulttá teszi.
  • Lehet, hogy túlillesztési problémája van, amely a következővel oldható meg Véletlenszerű erdő algoritmus.
  • Több osztálycímke esetén megnőhet a döntési fa számítási bonyolultsága.

A döntési fa Python megvalósítása

Most a határozati fát Python segítségével fogjuk megvalósítani. Ehhez az adatkészletet fogjuk használni user_data.csv ,' amelyet a korábbi osztályozási modellekben használtunk. Ugyanazon adatkészlet használatával összehasonlíthatjuk a döntési fa osztályozóját más osztályozási modellekkel, mint pl KNN SVM, Logisztikai regresszió stb.

faktoriális java

A lépések is változatlanok maradnak, amelyeket alább ismertetünk:

    Adatok előfeldolgozási lépése Döntési fa algoritmus illesztése a tréningkészlethez A teszt eredményének előrejelzése Az eredmény tesztelési pontossága (zavaros mátrix létrehozása) A tesztkészlet eredményének megjelenítése.

1. Adat-előfeldolgozási lépés:

Az alábbiakban található az előfeldolgozási lépés kódja:

 # importing libraries import numpy as nm import matplotlib.pyplot as mtp import pandas as pd #importing datasets data_set= pd.read_csv(&apos;user_data.csv&apos;) #Extracting Independent and dependent Variable x= data_set.iloc[:, [2,3]].values y= data_set.iloc[:, 4].values # Splitting the dataset into training and test set. from sklearn.model_selection import train_test_split x_train, x_test, y_train, y_test= train_test_split(x, y, test_size= 0.25, random_state=0) #feature Scaling from sklearn.preprocessing import StandardScaler st_x= StandardScaler() x_train= st_x.fit_transform(x_train) x_test= st_x.transform(x_test) 

A fenti kódban előzetesen feldolgoztuk az adatokat. Ahová betöltöttük az adatkészletet, amely így van megadva:

Döntési fa osztályozási algoritmusa

2. Döntési fa algoritmus illesztése a tréning készlethez

Most illesztjük a modellt az edzéskészlethez. Ehhez importáljuk a DecisionTreeClassifier osztályból sklearn.fa könyvtár. Alább található a hozzá tartozó kód:

 #Fitting Decision Tree classifier to the training set From sklearn.tree import DecisionTreeClassifier classifier= DecisionTreeClassifier(criterion=&apos;entropy&apos;, random_state=0) classifier.fit(x_train, y_train) 

A fenti kódban létrehoztunk egy osztályozó objektumot, amelyben két fő paramétert adtunk át;

    'criterion='entrópia':A kritérium a felosztás minőségének mérésére szolgál, amelyet az entrópia által adott információnyereség alapján számítanak ki.random_state=0':A véletlenszerű állapotok generálásához.

Alább látható ennek a kimenete:

 Out[8]: DecisionTreeClassifier(class_weight=None, criterion=&apos;entropy&apos;, max_depth=None, max_features=None, max_leaf_nodes=None, min_impurity_decrease=0.0, min_impurity_split=None, min_samples_leaf=1, min_samples_split=2, min_weight_fraction_leaf=0.0, presort=False, random_state=0, splitter=&apos;best&apos;) 

3. A vizsgálati eredmény előrejelzése

Most megjósoljuk a tesztkészlet eredményét. Létrehozunk egy új predikciós vektort y_pred. Alább található a hozzá tartozó kód:

 #Predicting the test set result y_pred= classifier.predict(x_test) 

Kimenet:

Az alábbi kimeneti képen a becsült kimenet és a valós tesztkimenet látható. Jól látjuk, hogy a predikciós vektorban vannak olyan értékek, amelyek eltérnek a valós vektorértékektől. Ezek előrejelzési hibák.

Döntési fa osztályozási algoritmusa

4. Tesztelje az eredmény pontosságát (Confusion mátrix létrehozása)

A fenti kimenetben azt láttuk, hogy voltak hibás előrejelzések, ezért ha tudni akarjuk a helyes és hibás előrejelzések számát, akkor a zavaros mátrixot kell használnunk. Alább található a hozzá tartozó kód:

térkép java iterátor
 #Creating the Confusion matrix from sklearn.metrics import confusion_matrix cm= confusion_matrix(y_test, y_pred) 

Kimenet:

Döntési fa osztályozási algoritmusa

A fenti kimeneti képen láthatjuk a zavaró mátrixot, amely rendelkezik 6+3= 9 hibás előrejelzés és 62+29=91 helyes jóslat. Ezért elmondhatjuk, hogy más osztályozási modellekhez képest a Döntési fa osztályozó jó előrejelzést adott.

5. Az edzéskészlet eredményének megjelenítése:

Itt vizualizáljuk az edzéskészlet eredményét. A képzési halmaz eredményének megjelenítéséhez grafikont készítünk a döntési fa osztályozóhoz. Az osztályozó igent vagy nemet jósol azoknak a felhasználóknak, akik megvásárolták vagy nem vásárolták meg a SUV-autót, ahogyan azt a Logisztikai regresszióban tettük. Alább található a hozzá tartozó kód:

 #Visulaizing the trianing set result from matplotlib.colors import ListedColormap x_set, y_set = x_train, y_train x1, x2 = nm.meshgrid(nm.arange(start = x_set[:, 0].min() - 1, stop = x_set[:, 0].max() + 1, step =0.01), nm.arange(start = x_set[:, 1].min() - 1, stop = x_set[:, 1].max() + 1, step = 0.01)) mtp.contourf(x1, x2, classifier.predict(nm.array([x1.ravel(), x2.ravel()]).T).reshape(x1.shape), alpha = 0.75, cmap = ListedColormap((&apos;purple&apos;,&apos;green&apos; ))) mtp.xlim(x1.min(), x1.max()) mtp.ylim(x2.min(), x2.max()) fori, j in enumerate(nm.unique(y_set)): mtp.scatter(x_set[y_set == j, 0], x_set[y_set == j, 1], c = ListedColormap((&apos;purple&apos;, &apos;green&apos;))(i), label = j) mtp.title(&apos;Decision Tree Algorithm (Training set)&apos;) mtp.xlabel(&apos;Age&apos;) mtp.ylabel(&apos;Estimated Salary&apos;) mtp.legend() mtp.show() 

Kimenet:

Döntési fa osztályozási algoritmusa

A fenti kimenet teljesen eltér a többi osztályozási modelltől. Függőleges és vízszintes vonalakat is tartalmaz, amelyek az életkor és a becsült fizetési változó szerint osztják fel az adatkészletet.

Amint látjuk, a fa megpróbál minden adatkészletet rögzíteni, ami a túlillesztés esete.

6. A tesztkészlet eredményének megjelenítése:

A tesztkészlet eredményének megjelenítése hasonló lesz az edzéskészlet vizualizálásához, azzal a különbséggel, hogy az edzéskészletet felváltja a tesztkészlet.

 #Visulaizing the test set result from matplotlib.colors import ListedColormap x_set, y_set = x_test, y_test x1, x2 = nm.meshgrid(nm.arange(start = x_set[:, 0].min() - 1, stop = x_set[:, 0].max() + 1, step =0.01), nm.arange(start = x_set[:, 1].min() - 1, stop = x_set[:, 1].max() + 1, step = 0.01)) mtp.contourf(x1, x2, classifier.predict(nm.array([x1.ravel(), x2.ravel()]).T).reshape(x1.shape), alpha = 0.75, cmap = ListedColormap((&apos;purple&apos;,&apos;green&apos; ))) mtp.xlim(x1.min(), x1.max()) mtp.ylim(x2.min(), x2.max()) fori, j in enumerate(nm.unique(y_set)): mtp.scatter(x_set[y_set == j, 0], x_set[y_set == j, 1], c = ListedColormap((&apos;purple&apos;, &apos;green&apos;))(i), label = j) mtp.title(&apos;Decision Tree Algorithm(Test set)&apos;) mtp.xlabel(&apos;Age&apos;) mtp.ylabel(&apos;Estimated Salary&apos;) mtp.legend() mtp.show() 

Kimenet:

Döntési fa osztályozási algoritmusa

Amint a fenti képen láthatjuk, a lila régión belül van néhány zöld adatpont és fordítva. Tehát ezek azok a helytelen előrejelzések, amelyeket a zavaros mátrixban tárgyaltunk.