Aan de slagGa gratis aan de slag

Eén laatste tree met meer opties

In deze oefening gebruik je enkele extra argumenten die in de video zijn besproken. Een aantal specificaties in de functie rpart.control() wordt aangepast, en er worden gewichten meegegeven via het argument weights in rpart(). De vector case_weights is al voor je aangemaakt en staat in je werkruimte. Deze vector bevat gewichten van 1 voor de non-defaults in de trainingsset en gewichten van 3 voor defaults in de trainingsset. Door hogere gewichten voor defaults te specificeren, zal het model meer belang hechten aan het correct classificeren van defaults.

Deze oefening maakt deel uit van de cursus

Kredietrisicomodellering in R

Cursus bekijken

Oefeninstructies

  • Zet de seed op 345.
  • Breid de gegeven code uit door case_weights door te geven aan het argument weights van rpart().
  • Verander het minimale aantal splits dat in een knoop is toegestaan naar 5, en het minimale aantal observaties in bladknooppunten naar 2 met respectievelijk de argumenten minsplit en minbucket in rpart.control.
  • Gebruik de functie plotcp() om te onderzoeken waar de kruisgevalideerde fout kan worden geminimaliseerd.
  • Gebruik which.min() om de rij te identificeren met de minimale "xerror" in tree_weights$cp. Ken dit toe aan index.
  • Gebruik de gegeven code om de cp te selecteren waarvoor de kruisgevalideerde fout minimaal is.
  • Snoei de boom met de complexiteitsparameter waarvoor de kruisgevalideerde fout minimaal is. Sla de gesnoeide boom op in ptree_weights.
  • Plot de gesnoeide boom met de functie prp(). Voeg een tweede argument extra toe en zet dit gelijk aan 1.

Praktische interactieve oefening

Probeer deze oefening eens door deze voorbeeldcode in te vullen.

# set a seed and run the code to obtain a tree using weights, minsplit and minbucket
set.seed(345)
tree_weights <- rpart(loan_status ~ ., method = "class",
                      data = training_set,
                      control = rpart.control(minsplit = ___, minbucket = ___, cp = 0.001))

# Plot the cross-validated error rate for a changing cp


# Create an index for of the row with the minimum xerror
index <- which.min(___$___[ , "xerror"])

# Create tree_min
tree_min <- tree_weights$cp[index, "CP"]

# Prune the tree using tree_min


# Plot the pruned tree using the rpart.plot()-package
Code bewerken en uitvoeren