計算樹的增益(gain)
在影片中,你看過如何使用 Gini 測度來為決策樹找出最佳切分。現在,你要計算已載入到你工作空間中的這棵樹的增益。
這個資料集共有 500 筆個案,其中有 89 筆為違約。根節點的 Gini 因此為 0.292632。小提醒:某個節點的 Gini = 2 × 該節點中違約的比例 × 該節點中非違約的比例。可參考以下程式碼複習。
gini_root <- 2 * (89 / 500) * (411 / 500)
你會用這些 Gini 值來計算各葉節點相對於根節點的增益。先看下面的程式片段,了解如何用你計算出的 Gini 來求某個節點的增益。
Gain = gini_root - (prop(cases left leaf) * gini_left) - (prop(cases right leaf * gini_right))
請計算左側與右側節點的 Gini,並求出兩個葉節點相對於根節點的增益。樹的物件為 small_tree。
本練習屬於課程
R 的信用風險建模
練習說明
- 已提供根節點 Gini 的計算。
- 計算左側葉節點的 Gini 測度。
- 計算右側葉節點的 Gini 測度。
- 以根節點 Gini 減去加權後葉節點 Gini 值,計算增益(gain)。
- 關於此樹的切分資訊,可使用樹物件
small_tree的$split來查看。這裡不要看 gain,而是查看improve欄位。improve是 gain 的替代指標,等於將 gain 乘上資料集中個案數得到。請確認物件improve(程式碼已提供)與small_tree$split中的數值相同。
動手互動練習
試著完成這個範例程式碼,體驗一下這個練習。
# 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