始める無料で始める

木のゲインを計算する

動画では、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
コードを編集して実行