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)