Beslutnings tre i Sklearn

Beslutnings tre i Sklearn
Beslutningstrær er hierarkiske modeller i maskinlæring som kan brukes på klassifisering og regresjonsproblemer. De sammenligner rekursivt funksjonene i inngangsdataene og forutsier til slutt utdataene ved bladnoden. Vi vil diskutere om beslutningstrærne og deres implementering i Sklearn -biblioteket.

Hva er en beslutnings tre algoritme?

Klassifiserings- og regresjonsmodellene er konstruert ved hjelp av en beslutningsteknikk. Den kartlegger vektorene av verdier til etiketter og representerer klassifisereren som et beslutnings tre. Et slikt tre kan sammenlignes med de nestede if-da-Else-utsagnene der tilstanden alltid er en enkel test av verdiene i vektoren. Og da og ellers grener er enten ytterligere if-da-ellers utsagn eller gir en kategoriseringsetikett. Et beslutnings tre lærer av dataene, finner de mest passende funksjonene for å skille utdataene, og rekursivt sjekker for de gitte inngangsdataene for å forutsi etiketten. Et beslutnings tre kan se slik ut, for eksempel hvis inngangsvektoren er (a, b, c):

Hvis a> 10
Så hvis b < 20
Returner deretter "1"
Annet hvis a < 15
Returner deretter "0"
Ellers returner "1"
Ellers hvis c 5
Returner deretter "1"
Ellers returner "0"
Ellers returner "1"

Merk at de andre beslutningstrærne har den egenskapen foruten denne. Følgelig er problemet ikke bare å finne et slikt beslutnings tre, men også å identifisere det mest passende. At inngangen er et utvalg fra en betydelig kolleksjon i den virkelige verden, og at beslutningstreet er bygget for å identifisere vektorene i dette mer omfattende settet, bestemmer nøyaktig hva "passende" betyr i dette tilfellet. Derfor avhenger definisjonen av "egnet" av (1) egenskapene til dette bredere settet (for eksempel sannsynligheten for hver vektor) og (2) den økonomiske effekten av feilklassifisering i hver spesifikk forekomst.

Terminologier relatert til beslutnings tre

Rotnode: Beslutnings treets rotnode er der det hele begynner. Hele datasettet er representert, som deretter er delt inn i to eller flere homogene sett.

Bladknute: Bladknutene er de siste utgangsnodene til treet. Deretter kan ikke treet deles videre.

Splitting: Delingen av beslutningsnoden/rotnoden i undernoder i samsvar med de spesifiserte forholdene er kjent som splitting.

Gren: En gren eller undertrekk er et tre laget av en node av et foreldretre.

Beskjæring: Beskjæring er prosedyren for å fjerne treets uønskede grener.

Foreldre- og barneknuter: Treets rotknute blir referert til som overordnede noden, mens nodene som stammer fra den blir referert til som barneknuter.

Implementere beslutningstrær i Sklearn

Importere bibliotekene:

Fra Sklearn.Datasett importerer make_classification
Fra Sklearn.Treimport DecisionTreeClassifier
Fra Sklearn.Model_selection import cross_val_score

Opprette datasettet:

X, y = make_classification (random_state = 42)
trykk ('Togdata er', x)
trykk ('Testdata er', y)

Produksjon:

Togdata er [[-2.02514259 0.0291022 -0.47494531… -0.33450124 0.86575519
-1.20029641]
[ 1.61371127 0.65992405 -0.15005559… 1.37570681 0.70117274
-0.2975635]
[0.16645221 0.95057302 1.42050425… 1.18901653 -0.55547712
-0.63738713]
..
[-0.03955515 -1.60499282 0.22213377… -0.30917212 -0.46227529
-0.43449623]
[ 1.08589557 1.2031659 -0.6095122… -0.3052247 -1.31183623
-1.06511366]
[-0.00607091 1.30857636 -0.17495976… 0.99204235 0.32169781
-0.66809045]]]
Testdata er [0 0 1 1 0 0 0 1 0 1 1 0 0 0 1 1 1 0 0 1 1 0 0 0 0 1 1 0 1 0 0 0 0 0 0 1 0 0 0 1 0
0 1 1 1 0 1 0 0 1 1 0 0 1 1 1 0 1 0 0 1 1 0 1 1 1 1 1 0 1 0 0 1 0 1 0 1 0
1 1 1 0 0 0 1 0 1 0 1 1 1 1 1 0 0 1 0 1 1 0 1 1 0 0]

Opprette modellen:

Model = DecisionTreeClassifier (Random_State = 0)
cross_val_score (modell, x, y, cv = 10)

Produksjon:

Array ([0.9, 1. , 0.8, 1. , 1. , 0.9, 0.9, 1. , 0.9, 1. ])

Konklusjon

Vi diskuterte beslutningstre-modeller i Sklearn som skaper en trelignende struktur for å klassifisere eller forutsi utgangsetikettene. De deler nodene for å redusere treets dybde. Vi så også de forskjellige begrepene relatert til beslutningstrærne som bladnode, overordnede noder, beskjæring osv. Deretter diskuterte vi senere implementeringen av Sklearn.