木のゲインを計算する
動画では、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、そしてルートノードに対する2つのリーフのゲインを計算してください。木を格納しているオブジェクトは small_tree です。
この演習はコースの一部です
R で学ぶクレジットリスク・モデリング
演習の手順
- ルートノードのGiniの計算は与えられています。
- 左リーフノードのGiniを計算します。
- 右リーフノードのGiniを計算します。
- ルートノードのGiniから、重み付きのリーフノードのGiniを差し引いてゲインを計算します。
- この木の分割に関する情報は、木オブジェクト
small_treeの$splitから確認できます。ここでは gain ではなくimprove列を参照してください。improveはゲインにデータセットのケース数を掛けたもので得られる代替指標です。オブジェクト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