per Saperne di Classificazione con Alberi di Decisione in R

Robert Wood

Seguire

Jul 30, 2019 · 4 min leggere

Quando si tratta di classificazione, utilizzando un albero di decisione di classificazione è uno dei più facili da utilizzare.

Perché usare un albero decisionale

  • Incredibilmente facile da interpretare
  • Gestisce molto bene i dati mancanti & valori anomali e come tale richiede molto meno pulizia frontale
  • Puoi rinunciare alla codifica delle variabili categoriali poiché gli alberi decisionali gestiscono bene le categorie!
  • Senza immergersi nelle specifiche del partizionamento ricorsivo, gli alberi decisionali sono in grado di modellare relazioni non lineari.

Perché non usare un albero decisionale

Con tutto ciò che di buono ha detto che non sono sempre l’opzione perfetta.

  • Allo stesso modo possono essere semplici, possono anche essere eccessivamente complicati rendendo quasi impossibile concettualizzare o interpretare.
  • Per prendere questa idea un po ‘ più lontano, con un albero che è eccessivamente prevenuto o complicato, può essere catering troppo bene per i suoi dati di allenamento e di conseguenza è overfit.

Modello di formazione

Detto questo, consente di saltare in esso. Non parlerò di convalida incrociata o treno, test split molto, ma pubblicherò il codice qui sotto. Assicurati di commentare se c’è qualcosa su cui vorresti maggiori spiegazioni.

Per prima cosa suddivideremo i dati in gruppi di test di addestramento &.

Si noti inoltre che useremo il classico set di dati titanic incluso in base R.

Ora addestreremo il modello utilizzando la funzione rpart dal pacchetto rpart. Le cose principali da notare qui è che la variabile che vogliamo prevedere è sopravvissuta, quindi vogliamo capire la probabilità che un dato individuo sia sopravvissuto secondo alcuni dati. ~ può essere interpretato come da; quindi in altre parole consente di capire Sopravvissuto da alcune variabili. Se dopo il ~ c’è un . ciò significa che vogliamo utilizzare ogni altra variabile nel set di dati per prevedere sopravvissuto. In alternativa, come mostrato di seguito, possiamo richiamare le variabili che vogliamo usare esplicitamente.

Un’altra cosa da notare è che methodè class. Questo perché vogliamo creare un albero di classificazione che preveda i risultati categoriali, al contrario di un albero di regressione che verrebbe utilizzato per i risultati numerici. E infine i dati che stiamo usando per addestrare il modello sono train.

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

Interpreteability

Come accennato in precedenza, una delle cose che rende un albero decisionale così facile da usare è che è incredibilmente facile da interpretare. Sei in grado di seguire i diversi rami dell’albero a risultati diversi.

rpart.plot(model)

È un po ‘difficile da leggere lì, ma se ingrandisci un po’, vedrai che il primo criterio se qualcuno probabilmente visse o morì sul titanic era se fossi un maschio. Se tu fossi un maschio ti sposti sul ramo sinistro e lavori su due nodi, se tu fossi un adulto e il tuo fratello/coniuge conta a bordo. Quindi, se tu fossi un singolo uomo sei probabilità di sopravvivenza erano piuttosto sottile.

Valutazione delle prestazioni

Prima di suddividere le metriche, consente di prevedere i valori per il set di test. Simile alla chiamata al treno, si seleziona i dati, e il tipo di previsione. La differenza principale è la specifica del modello.

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

Esistono una varietà di metriche di valutazione delle prestazioni che saranno molto utili quando si comprende l’efficacia del proprio albero decisionale.

Precisione

Questa metrica è molto semplice, quale percentuale delle tue previsioni era corretta. La funzione matrice confusione da caret include questo.

Confusion Matrix

La funzione confusionMatrix del pacchetto caret è incredibilmente utile. Per valutare le prestazioni del modello di classificazione. Carica il pacchetto e passalo le tue previsioni & gli effettivi.

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

La prima cosa che questa funzione mostra è quella che viene chiamata una matrice di confusione. Questo vi mostra una tabella di come le previsioni e reali allineati. Quindi le celle diagonali in cui la previsione e il riferimento sono uguali rappresentano ciò che abbiamo corretto. Contando quelli su 149 (106 + 43) e dividendolo per il numero totale di record, 178; arriviamo al nostro numero di precisione di 83.4%.

Vero positivo: la cella nel quadrante in cui sia il riferimento che la previsione sono 1. Questo indica che hai predetto la sopravvivenza e in effetti sono sopravvissuti.

Falso positivo: qui hai predetto positivo, ma ti sbagliavi.

Vero negativo: quando si prevede negativo, e si ha ragione.

Falso negativo: Quando si prevede negativo, e non si è corretto.

Un paio di altre metriche chiave da tenere a mente sono la sensibilità e la specificità. La sensibilità è la percentuale di record veri che hai previsto correttamente.

La specificità d’altra parte consiste nel misurare quale parte dei record falsi effettivi hai previsto correttamente.

La specificità è da tenere a mente quando si predice su un set di dati squilibrato. Un esempio molto comune di questo è per classificare lo spam e-mail. il 99% delle volte non è spam, quindi se hai previsto che nulla fosse mai spam avresti una precisione del 99%, ma la tua specificità sarebbe 0, portando a che tutto lo spam venga accettato.

Conclusione

Spero che ti sia piaciuta questa rapida lezione sugli alberi decisionali. Fammi sapere se c’era qualcosa su cui volevi maggiori informazioni o se c’è qualcosa che vorresti che coprissi in un altro post.

Buona scienza dei dati! Se ti è piaciuto questo, vieni a controllare altri post come questo a datasciencelessons.com!

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.

Previous post WordPress.org
Next post Piantare le Fave – Come coltivare le Fave in giardino