Lær Klassifisering med Beslutningstrær I R

Robert Wood

Følg

Jul 30, 2019 * 4 min lese

når det gjelder klassifisering, ved hjelp av en beslutning treet klassifiserer er en av de enkleste å bruke.

Hvorfor bruke et beslutningstreet

  • Utrolig lett å tolke
  • det håndterer manglende data & uteliggere veldig bra og som sådan krever langt mindre opp foran rengjøring
  • du kommer til å gi slipp på den kategoriske variabelen koding som beslutningstrær håndterer kategoriske godt!
  • uten å dykke inn i spesifikkene ved rekursiv partisjonering, kan beslutningstrær modellere ikke-lineære relasjoner.

Hvorfor ikke bruke et beslutningstre

med alt det gode sagt, er de ikke alltid det perfekte alternativet.

  • på samme måte som de kan være enkle, kan de også være altfor kompliserte, noe som gjør det nesten umulig å konseptualisere eller tolke.
  • for å ta denne ideen litt lenger, med et tre som er altfor partisk eller komplisert, kan det være catering for godt til det er treningsdata og som et resultat er overfit.

Modell Trening

med det sagt, kan hoppe inn i det. Jeg vil ikke snakke om kryssvalidering eller tog, test split mye, men vil legge inn koden nedenfor. Husk å kommentere hvis det er noe du vil ha mer forklaring på.

først bryter vi dataene inn i trening & testsett.

vær også oppmerksom på at vi bruker det klassiske titanic-datasettet som er inkludert i base R.

Nå skal vi trene modellen ved hjelp av rpart – funksjonen fra rpart – pakken. De viktigste tingene å legge merke til her er at variabelen vi vil forutsi, Overlever, så vi vil forstå sannsynligheten for at et gitt individ overlevde i henhold til noen data. ~ kan tolkes som av; så med andre ord kan forstå Overlevd av noen variabler. Hvis etter ~ er det en . det betyr at vi vil bruke alle andre variabler i datasettet for å forutsi overlevde. Alternativt som vist nedenfor kan vi ringe ut variablene vi vil bruke eksplisitt.

En annen ting å merke seg er at method er class. Det er fordi vi ønsker å lage et klassifikasjonstre som forutsier kategoriske utfall, i motsetning til et regresjonstre som vil bli brukt til numeriske utfall. Og til slutt er dataene vi bruker til å trene modellen train.

model <- rpart(formula = Survived ~ Pclass + Sex + Age + SibSp + Parch + Fare + Embarked,
data = titanic_train,
method = "class")

Tolkbarhet

som tidligere nevnt er en av tingene som gjør et beslutningstre så enkelt å bruke, at det er utrolig enkelt å tolke. Du kan følge de forskjellige grenene av treet til forskjellige utfall.

rpart.plot(model)

Det er litt vanskelig å lese der, men hvis du zoomer inn litt, ser du at de første kriteriene om noen sannsynligvis bodde eller døde på titanic var om du var en mann. Hvis du var en mann, flytter du til venstre gren og jobber ned to noder, om du var voksen og din søsken / ektefelle teller ombord. Så hvis du var en enkelt mann du er oddsen for å overleve var ganske slank.

Ytelsesevaluering

før vi bryter ut beregningene, kan vi forutsi verdier for testsettet ditt. I likhet med kallet til å trene, velger du data, og type prediksjon. Hovedforskjellen er modellspesifikasjonen.

test$pred <- predict(object = model, 
newdata = test,
type = "class")

Det finnes en rekke ytelsesevalueringsberegninger som vil komme til nytte når du forstår effekten av beslutningstreet ditt.

Nøyaktighet

denne beregningen er veldig enkel, hvilken prosentandel av dine spådommer var riktige. Forvirringsmatrisefunksjonen fra caret inkluderer dette.

Confusion Matrix

funksjonen confusionMatrix fra pakken caret er utrolig nyttig. For å vurdere klassifisering modell ytelse. Last opp pakken, og gi den dine spådommer & de faktiske.

library(caret)
confusionMatrix(data = test$pred,
reference = test$Survived)

det første denne funksjonen viser deg, er det som kalles en forvirringsmatrise. Dette viser deg en tabell over hvordan spådommer og faktiske lined opp. Så de diagonale cellene hvor prediksjonen og referansen er de samme representerer det vi fikk riktig. Telle de opp 149 (106 + 43) og dele den med det totale antall poster, 178; vi kommer til vår nøyaktighet antall 83,4%.

Sann positiv: cellen i kvadranten hvor både referansen og prediksjonen er 1. Dette indikerer at du spådde overlevelse, og de overlevde faktisk.

Falsk positiv: her spådde du positivt, men du tok feil.

Sant negativt: når du forutsier negativt, og du har rett.

Falsk negativ: Nar du forutsier negativ, og du er feil.

et par flere viktige beregninger å huske på er følsomhet og spesifisitet. Følsomhet er prosentandelen av sanne poster som du spådde riktig.

Spesifisitet derimot er å måle hvilken del av de faktiske falske postene du spådde riktig.

Spesifisitet er en å huske på når man forutsier på et ubalansert datasett. Et veldig vanlig eksempel på dette er for å klassifisere e-post spam. 99% av tiden er det ikke spam, så hvis du spådde at ingenting var spam, ville du ha 99% nøyaktighet, men spesifisiteten din ville være 0, noe som førte til at all spam ble akseptert.

Konklusjon

jeg håper du likte denne raske leksjonen i beslutningstrær. Gi meg beskjed hvis det var noe du ville ha mer info om, eller hvis det er noe du vil at jeg skal dekke i et annet innlegg.

Glad Datavitenskap-ing! Hvis du likte dette, kom og sjekk ut andre innlegg som dette på datasciencelessons.com!

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert.

Previous post WordPress.org
Next post Fava Bønne Planting – Hvordan Vokse Fava Bønner I Hagen