Big Data Analytics - Entscheidungsbäume

Ein Entscheidungsbaum ist ein Algorithmus, der für überwachte Lernprobleme wie Klassifizierung oder Regression verwendet wird. Ein Entscheidungsbaum oder ein Klassifizierungsbaum ist ein Baum, in dem jeder interne (nicht blättrige) Knoten mit einem Eingabe-Feature gekennzeichnet ist. Die Bögen, die von einem mit einem Merkmal gekennzeichneten Knoten kommen, sind mit jedem der möglichen Werte des Merkmals gekennzeichnet. Jedes Blatt des Baumes ist mit einer Klasse oder einer Wahrscheinlichkeitsverteilung über die Klassen gekennzeichnet.

Ein Baum kann "gelernt" werden, indem der Quellensatz basierend auf einem Attributwerttest in Teilmengen aufgeteilt wird. Dieser Vorgang wird für jede abgeleitete Teilmenge rekursiv wiederholtrecursive partitioning. Die Rekursion ist abgeschlossen, wenn die Teilmenge an einem Knoten denselben Wert wie die Zielvariable hat oder wenn die Aufteilung den Vorhersagen keinen Wert mehr hinzufügt. Dieser Prozess der Top-Down-Induktion von Entscheidungsbäumen ist ein Beispiel für einen gierigen Algorithmus und die häufigste Strategie zum Lernen von Entscheidungsbäumen.

Es gibt zwei Haupttypen von Entscheidungsbäumen, die beim Data Mining verwendet werden:

  • Classification tree - Wenn die Antwort eine nominelle Variable ist, z. B. wenn eine E-Mail Spam ist oder nicht.

  • Regression tree - wenn das vorhergesagte Ergebnis als reelle Zahl betrachtet werden kann (z. B. das Gehalt eines Arbeitnehmers).

Entscheidungsbäume sind eine einfache Methode und haben daher einige Probleme. Eines dieser Probleme ist die hohe Varianz in den resultierenden Modellen, die Entscheidungsbäume erzeugen. Um dieses Problem zu lösen, wurden Ensemble-Methoden für Entscheidungsbäume entwickelt. Es gibt zwei Gruppen von Ensemble-Methoden, die derzeit ausgiebig verwendet werden -

  • Bagging decision trees- Diese Bäume werden verwendet, um mehrere Entscheidungsbäume zu erstellen, indem Trainingsdaten wiederholt durch Ersetzen neu abgetastet werden und die Bäume für eine Konsensprognose abgestimmt werden. Dieser Algorithmus wurde als zufällige Gesamtstruktur bezeichnet.

  • Boosting decision trees- Gradient Boosting kombiniert schwache Lernende; In diesem Fall werden Entscheidungsbäume iterativ zu einem einzigen starken Lernenden. Es passt einen schwachen Baum an die Daten an und passt iterativ weiterhin schwache Lernende an, um den Fehler des vorherigen Modells zu korrigieren.

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