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

 テキスト「Rによるデータサイエンス」に沿って	
  
  Rでの樹木モデルの扱い方を解説します。	
  
                	
  
                	
  
  2011年10月22日 第18回R勉強会@東京	
  
           @takemikami
13.1	
  樹木モデルとは	


                    樹木モデルとは	
  •  説明変数を何らかの基準をもとに分岐させて
     構築した判別・予測のモデル	
  
  •  分岐の過程を木構造で示すことが出来る	
  

  •  問題に応じた呼び方	
  
      –  判別分析:分類木・決定木	
  
      –  回帰分析:回帰木	
  
13.1	
  樹木モデルとは	


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

  •  がく片の大きさから	
  
     アヤメの品種を判別する分析	
  
  •  説明変数:がく片の大きさ	
  
  •  目的変数:アヤメの品種	
  




          setosa	
   vergicolor	
       virginica
13.1	
  樹木モデルとは	


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

  •  がく片の大きさとアヤメの品種を木構造で判
     断
13.1	
  樹木モデルとは	


    回帰分析の例            自動車の速度と停止に要する距離   	
  •  自動車の速度から	
  
     ブレーキから停止までにかかる距離の予測	
  
  •  説明変数:自動車の速度	
  
  •  目的変数:停止までにかかる距離	
  

        速度	




                    停止までにかかる距離
13.1	
  樹木モデルとは	


    回帰分析の例          自動車の速度と停止に要する距離   	
  •  自動車の速度と止まるまでの距離を木構造
     で分析
13.2	
  樹木モデルの基礎	


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

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

  アルゴリズム	
      分岐・剪定の方法	
  CHAID	
       カイ2乗統計量、F統計量	
  
  C4.5/C5.0/See5	
 利得比	
                                       剪定	
  CART	
        ジニ多様性指標、情報利得
13.2	
  樹木モデルの基礎	


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

   •  風・気温から海水浴に行くかを判断	
  
 元データ	
                            行動パターン判断結果	
  No	
 風	
 気温	
 海水浴	
                       気温:高	
 気温:中	
 気温:低	
  1	
    弱	
 高	
   行く	
             風:弱	
   行く	
   行く	
   行かない	
  2	
    弱	
 低	
   行かない	
           風:強	
   行かない	
 行かない	
 行かない	
  3	
    弱	
 高	
   行く	
  
  4	
    弱	
 中	
   行く	
  
                               これを樹木モデルに	
  
  5	
    弱	
 低	
   行かない	
      当てはめて考えてみる	
  6	
    弱	
 高	
   行かない	
  7	
    強	
 高	
   行かない	
  8	
    強	
 低	
   行かない	
  9	
    強	
 中	
   行かない	
                            目的変数:海水浴行く・行かない	
  
  10	
   強	
 高	
   行く	
     説明変数:風・気温
13.2	
  樹木モデルの基礎	


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

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

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




  •  分布の不純度の尺度	
  
     値が大きいほど、不純度が高い(データがば
     らついている)	
  
13.2	
  樹木モデルの基礎	


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

  •  分岐前の状態のジニ係数を算出	
  
  No	
 風	
 気温	
 海水浴	
  1	
    弱	
 高	
   行く	
  
                            GI(分岐前)	
  
  2	
    弱	
 低	
   行かない	
                              =	
  1-­‐[(4/10)2	
  +	
  (6/10)2]	
  =	
  0.48	
  3	
    弱	
 高	
   行く	
  
  4	
    弱	
 中	
   行く	
  
  5	
    弱	
 低	
   行かない	
  6	
    弱	
 高	
   行かない	
  7	
    強	
 高	
   行かない	
  8	
    強	
 低	
   行かない	
  9	
    強	
 中	
   行かない	
  10	
   強	
 高	
   行く
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	
   強	
 高	
   行く
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.2	
  樹木モデルの基礎	


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

  •  (最も大きい)ジニ係数から分岐点を決める	
  
   GI(風=強・弱)	
  	
  	
  	
  	
  	
  	
  	
  	
  =	
  0.032	
  
   GI(気温=高・中低)	
  =	
  0.08	
  
   GI(気温=中・高低)	
  =	
  0.05	
  
                                                                      ①	
   GI(気温=低・高中)	
  =	
  0.137	
  
 第1ノードは気温の高中・低で分岐。	
  
 同様にして第2ノード以降も求めていく	
                                                                            ②	
                        気温:高	
 気温:中	
 気温:低	
      風:弱	
             行かない	
 行かない	
 行かない	
②	
      風:強	
             行く	
              行く	
               行かない	

                                                         ①
13.3.2	
  分類木	


                  分類木で使用するデータ	
   •  がく片の大きさとアヤメの品種の対応データ	
  
                                    (説明変数)	
  
                                   がく片の大きさ	




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




                   アヤメの品種種別	
  
                    データ50件づつ	
  
13.3.2	
  分類木	


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


                   分類木 (1)木の生成②	
                                           ライブラリ読込。事前に
                                         install.packages(“mvpart”)	
  
                                                の実行が必要	
  
                                                         乱数の初期化	
  
                                                       ※後述する交差確認法の
                                                        結果を固定するため	
  
                                                             分類木の生成	
  
                                                             入力データ:iris	
  
                                                            目的変数:SpeciesC	
  




  分類条件	
  
                               該当値	
             構成比	
  
             ノードの       非該当	
  
             データ数	
     データ数	
  
13.3.2	
  分類木	


                  分類木 (1)木の生成③	
                                                    1)	


                                                            3)	
                                       2)	

                                                    6)	
                                                                   7)	



                                                12)	
      13)	

                                   分類木の描画	
  
                  ラベル・グラフの描画	
  
13.3.2	
  分類木	


                  分類木 (2)木の剪定①	
   •  交差確認法(cross	
  valida[on)の結果から、剪
      定基準を判断	
  
                          Min+1SE法:	
  
  交差確認法の結果	
                          xerror最小値を中心とした標準偏差の1倍
                          範囲内の最大error値を基準	
  




                                                      基準のxerror値	
  


                         →0.10+0.030551	
  =	
  0.130551	
            目安の複雑度	
  
13.3.2	
  分類木	


                  分類木 (2)木の剪定②	
   •  目安の複雑度を用いて剪定	
  
                             目安の複雑度で剪定	
  

                    分類木描画(下)	
  
    複雑度描画(右)	
  
13.3.2	
  分類木	


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


                    分類木 (3)判別②	
                     偶数行・奇数行
                     でデータ分割	
  




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




                                  予測・判別を実施	
     剪定の必要なしと
                                                    判断	
  
13.3.3	
  回帰木	


                  回帰木で使用するデータ	
   •  自動車の速度とブレーキから停止までにかか
      る距離のデータ	
                        (説明変数)	
  
                          速度	
  



                    (目的変数)	
  
                   停止までの距離	
  
13.3.3	
  回帰木	


                  回帰木	
  (1)回帰木の生成①	
   •  自動車の速度からブレーキから停止までに
      かかる距離の予測
13.3.3	
  回帰木	


                  回帰木	
  (1)回帰木の生成②	
                                    回帰木の生成	
  
                                    目的変数:dist	
  




分類条件	
      ノードの                 実測値	
  
                       尤離度	
  
            データ数	
  
13.3.3	
  回帰木	


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




                             目安の	
  
                            複雑度で剪定	
  
13.3.4	
  多変量回帰木	


       多変量回帰木で使用するデータ	
   •  「蜘蛛の種類」と「蜘蛛狩りの環境」の分布
      データ	




                      (目的変数)	
      (説明変数)	
  
                     蜘蛛の種類と数	
     蜘蛛狩りの環境	
  
13.3.4	
  多変量回帰木	


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

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


       多変量回帰木	
  (2)解析と結果①	
                     目的変数の主成分分析
13.4	
  補遺	


                        パッケージ:tree①	
                         事前に	
                  折れ線回帰図	
                install.packages(”tree”);	
  
                     の実行が必要	
  




               折れ線回帰図の描画	
  
13.4	
  補遺	


                    パッケージ:tree②	
                              分割分類図	




               分割分類図の描画	
  
13.4	
  補遺	


               パッケージ:Rweka①	
                                       事前に	
  
                   install.packages("RWeka",	
  dependencies=TRUE);	
  
                                    の実行が必要	
  


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


               パッケージ:Rweka②	
                                               事前に	
  
                 install.packages(”party",	
  dependencies=TRUE);	
  library(party)	
  
                                        の実行が必要	
  
13.4	
  補遺	


               パッケージ:Rweka③	
                         箱ひげ図の描画(左)	
  


                            棒グラフの描画(右)	
  

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

  • 1.
    Rによるデータサイエンス第13章   「樹木モデル」 テキスト「Rによるデータサイエンス」に沿って   Rでの樹木モデルの扱い方を解説します。       2011年10月22日 第18回R勉強会@東京   @takemikami
  • 2.
    13.1  樹木モデルとは 樹木モデルとは •  説明変数を何らかの基準をもとに分岐させて 構築した判別・予測のモデル   •  分岐の過程を木構造で示すことが出来る   •  問題に応じた呼び方   –  判別分析:分類木・決定木   –  回帰分析:回帰木  
  • 3.
    13.1  樹木モデルとは 判別分析の例 アヤメの品種分類 •  がく片の大きさから   アヤメの品種を判別する分析   •  説明変数:がく片の大きさ   •  目的変数:アヤメの品種   setosa vergicolor virginica
  • 4.
    13.1  樹木モデルとは 判別分析の例 アヤメの品種分類 •  がく片の大きさとアヤメの品種を木構造で判 断
  • 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)解析と結果① 多変量回帰木:    目的変数が複数ある回帰木     説明変数:蜘蛛狩りの環境   目的変数:蜘蛛の種類の分布   として多変量回帰木を生成
  • 28.
    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③ 箱ひげ図の描画(左)   棒グラフの描画(右)