Undersampling av träningsdata
I videon såg du att man kan använda under- eller översampling för att hantera problemet med obalanserade data. Träningsdatan har redan undersampleats åt dig så att 1/3 av träningsdatan består av defaults och 2/3 av non-defaults. Den resulterande datamängden finns tillgänglig i din arbetsmiljö under namnet undersampled_training_set och innehåller färre observationer (6 570 i stället för 19 394). I den här övningen ska du bygga ett beslutsträd med hjälp av den undersamplade datamängden.
Du kommer att märka att träden i den här och nästa övning är mycket stora – så stora att de är svåra att läsa. Det behöver du inte oroa dig för nu. I nästa video visar vi dig hur du kan göra dem mer hanterbara!
Den här övningen är en del av kursen
Kreditriskmodellering i R
Övningsinstruktioner
- Paketet rpart är redan installerat. Läs in paketet i din arbetsmiljö.
- Ändra den befintliga koden så att beslutsträdet byggs med den undersamplade träningsdatan i stället för
training_set. Lägg också till argumentetcontrol = rpart.control(cp = 0.001).cp– komplexitetsparametern – är tröskelvädet för hur mycket den totala bristande anpassningen måste minska vid en uppdelning. Omcp-kravet inte uppfylls görs inga fler uppdelningar. Standardvärdet förcpär 0,01, men för komplexa problem rekommenderas ett lägre värde. - Rita beslutsträdet med funktionen plot och trädets objektnamn. Lägg till argumentet
uniform = TRUEsom andra argument för att få lika långa grenar. - Det föregående kommandot skapar ett träd med noder och kanter, men utan text (så kallade "etiketter"). Använd funktionen
text()medtree_undersamplesom enda argument för att lägga till etiketter.
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
# 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