Kom igångKom igång gratis

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

Visa kurs

Ö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 $split och trädobjektet small_tree. I stället för gain ska du titta på kolumnen improve. 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 objektet improve (koden är given) har samma värde som i small_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
Redigera och kör kod