Big Data Analytics - Arbres de décision

Un arbre de décision est un algorithme utilisé pour les problèmes d'apprentissage supervisé tels que la classification ou la régression. Un arbre de décision ou un arbre de classification est un arbre dans lequel chaque nœud interne (non-feuille) est étiqueté avec une caractéristique d'entrée. Les arcs provenant d'un nœud étiqueté avec une entité sont étiquetés avec chacune des valeurs possibles de l'entité. Chaque feuille de l'arbre est étiquetée avec une classe ou une distribution de probabilité sur les classes.

Un arbre peut être "appris" en divisant l'ensemble source en sous-ensembles sur la base d'un test de valeur d'attribut. Ce processus est répété sur chaque sous-ensemble dérivé d'une manière récursive appeléerecursive partitioning. La récursivité est terminée lorsque le sous-ensemble d'un nœud a tous la même valeur que la variable cible, ou lorsque le fractionnement n'ajoute plus de valeur aux prédictions. Ce processus d'induction descendante d'arbres de décision est un exemple d'algorithme glouton, et c'est la stratégie la plus courante pour apprendre les arbres de décision.

Les arbres de décision utilisés dans l'exploration de données sont de deux types principaux -

  • Classification tree - lorsque la réponse est une variable nominale, par exemple si un email est du spam ou non.

  • Regression tree - lorsque le résultat prévu peut être considéré comme un nombre réel (par exemple le salaire d'un travailleur).

Les arbres de décision sont une méthode simple et, en tant que telle, posent certains problèmes. L'un de ces problèmes est la forte variance des modèles résultants produits par les arbres de décision. Afin d'atténuer ce problème, des méthodes d'ensemble d'arbres de décision ont été développées. Il existe actuellement deux groupes de méthodes d'ensemble largement utilisées -

  • Bagging decision trees- Ces arbres sont utilisés pour créer plusieurs arbres de décision en rééchantillonnant à plusieurs reprises les données de formation avec remplacement et en votant pour une prédiction consensuelle. Cet algorithme a été appelé forêt aléatoire.

  • Boosting decision trees- L'amélioration du gradient combine des apprenants faibles; dans ce cas, les arbres de décision en un seul apprenant fort, de manière itérative. Il ajuste un arbre faible aux données et maintient itérativement les apprenants faibles afin de corriger l'erreur du modèle précédent.

# 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)