Contenu connexe
Plus de Takeshi Mikami (20)
Rによるデータサイエンス13「樹木モデル」
- 1. Rによるデータサイエンス第13章
「樹木モデル」
テキスト「Rによるデータサイエンス」に沿って
Rでの樹木モデルの扱い方を解説します。
2011年10月22日 第18回R勉強会@東京
@takemikami
- 2. 13.1
樹木モデルとは
樹木モデルとは
• 説明変数を何らかの基準をもとに分岐させて
構築した判別・予測のモデル
• 分岐の過程を木構造で示すことが出来る
• 問題に応じた呼び方
– 判別分析:分類木・決定木
– 回帰分析:回帰木
- 3. 13.1
樹木モデルとは
判別分析の例 アヤメの品種分類
• がく片の大きさから
アヤメの品種を判別する分析
• 説明変数:がく片の大きさ
• 目的変数:アヤメの品種
setosa
vergicolor
virginica
- 5. 13.1
樹木モデルとは
回帰分析の例 自動車の速度と停止に要する距離
• 自動車の速度から
ブレーキから停止までにかかる距離の予測
• 説明変数:自動車の速度
• 目的変数:停止までにかかる距離
速度
停止までにかかる距離
- 6. 13.1
樹木モデルとは
回帰分析の例 自動車の速度と停止に要する距離
• 自動車の速度と止まるまでの距離を木構造
で分析
- 7. 13.2
樹木モデルの基礎
樹木モデルの基礎
• 樹木モデルのアルゴリズム
– 生成・生長:分岐の方法
– 剪定:モデルの簡潔化
生成・生長
今日用いられているアルゴリズム
アルゴリズム
分岐・剪定の方法
CHAID
カイ2乗統計量、F統計量
C4.5/C5.0/See5
利得比
剪定
CART
ジニ多様性指標、情報利得
- 8. 13.2
樹木モデルの基礎
具体例 夏休み海水浴に行く・行かない①
• 風・気温から海水浴に行くかを判断
元データ
行動パターン判断結果
No
風
気温
海水浴
気温:高
気温:中
気温:低
1
弱
高
行く
風:弱
行く
行く
行かない
2
弱
低
行かない
風:強
行かない
行かない
行かない
3
弱
高
行く
4
弱
中
行く
これを樹木モデルに
5
弱
低
行かない
当てはめて考えてみる
6
弱
高
行かない
7
強
高
行かない
8
強
低
行かない
9
強
中
行かない
目的変数:海水浴行く・行かない
10
強
高
行く
説明変数:風・気温
- 9. 13.2
樹木モデルの基礎
具体例 夏休み海水浴に行く・行かない②
• ジニ係数(Gini
Index)を用いて分岐点を計算
t:ノード数 i:クラス p:比率
• 分布の不純度の尺度
値が大きいほど、不純度が高い(データがば
らついている)
- 10. 13.2
樹木モデルの基礎
具体例 夏休み海水浴に行く・行かない③
• 分岐前の状態のジニ係数を算出
No
風
気温
海水浴
1
弱
高
行く
GI(分岐前)
2
弱
低
行かない
=
1-‐[(4/10)2
+
(6/10)2]
=
0.48
3
弱
高
行く
4
弱
中
行く
5
弱
低
行かない
6
弱
高
行かない
7
強
高
行かない
8
強
低
行かない
9
強
中
行かない
10
強
高
行く
- 11. 13.2
樹木モデルの基礎
具体例 夏休み海水浴に行く・行かない④
• 風の強弱を分岐点とするジニ係数を算出
No
風
気温
海水浴
1
弱
高
行く
GI(風=弱)
2
弱
低
行かない
=
1-‐[(3/6)2
+
(3/6)2]
=
0.5
3
弱
高
行く
4
弱
中
行く
GI(風=強・弱)
5
弱
低
行かない
=
GI分岐前
6
弱
高
行かない
–
6/10GI(風=弱)
-‐
4/10(風=強)
7
強
高
行かない
=
0.032
8
強
低
行かない
GI(風=強)
9
強
中
行かない
=
1-‐[(1/4)2
+
(3/4)2]
=
0.375
10
強
高
行く
- 12. 13.2
樹木モデルの基礎
具体例 夏休み海水浴に行く・行かない⑤
• 気温の高中低を分岐点とするジニ係数算出
No
風
気温
海水浴
GI(気温=高)
1
弱
高
行く
=
1-‐[(2/5)2
+
(3/5)2]
=
0.48
2
弱
低
行かない
GI(気温=中低)
3
弱
高
行く
=
1-‐[(4/5)2
+
(1/5)2]
=
0.32
4
弱
中
行く
GI(気温=高・中低)
5
弱
低
行かない
=
GI(分岐前)
6
弱
高
行かない
-‐
GI(気温=高)-‐GI(気温=中低)
7
強
高
行かない
=
0.08
8
強
低
行かない
同様に、
9
強
中
行かない
GI(気温=中・高低)=0.05
10
強
高
行く
GI(気温=低・高中)=0.137
- 13. 13.2
樹木モデルの基礎
具体例 夏休み海水浴に行く・行かない⑥
• (最も大きい)ジニ係数から分岐点を決める
GI(風=強・弱)
=
0.032
GI(気温=高・中低)
=
0.08
GI(気温=中・高低)
=
0.05
①
GI(気温=低・高中)
=
0.137
第1ノードは気温の高中・低で分岐。
同様にして第2ノード以降も求めていく
②
気温:高
気温:中
気温:低
風:弱
行かない
行かない
行かない
②
風:強
行く
行く
行かない
①
- 14. 13.3.2
分類木
分類木で使用するデータ
• がく片の大きさとアヤメの品種の対応データ
(説明変数)
がく片の大きさ
(目的変数)
アヤメの品種
アヤメの品種種別
データ50件づつ
- 15. 13.3.2
分類木
分類木 (1)木の生成①
• がく片の大きさからアヤメの品種を判別する
分類木を生成
- 16. 13.3.2
分類木
分類木 (1)木の生成②
ライブラリ読込。事前に
install.packages(“mvpart”)
の実行が必要
乱数の初期化
※後述する交差確認法の
結果を固定するため
分類木の生成
入力データ:iris
目的変数:SpeciesC
分類条件
該当値
構成比
ノードの 非該当
データ数
データ数
- 17. 13.3.2
分類木
分類木 (1)木の生成③
1)
3)
2)
6)
7)
12)
13)
分類木の描画
ラベル・グラフの描画
- 18. 13.3.2
分類木
分類木 (2)木の剪定①
• 交差確認法(cross
valida[on)の結果から、剪
定基準を判断
Min+1SE法:
交差確認法の結果
xerror最小値を中心とした標準偏差の1倍
範囲内の最大error値を基準
基準のxerror値
→0.10+0.030551
=
0.130551
目安の複雑度
- 19. 13.3.2
分類木
分類木 (2)木の剪定②
• 目安の複雑度を用いて剪定
目安の複雑度で剪定
分類木描画(下)
複雑度描画(右)
- 20. 13.3.2
分類木
分類木 (3)判別①
• (未知データの判別を想定して、)モデル作成
に用いていないデータを用意し、予測する
– 奇数行データ:学習用→モデル作成に使用
– 偶数行データ:テスト用→判別に使用
- 21. 13.3.2
分類木
分類木 (3)判別②
偶数行・奇数行
でデータ分割
学習データで
複雑度を表示(右)
分類木生成
予測・判別を実施
剪定の必要なしと
判断
- 22. 13.3.3
回帰木
回帰木で使用するデータ
• 自動車の速度とブレーキから停止までにかか
る距離のデータ
(説明変数)
速度
(目的変数)
停止までの距離
- 23. 13.3.3
回帰木
回帰木
(1)回帰木の生成①
• 自動車の速度からブレーキから停止までに
かかる距離の予測
- 24. 13.3.3
回帰木
回帰木
(1)回帰木の生成②
回帰木の生成
目的変数:dist
分類条件
ノードの 実測値
尤離度
データ数
- 25. 13.3.3
回帰木
回帰木
(2)回帰木の剪定①
• 選定基準の判断および剪定
目安の複雑度を確認(右)
目安の
複雑度で剪定
- 26. 13.3.4
多変量回帰木
多変量回帰木で使用するデータ
• 「蜘蛛の種類」と「蜘蛛狩りの環境」の分布
データ
(目的変数)
(説明変数)
蜘蛛の種類と数
蜘蛛狩りの環境
- 27. 13.3.4
多変量回帰木
多変量回帰木
(2)解析と結果①
多変量回帰木:
目的変数が複数ある回帰木
説明変数:蜘蛛狩りの環境
目的変数:蜘蛛の種類の分布
として多変量回帰木を生成
- 29. 13.4
補遺
パッケージ:tree①
事前に
折れ線回帰図
install.packages(”tree”);
の実行が必要
折れ線回帰図の描画
- 30. 13.4
補遺
パッケージ:tree②
分割分類図
分割分類図の描画
- 31. 13.4
補遺
パッケージ:Rweka①
事前に
install.packages("RWeka",
dependencies=TRUE);
の実行が必要
C4.5のアルゴリズムによる
分類木の生成
- 32. 13.4
補遺
パッケージ:Rweka②
事前に
install.packages(”party",
dependencies=TRUE);
library(party)
の実行が必要
- 33. 13.4
補遺
パッケージ:Rweka③
箱ひげ図の描画(左)
棒グラフの描画(右)