Als het gaat om de indeling, het gebruik van een beslisboom classifier is een van de makkelijkst te gebruiken.
waarom een beslissingsboom
- ongelooflijk makkelijk te interpreteren
- het behandelt ontbrekende gegevens & uitschieters zeer goed en als zodanig vereist veel minder vooraf schoonmaken
- u kunt afzien van de categorische variabele codering als beslissingsbomen categorisch goed behandelen!
- zonder dieper in te gaan op de specifieke kenmerken van recursieve partitionering, kunnen beslissingsbomen niet-lineaire relaties modelleren.
waarom niet een beslissingsboom
gebruiken met al dat goeds zei dat ze niet altijd de perfecte optie zijn.
- net zoals ze eenvoudig kunnen zijn, kunnen ze ook te ingewikkeld zijn, waardoor het bijna onmogelijk is ze te interpreteren of te interpreteren.
- om dit idee een beetje verder uit te werken, met een boom die te bevooroordeeld of ingewikkeld is, kan deze te goed inspelen op zijn trainingsgegevens en als gevolg daarvan is het een overdaad.
Modelopleiding
met dat gezegd hebbende, laten we beginnen. Ik zal niet praten over cross validatie of train, test split veel, maar zal de code hieronder plaatsen. Wees er zeker van om commentaar te geven als er iets is waar je meer uitleg over wilt.
eerst splitsen we de gegevens in trainingssets & .
merk ook op dat we de klassieke titanic dataset zullen gebruiken die is opgenomen in basis R.
nu zullen we het model trainen met behulp van de rpart
functie uit het rpart
pakket. De belangrijkste dingen om op te merken is dat de variabele die we willen voorspellen overleefd is, dus we willen de waarschijnlijkheid begrijpen dat een bepaald individu overleefde volgens sommige gegevens. ~ kan worden geïnterpreteerd als door; dus met andere woorden laat begrijpen overleefd door een aantal variabelen. Als na de ~ er een . dat betekent dat we elke andere variabele in de dataset willen gebruiken om overleefde te voorspellen. Als alternatief, zoals hieronder getoond, kunnen we de variabelen die we expliciet willen gebruiken, uitroepen.
een ander ding om op te merken is dat de method
class
is. Dat komt omdat we een classificatieboom willen maken die categorische uitkomsten voorspelt, in tegenstelling tot een regressieboom die gebruikt zou worden voor numerieke uitkomsten. En tot slot de gegevens die we gebruiken om het model te trainen is train
.
model <- rpart(formula = Survived ~ Pclass + Sex + Age + SibSp + Parch + Fare + Embarked,
data = titanic_train,
method = "class")
Interpreteerbaarheid
zoals eerder vermeld is een van de dingen die een beslissingsboom zo gemakkelijk te gebruiken maakt, dat het ongelooflijk gemakkelijk te interpreteren is. Je kunt de verschillende takken van de boom volgen naar verschillende uitkomsten.
rpart.plot(model)
het is een beetje moeilijk om te lezen, maar als je een beetje inzoomt, zul je zien dat de eerste criteria als iemand waarschijnlijk leefde of stierf op de titanic was of je een man was. Als je een man bent ga je naar de linker tak en werk je twee knooppunten omlaag, of je nu een volwassene bent en je broer of zus/echtgenoot telt mee aan boord. Dus als je een alleenstaande man was, was de kans op overleven vrij klein.
prestatie-evaluatie
voordat we de metrics breken, laten we waarden voorspellen voor uw testset. Net als bij de oproep om te trainen, selecteert u de gegevens en het type voorspelling. Het kernverschil is de modelspecificatie.
test$pred <- predict(object = model,
newdata = test,
type = "class")
er zijn verschillende prestatie-evaluatiegegevens die erg handig zijn bij het begrijpen van de effectiviteit van uw beslissingsboom.
nauwkeurigheid
deze maatstaf is zeer eenvoudig, welk percentage van uw voorspellingen correct waren. De verwarmingsmatrixfunctie van caret
omvat dit.
Verwarmingsmatrix
de confusionMatrix
functie van het caret
pakket is ongelooflijk nuttig. Voor het beoordelen van de prestaties van het Classificatiemodel. Laad het pakket, en geef het uw voorspellingen & de actuals.
library(caret)
confusionMatrix(data = test$pred,
reference = test$Survived)
het eerste wat deze functie je laat zien is wat men een verwarmingsmatrix noemt. Dit toont u een tabel van hoe voorspellingen en actuals opgesteld. Dus de diagonale cellen waar de voorspelling en referentie hetzelfde zijn representeert wat we correct hebben. Het tellen van deze 149 (106 + 43) en delen door het totale aantal records, 178; we komen tot onze nauwkeurigheid van 83,4%.
echt positief: de cel in het kwadrant waar zowel de referentie als de voorspelling 1 zijn. Dit geeft aan dat je overleving voorspelde en dat ze in feite overleefden.
False positive: hier voorspelde u positief, maar u had het mis.
True negative: als je negatief voorspelt en je hebt gelijk.
vals-negatief: wanneer u negatief voorspelt en u onjuist bent.
nog een paar belangrijke statistieken om in gedachten te houden zijn gevoeligheid en specificiteit. Gevoeligheid is het percentage echte records dat je correct voorspelde.
specificiteit aan de andere kant is om te meten welk deel van de werkelijke valse records u correct voorspelde.
specificiteit moet in gedachten worden gehouden bij het voorspellen van een onevenwichtige dataset. Een veel voorkomend voorbeeld hiervan is voor het classificeren van e-mail spam. 99% van de tijd is het geen spam, dus als je voorspelde dat niets ooit spam was zou je 99% nauwkeurigheid hebben, maar je specificiteit zou 0 zijn, wat leidt tot alle spam wordt geaccepteerd.
conclusie
ik hoop dat u genoten hebt van deze snelle les in beslissingsbomen. Laat het me weten als er iets is waar je meer informatie over wilt of als er iets is wat je wilt dat ik in een ander bericht doe.
Happy Data Science-ing! Als je dit leuk vond, kom eens kijken op andere berichten zoals deze op datasciencelessons.com!