când vine vorba de clasificare, utilizarea unui clasificator de arbore de decizie este una dintre cele mai ușor de utilizat.
de ce să folosiți un arbore de decizie
- incredibil de ușor de interpretat
- se ocupă de datele lipsă & valorile aberante foarte bine și, ca atare, necesită mult mai puțin în față de curățare
- veți obține pentru a renunța la codificarea variabilă categorică ca arbori de decizie se ocupe de categoricals bine!
- fără a se scufunda în specificul partiționării recursive, arborii de decizie sunt capabili să modeleze relații neliniare.
de ce să nu folosiți un arbore de decizie
cu tot ce bine au spus că nu sunt întotdeauna opțiunea perfectă.
- în același mod pot fi simple, pot fi și prea complicate, ceea ce face aproape imposibilă Conceptualizarea sau interpretarea.
- pentru a lua această idee un pic mai departe, cu un copac care este prea părtinitoare sau complicat, acesta poate fi de catering prea bine la datele sale de formare și, ca rezultat este overfit.
model de formare
cu care a spus, vă permite să sari în ea. Nu voi vorbi despre validarea încrucișată sau tren, test împărțit mult, dar va posta codul de mai jos. Asigurați-vă că comentați dacă există ceva pe care doriți mai multe explicații.
în primul rând vom rupe datele în formare & seturi de testare.
de asemenea, rețineți că vom folosi setul de date clasic titanic care este inclus în baza R.
acum vom instrui modelul folosind funcția rpart
din pachetul rpart
. Lucrurile cheie de observat aici sunt că variabila pe care vrem să o prezicem este supraviețuită, așa că vrem să înțelegem probabilitatea ca orice individ dat să fi supraviețuit conform unor date. ~ poate fi interpretat ca prin; deci, cu alte cuvinte, vă permite să înțeleagă supraviețuit de unele variabile. Dacă după ~ există o . asta înseamnă că vrem să folosim orice altă variabilă din setul de date pentru a prezice supraviețuirea. Alternativ, așa cum se arată mai jos, putem apela variabilele pe care dorim să le folosim în mod explicit.
un alt lucru de remarcat este că method
este class
. Acest lucru se datorează faptului că dorim să creăm un arbore de clasificare care să prezică rezultate categorice, spre deosebire de un arbore de regresie care ar fi utilizat pentru rezultate numerice. Și, în sfârșit, datele pe care le folosim pentru a instrui Modelul sunt train
.
model <- rpart(formula = Survived ~ Pclass + Sex + Age + SibSp + Parch + Fare + Embarked,
data = titanic_train,
method = "class")
Interpretabilitate
așa cum am menționat anterior, unul dintre lucrurile care fac un arbore de decizie atât de ușor de utilizat este că este incredibil de ușor de interpretat. Puteți urmări diferitele ramuri ale copacului pentru rezultate diferite.
rpart.plot(model)
este un pic dificil de citit acolo, dar dacă măriți puțin, veți vedea că primul criteriu dacă cineva a trăit sau a murit probabil pe titanic a fost dacă sunteți bărbat. Dacă ați fost un bărbat vă mutați la ramura din stânga și de a lucra în jos două noduri, dacă ai fost un adult și frate/soț conta la bord. Dacă erai singur, șansele de supraviețuire erau destul de mici.
Evaluarea performanței
înainte de a elimina valorile, vă permite să preziceți valorile pentru setul dvs. de testare. Similar cu apelul de tren, selectați datele și tipul de predicție. Diferența de bază fiind specificația modelului.
test$pred <- predict(object = model,
newdata = test,
type = "class")
există o varietate de valori de evaluare a performanței care vor fi foarte utile atunci când înțelegeți eficacitatea arborelui Dvs. de decizie.
precizie
această valoare este foarte simplă, ce procent din predicțiile dvs. au fost corecte. Funcția matrice de confuzie de la caret
include acest lucru.
matrice de confuzie
funcția confusionMatrix
din pachetul caret
este incredibil de utilă. Pentru evaluarea performanței modelului de clasificare. Încărcați pachetul și transmiteți-l predicțiile dvs. & actualele.
library(caret)
confusionMatrix(data = test$pred,
reference = test$Survived)
primul lucru pe care această funcție vă arată este ceea ce se numește o matrice de confuzie. Acest lucru vă arată un tabel cu modul în care predicțiile și actualele s-au aliniat. Deci, celulele diagonale în care predicția și referința sunt aceleași reprezintă ceea ce am obținut corect. Numărând cele 149 (106 + 43) și împărțind-o la numărul total de înregistrări, 178; ajungem la numărul nostru de precizie de 83,4%.
adevărat pozitiv: celula din cadran unde atât referința, cât și predicția sunt 1. Acest lucru indică faptul că ați prezis supraviețuirea și au supraviețuit de fapt.
fals pozitiv: aici ai prezis pozitiv, dar ai greșit.
adevărat negativ: când prezici negativ și ai dreptate.
fals negativ: când prezici negativ și ești incorect.
încă câteva valori cheie de reținut sunt sensibilitatea și specificitatea. Sensibilitatea este procentul de înregistrări adevărate pe care le-ați prezis corect.
specificitatea pe de altă parte este de a măsura ce parte a înregistrărilor false reale ați prezis corect.
specificitatea este una de care trebuie să țineți cont atunci când preziceți un set de date dezechilibrat. Un exemplu foarte comun în acest sens este clasificarea spam-ului prin e-mail. 99% din timp nu este spam, deci dacă ați prezis că nimic nu a fost vreodată spam, veți avea o precizie de 99%, dar specificitatea dvs. ar fi 0, ceea ce va duce la acceptarea tuturor spamurilor.
concluzie
sper că v-a plăcut această lecție rapidă despre copacii de decizie. Lasă-mă să știu dacă a existat ceva ce ai vrut mai multe informații despre sau dacă există ceva ce ai vrea să acopere într-un alt post.
știința fericită a datelor! Dacă ți-a plăcut acest lucru, Vino să vezi alte postări de genul acesta la datasciencelessons.com!