Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
木構造1~決定木の仕組み(分類)
Search
K_DM
October 03, 2021
0
110
木構造1~決定木の仕組み(分類)
分類木の基本について、スライドを作成しました。
動画→
https://www.youtube.com/channel/UCFy3VBvZBeE9bN0F2sxF8rg
K_DM
October 03, 2021
Tweet
Share
More Decks by K_DM
See All by K_DM
主成分分析(PCA)の仕組み
k_study
0
140
X-meansの仕組み
k_study
0
1.2k
勾配ブースティングの仕組み
k_study
0
51
k-meansクラスタリングの仕組み
k_study
0
170
決定木を使った回帰の仕組み
k_study
0
180
アンサンブル学習① ランダムフォレストの仕組み
k_study
0
58
決定木に含まれるパラメタによる事前剪定と事後剪定
k_study
0
480
線形回帰② 正則化と過学習
k_study
0
380
外れ値とHuber(フーバー)損失
k_study
0
840
Featured
See All Featured
Building a Scalable Design System with Sketch
lauravandoore
459
33k
Mobile First: as difficult as doing things right
swwweet
222
8.9k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
25
1.8k
The Straight Up "How To Draw Better" Workshop
denniskardys
232
140k
What's in a price? How to price your products and services
michaelherold
243
12k
How STYLIGHT went responsive
nonsquared
95
5.2k
Fireside Chat
paigeccino
34
3k
It's Worth the Effort
3n
183
27k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
4
370
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
191
16k
The Power of CSS Pseudo Elements
geoffreycrofte
73
5.3k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
131
33k
Transcript
木構造1 木構造1 IUUQTXXXZPVUVCFDPNDIBOOFM6$'Z7#W;#F&C/'TY'SH 決定木(分類) 決定木(分類)
今回の内容 •決定木とは •用語の定義と決定木を作る時のルール •決定木を作るアルゴリズム •決定境界の確認 •まとめ 分類をする決定木について説明します
決定木 条件分岐を組合せて結論を導く木構造の予測モデル あなたは今、眠いですか? また今度、 この動画を見てください あなたは今、暇ですか? いますぐ この動画を見てください また今度、 この動画を見てください
Yes No Yes No 「今見る」か「今度見る」 の二種類に分類している分類木
決定木 条件分岐を組合せて結論を導く木構造の予測モデル あなたは今、眠いですか? また今度、 この動画を見てください あなたは今、暇ですか? いますぐ この動画を見てください また今度、 この動画を見てください
Yes No Yes No 目的変数の予測値 「今見る」か「今度見る」 の二種類に分類している分類木
決定木の各部分の名称 条件分岐を組合せて結論を導く木構造の予測モデル 根(root node/the root) 気温は25℃超えてますか? 夏 湿度は50%超えてますか? No Yes
気温は15℃超えてますか? クーラーをつけてますか? 夏 春 春 春 No Yes No Yes No Yes 枝(branch) ノード(node) 葉(leaves/leaf nodes) 深さ(depth)
決定木のルール 数値・カテゴリ変数が混在していても良い / 同じ特徴に関する分岐が複数あっても良い 気温は25℃超えてますか? 夏 湿度は50%超えてますか? No Yes 気温は15℃超えてますか?
クーラーをつけてますか? 夏 春 春 春 No Yes No Yes No Yes
決定木を作るアルゴリズム 店舗の商品が売り切れになるかどうか予測したい ༵ ࡏݿ ചΓΕ ٳ 10 ͍ ฏ 30
͍͍͑ ٳ 20 ͍͍͑ ฏ 20 ͍͍͑ ٳ 30 ͍͍͑ ฏ 20 ͍͍͑ ٳ 20 ͍ ฏ 10 ͍ ٳ 10 ͍ 目的変数
分岐の良さを比較したい 様々な分岐を作ることができるので、分岐の良さの基準をつくりたい ༵ ࡏݿ ചΓΕ ٳ 10 ͍ ฏ 30
͍͍͑ ٳ 20 ͍͍͑ ฏ 20 ͍͍͑ ٳ 30 ͍͍͑ ฏ 20 ͍͍͑ ٳ 20 ͍ ฏ 10 ͍ ٳ 10 ͍ 在庫は10より多い? No Yes ͍ ͍͍͑ 1 5 ͍ ͍͍͑ 3 0 天気予報は晴れ? No Yes ͍ ͍͍͑ 3 1 ͍ ͍͍͑ 1 4 特徴を選んで 分岐を作ってみる どちらの分岐がより良いと言える?
不純度(Impurity) 異なるクラスがどれくらい混ざっているかを測る指標 在庫は10より多い? No Yes ͍ ͍͍͑ 1 5 ͍
͍͍͑ 3 0 天気予報は晴れ? No Yes ͍ ͍͍͑ 3 1 ͍ ͍͍͑ 1 4 ͍ ͍͍͑ 4 5 元のデータ 分岐を作った結果としてデータの不純度が減少すれば、良い分岐と言える 木を使って予測ができる
Gini-不純度(Gini-Impurity) 完全に分類できた場合のみ0になる不純度の基準 G(1) = 1 − ( 4 9 )2
− ( 5 9 )2 = 40 81 G(k) = 1 − Σc i=1 ( ni n )2 • クラス数, 今回の場合は2 • ノードにあるデータ数 • クラス に属するデータ数 c = n = ni = i ͍ ͍͍͑ 4 5 元のデータ 元のデータの不純度
Gini-不純度(Gini-Impurity) 完全に分類できた場合のみ0になる不純度の基準 G(k) = 1 − Σc i=1 ( ni
n )2 • クラス数, 今回の場合は2 • ノードにあるデータ数 • クラス に属するデータ数 c = n = ni = i 在庫は10より多い? No Yes ͍ ͍͍͑ 1 5 ͍ ͍͍͑ 3 0 天気予報は晴れ? No Yes ͍ ͍͍͑ 3 1 ͍ ͍͍͑ 1 4 G(2) = 1 − ( 1 6 )2 − ( 5 6 )2 = 10 36 G(3) = 1 − ( 3 3 )2 − ( 0 3 )2 = 0 G(2) = 1 − ( 3 4 )2 − ( 1 4 )2 = 6 16 G(3) = 1 − ( 1 5 )2 − ( 4 5 )2 = 8 25 分岐後のGini不純度の 重み付け平均 6 9 10 36 + 3 9 0 = 5 27 4 9 6 16 + 5 9 8 25 = 31 90
情報利得(Information Gain) 分岐した時に、分岐前と比較してどれくらい不純度が下がったか 在庫は10より多い? No Yes ͍ ͍͍͑ 1 5
͍ ͍͍͑ 3 0 G(2) = 1 − ( 1 6 )2 − ( 5 6 )2 = 10 36 G(3) = 1 − ( 3 3 )2 − ( 0 3 )2 = 0 分岐後のGini不純度の 重み付け平均 6 9 10 36 + 3 9 0 = 5 27 G(1) = 1 − ( 4 9 )2 − ( 5 9 )2 = 40 81 ͍ ͍͍͑ 4 5 元のデータ 元のデータの不純度 40 81 − 5 27 = 25 81 情報利得 情報利得が大きい分岐= 分岐によって不純度が大 きく減少する分岐
数値データの分岐の作り方 数値をソートして、可能な分岐点すべてに対してGini不純度を計算する ࡏݿ ചΓΕ 10 ͍ 30 ͍͍͑ 20 ͍͍͑
20 ͍͍͑ 30 ͍͍͑ 20 ͍͍͑ 20 ͍ 10 ͍ 10 ͍ ࡏݿ ചΓΕ 10 ͍ 10 ͍ 10 ͍ 20 ͍͍͑ 20 ͍͍͑ 20 ͍͍͑ 20 ͍ 30 ͍͍͑ 30 ͍͍͑ 数値でソート ジニ不純度 5 27 ジニ不純度 8 21 > よりジニ不純度が 小さくなる点で分岐を作る
決定木を作るアルゴリズム 1.各特徴から情報利得が最大になる分岐を見つけてくる G(1) = 1 − ( 4 9 )2
− ( 5 9 )2 = 40 81 ͍ ͍͍͑ 4 5 元のデータ 元のデータの不純度 分岐後のGini不純度の重み付け平均 5 27 31 90 在庫数10より大きいか 曜日 ༵ ࡏݿ ചΓΕ ٳ 10 ͍ ฏ 30 ͍͍͑ ٳ 20 ͍͍͑ ฏ 20 ͍͍͑ ٳ 30 ͍͍͑ ฏ 20 ͍͍͑ ٳ 20 ͍ ฏ 10 ͍ ٳ 10 ͍ 情報利得(分岐後との不純度の差)がより大きいのは 「在庫数が10より大きいか」で分岐した時なので、 これで分岐をつくる 在庫は10より多い? No Yes ͍ ͍͍͑ 1 5 ͍ ͍͍͑ 3 0
決定木を作るアルゴリズム 2.分岐後の各ノードについて、同じ作業を繰り返す ༵ ࡏݿ ചΓΕ ٳ 10 ͍ ฏ 30
͍͍͑ ٳ 20 ͍͍͑ ฏ 20 ͍͍͑ ٳ 30 ͍͍͑ ฏ 20 ͍͍͑ ٳ 20 ͍ ฏ 10 ͍ ٳ 10 ͍ もうジニ不純度が0でこ れ以上不純度は減少しな いので、これを葉にする 在庫は10より多い? No Yes ͍ ͍͍͑ 1 5 ͍ ͍͍͑ 3 0 No Yes このノードに含まれる6個の データに対して、ステップ1 と同じ作業をする 在庫は30より少ない? … …
実際にやってみる ←境界が直線の組合せになっていることが確認できる scikit-learnのDecisionTreeClassifierで分類した時の決定境界を可視化
実際にやってみる scikit-learnのDecisionTreeClassifierで作成した分岐を出力 ジニ不純度が0になったタイミングで、木の成 長が終わっていることが分かる ジニ不純度が0になるまで完璧に分類すると、 下のような少し不自然な境界も作成されてしまう(過学習)
まとめ •決定木とは条件分岐を組合せて結論を導く木構造の予測モデル •分岐の良さを決定するための基準の一つにジニ不純度というものがある •分岐を作ることで不純度が下がるような分岐を良いものとして選択する •=情報利得が最大になる分岐を作る •決定木で作成された決定境界は軸に並行な直線を組合せた形になる •ジニ不純度が0になるまで分岐をすると過学習になる可能性がある 分類をする決定木について説明しました