Big Data Analytics - Alberi decisionali

Un albero decisionale è un algoritmo utilizzato per problemi di apprendimento supervisionato come la classificazione o la regressione. Un albero decisionale o un albero di classificazione è un albero in cui ogni nodo interno (non foglia) è etichettato con una funzione di input. Gli archi provenienti da un nodo etichettato con una caratteristica sono etichettati con ciascuno dei possibili valori della caratteristica. Ogni foglia dell'albero è etichettata con una classe o una distribuzione di probabilità sulle classi.

Un albero può essere "appreso" suddividendo il set di sorgenti in sottoinsiemi in base a un test del valore dell'attributo. Questo processo viene ripetuto su ogni sottoinsieme derivato in un modo ricorsivo chiamatorecursive partitioning. La ricorsione è completata quando il sottoinsieme in un nodo ha lo stesso valore della variabile di destinazione o quando la divisione non aggiunge più valore alle previsioni. Questo processo di induzione dall'alto verso il basso degli alberi decisionali è un esempio di algoritmo avido ed è la strategia più comune per l'apprendimento degli alberi decisionali.

Gli alberi decisionali utilizzati nel data mining sono di due tipi principali:

  • Classification tree - quando la risposta è una variabile nominale, ad esempio se un'e-mail è spam o meno.

  • Regression tree - quando il risultato previsto può essere considerato un numero reale (es. Lo stipendio di un lavoratore).

Gli alberi decisionali sono un metodo semplice e in quanto tale presenta alcuni problemi. Uno di questi problemi è l'elevata varianza nei modelli risultanti prodotti dagli alberi decisionali. Per alleviare questo problema, sono stati sviluppati metodi di insieme di alberi decisionali. Esistono due gruppi di metodi di insieme attualmente ampiamente utilizzati:

  • Bagging decision trees- Questi alberi vengono utilizzati per creare più alberi decisionali ricampionando ripetutamente i dati di addestramento con sostituzione e votando gli alberi per una previsione di consenso. Questo algoritmo è stato chiamato foresta casuale.

  • Boosting decision trees- Il potenziamento del gradiente combina studenti deboli; in questo caso, alberi decisionali in un unico forte studente, in modo iterativo. Adatta un albero debole ai dati e continua ad adattare in modo iterativo gli studenti deboli per correggere l'errore del modello precedente.

# Install the party package
# install.packages('party') 
library(party) 
library(ggplot2)  

head(diamonds) 
# We will predict the cut of diamonds using the features available in the 
diamonds dataset. 
ct = ctree(cut ~ ., data = diamonds) 

# plot(ct, main="Conditional Inference Tree") 
# Example output 
# Response:  cut  
# Inputs:  carat, color, clarity, depth, table, price, x, y, z  

# Number of observations:  53940  
#  
# 1) table <= 57; criterion = 1, statistic = 10131.878 
#   2) depth <= 63; criterion = 1, statistic = 8377.279 
#     3) table <= 56.4; criterion = 1, statistic = 226.423 
#       4) z <= 2.64; criterion = 1, statistic = 70.393 
#         5) clarity <= VS1; criterion = 0.989, statistic = 10.48 
#           6) color <= E; criterion = 0.997, statistic = 12.829 
#             7)*  weights = 82  
#           6) color > E  

#Table of prediction errors 
table(predict(ct), diamonds$cut) 
#            Fair  Good Very Good Premium Ideal 
# Fair       1388   171        17       0    14 
# Good        102  2912       499      26    27 
# Very Good    54   998      3334     249   355 
# Premium      44   711      5054   11915  1167 
# Ideal        22   114      3178    1601 19988 
# Estimated class probabilities 
probs = predict(ct, newdata = diamonds, type = "prob") 
probs = do.call(rbind, probs) 
head(probs)