Beräkna vinsten för ett träd
I videon såg du hur Gini-måttet används för att hitta den optimala uppdelningen i ett träd. Nu ska du beräkna vinsten för det träd som finns inläst i din arbetsyta.
Datamängden innehåller 500 observationer, varav 89 är defaults. Det gav ett Gini-värde på 0,292632 i rotnoden. Som en kort påminnelse: Gini för en viss nod = 2 * andel defaults i noden * andel icke-defaults i noden. Titta på koden nedan för att fräscha upp minnet.
gini_root <- 2 * (89 / 500) * (411 / 500)
Du kommer att använda dessa Gini-mått för att beräkna vinsten för lövnoderna i förhållande till rotnoden. Se på följande kod för att förstå hur du kan använda Gini-måtten för att beräkna vinsten för en nod.
Gain = gini_root - (prop(cases left leaf) * gini_left) - (prop(cases right leaf * gini_right))
Beräkna Gini-värdet för den vänstra respektive den högra noden, samt vinsten för de två lövnoderna i förhållande till rotnoden. Objektet som innehåller trädet är small_tree.
Den här övningen är en del av kursen
Kreditriskmodellering i R
Övningsinstruktioner
- Beräkningen av Gini för rotnoden är redan given.
- Beräkna Gini-måttet för den vänstra lövnoden.
- Beräkna Gini-måttet för den högra lövnoden.
- Beräkna vinsten genom att ta skillnaden mellan Gini-värdet i rotnoden och de viktade Gini-värdena för lövnoderna.
- Information om uppdelningen i trädet hittar du med
$splitoch trädobjektetsmall_tree. I stället för gain ska du titta på kolumnenimprove.improveär ett alternativt mått för gain – det erhålls helt enkelt genom att multiplicera gain med antalet observationer i datamängden. Kontrollera att objektetimprove(koden är given) har samma värde som ismall_tree$split.
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
# 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