この記事の読者
キーワード・知ってると理解がしやすい
- 決定木概要
- ノード分割規則
- ホールドアウト法
交差確認法
決定木 / Decision Tree #まとめ編
Index
決定木アルゴリズム / Decision Tree
#01 では、決定木の「概要」、「定義と数式化」、「クラスの割り当て」などを
#02 では、「ノード分割規則」を記した.
#03 では、「木の剪定アルゴリズム」について記す.
木の剪定アルゴリズム
木を構成した学習データに対する再代入誤り率を 誤り率と木の複雑さから定義し、 許容範囲まで木を剪定するアルゴリズムを考える.
葉ノードにおける誤り率
まずは、葉ノードにおける誤り率.
と定義しており、つまりここでいう、
となりそうだが、ノード単体で見たときは、前者のように解釈することもできるが、 木全体で見たときは後者のように、分母(全事象)を全データ件数とすることで、 木全体の誤り率について議論を進めていく.
は総学習データ数である. 木全体での再代入誤り率の推定値は、
となる.
木の複雑さ
木の複雑さを葉ノードの数で評価することにする.
木 のノード数を で表現すれば、葉ノード数は と表現できる.
木全体では以下のようになる.
目的は木のコスト を最小にすることであるが、
葉ノード数 が大きくなれば誤り率 は減少し、
逆に葉ノードの数が減れば誤り率は大きくなる.
係数 は、これら二つの要素の間のバランスをとる正則化パラメータの役割を果たしている.
である.
上で記した葉ノードにおける誤り率 式 (1) で定義した は、 式 (1) で定義したノード に学習データが属する を用いれば、
と書くことができる.
これは、ノード が葉ノードであれば、全体の誤りに対する の寄与と考えられる.
任意のノード を根ノードとする分枝 ( のすべえての子孫からなる部分木) を で表す.
もし、 であれば、 を葉ノードと考えたときの誤りと複雑さのコストより、
の分枝がもつコストの方が小さいので、 をそのままにしておりた方が全体のコストは小さくなる.
しかし、正則化パラメータ を次第に大きくしていけば両者は等しくなり、そのときの は、
で与えられる.
リンクの強さ
すなわち、ノード を葉ノードにしてもコストは変わらないので、 を選定してしまってよいことになる.
木の剪定は、すべての非終端ノードの集合 について を計算し、
とする. ( はリンクの強さが最小になるノード)
木の剪定アルゴリズム
最小値をとるすべてのノードを終端ノードとし、、その子孫を削除して木を剪定する.
剪定された木に対して同じ手続きを繰り返し、根ノードのみになるまで剪定する.
例
2つのクラスをデータを分類する過程を考える.
- [手順1] 分割規則を適応した決定木がこちら
- [手順2] 非終端ノードのリンクの強さを計算する
- [手順4] 最小のノード集合を確定
- [手順5] 剪定
- [手順2] 再度、非終端ノードのリンクの強さを計算する
- [手順4] 最小のノード集合を確定
- [手順5] 剪定
- [手順2] 再度、非終端ノードのリンクの強さを計算する
- [手順4] 最小のノード集合を確定
- [手順5] 剪定
- 剪定した履歴がこちら
各剪定段階における再代入誤り率が下表のようになったとしよう.
|k|0|1|2|3|
| :---: |:---:|:---:| :---: | :---: |
||0.0|0.0067|0.013|0.146|
| |5|4|3|1|
||3/150|4/150|6/150|60/150|
根ノードまで剪定を続けてしまったが、どこで止めればよかったのであろうか.
表内の再代入誤り率 は、剪定を進めると単調に増加しているので、どこを止めるべきかの情報を与えてくれない.
したがって、止めるところを探すためには、テストデータで汎化誤差を推定しながら剪定を進める必要がある.
ホールドアウト法や交差確認法を用いて誤り率が最も小さくなる の値を求めればよい.