Zacznij terazZacznij za darmo

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

Zobacz kurs

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ą $split i obiektu drzewa small_tree. Zamiast zysku sprawdź tutaj kolumnę improve. improve to alternatywna miara zysku – otrzymuje się ją, mnożąc zysk przez liczbę przypadków w zbiorze danych. Upewnij się, że obiekt improve (kod jest podany) ma taką samą wartość jak w small_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
Edytuj i uruchom kod