Undersampling van de trainingsset
In de video zag je dat je het probleem van onevenwichtige data kunt aanpakken met under- of oversampling. De trainingsset is voor je ge-undersampled, zodat 1/3 van de trainingsset uit defaults bestaat en 2/3 uit non-defaults. De resulterende gegevensset is beschikbaar in je werkruimte als undersampled_training_set, en bevat minder observaties (6570 in plaats van 19394). In deze oefening maak je een beslisboom met de ge-undersamplede gegevensset.
Je zult merken dat de bomen in deze en de volgende oefeningen erg groot zijn — zo groot dat je ze niet echt meer kunt lezen. Geen zorgen: in de volgende video laten we je zien hoe je ze beheersbaar kunt maken!
Deze oefening maakt deel uit van de cursus
Kredietrisicomodellering in R
Oefeninstructies
- Het pakket rpart is al voor je geïnstalleerd. Laad het pakket in je werkruimte.
- Pas de gegeven code aan zodat er een beslisboom wordt gebouwd met de ge-undersamplede trainingsset in plaats van
training_set. Voeg daarnaast het argumentcontrol = rpart.control(cp = 0.001)toe.cp, de complexity parameter, is de drempelwaarde voor de afname in algemene lack of fit bij elke splitsing. Als niet aancpwordt voldaan, worden er geen verdere splitsingen uitgevoerd. De standaardwaarde vancpis 0,01, maar voor complexe problemen is het aan te radencpte versoepelen. - Plot de beslisboom met de functie plot en de naam van het boomobject. Voeg een tweede argument
uniform = TRUEtoe om takken even lang te maken. - De vorige opdracht maakt alleen een boom met knopen en verbindingen, maar zonder tekst (zogenoemde "labels"). Gebruik de functie
text()met als enige argumenttree_undersampleom labels toe te voegen.
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
# Load package rpart in your workspace.
# Change the code provided in the video such that a decision tree is constructed using the undersampled training set. Include rpart.control to relax the complexity parameter to 0.001.
tree_undersample <- rpart(loan_status ~ ., method = "class",
data = training_set)
# Plot the decision tree
# Add labels to the decision tree