Výpočet zisku pro strom
Ve videu jsi viděl/a, jak se míra Gini používá k nalezení optimálního rozdělení stromu. Teď vypočítáš zisk pro strom načtený ve svém pracovním prostoru.
Datová sada obsahuje 500 případů, z nichž 89 jsou defaulty. To vedlo k hodnotě Gini 0,292632 v kořenovém uzlu. Jako připomínka: Gini daného uzlu = 2 * podíl defaultů v tomto uzlu * podíl non-defaultů v tomto uzlu. Podívej se na následující kód pro osvěžení.
gini_root <- 2 * (89 / 500) * (411 / 500)
Tyto hodnoty Gini použiješ k výpočtu zisku listových uzlů vzhledem ke kořenovému uzlu. Podívej se na následující kód, který ti ukáže, jak hodnoty Gini využít k výpočtu zisku uzlu.
Gain = gini_root - (prop(cases left leaf) * gini_left) - (prop(cases right leaf * gini_right))
Vypočítej hodnotu Gini pro levý a pravý listový uzel a zisk obou listových uzlů vzhledem ke kořenovému uzlu. Objekt obsahující strom se jmenuje small_tree.
Toto cvičení je součástí kurzu
Modelování kreditního rizika v R
Pokyny k cvičení
- Výpočet Gini pro kořenový uzel je již zadán.
- Vypočítej hodnotu Gini pro levý listový uzel.
- Vypočítej hodnotu Gini pro pravý listový uzel.
- Vypočítej zisk jako rozdíl mezi Gini kořenového uzlu a váženými hodnotami Gini listových uzlů.
- Informace o rozdělení v tomto stromu najdeš pomocí
$splita objektu stromusmall_tree. Místo gain se zde podívej na sloupecimprove.improveje alternativní metrika pro zisk – získáš ji jednoduše vynásobením zisku počtem případů v datové sadě. Ověř, že objektimprove(kód je zadán) má stejnou hodnotu jakosmall_tree$split.
Interaktivní cvičení na vyzkoušení si v praxi
Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.
# 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