SlideShare ist ein Scribd-Unternehmen logo
1 von 16
Downloaden Sie, um offline zu lesen
決定木

    東京大学 三好雄也



1
決定木
        決定木とは、データの特徴量を用いた簡単なルールで分岐を
         作り、特徴空間を分割することを通じて判別や回帰を行うモ
         デルのこと
        モデルの種類:CARTやC4.5(C5.0)
        CART
1.       木の構築:何らかの基準を満たすまで、予め定義しておいたコストに基
         づいて特徴空間を2分割する手続きを繰り返す
2.       剪定(pruning):構築された木の深さが深いほど複雑なデータを扱うこ
         とができるが、過学習の可能性がある。そこで、過学習を防ぐため、予
         め定めておいたパラメータによってモデルの複雑度を制御すること


        利点:高次元の判別が容易に視覚的に確認できる

     2
決定木のイメージ
                      ルートノード
    線形回帰




           ターミナルノード

3
分類の考え方



分類の考え方
       例えば、ある商品を購入するか否かを最も良く説明する分類を作成す
        るとする。この時、分類されたデータが買う、買わないできれいに分け
        られれば、それは「純粋である」とされる。
       分類により、純化していく作業が決定木




4
決定木の手法


       CART(Classification And Regression Trees)
           不純度を表すGINI係数を基準に分割
           ノードを分岐させることによって、不純度が減少する(=分岐
            後のそれぞれのノードの純度が増す)ような分岐点を探す
           「純度が増す」=「バラツキが少なくなる」


       C4.5(C5.0)
           エントロピーに基づくゲイン比という基準で分割



    5
木の構築コスト
       木の構造T、m番目のターミナルノード𝑅 𝑚 、 𝑅 𝑚 中の例題数
        𝑛𝑚
       𝑅 𝑚 において、ラベルがgになる確率
                                            1
                                𝑝   𝑚,𝑔 =           𝐼[𝑦 𝑖 = 𝑔]
                                            𝑛 𝑚
        𝑅 𝑚 におけるラベルの予測
                    𝑦(m) = argmax 𝑔 𝑝                        𝑚,𝑔

       Tにおけるノードmのコスト𝑄 𝑚 (𝑇)
        1.   ジニ係数      𝑄    𝑚       𝑇 =       𝑝   𝑚,𝑔   𝑝   𝑚,𝑔′   =   𝑝   𝑚,𝑔 (1   − 𝑝   𝑚,𝑔 )

                                              𝐺
        2.   エントロピー     𝑄   𝑚       𝑇 =       𝑔=1       𝑝   𝑚,𝑔 𝑙𝑜𝑔𝑝 𝑚,𝑔


    6
ジニ係数とエントロピー


       ジニ係数で分類
           不平等さを示す指標 0~1の間の値を取り、0で平等
           ジニ係数が最も低下するように分類する。


       エントロピーに基づくゲイン(情報利得)比
           情報量を測る指標(物理では熱や物質の拡散度を示す指標)
           情報量:確率pで起こる事象の情報量は -𝑙𝑜𝑔2 𝑝 で定義される
           𝑙𝑜𝑔2 𝑝の絶対値が大きい=情報量が多い
           エントロピー( - 𝐺 𝑝 𝑚,𝑔 𝑙𝑜𝑔𝑝 𝑚,𝑔 )が低いほどノードの純度は高い
                        𝑔=1




    7
ジニ係数とエントロピー:教科書の例
全体で200個の例題が存在、それぞれクラスが2つ

    分割1   𝑅1 にクラス1が75個、クラス2が25個
          𝑅2 にクラス1が75個、クラス2が25個

    分割2   𝑅1 にクラス1が50個、クラス2が100個
          𝑅2 にクラス1が50個、クラス2が0個
                100 75      75
ジニ係数      分割1           (1− ) ×2 = 0.1875
                200 100     100
                 150 50      50  50 50     50
          分割2            (1− ) +        (1− )   = 0.1666
                 200 150     150 200 50    50

                100 75        75
エントロピー    分割1           ×log( ) ×2 = -1.5
                200 100      100
                 150 50        50  50 50       50
          分割2            ×log( ) +        ×log( ) =   -0.3962
                 200 150      100  200 50      50

          注意:C4.5などはエントロピーに基づくゲイン(情報利得)比を用いる
8
決定木 in R
library(rpart) ; library(mlbench)
data(Glass)
nrow(Glass) # → 214
head(Glass) # 9つのデータと7つのType
table(Glass$Type) # 各Typeの個数

set.seed(1) # 乱数の種を指定
# 学習データ
tra.index <- sample(nrow(Glass), nrow(Glass)*0.7) # ランダムサンプリング

# ジニ係数で学習 split= “information” でエントロピー
res <- rpart(Type~., Glass[tra.index,], method=“class”, parms=list(split=“gini”))

pred <- predict(res,Glass,type=“class”) # ラベルの予測

mean(pred[tra.index]!=Glass$Type[tra.index]) # 訓練誤差 判別器を構成する際の学習データの誤り率
mean(pred[-tra.index]!=Glass$Type[-tra.index]) # 予測誤差 未知のデータに対する誤り率

# 決定木の表示
plot(res);text(res)

  9
木の剪定(pruning)
    木T’を構築した時、T⊂T’をT’を剪定することで得られる部分
     木(subtree)とする
                                   𝑀
    部分木Tのコスト          𝐶α (T) =    𝑚=1   𝑛   𝑚   𝑄 𝑚 (𝑇) + α 𝑇
                                  𝑇 :ターミナルノードの個数
                              α:剪定を制御するパラメータ
    学習データの適応度とαの大きさはトレードオフ
        𝐶0 (T)への寄与が小さなノードから順に剪定を行う
              → 𝐶α (T)を最小にする部分木𝑇α を探索する

    Rではαではなくオプションcpを用いる
          𝐶 𝑐𝑝 (T) = 𝐶0 (T) + cp 𝑇 𝐶0 (𝑇0 ), 0≦ c ≦ 1
    10
木の剪定と木の深さ


                          4




     学習データの適応度

ただし、実際にはcp≧2で1つだけの分岐となる

11
木の深さ=4




12
損失行列と事前確率
    クラスごとのサンプル数によって誤判別の重さが異なる

    >table(Glass$Type)                Glassのデータは左のようになっている。
    1 2 3 5 6 7                       ゆえに、サンプル数が少ないクラスである3,5,6
    70 76 17 13 9 29                  を誤判別するコストは小さい。

    [,1] [,2] [,3] [,4]   [,5] [,6]
[1,] 0 1 100 100          100 1
[2,] 1 0 100 100          100 1
                                      そこで、左図のような損失関数を導入し、3,5,6
[3,] 1 1 0 100            100 1
[4,] 1 1 100 0            100 1       の誤判別のコストを100倍にしてみる
[5,] 1 1 100 100            0 1
[6,] 1 1 100 100          100 0


0.1666667 0.1666667 …
                                      またパターン認識の本では一様分布を仮定した
                                      分析も合わせて行っている
    13
損失行列と事前確率 in R
library(rpart) ; library(mlbench)
data(Glass)
set.seed(1)
tra.index <- sample(nrow(Glass),nrow(Glass)*0.7)


# 損失行列
LOSS <- matrix(1,length(levels(Glass$Type)), length(levels(Glass$Type)))
LOSS[,c(3:5)] <- 100 ; diag(LOSS)<-0


# 学習
res2 <- rpart(Type~., Glass[tra.index,], method="class", parms=list(loss=LOSS))
yhat2 <- predict(res2,Glass,type=“class”) # ラベルの予測
mean(yhat2[tra.index]!=Glass$Type[tra.index]) # 訓練誤差
mean(yhat2[-tra.index]!=Glass$Type[-tra.index]) # 予測誤差
table(true=Glass$Type, prediction=yhat2) # 判別結果


# 一様分布の場合→parms=list(prior=rep(1/6,6)

  14
事前確率に一様分布を仮定した場合




15
決定木の不安定性




   決定木の問題点
        判別結果の分散が大きく、データが少し変わっただけで構築される
         木の構造や判別ルールが大きく変わってしまう。
        14章で扱うバギング等で木の安定性を測っている。




    16

Weitere ähnliche Inhalte

Was ist angesagt?

最近のKaggleに学ぶテーブルデータの特徴量エンジニアリング
最近のKaggleに学ぶテーブルデータの特徴量エンジニアリング最近のKaggleに学ぶテーブルデータの特徴量エンジニアリング
最近のKaggleに学ぶテーブルデータの特徴量エンジニアリングmlm_kansai
 
PyData.Tokyo Meetup #21 講演資料「Optuna ハイパーパラメータ最適化フレームワーク」太田 健
PyData.Tokyo Meetup #21 講演資料「Optuna ハイパーパラメータ最適化フレームワーク」太田 健PyData.Tokyo Meetup #21 講演資料「Optuna ハイパーパラメータ最適化フレームワーク」太田 健
PyData.Tokyo Meetup #21 講演資料「Optuna ハイパーパラメータ最適化フレームワーク」太田 健Preferred Networks
 
時系列問題に対するCNNの有用性検証
時系列問題に対するCNNの有用性検証時系列問題に対するCNNの有用性検証
時系列問題に対するCNNの有用性検証Masaharu Kinoshita
 
GAN(と強化学習との関係)
GAN(と強化学習との関係)GAN(と強化学習との関係)
GAN(と強化学習との関係)Masahiro Suzuki
 
深層学習の数理:カーネル法, スパース推定との接点
深層学習の数理:カーネル法, スパース推定との接点深層学習の数理:カーネル法, スパース推定との接点
深層学習の数理:カーネル法, スパース推定との接点Taiji Suzuki
 
ブラックボックス最適化とその応用
ブラックボックス最適化とその応用ブラックボックス最適化とその応用
ブラックボックス最適化とその応用gree_tech
 
ようやく分かった!最尤推定とベイズ推定
ようやく分かった!最尤推定とベイズ推定ようやく分かった!最尤推定とベイズ推定
ようやく分かった!最尤推定とベイズ推定Akira Masuda
 
Deep Learning Lab 異常検知入門
Deep Learning Lab 異常検知入門Deep Learning Lab 異常検知入門
Deep Learning Lab 異常検知入門Shohei Hido
 
グラフニューラルネットワークとグラフ組合せ問題
グラフニューラルネットワークとグラフ組合せ問題グラフニューラルネットワークとグラフ組合せ問題
グラフニューラルネットワークとグラフ組合せ問題joisino
 
時系列分析による異常検知入門
時系列分析による異常検知入門時系列分析による異常検知入門
時系列分析による異常検知入門Yohei Sato
 
パターン認識第9章 学習ベクトル量子化
パターン認識第9章 学習ベクトル量子化パターン認識第9章 学習ベクトル量子化
パターン認識第9章 学習ベクトル量子化Miyoshi Yuya
 
Active Learning 入門
Active Learning 入門Active Learning 入門
Active Learning 入門Shuyo Nakatani
 
グラフィカル Lasso を用いた異常検知
グラフィカル Lasso を用いた異常検知グラフィカル Lasso を用いた異常検知
グラフィカル Lasso を用いた異常検知Yuya Takashina
 
因果探索: 基本から最近の発展までを概説
因果探索: 基本から最近の発展までを概説因果探索: 基本から最近の発展までを概説
因果探索: 基本から最近の発展までを概説Shiga University, RIKEN
 
深層生成モデルと世界モデル
深層生成モデルと世界モデル深層生成モデルと世界モデル
深層生成モデルと世界モデルMasahiro Suzuki
 
変分推論法(変分ベイズ法)(PRML第10章)
変分推論法(変分ベイズ法)(PRML第10章)変分推論法(変分ベイズ法)(PRML第10章)
変分推論法(変分ベイズ法)(PRML第10章)Takao Yamanaka
 
星野「調査観察データの統計科学」第3章
星野「調査観察データの統計科学」第3章星野「調査観察データの統計科学」第3章
星野「調査観察データの統計科学」第3章Shuyo Nakatani
 
グラフニューラルネットワーク入門
グラフニューラルネットワーク入門グラフニューラルネットワーク入門
グラフニューラルネットワーク入門ryosuke-kojima
 

Was ist angesagt? (20)

最近のKaggleに学ぶテーブルデータの特徴量エンジニアリング
最近のKaggleに学ぶテーブルデータの特徴量エンジニアリング最近のKaggleに学ぶテーブルデータの特徴量エンジニアリング
最近のKaggleに学ぶテーブルデータの特徴量エンジニアリング
 
PyData.Tokyo Meetup #21 講演資料「Optuna ハイパーパラメータ最適化フレームワーク」太田 健
PyData.Tokyo Meetup #21 講演資料「Optuna ハイパーパラメータ最適化フレームワーク」太田 健PyData.Tokyo Meetup #21 講演資料「Optuna ハイパーパラメータ最適化フレームワーク」太田 健
PyData.Tokyo Meetup #21 講演資料「Optuna ハイパーパラメータ最適化フレームワーク」太田 健
 
時系列問題に対するCNNの有用性検証
時系列問題に対するCNNの有用性検証時系列問題に対するCNNの有用性検証
時系列問題に対するCNNの有用性検証
 
GAN(と強化学習との関係)
GAN(と強化学習との関係)GAN(と強化学習との関係)
GAN(と強化学習との関係)
 
深層学習の数理:カーネル法, スパース推定との接点
深層学習の数理:カーネル法, スパース推定との接点深層学習の数理:カーネル法, スパース推定との接点
深層学習の数理:カーネル法, スパース推定との接点
 
ブラックボックス最適化とその応用
ブラックボックス最適化とその応用ブラックボックス最適化とその応用
ブラックボックス最適化とその応用
 
ようやく分かった!最尤推定とベイズ推定
ようやく分かった!最尤推定とベイズ推定ようやく分かった!最尤推定とベイズ推定
ようやく分かった!最尤推定とベイズ推定
 
Deep Learning Lab 異常検知入門
Deep Learning Lab 異常検知入門Deep Learning Lab 異常検知入門
Deep Learning Lab 異常検知入門
 
グラフニューラルネットワークとグラフ組合せ問題
グラフニューラルネットワークとグラフ組合せ問題グラフニューラルネットワークとグラフ組合せ問題
グラフニューラルネットワークとグラフ組合せ問題
 
時系列分析による異常検知入門
時系列分析による異常検知入門時系列分析による異常検知入門
時系列分析による異常検知入門
 
パターン認識第9章 学習ベクトル量子化
パターン認識第9章 学習ベクトル量子化パターン認識第9章 学習ベクトル量子化
パターン認識第9章 学習ベクトル量子化
 
EMアルゴリズム
EMアルゴリズムEMアルゴリズム
EMアルゴリズム
 
Active Learning 入門
Active Learning 入門Active Learning 入門
Active Learning 入門
 
グラフィカル Lasso を用いた異常検知
グラフィカル Lasso を用いた異常検知グラフィカル Lasso を用いた異常検知
グラフィカル Lasso を用いた異常検知
 
因果探索: 基本から最近の発展までを概説
因果探索: 基本から最近の発展までを概説因果探索: 基本から最近の発展までを概説
因果探索: 基本から最近の発展までを概説
 
深層生成モデルと世界モデル
深層生成モデルと世界モデル深層生成モデルと世界モデル
深層生成モデルと世界モデル
 
決定木学習
決定木学習決定木学習
決定木学習
 
変分推論法(変分ベイズ法)(PRML第10章)
変分推論法(変分ベイズ法)(PRML第10章)変分推論法(変分ベイズ法)(PRML第10章)
変分推論法(変分ベイズ法)(PRML第10章)
 
星野「調査観察データの統計科学」第3章
星野「調査観察データの統計科学」第3章星野「調査観察データの統計科学」第3章
星野「調査観察データの統計科学」第3章
 
グラフニューラルネットワーク入門
グラフニューラルネットワーク入門グラフニューラルネットワーク入門
グラフニューラルネットワーク入門
 

Andere mochten auch

はじめてでもわかるベイズ分類器 -基礎からMahout実装まで-
はじめてでもわかるベイズ分類器 -基礎からMahout実装まで-はじめてでもわかるベイズ分類器 -基礎からMahout実装まで-
はじめてでもわかるベイズ分類器 -基礎からMahout実装まで-Naoki Yanai
 
今日から使える! みんなのクラスタリング超入門
今日から使える! みんなのクラスタリング超入門今日から使える! みんなのクラスタリング超入門
今日から使える! みんなのクラスタリング超入門toilet_lunch
 
バンディットアルゴリズム入門と実践
バンディットアルゴリズム入門と実践バンディットアルゴリズム入門と実践
バンディットアルゴリズム入門と実践智之 村上
 
トピックモデルを用いた 潜在ファッション嗜好の推定
トピックモデルを用いた 潜在ファッション嗜好の推定トピックモデルを用いた 潜在ファッション嗜好の推定
トピックモデルを用いた 潜在ファッション嗜好の推定Takashi Kaneda
 
SVMについて
SVMについてSVMについて
SVMについてmknh1122
 
機会学習ハッカソン:ランダムフォレスト
機会学習ハッカソン:ランダムフォレスト機会学習ハッカソン:ランダムフォレスト
機会学習ハッカソン:ランダムフォレストTeppei Baba
 
Simple perceptron by TJO
Simple perceptron by TJOSimple perceptron by TJO
Simple perceptron by TJOTakashi J OZAKI
 
Tokyo.R 41 サポートベクターマシンで眼鏡っ娘分類システム構築
Tokyo.R 41 サポートベクターマシンで眼鏡っ娘分類システム構築Tokyo.R 41 サポートベクターマシンで眼鏡っ娘分類システム構築
Tokyo.R 41 サポートベクターマシンで眼鏡っ娘分類システム構築Tatsuya Tojima
 
ロジスティック回帰の考え方・使い方 - TokyoR #33
ロジスティック回帰の考え方・使い方 - TokyoR #33ロジスティック回帰の考え方・使い方 - TokyoR #33
ロジスティック回帰の考え方・使い方 - TokyoR #33horihorio
 
「はじめてでもわかる RandomForest 入門-集団学習による分類・予測 -」 -第7回データマイニング+WEB勉強会@東京
「はじめてでもわかる RandomForest 入門-集団学習による分類・予測 -」 -第7回データマイニング+WEB勉強会@東京「はじめてでもわかる RandomForest 入門-集団学習による分類・予測 -」 -第7回データマイニング+WEB勉強会@東京
「はじめてでもわかる RandomForest 入門-集団学習による分類・予測 -」 -第7回データマイニング+WEB勉強会@東京Koichi Hamada
 
機械学習チュートリアル@Jubatus Casual Talks
機械学習チュートリアル@Jubatus Casual Talks機械学習チュートリアル@Jubatus Casual Talks
機械学習チュートリアル@Jubatus Casual TalksYuya Unno
 
機械学習によるデータ分析まわりのお話
機械学習によるデータ分析まわりのお話機械学習によるデータ分析まわりのお話
機械学習によるデータ分析まわりのお話Ryota Kamoshida
 
Pythonとdeep learningで手書き文字認識
Pythonとdeep learningで手書き文字認識Pythonとdeep learningで手書き文字認識
Pythonとdeep learningで手書き文字認識Ken Morishita
 
scikit-learnを用いた機械学習チュートリアル
scikit-learnを用いた機械学習チュートリアルscikit-learnを用いた機械学習チュートリアル
scikit-learnを用いた機械学習チュートリアル敦志 金谷
 
Rによるデータサイエンス13「樹木モデル」
Rによるデータサイエンス13「樹木モデル」Rによるデータサイエンス13「樹木モデル」
Rによるデータサイエンス13「樹木モデル」Takeshi Mikami
 
Pythonで機械学習入門以前
Pythonで機械学習入門以前Pythonで機械学習入門以前
Pythonで機械学習入門以前Kimikazu Kato
 
ルールベースから機械学習への道 公開用
ルールベースから機械学習への道 公開用ルールベースから機械学習への道 公開用
ルールベースから機械学習への道 公開用nishio
 
30分でわかる『R』によるデータ分析|データアーティスト
30分でわかる『R』によるデータ分析|データアーティスト30分でわかる『R』によるデータ分析|データアーティスト
30分でわかる『R』によるデータ分析|データアーティストSatoru Yamamoto
 
実戦投入する機械学習
実戦投入する機械学習実戦投入する機械学習
実戦投入する機械学習Takahiro Kubo
 

Andere mochten auch (20)

はじめてでもわかるベイズ分類器 -基礎からMahout実装まで-
はじめてでもわかるベイズ分類器 -基礎からMahout実装まで-はじめてでもわかるベイズ分類器 -基礎からMahout実装まで-
はじめてでもわかるベイズ分類器 -基礎からMahout実装まで-
 
今日から使える! みんなのクラスタリング超入門
今日から使える! みんなのクラスタリング超入門今日から使える! みんなのクラスタリング超入門
今日から使える! みんなのクラスタリング超入門
 
バンディットアルゴリズム入門と実践
バンディットアルゴリズム入門と実践バンディットアルゴリズム入門と実践
バンディットアルゴリズム入門と実践
 
トピックモデルを用いた 潜在ファッション嗜好の推定
トピックモデルを用いた 潜在ファッション嗜好の推定トピックモデルを用いた 潜在ファッション嗜好の推定
トピックモデルを用いた 潜在ファッション嗜好の推定
 
SVMについて
SVMについてSVMについて
SVMについて
 
機会学習ハッカソン:ランダムフォレスト
機会学習ハッカソン:ランダムフォレスト機会学習ハッカソン:ランダムフォレスト
機会学習ハッカソン:ランダムフォレスト
 
Simple perceptron by TJO
Simple perceptron by TJOSimple perceptron by TJO
Simple perceptron by TJO
 
Tokyo.R 41 サポートベクターマシンで眼鏡っ娘分類システム構築
Tokyo.R 41 サポートベクターマシンで眼鏡っ娘分類システム構築Tokyo.R 41 サポートベクターマシンで眼鏡っ娘分類システム構築
Tokyo.R 41 サポートベクターマシンで眼鏡っ娘分類システム構築
 
ロジスティック回帰の考え方・使い方 - TokyoR #33
ロジスティック回帰の考え方・使い方 - TokyoR #33ロジスティック回帰の考え方・使い方 - TokyoR #33
ロジスティック回帰の考え方・使い方 - TokyoR #33
 
一般向けのDeep Learning
一般向けのDeep Learning一般向けのDeep Learning
一般向けのDeep Learning
 
「はじめてでもわかる RandomForest 入門-集団学習による分類・予測 -」 -第7回データマイニング+WEB勉強会@東京
「はじめてでもわかる RandomForest 入門-集団学習による分類・予測 -」 -第7回データマイニング+WEB勉強会@東京「はじめてでもわかる RandomForest 入門-集団学習による分類・予測 -」 -第7回データマイニング+WEB勉強会@東京
「はじめてでもわかる RandomForest 入門-集団学習による分類・予測 -」 -第7回データマイニング+WEB勉強会@東京
 
機械学習チュートリアル@Jubatus Casual Talks
機械学習チュートリアル@Jubatus Casual Talks機械学習チュートリアル@Jubatus Casual Talks
機械学習チュートリアル@Jubatus Casual Talks
 
機械学習によるデータ分析まわりのお話
機械学習によるデータ分析まわりのお話機械学習によるデータ分析まわりのお話
機械学習によるデータ分析まわりのお話
 
Pythonとdeep learningで手書き文字認識
Pythonとdeep learningで手書き文字認識Pythonとdeep learningで手書き文字認識
Pythonとdeep learningで手書き文字認識
 
scikit-learnを用いた機械学習チュートリアル
scikit-learnを用いた機械学習チュートリアルscikit-learnを用いた機械学習チュートリアル
scikit-learnを用いた機械学習チュートリアル
 
Rによるデータサイエンス13「樹木モデル」
Rによるデータサイエンス13「樹木モデル」Rによるデータサイエンス13「樹木モデル」
Rによるデータサイエンス13「樹木モデル」
 
Pythonで機械学習入門以前
Pythonで機械学習入門以前Pythonで機械学習入門以前
Pythonで機械学習入門以前
 
ルールベースから機械学習への道 公開用
ルールベースから機械学習への道 公開用ルールベースから機械学習への道 公開用
ルールベースから機械学習への道 公開用
 
30分でわかる『R』によるデータ分析|データアーティスト
30分でわかる『R』によるデータ分析|データアーティスト30分でわかる『R』によるデータ分析|データアーティスト
30分でわかる『R』によるデータ分析|データアーティスト
 
実戦投入する機械学習
実戦投入する機械学習実戦投入する機械学習
実戦投入する機械学習
 

Ähnlich wie パターン認識 第10章 決定木

カテゴリカルデータの解析 (Kashiwa.R#3)
カテゴリカルデータの解析 (Kashiwa.R#3)カテゴリカルデータの解析 (Kashiwa.R#3)
カテゴリカルデータの解析 (Kashiwa.R#3)Takumi Tsutaya
 
Feature Selection with R / in JP
Feature Selection with R / in JPFeature Selection with R / in JP
Feature Selection with R / in JPSercan Ahi
 
How to study stat
How to study statHow to study stat
How to study statAk Ok
 
クラシックな機械学習の入門 4. 学習データと予測性能
クラシックな機械学習の入門  4.   学習データと予測性能クラシックな機械学習の入門  4.   学習データと予測性能
クラシックな機械学習の入門 4. 学習データと予測性能Hiroshi Nakagawa
 
20130716 はじパタ3章前半 ベイズの識別規則
20130716 はじパタ3章前半 ベイズの識別規則20130716 はじパタ3章前半 ベイズの識別規則
20130716 はじパタ3章前半 ベイズの識別規則koba cky
 
東京大学工学部計数工学科応用音響学 D2 Clustering
東京大学工学部計数工学科応用音響学 D2 Clustering東京大学工学部計数工学科応用音響学 D2 Clustering
東京大学工学部計数工学科応用音響学 D2 ClusteringHiroshi Ono
 
Java数値(浮動小数点)課題勉強会
Java数値(浮動小数点)課題勉強会Java数値(浮動小数点)課題勉強会
Java数値(浮動小数点)課題勉強会Tetsuya Yoshida
 
わかりやすいパターン認識 4章
わかりやすいパターン認識 4章わかりやすいパターン認識 4章
わかりやすいパターン認識 4章Motokawa Tetsuya
 
R による文書分類入門
R による文書分類入門R による文書分類入門
R による文書分類入門Takeshi Arabiki
 
or-10. 線形計画法を Excel で解く
or-10. 線形計画法を Excel で解くor-10. 線形計画法を Excel で解く
or-10. 線形計画法を Excel で解くkunihikokaneko1
 
[ICLR/ICML2019読み会] Data Interpolating Prediction: Alternative Interpretation ...
[ICLR/ICML2019読み会] Data Interpolating Prediction: Alternative Interpretation ...[ICLR/ICML2019読み会] Data Interpolating Prediction: Alternative Interpretation ...
[ICLR/ICML2019読み会] Data Interpolating Prediction: Alternative Interpretation ...Takuya Shimada
 
Rで実験計画法 前編
Rで実験計画法 前編Rで実験計画法 前編
Rで実験計画法 前編itoyan110
 
[Ridge-i 論文読み会] ICLR2019における不完全ラベル学習
[Ridge-i 論文読み会] ICLR2019における不完全ラベル学習[Ridge-i 論文読み会] ICLR2019における不完全ラベル学習
[Ridge-i 論文読み会] ICLR2019における不完全ラベル学習Masanari Kimura
 
パターン認識モデル初歩の初歩
パターン認識モデル初歩の初歩パターン認識モデル初歩の初歩
パターン認識モデル初歩の初歩t_ichioka_sg
 
Chap12 4 appendix_suhara
Chap12 4 appendix_suharaChap12 4 appendix_suhara
Chap12 4 appendix_suharasleepy_yoshi
 
Chap12 4 appendix_suhara
Chap12 4 appendix_suharaChap12 4 appendix_suhara
Chap12 4 appendix_suharasleepy_yoshi
 

Ähnlich wie パターン認識 第10章 決定木 (20)

カテゴリカルデータの解析 (Kashiwa.R#3)
カテゴリカルデータの解析 (Kashiwa.R#3)カテゴリカルデータの解析 (Kashiwa.R#3)
カテゴリカルデータの解析 (Kashiwa.R#3)
 
Feature Selection with R / in JP
Feature Selection with R / in JPFeature Selection with R / in JP
Feature Selection with R / in JP
 
Rで学ぶロバスト推定
Rで学ぶロバスト推定Rで学ぶロバスト推定
Rで学ぶロバスト推定
 
How to study stat
How to study statHow to study stat
How to study stat
 
クラシックな機械学習の入門 4. 学習データと予測性能
クラシックな機械学習の入門  4.   学習データと予測性能クラシックな機械学習の入門  4.   学習データと予測性能
クラシックな機械学習の入門 4. 学習データと予測性能
 
20130716 はじパタ3章前半 ベイズの識別規則
20130716 はじパタ3章前半 ベイズの識別規則20130716 はじパタ3章前半 ベイズの識別規則
20130716 はじパタ3章前半 ベイズの識別規則
 
東京大学工学部計数工学科応用音響学 D2 Clustering
東京大学工学部計数工学科応用音響学 D2 Clustering東京大学工学部計数工学科応用音響学 D2 Clustering
東京大学工学部計数工学科応用音響学 D2 Clustering
 
Dive into XGBoost.pdf
Dive into XGBoost.pdfDive into XGBoost.pdf
Dive into XGBoost.pdf
 
Java数値(浮動小数点)課題勉強会
Java数値(浮動小数点)課題勉強会Java数値(浮動小数点)課題勉強会
Java数値(浮動小数点)課題勉強会
 
わかりやすいパターン認識 4章
わかりやすいパターン認識 4章わかりやすいパターン認識 4章
わかりやすいパターン認識 4章
 
統計検定3級 4
統計検定3級 4統計検定3級 4
統計検定3級 4
 
R による文書分類入門
R による文書分類入門R による文書分類入門
R による文書分類入門
 
or-10. 線形計画法を Excel で解く
or-10. 線形計画法を Excel で解くor-10. 線形計画法を Excel で解く
or-10. 線形計画法を Excel で解く
 
PRML 第14章
PRML 第14章PRML 第14章
PRML 第14章
 
[ICLR/ICML2019読み会] Data Interpolating Prediction: Alternative Interpretation ...
[ICLR/ICML2019読み会] Data Interpolating Prediction: Alternative Interpretation ...[ICLR/ICML2019読み会] Data Interpolating Prediction: Alternative Interpretation ...
[ICLR/ICML2019読み会] Data Interpolating Prediction: Alternative Interpretation ...
 
Rで実験計画法 前編
Rで実験計画法 前編Rで実験計画法 前編
Rで実験計画法 前編
 
[Ridge-i 論文読み会] ICLR2019における不完全ラベル学習
[Ridge-i 論文読み会] ICLR2019における不完全ラベル学習[Ridge-i 論文読み会] ICLR2019における不完全ラベル学習
[Ridge-i 論文読み会] ICLR2019における不完全ラベル学習
 
パターン認識モデル初歩の初歩
パターン認識モデル初歩の初歩パターン認識モデル初歩の初歩
パターン認識モデル初歩の初歩
 
Chap12 4 appendix_suhara
Chap12 4 appendix_suharaChap12 4 appendix_suhara
Chap12 4 appendix_suhara
 
Chap12 4 appendix_suhara
Chap12 4 appendix_suharaChap12 4 appendix_suhara
Chap12 4 appendix_suhara
 

パターン認識 第10章 決定木

  • 1. 決定木 東京大学 三好雄也 1
  • 2. 決定木  決定木とは、データの特徴量を用いた簡単なルールで分岐を 作り、特徴空間を分割することを通じて判別や回帰を行うモ デルのこと  モデルの種類:CARTやC4.5(C5.0)  CART 1. 木の構築:何らかの基準を満たすまで、予め定義しておいたコストに基 づいて特徴空間を2分割する手続きを繰り返す 2. 剪定(pruning):構築された木の深さが深いほど複雑なデータを扱うこ とができるが、過学習の可能性がある。そこで、過学習を防ぐため、予 め定めておいたパラメータによってモデルの複雑度を制御すること  利点:高次元の判別が容易に視覚的に確認できる 2
  • 3. 決定木のイメージ ルートノード 線形回帰 ターミナルノード 3
  • 4. 分類の考え方 分類の考え方  例えば、ある商品を購入するか否かを最も良く説明する分類を作成す るとする。この時、分類されたデータが買う、買わないできれいに分け られれば、それは「純粋である」とされる。  分類により、純化していく作業が決定木 4
  • 5. 決定木の手法  CART(Classification And Regression Trees)  不純度を表すGINI係数を基準に分割  ノードを分岐させることによって、不純度が減少する(=分岐 後のそれぞれのノードの純度が増す)ような分岐点を探す  「純度が増す」=「バラツキが少なくなる」  C4.5(C5.0)  エントロピーに基づくゲイン比という基準で分割 5
  • 6. 木の構築コスト  木の構造T、m番目のターミナルノード𝑅 𝑚 、 𝑅 𝑚 中の例題数 𝑛𝑚  𝑅 𝑚 において、ラベルがgになる確率 1 𝑝 𝑚,𝑔 = 𝐼[𝑦 𝑖 = 𝑔] 𝑛 𝑚  𝑅 𝑚 におけるラベルの予測 𝑦(m) = argmax 𝑔 𝑝 𝑚,𝑔  Tにおけるノードmのコスト𝑄 𝑚 (𝑇) 1. ジニ係数 𝑄 𝑚 𝑇 = 𝑝 𝑚,𝑔 𝑝 𝑚,𝑔′ = 𝑝 𝑚,𝑔 (1 − 𝑝 𝑚,𝑔 ) 𝐺 2. エントロピー 𝑄 𝑚 𝑇 = 𝑔=1 𝑝 𝑚,𝑔 𝑙𝑜𝑔𝑝 𝑚,𝑔 6
  • 7. ジニ係数とエントロピー  ジニ係数で分類  不平等さを示す指標 0~1の間の値を取り、0で平等  ジニ係数が最も低下するように分類する。  エントロピーに基づくゲイン(情報利得)比  情報量を測る指標(物理では熱や物質の拡散度を示す指標)  情報量:確率pで起こる事象の情報量は -𝑙𝑜𝑔2 𝑝 で定義される  𝑙𝑜𝑔2 𝑝の絶対値が大きい=情報量が多い  エントロピー( - 𝐺 𝑝 𝑚,𝑔 𝑙𝑜𝑔𝑝 𝑚,𝑔 )が低いほどノードの純度は高い 𝑔=1 7
  • 8. ジニ係数とエントロピー:教科書の例 全体で200個の例題が存在、それぞれクラスが2つ 分割1 𝑅1 にクラス1が75個、クラス2が25個 𝑅2 にクラス1が75個、クラス2が25個 分割2 𝑅1 にクラス1が50個、クラス2が100個 𝑅2 にクラス1が50個、クラス2が0個 100 75 75 ジニ係数 分割1 (1− ) ×2 = 0.1875 200 100 100 150 50 50 50 50 50 分割2 (1− ) + (1− ) = 0.1666 200 150 150 200 50 50 100 75 75 エントロピー 分割1 ×log( ) ×2 = -1.5 200 100 100 150 50 50 50 50 50 分割2 ×log( ) + ×log( ) = -0.3962 200 150 100 200 50 50 注意:C4.5などはエントロピーに基づくゲイン(情報利得)比を用いる 8
  • 9. 決定木 in R library(rpart) ; library(mlbench) data(Glass) nrow(Glass) # → 214 head(Glass) # 9つのデータと7つのType table(Glass$Type) # 各Typeの個数 set.seed(1) # 乱数の種を指定 # 学習データ tra.index <- sample(nrow(Glass), nrow(Glass)*0.7) # ランダムサンプリング # ジニ係数で学習 split= “information” でエントロピー res <- rpart(Type~., Glass[tra.index,], method=“class”, parms=list(split=“gini”)) pred <- predict(res,Glass,type=“class”) # ラベルの予測 mean(pred[tra.index]!=Glass$Type[tra.index]) # 訓練誤差 判別器を構成する際の学習データの誤り率 mean(pred[-tra.index]!=Glass$Type[-tra.index]) # 予測誤差 未知のデータに対する誤り率 # 決定木の表示 plot(res);text(res) 9
  • 10. 木の剪定(pruning)  木T’を構築した時、T⊂T’をT’を剪定することで得られる部分 木(subtree)とする 𝑀  部分木Tのコスト 𝐶α (T) = 𝑚=1 𝑛 𝑚 𝑄 𝑚 (𝑇) + α 𝑇 𝑇 :ターミナルノードの個数 α:剪定を制御するパラメータ  学習データの適応度とαの大きさはトレードオフ  𝐶0 (T)への寄与が小さなノードから順に剪定を行う → 𝐶α (T)を最小にする部分木𝑇α を探索する  Rではαではなくオプションcpを用いる 𝐶 𝑐𝑝 (T) = 𝐶0 (T) + cp 𝑇 𝐶0 (𝑇0 ), 0≦ c ≦ 1 10
  • 11. 木の剪定と木の深さ 4 学習データの適応度 ただし、実際にはcp≧2で1つだけの分岐となる 11
  • 13. 損失行列と事前確率  クラスごとのサンプル数によって誤判別の重さが異なる >table(Glass$Type) Glassのデータは左のようになっている。 1 2 3 5 6 7 ゆえに、サンプル数が少ないクラスである3,5,6 70 76 17 13 9 29 を誤判別するコストは小さい。 [,1] [,2] [,3] [,4] [,5] [,6] [1,] 0 1 100 100 100 1 [2,] 1 0 100 100 100 1 そこで、左図のような損失関数を導入し、3,5,6 [3,] 1 1 0 100 100 1 [4,] 1 1 100 0 100 1 の誤判別のコストを100倍にしてみる [5,] 1 1 100 100 0 1 [6,] 1 1 100 100 100 0 0.1666667 0.1666667 … またパターン認識の本では一様分布を仮定した 分析も合わせて行っている 13
  • 14. 損失行列と事前確率 in R library(rpart) ; library(mlbench) data(Glass) set.seed(1) tra.index <- sample(nrow(Glass),nrow(Glass)*0.7) # 損失行列 LOSS <- matrix(1,length(levels(Glass$Type)), length(levels(Glass$Type))) LOSS[,c(3:5)] <- 100 ; diag(LOSS)<-0 # 学習 res2 <- rpart(Type~., Glass[tra.index,], method="class", parms=list(loss=LOSS)) yhat2 <- predict(res2,Glass,type=“class”) # ラベルの予測 mean(yhat2[tra.index]!=Glass$Type[tra.index]) # 訓練誤差 mean(yhat2[-tra.index]!=Glass$Type[-tra.index]) # 予測誤差 table(true=Glass$Type, prediction=yhat2) # 判別結果 # 一様分布の場合→parms=list(prior=rep(1/6,6) 14
  • 16. 決定木の不安定性  決定木の問題点  判別結果の分散が大きく、データが少し変わっただけで構築される 木の構造や判別ルールが大きく変わってしまう。  14章で扱うバギング等で木の安定性を測っている。 16