Obliczanie zysku dla drzewa
W filmie widziałeś(-aś), jak miara Giniego jest używana do wyznaczania optymalnego podziału w drzewie. Teraz obliczysz zysk dla drzewa wczytanego do twojego środowiska pracy.
Zbiór danych zawiera 500 przypadków, z czego 89 to przypadki defaultu. Dało to wartość Giniego równą 0,292632 w węźle korzeniowym. Dla przypomnienia: Gini dla danego węzła = 2 * odsetek defaultów w tym węźle * odsetek przypadków bez defaultu w tym węźle. Poniższy kod ilustruje tę zasadę.
gini_root <- 2 * (89 / 500) * (411 / 500)
Skorzystasz z tych miar Giniego, aby obliczyć zysk węzłów liściowych względem węzła korzeniowego. Poniższy kod pokazuje, jak użyć obliczonych miar Giniego do wyznaczenia zysku węzła.
Gain = gini_root - (prop(cases left leaf) * gini_left) - (prop(cases right leaf * gini_right))
Oblicz wartość Giniego dla lewego i prawego węzła liściowego oraz zysk obu węzłów liściowych względem węzła korzeniowego. Obiekt zawierający drzewo to small_tree.
To ćwiczenie jest częścią kursu
Modelowanie ryzyka kredytowego w R
Instrukcje do ćwiczenia
- Obliczenie Giniego dla węzła korzeniowego jest już podane.
- Oblicz miarę Giniego dla lewego węzła liściowego.
- Oblicz miarę Giniego dla prawego węzła liściowego.
- Oblicz zysk jako różnicę między Ginim węzła korzeniowego a ważonymi miarami Giniego węzłów liściowych.
- Informacje dotyczące podziału w tym drzewie możesz znaleźć za pomocą
$spliti obiektu drzewasmall_tree. Zamiast zysku sprawdź tutaj kolumnęimprove.improveto alternatywna miara zysku – otrzymuje się ją, mnożąc zysk przez liczbę przypadków w zbiorze danych. Upewnij się, że obiektimprove(kod jest podany) ma taką samą wartość jak wsmall_tree$split.
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
# 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