De gain voor een boom berekenen
In de video heb je gezien hoe de Gini-maat wordt gebruikt om de perfecte splitsing voor een boom te maken. Nu ga je de gain berekenen voor de boom die in je werkruimte is geladen.
De gegevensset bevat 500 gevallen, waarvan 89 defaults. Dit leidde tot een Gini van 0.292632 in de wortelknoop. Ter herinnering: de Gini van een bepaalde knoop = 2 * aandeel defaults in deze knoop * aandeel non-defaults in deze knoop. Bekijk de code ter opfrissing.
gini_root <- 2 * (89 / 500) * (411 / 500)
Je gebruikt deze Gini-maten om de gain van de bladknopen ten opzichte van de wortelknoop te berekenen. Bekijk de volgende code om een idee te krijgen hoe je de berekende gini-maten kunt gebruiken om de gain van een knoop te berekenen.
Gain = gini_root - (prop(cases left leaf) * gini_left) - (prop(cases right leaf * gini_right))
Bereken de gini in de linker- en de rechterknoop, en de gain van de twee bladknopen ten opzichte van de wortelknoop. Het object met de boom is small_tree.
Deze oefening maakt deel uit van de cursus
Kredietrisicomodellering in R
Oefeninstructies
- De berekening voor de Gini van de wortelknoop is gegeven.
- Bereken de Gini-maat voor de linker bladknoop.
- Bereken de Gini-maat voor de rechter bladknoop.
- Bereken de gain door het verschil te nemen tussen de Gini van de wortelknoop en de gewogen Gini-maten van de bladknopen.
- Informatie over de splitsing in deze boom vind je met
$splitop het boomobjectsmall_tree. In plaats van gain kijk je hier naar de kolomimprove.improveis een alternatieve maat voor gain, eenvoudig verkregen door gain te vermenigvuldigen met het aantal gevallen in de gegevensset. Zorg ervoor dat het objectimprove(code gegeven) dezelfde waarde heeft als insmall_tree$split.
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
# The Gini-measure of the root node is given below
gini_root <- 2 * 89 / 500 * 411 / 500
# Compute the Gini measure for the left leaf node
gini_ll <-
# Compute the Gini measure for the right leaf node
gini_rl <-
# Compute the gain
gain <- gini_root - 446 / 500 * gini_ll - 54 / 500 * gini_rl
# compare the improve-column in small_tree$splits with our computed gain, multiplied by 500, and assure they are the same
small_tree$splits
improve <- gain * 500