rによるデータサイエンス13「樹木モデル」

33
Rによるデータサイエンス第13「樹木モデル」 テキスト「Rによるデータサイエンス」に沿って Rでの樹木モデルの扱い方を解説します。 20111022日 第18R勉強会@東京 @takemikami

Upload: takeshi-mikami

Post on 15-Jun-2015

15.492 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: Rによるデータサイエンス13「樹木モデル」

Rによるデータサイエンス第13章  「樹木モデル」

テキスト「Rによるデータサイエンス」に沿って  Rでの樹木モデルの扱い方を解説します。  

   

2011年10月22日 第18回R勉強会@東京  @takemikami

Page 2: Rによるデータサイエンス13「樹木モデル」

樹木モデルとは

•  説明変数を何らかの基準をもとに分岐させて構築した判別・予測のモデル  

•  分岐の過程を木構造で示すことが出来る  

•  問題に応じた呼び方  – 判別分析:分類木・決定木  – 回帰分析:回帰木  

13.1  樹木モデルとは

Page 3: Rによるデータサイエンス13「樹木モデル」

判別分析の例 アヤメの品種分類

•  がく片の大きさから  アヤメの品種を判別する分析  

•  説明変数:がく片の大きさ  •  目的変数:アヤメの品種  

setosa vergicolor virginica

13.1  樹木モデルとは

Page 4: Rによるデータサイエンス13「樹木モデル」

判別分析の例 アヤメの品種分類

13.1  樹木モデルとは

•  がく片の大きさとアヤメの品種を木構造で判断

Page 5: Rによるデータサイエンス13「樹木モデル」

回帰分析の例 自動車の速度と停止に要する距離

•  自動車の速度から  ブレーキから停止までにかかる距離の予測  

•  説明変数:自動車の速度  •  目的変数:停止までにかかる距離  

速度

停止までにかかる距離

13.1  樹木モデルとは

Page 6: Rによるデータサイエンス13「樹木モデル」

回帰分析の例 自動車の速度と停止に要する距離

13.1  樹木モデルとは

•  自動車の速度と止まるまでの距離を木構造で分析

Page 7: Rによるデータサイエンス13「樹木モデル」

樹木モデルの基礎

13.2  樹木モデルの基礎

•  樹木モデルのアルゴリズム  – 生成・生長:分岐の方法  – 剪定:モデルの簡潔化  

アルゴリズム 分岐・剪定の方法

CHAID カイ2乗統計量、F統計量  

C4.5/C5.0/See5 利得比

CART ジニ多様性指標、情報利得

今日用いられているアルゴリズム

生成・生長

剪定

Page 8: Rによるデータサイエンス13「樹木モデル」

具体例 夏休み海水浴に行く・行かない①

No 風 気温 海水浴

1 弱 高 行く  

2 弱 低 行かない

3 弱 高 行く  

4 弱 中 行く  

5 弱 低 行かない

6 弱 高 行かない

7 強 高 行かない

8 強 低 行かない

9 強 中 行かない

10 強 高 行く

13.2  樹木モデルの基礎

気温:高 気温:中 気温:低

風:弱 行く 行く 行かない

風:強 行かない 行かない 行かない

•  風・気温から海水浴に行くかを判断  

目的変数:海水浴行く・行かない  説明変数:風・気温

これを樹木モデルに  当てはめて考えてみる

元データ 行動パターン判断結果

Page 9: Rによるデータサイエンス13「樹木モデル」

具体例 夏休み海水浴に行く・行かない②

13.2  樹木モデルの基礎

•  ジニ係数(Gini  Index)を用いて分岐点を計算  

•  分布の不純度の尺度  値が大きいほど、不純度が高い(データがばらついている)  

t:ノード数 i:クラス p:比率

Page 10: Rによるデータサイエンス13「樹木モデル」

具体例 夏休み海水浴に行く・行かない③

13.2  樹木モデルの基礎

•  分岐前の状態のジニ係数を算出  

No 風 気温 海水浴

1 弱 高 行く  

2 弱 低 行かない

3 弱 高 行く  

4 弱 中 行く  

5 弱 低 行かない

6 弱 高 行かない

7 強 高 行かない

8 強 低 行かない

9 強 中 行かない

10 強 高 行く

GI(分岐前)    =  1-­‐[(4/10)2  +  (6/10)2]  =  0.48

Page 11: Rによるデータサイエンス13「樹木モデル」

具体例 夏休み海水浴に行く・行かない④

13.2  樹木モデルの基礎

•  風の強弱を分岐点とするジニ係数を算出  

No 風 気温 海水浴

1 弱 高 行く  

2 弱 低 行かない

3 弱 高 行く  

4 弱 中 行く  

5 弱 低 行かない

6 弱 高 行かない

7 強 高 行かない

8 強 低 行かない

9 強 中 行かない

10 強 高 行く

GI(風=弱)    =  1-­‐[(3/6)2  +  (3/6)2]  =  0.5

GI(風=強)    =  1-­‐[(1/4)2  +  (3/4)2]  =  0.375

GI(風=強・弱)   =  GI分岐前      –  6/10GI(風=弱)  -­‐  4/10(風=強)   =  0.032

Page 12: Rによるデータサイエンス13「樹木モデル」

具体例 夏休み海水浴に行く・行かない⑤

13.2  樹木モデルの基礎

•  気温の高中低を分岐点とするジニ係数算出  

No 風 気温 海水浴

1 弱 高 行く  

2 弱 低 行かない

3 弱 高 行く  

4 弱 中 行く  

5 弱 低 行かない

6 弱 高 行かない

7 強 高 行かない

8 強 低 行かない

9 強 中 行かない

10 強 高 行く

GI(気温=高)    =  1-­‐[(2/5)2  +  (3/5)2]  =  0.48  GI(気温=中低)    =  1-­‐[(4/5)2  +  (1/5)2]  =  0.32  GI(気温=高・中低)   =  GI(分岐前)    -­‐  GI(気温=高)-­‐GI(気温=中低)   =  0.08  同様に、   GI(気温=中・高低)=0.05   GI(気温=低・高中)=0.137  

Page 13: Rによるデータサイエンス13「樹木モデル」

具体例 夏休み海水浴に行く・行かない⑥

13.2  樹木モデルの基礎

•  (最も大きい)ジニ係数から分岐点を決める  

GI(風=強・弱)                  =  0.032  GI(気温=高・中低)  =  0.08  GI(気温=中・高低)  =  0.05  GI(気温=低・高中)  =  0.137  

気温:高 気温:中 気温:低

風:弱 行かない 行かない 行かない

風:強 行く 行く 行かない

第1ノードは気温の高中・低で分岐。  同様にして第2ノード以降も求めていく

Page 14: Rによるデータサイエンス13「樹木モデル」

分類木で使用するデータ

13.3.2  分類木

•  がく片の大きさとアヤメの品種の対応データ  

(目的変数)  アヤメの品種

(説明変数)  がく片の大きさ

アヤメの品種種別  データ50件づつ  

Page 15: Rによるデータサイエンス13「樹木モデル」

分類木 (1)木の生成①

•  がく片の大きさからアヤメの品種を判別する分類木を生成  

13.3.2  分類木

Page 16: Rによるデータサイエンス13「樹木モデル」

分類木 (1)木の生成②

13.3.2  分類木

乱数の初期化  ※後述する交差確認法の

結果を固定するため  

ライブラリ読込。事前にinstall.packages(“mvpart”)  

の実行が必要  

分類木の生成  入力データ:iris  

目的変数:SpeciesC  

分類条件  

ノードのデータ数  

非該当  データ数  

該当値   構成比  

Page 17: Rによるデータサイエンス13「樹木モデル」

分類木 (1)木の生成③

13.3.2  分類木

分類木の描画  

ラベル・グラフの描画  

1)

2) 3)

6) 7)

12) 13)

Page 18: Rによるデータサイエンス13「樹木モデル」

分類木 (2)木の剪定①

•  交差確認法(cross  valida[on)の結果から、剪定基準を判断  

13.3.2  分類木

交差確認法の結果

→0.10+0.030551  =  0.130551

Min+1SE法:  xerror最小値を中心とした標準偏差の1倍範囲内の最大error値を基準  

目安の複雑度  

基準のxerror値  

Page 19: Rによるデータサイエンス13「樹木モデル」

分類木 (2)木の剪定②

•  目安の複雑度を用いて剪定  

13.3.2  分類木

目安の複雑度で剪定  

分類木描画(下)  

複雑度描画(右)  

Page 20: Rによるデータサイエンス13「樹木モデル」

分類木 (3)判別①

•  (未知データの判別を想定して、)モデル作成に用いていないデータを用意し、予測する  – 奇数行データ:学習用→モデル作成に使用  – 偶数行データ:テスト用→判別に使用  

13.3.2  分類木

Page 21: Rによるデータサイエンス13「樹木モデル」

分類木 (3)判別②

13.3.2  分類木

偶数行・奇数行でデータ分割  

学習データで  分類木生成  複雑度を表示(右)  

剪定の必要なしと判断  

予測・判別を実施  

Page 22: Rによるデータサイエンス13「樹木モデル」

回帰木で使用するデータ

•  自動車の速度とブレーキから停止までにかかる距離のデータ

13.3.3  回帰木

(目的変数)  停止までの距離  

(説明変数)  速度  

Page 23: Rによるデータサイエンス13「樹木モデル」

回帰木  (1)回帰木の生成①

13.3.3  回帰木

•  自動車の速度からブレーキから停止までにかかる距離の予測

Page 24: Rによるデータサイエンス13「樹木モデル」

回帰木  (1)回帰木の生成②

13.3.3  回帰木

分類条件   ノードのデータ数  

尤離度  実測値  

回帰木の生成  目的変数:dist  

Page 25: Rによるデータサイエンス13「樹木モデル」

回帰木  (2)回帰木の剪定①

13.3.3  回帰木

•  選定基準の判断および剪定 目安の複雑度を確認(右)  

目安の  複雑度で剪定  

Page 26: Rによるデータサイエンス13「樹木モデル」

多変量回帰木で使用するデータ

•  「蜘蛛の種類」と「蜘蛛狩りの環境」の分布データ

13.3.4  多変量回帰木

(目的変数)  蜘蛛の種類と数  

(説明変数)  蜘蛛狩りの環境  

Page 27: Rによるデータサイエンス13「樹木モデル」

多変量回帰木  (2)解析と結果①

13.3.4  多変量回帰木

多変量回帰木:   目的変数が複数ある回帰木    説明変数:蜘蛛狩りの環境  目的変数:蜘蛛の種類の分布  として多変量回帰木を生成

Page 28: Rによるデータサイエンス13「樹木モデル」

多変量回帰木  (2)解析と結果①

13.3.4  多変量回帰木

目的変数の主成分分析

Page 29: Rによるデータサイエンス13「樹木モデル」

パッケージ:tree①

13.4  補遺

折れ線回帰図

折れ線回帰図の描画  

事前に  install.packages(”tree”);  

の実行が必要  

Page 30: Rによるデータサイエンス13「樹木モデル」

パッケージ:tree②

13.4  補遺

分割分類図

分割分類図の描画  

Page 31: Rによるデータサイエンス13「樹木モデル」

パッケージ:Rweka①

13.4  補遺

事前に  install.packages("RWeka",  dependencies=TRUE);  

の実行が必要  

C4.5のアルゴリズムによる  分類木の生成  

Page 32: Rによるデータサイエンス13「樹木モデル」

パッケージ:Rweka②

13.4  補遺

事前に  install.packages(”party",  dependencies=TRUE);  library(party)  

の実行が必要  

Page 33: Rによるデータサイエンス13「樹木モデル」

パッケージ:Rweka③

13.4  補遺

箱ひげ図の描画(左)  

棒グラフの描画(右)