R - Random Forest: Ein Anfängerguide

Hallo da draußen, zukünftige Datenwissenschaftler! Heute machen wir uns auf eine aufregende Reise in die Welt der Random Forests mit R. Machen Sie sich keine Sorgen, wenn Sie noch nie eine Zeile Code geschrieben haben – ich werde Ihr freundlicher Guide an jedem Schritt des Weges sein. Am Ende dieses Tutorials werden Sie Ihre eigenen digitalen Wälder anpflanzen! Los geht's, nicht wahr?

R - Random Forest

Installation der erforderlichen R-Pakete

Bevor wir mit dem Pflanzen unserer digitalen Bäume beginnen können, müssen wir sicherstellen, dass wir die richtigen Werkzeuge haben. In R kommen diese Werkzeuge in Form von Paketen daher. Stellen Sie sich Pakete als Werkzeugkästen vor, die mit speziellen Funktionen gefüllt sind, die unser Leben einfacher machen.

Für unser Random Forest-Abenteuer benötigen wir zwei Hauptpakete: randomForest und caret. Lassen Sie uns sie installieren!

# Installieren der erforderlichen Pakete
install.packages("randomForest")
install.packages("caret")

# Laden der Pakete
library(randomForest)
library(caret)

Wenn Sie diese Zeilen ausführen, geht R ins Internet und lädt diese Pakete für Sie herunter. Es ist so, als würden Sie online Werkzeuge bestellen und sie direkt an Ihre digitale Türschwelle geliefert bekommen!

Verständnis des Random Forest: Die Grundlagen

Stellen Sie sich vor, Sie sind in einem Wald verloren und müssen Ihren Weg hinausfinden. Sie könnten mehrere verschiedene Menschen nach Wegweisungen fragen. Einige könnten helt正确 sein, andere könnten total falsch liegen, aber wenn Sie der Mehrheitsmeinung folgen, sind Sie wahrscheinlich auf dem richtigen Weg. Genau so arbeitet ein Random Forest!

Ein Random Forest ist eine Methodik des ensemble learning, das bedeutet, er verwendet mehrere Entscheidungsbäume, um Vorhersagen zu treffen. Es ist so, als hätten Sie ein Gremium von Baumeister-Experten, das über die beste Entscheidung abstimmt.

Schlüsselkomponenten des Random Forest

  1. Entscheidungsbäume: Diese sind die individuellen "Wähler" in unserem Wald.
  2. Bootstrapping: Jeder Baum wird auf einem zufälligen Subset der Daten trainiert.
  3. Feature-Zufälligkeit: Bei jedem Split im Baum wird nur ein zufälliges Subset der Merkmale in Betracht gezogen.
  4. Aggregation: Die endgültige Vorhersage wird durch Aggregation der Vorhersagen aller Bäume getroffen.

Erstellung Ihres ersten Random Forest

Lassen Sie uns mit einem einfachen Beispiel beginnen, das die eingebettete iris-Datenbank verwendet. Diese Datenbank enthält Messungen verschiedener Iris-Blumen.

# Laden der `iris`-Datenbank
data(iris)

# Setzen eines Seeds für Wiederholbarkeit
set.seed(123)

# Erstellen eines Random Forest-Modells
rf_model <- randomForest(Species ~ ., data = iris, ntree = 500)

# Ausgabe des Modells
print(rf_model)

In diesem Code:

  • Laden wir die iris-Datenbank.
  • Setzen wir einen Seed, um Wiederholbarkeit zu gewährleisten (damit wir alle die gleichen "zufälligen" Ergebnisse erhalten).
  • Erstellen wir ein Random Forest-Modell mit randomForest(). Der Teil Species ~ . bedeutet, dass wir die Species mit allen anderen Variablen vorhersagen möchten.
  • Wir geben an, dass unser Wald 500 Bäume haben soll (ntree = 500).

Wenn Sie dies ausführen, sehen Sie eine Zusammenfassung Ihres Random Forest-Modells. Es ist wie ein Zeugnis für Ihren Wald!

Vorhersagen mit Ihrem Random Forest

Nun, da wir unseren Wald haben, verwenden wir ihn, um einige Vorhersagen zu treffen!

# Vorhersagen auf der `iris`-Datenbank
predictions <- predict(rf_model, iris)

# Erstellen einer Verwechslungsmatrix
confusion_matrix <- table(predictions, iris$Species)

# Ausgabe der Verwechslungsmatrix
print(confusion_matrix)

# Berechnung der Genauigkeit
accuracy <- sum(diag(confusion_matrix)) / sum(confusion_matrix)
print(paste("Genauigkeit:", round(accuracy, 4)))

Dieser Code:

  • Verwendet unser Modell, um Vorhersagen auf der iris-Datenbank zu treffen.
  • Erstellt eine Verwechslungsmatrix, um unsere Vorhersagen mit den tatsächlichen Arten zu vergleichen.
  • Berechnet und gibt die Genauigkeit unseres Modells aus.

Die Verwechslungsmatrix zeigt, wie viele Vorhersagen für jede Art korrekt waren. Die Diagonalelemente repräsentieren die richtigen Vorhersagen.

Merkmalsexzellenz

Eine der großartigen Eigenschaften von Random Forests ist, dass sie uns mitteilen können, welche Merkmale (Variablen) am wichtigsten für Vorhersagen sind. Lassen Sie uns das überprüfen!

# Merkmalsexzellenz ermitteln
importance <- importance(rf_model)

# Plot der Merkmalsexzellenz
varImpPlot(rf_model, main = "Merkmalsexzellenz")

Dieser Code erstellt ein Diagramm, das zeigt, welche Merkmale für Vorhersagen am nützlichsten waren. Es ist so, als würde unser Wald uns fragen, welche Wegweiser am hilfreichsten waren!

Cross-Validation: Testen der Stärke unseres Waldes

Um wirklich zu testen, wie gut unser Wald bei der Navigation ist, müssen wir sehen, wie er sich auf Daten schlägt, die er noch nicht gesehen hat. Dies können wir mit der Cross-Validation tun.

# Cross-Validation einrichten
ctrl <- trainControl(method = "cv", number = 5)

# Modell mit Cross-Validation trainieren
rf_cv <- train(Species ~ ., data = iris, method = "rf", trControl = ctrl)

# Ergebnisse ausgeben
print(rf_cv)

Dieser Code:

  • Richgt eine 5-fache Cross-Validation ein.
  • Trainiert ein neues Random Forest-Modell mit dieser Cross-Validation.
  • Gibt die Ergebnisse aus, einschließlich der Genauigkeit für jede Falte.

Cross-Validation ist wie das Schicken unseres Waldführers durch verschiedene Teile des Waldes, um zu sehen, wie gut er in verschiedenen Bedingungen abschneidet.

Feinabstimmung unseres Waldes: Finden der perfekten Anzahl von Bäumen

Genau wie in einem richtigen Wald kann es ein Problem sein, zu wenige oder zu viele Bäume zu haben. Lassen Sie uns die optimale Anzahl von Bäumen für unseren Random Forest finden.

# Bereich von zu testenden Bäumen festlegen
tree_nums <- c(100, 200, 500, 1000)

# Leeren Vektor für Genauigkeiten erstellen
accuracies <- vector("numeric", length(tree_nums))

# Durchlaufen verschiedener Bäumenzahlen
for (i in 1:length(tree_nums)) {
rf_model <- randomForest(Species ~ ., data = iris, ntree = tree_nums[i])
predictions <- predict(rf_model, iris)
accuracies[i] <- mean(predictions == iris$Species)
}

# Ergebnisse in einen Datensatz einfügen
results <- data.frame(Trees = tree_nums, Accuracy = accuracies)

# Ergebnisse ausgeben
print(results)

# Ergebnisse plotten
plot(tree_nums, accuracies, type = "b",
xlab = "Anzahl der Bäume", ylab = "Genauigkeit",
main = "Genauigkeit vs Anzahl der Bäume")

Dieser Code:

  • Versucht verschiedene Anzahl von Bäumen (100, 200, 500, 1000).
  • Berechnet die Genauigkeit für jede Anzahl von Bäumen.
  • Erstellt ein Diagramm, das zeigt, wie sich die Genauigkeit mit der Anzahl der Bäume ändert.

Schlussfolgerung

Glückwunsch! Sie haben gerade Ihren ersten Random Forest in R angebaut. Wir haben die Grundlagen des Erstellens eines Random Forest, der Vorhersage, der Bedeutung der Merkmale, der Durchführung einer Cross-Validation und sogar der Feinabstimmung unseres Waldes behandelt.

Denken Sie daran, dass Random Forests wie richtige Wälder von Vielfalt profitieren. Sie funktionieren am besten, wenn Sie eine Vielzahl von Merkmalen und eine gute Menge an Daten haben. Also, gehen Sie hinaus und pflanzen Sie viele Wälder, junger Datenwissenschaftler!

Hier ist eine schnelle Referenztabelle der Hauptmethoden, die wir verwendet haben:

Methode Beschreibung
randomForest() Erzeugt ein Random Forest-Modell
predict() Macht Vorhersagen mit dem Modell
importance() Berechnet die Merkmalsexzellenz
varImpPlot() Plottet die Merkmalsexzellenz
train() Trainiert ein Modell mit Cross-Validation
trainControl() Richtet Cross-Validation-Parameter ein

Frohes Waldpflanzen und möge Ihre Vorhersagen stets genau sein!

Credits: Image by storyset