狠狠撸

狠狠撸Share a Scribd company logo
による分类木?入门
による分类木?入门
※いろいろなサイト?本を
?自分なりにまとめてみました。
What’s classification tree?
?? 結果を分類するためにそのほかの値を見比べ、
最もきれいに2分割できる条件を探していく手
法
?? 分岐の過程を図示することができるため,??
分析結果の可読性が高い
?? 分類木と回帰木がある
3
生成?生長 剪定
枝を伸ばす いらない枝を切り落とす
What’s classification tree?
生成?生長 剪定
枝を伸ばす いらない枝を切り落とす
What’s classification tree?
Example…
商品を サイズ 色 見た回数
買った M 普通 10
買った L 好き 5
買わない M 嫌い 3
買った M 好き 6
買わない L 好き 3
買わない M 普通 10
買わない M 嫌い 4
買った L 好き 6
目的変数がカテゴリカル(質的)な場合
6
Example…
生成?生長
7
?今回はCART(Classification And Regression Trees)という
?目的変数を2つの集合に分岐させる方法を紹介する
?具体的にはジニ係数(GI : Gini index)やエントロピー(entropy)
????????????? ?という分類の不純度を計算する
How to classify.
8
Rによる分類木 入門
Example…
商品を サイズ 色 見た回数
買った M 普通 10
買った L 好き 5
買わない M 嫌い 3
買った M 好き 6
買わない L 好き 3
買わない M 普通 10
買わない M 嫌い 4
買った L 好き 6
目的変数がカテゴリカル(質的)な場合
10
ex.)
M L 好き 普通?嫌い
色
4.5 <4.5
見た回数
ジニ係数(不純度)の一番低い分岐点を採用
データ
  買った
  買わない
説明変数
サイズ
ジニ係数
0.48 0.375 0.375 0.32 0.00.44
0.465 0.375 0.2
加重平均 加重平均 加重平均
11
生成?生長 剪定
枝を伸ばす いらない枝を切り落とす
What’s classification tree?
つまり
っていう枝を探すってこと
交差検証法(cross validation)
How to prune?
⑴データをテストデータと	
 ?
  トレーニングデータに分ける	
 ?
⑵トレーニングデータだけで	
 ?
  モデルをつくる	
 ?
⑶できたモデルとテストデータを比較し、
答え合わせをして、精度を求める	
 ?
⑷⑴?⑶をn回繰り返し、平均する	
 ?
14
交差検証法(cross validation)
How to prune?
⑴データをテストデータと	
 ?
  トレーニングデータに分ける	
 ?
⑵トレーニングデータだけで	
 ?
  モデルをつくる	
 ?
⑶できたモデルとテストデータを比較し、
答え合わせをして、精度を求める	
 ?
⑷⑴?⑶をn回繰り返し、平均する	
 ?
これを各ノードで行い、
制度の低いところを剪定する
15
Demonstration
with
16
①
③②
⑥ ⑦
? ?
>	
 ?library(mvpart)	
 ?
>	
 ?#	
 ?決定木のplot	
 ?
>	
 ?iris.rp	
 ?<-?‐	
 ?rpart(Species~.,	
 ?data=iris)	
 ?
>	
 ?iris.rp	
 ?
n=	
 ?150	
 ?	
 ?
	
 ?
node),	
 ?split,	
 ?n,	
 ?loss,	
 ?yval,	
 ?(yprob)	
 ?
	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?*	
 ?denotes	
 ?terminal	
 ?node	
 ?
	
 ?
	
 ?1)	
 ?root	
 ?150	
 ?100	
 ?setosa	
 ?(0.33333333	
 ?0.33333333	
 ?0.33333333)	
 ?	
 ?	
 ?
	
 ?	
 ?	
 ?2)	
 ?Petal.Length<	
 ?2.45	
 ?50	
 ?	
 ?	
 ?0	
 ?setosa	
 ?(1.00000000	
 ?0.00000000	
 ?0.00000000)	
 ?*	
 ?
	
 ?	
 ?	
 ?3)	
 ?Petal.Length>=2.45	
 ?100	
 ?	
 ?50	
 ?versicolor	
 ?(0.00000000	
 ?0.50000000	
 ?0.50000000)	
 ?	
 ?	
 ?
	
 ?	
 ?	
 ?	
 ?	
 ?6)	
 ?Petal.Width<	
 ?1.75	
 ?54	
 ?	
 ?	
 ?5	
 ?versicolor	
 ?(0.00000000	
 ?0.90740741	
 ?0.09259259)	
 ?	
 ?	
 ?
	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?12)	
 ?Petal.Length<	
 ?4.95	
 ?48	
 ?	
 ?	
 ?1	
 ?versicolor	
 ?(0.00000000	
 ?0.97916667	
 ?0.02083333)	
 ?*	
 ?
	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?13)	
 ?Petal.Length>=4.95	
 ?6	
 ?	
 ?	
 ?2	
 ?virginica	
 ?(0.00000000	
 ?0.33333333	
 ?0.66666667)	
 ?*	
 ?
	
 ?	
 ?	
 ?	
 ?	
 ?7)	
 ?Petal.Width>=1.75	
 ?46	
 ?	
 ?	
 ?1	
 ?virginica	
 ?(0.00000000	
 ?0.02173913	
 ?0.97826087)	
 ?*	
 ?
>	
 ?plot(iris.rp,uniform=T,branch=0.6,margin=0)	
 ?
>	
 ?text(iris.rp,uniform=T,use.n=T,all=T)	
 ?
	
 ?
剪定前
17
もう少しシンプルにきれいにしたかったら???
>	
 ?library(partykit)	
 ?
>	
 ?plot(as.party(iris.rp),uniform=T,branch=0.6,margin=0.5)
18
過学習してないか調べる
>	
 ?printcp(iris.rp)	
 ?
	
 ?
Classification	
 ?tree:	
 ?
rpart(formula	
 ?=	
 ?Species	
 ?~	
 ?.,	
 ?data	
 ?=	
 ?
iris)	
 ?
	
 ?
Variables	
 ?actually	
 ?used	
 ?in	
 ?tree	
 ?
construction:	
 ?
[1]	
 ?Petal.Length	
 ?Petal.Width	
 ?	
 ?
	
 ?
Root	
 ?node	
 ?error:	
 ?100/150	
 ?=	
 ?0.66667	
 ?
	
 ?
n=	
 ?150	
 ?	
 ?
	
 ?
	
 ?	
 ?	
 ?	
 ?CP	
 ?nsplit	
 ?rel	
 ?error	
 ?xerror	
 ?	
 ?	
 ?	
 ?	
 ?xstd	
 ?
1	
 ?0.50	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?0	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?1.00	
 ?	
 ?	
 ?1.21	
 ?0.048367	
 ?
2	
 ?0.44	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?1	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?0.50	
 ?	
 ?	
 ?0.74	
 ?0.061232	
 ?
3	
 ?0.02	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?2	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?0.06	
 ?	
 ?	
 ?0.11	
 ?0.031927	
 ?
4	
 ?0.01	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?3	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?0.04	
 ?	
 ?	
 ?0.11	
 ?0.031927
>	
 ?plotcp(iris.rp)
19
過学習してないか調べる
>	
 ?printcp(iris.rp)	
 ?
	
 ?
Classification	
 ?tree:	
 ?
rpart(formula	
 ?=	
 ?Species	
 ?~	
 ?.,	
 ?data	
 ?=	
 ?
iris)	
 ?
	
 ?
Variables	
 ?actually	
 ?used	
 ?in	
 ?tree	
 ?
construction:	
 ?
[1]	
 ?Petal.Length	
 ?Petal.Width	
 ?	
 ?
	
 ?
Root	
 ?node	
 ?error:	
 ?100/150	
 ?=	
 ?0.66667	
 ?
	
 ?
n=	
 ?150	
 ?	
 ?
	
 ?
	
 ?	
 ?	
 ?	
 ?CP	
 ?nsplit	
 ?rel	
 ?error	
 ?xerror	
 ?	
 ?	
 ?	
 ?	
 ?xstd	
 ?
1	
 ?0.50	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?0	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?1.00	
 ?	
 ?	
 ?1.21	
 ?0.048367	
 ?
2	
 ?0.44	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?1	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?0.50	
 ?	
 ?	
 ?0.74	
 ?0.061232	
 ?
3	
 ?0.02	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?2	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?0.06	
 ?	
 ?	
 ?0.11	
 ?0.031927	
 ?
4	
 ?0.01	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?3	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?0.04	
 ?	
 ?	
 ?0.11	
 ?0.031927
>	
 ?plotcp(iris.rp)
20
?CP	
 ?nsplit	
 ?rel	
 ?error	
 ?xerror	
 ?	
 ?	
 ?	
 ?	
 ?xstd	
 ?
1	
 ?0.50	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?0	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?1.00	
 ?	
 ?	
 ?1.21	
 ?0.048367	
 ?
2	
 ?0.44	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?1	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?0.50	
 ?	
 ?	
 ?0.74	
 ?0.061232	
 ?
3	
 ?0.02	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?2	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?0.06	
 ?	
 ?	
 ?0.11	
 ?0.031927	
 ?
4	
 ?0.01	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?3	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?0.04	
 ?	
 ?	
 ?0.11	
 ?0.031927
21
?CP	
 ?nsplit	
 ?rel	
 ?error	
 ?xerror	
 ?	
 ?	
 ?	
 ?	
 ?xstd	
 ?
1	
 ?0.50	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?0	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?1.00	
 ?	
 ?	
 ?1.21	
 ?0.048367	
 ?
2	
 ?0.44	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?1	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?0.50	
 ?	
 ?	
 ?0.74	
 ?0.061232	
 ?
3	
 ?0.02	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?2	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?0.06	
 ?	
 ?	
 ?0.11	
 ?0.031927	
 ?
4	
 ?0.01	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?3	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?0.04	
 ?	
 ?	
 ?0.11	
 ?0.031927
22
?CP	
 ?nsplit	
 ?rel	
 ?error	
 ?xerror	
 ?	
 ?	
 ?	
 ?	
 ?xstd	
 ?
1	
 ?0.50	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?0	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?1.00	
 ?	
 ?	
 ?1.21	
 ?0.048367	
 ?
2	
 ?0.44	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?1	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?0.50	
 ?	
 ?	
 ?0.74	
 ?0.061232	
 ?
3	
 ?0.02	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?2	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?0.06	
 ?	
 ?	
 ?0.11	
 ?0.031927	
 ?
4	
 ?0.01	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?3	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?0.04	
 ?	
 ?	
 ?0.11	
 ?0.031927
23
?CP	
 ?nsplit	
 ?rel	
 ?error	
 ?xerror	
 ?	
 ?	
 ?	
 ?	
 ?xstd	
 ?
1	
 ?0.50	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?0	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?1.00	
 ?	
 ?	
 ?1.21	
 ?0.048367	
 ?
2	
 ?0.44	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?1	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?0.50	
 ?	
 ?	
 ?0.74	
 ?0.061232	
 ?
3	
 ?0.02	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?2	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?0.06	
 ?	
 ?	
 ?0.11	
 ?0.031927	
 ?
4	
 ?0.01	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?3	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?0.04	
 ?	
 ?	
 ?0.11	
 ?0.031927
どちらかの
値で剪定
24
①
③②
⑥ ⑦>	
 ?iris.rp2_1	
 ?<-?‐	
 ?prune(iris.rp,cp=0.02)	
 ?
>	
 ?iris.rp2_1	
 ?
n=	
 ?150	
 ?	
 ?
	
 ?
node),	
 ?split,	
 ?n,	
 ?loss,	
 ?yval,	
 ?(yprob)	
 ?
	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?*	
 ?denotes	
 ?terminal	
 ?node	
 ?
	
 ?
1)	
 ?root	
 ?150	
 ?100	
 ?setosa	
 ?(0.33333333	
 ?0.33333333	
 ?0.33333333)	
 ?	
 ?	
 ?
	
 ?	
 ?2)	
 ?Petal.Length<	
 ?2.45	
 ?50	
 ?	
 ?	
 ?0	
 ?setosa	
 ?(1.00000000	
 ?0.00000000	
 ?0.00000000)	
 ?*	
 ?
	
 ?	
 ?3)	
 ?Petal.Length>=2.45	
 ?100	
 ?	
 ?50	
 ?versicolor	
 ?(0.00000000	
 ?0.50000000	
 ?0.50000000)	
 ?	
 ?	
 ?
	
 ?	
 ?	
 ?	
 ?6)	
 ?Petal.Width<	
 ?1.75	
 ?54	
 ?	
 ?	
 ?5	
 ?versicolor	
 ?(0.00000000	
 ?0.90740741	
 ?0.09259259)	
 ?*	
 ?
	
 ?	
 ?	
 ?	
 ?7)	
 ?Petal.Width>=1.75	
 ?46	
 ?	
 ?	
 ?1	
 ?virginica	
 ?(0.00000000	
 ?0.02173913	
 ?0.97826087)	
 ?*	
 ?
>	
 ?plot(iris.rp2_1,uniform=T,branch=0.6,margin=0)	
 ?
>	
 ?text(iris.rp2_1,uniform=T,use.n=T,all=T)	
 ?
剪定後
25
①
③②
⑥ ⑦>	
 ?iris.rp2_2	
 ?<-?‐	
 ?prune(iris.rp,cp=0.094)	
 ?
>	
 ?iris.rp2_2	
 ?
n=	
 ?150	
 ?	
 ?
	
 ?
node),	
 ?split,	
 ?n,	
 ?loss,	
 ?yval,	
 ?(yprob)	
 ?
	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?*	
 ?denotes	
 ?terminal	
 ?node	
 ?
	
 ?
1)	
 ?root	
 ?150	
 ?100	
 ?setosa	
 ?(0.33333333	
 ?0.33333333	
 ?0.33333333)	
 ?	
 ?	
 ?
	
 ?	
 ?2)	
 ?Petal.Length<	
 ?2.45	
 ?50	
 ?	
 ?	
 ?0	
 ?setosa	
 ?(1.00000000	
 ?0.00000000	
 ?0.00000000)	
 ?*	
 ?
	
 ?	
 ?3)	
 ?Petal.Length>=2.45	
 ?100	
 ?	
 ?50	
 ?versicolor	
 ?(0.00000000	
 ?0.50000000	
 ?0.50000000)	
 ?	
 ?	
 ?
	
 ?	
 ?	
 ?	
 ?6)	
 ?Petal.Width<	
 ?1.75	
 ?54	
 ?	
 ?	
 ?5	
 ?versicolor	
 ?(0.00000000	
 ?0.90740741	
 ?0.09259259)	
 ?*	
 ?
	
 ?	
 ?	
 ?	
 ?7)	
 ?Petal.Width>=1.75	
 ?46	
 ?	
 ?	
 ?1	
 ?virginica	
 ?(0.00000000	
 ?0.02173913	
 ?0.97826087)	
 ?*	
 ?
>	
 ?plot(iris.rp2_2,uniform=T,branch=0.6,margin=0)	
 ?
>	
 ?text(iris.rp2_2,uniform=T,use.n=T,all=T)	
 ?
剪定後
26
上と下の剪定基準値の間に両方あるから
結局、結果は同じ???
27※詳細はよくわかりません m(_ _)m
分類木の精度を測りたいなら???
28
最後に
>	
 ?iris.tre	
 ?<-?‐	
 ?iris[2*(1:75)-?‐1,]	
 ?#	
 ?奇数行	
 ?
>	
 ?iris.test	
 ?<-?‐	
 ?iris[-?‐(2*(1:75)-?‐1),]	
 ?#	
 ?偶数行	
 ?
#	
 ?奇数行だけで分類木の生成	
 ?
>	
 ?iris.tre	
 ?<-?‐	
 ?rpart(Species~.,	
 ?data=iris.tre,method="class")	
 ?
>	
 ?pred	
 ?<-?‐	
 ?predict(iris.tre,	
 ?iris.test,	
 ?type="class")	
 ?
#	
 ?偶数行でテストしてみる	
 ?
>	
 ?table(pred,	
 ?iris.test$Species)	
 ?
	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?
pred	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?setosa	
 ?versicolor	
 ?virginica	
 ?
	
 ?	
 ?setosa	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?25	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?0	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?0	
 ?
	
 ?	
 ?versicolor	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?0	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?24	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?3	
 ?
	
 ?	
 ?virginica	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?0	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?1	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?22	
 ?

More Related Content

What's hot (20)

倾向スコア:その概念と搁による実装
倾向スコア:その概念と搁による実装倾向スコア:その概念と搁による実装
倾向スコア:その概念と搁による実装
takehikoihayashi
?
Fisher線形判別分析とFisher Weight Maps
Fisher線形判別分析とFisher Weight MapsFisher線形判別分析とFisher Weight Maps
Fisher線形判別分析とFisher Weight Maps
Takao Yamanaka
?
データ解析7 主成分分析の基础
データ解析7 主成分分析の基础データ解析7 主成分分析の基础
データ解析7 主成分分析の基础
Hirotaka Hachiya
?
因果探索: 観察データから 因果仮説を探索する
因果探索: 観察データから因果仮説を探索する因果探索: 観察データから因果仮説を探索する
因果探索: 観察データから 因果仮説を探索する
Shiga University, RIKEN
?
SMO徹底入門 - SVMをちゃんと実装する
SMO徹底入門 - SVMをちゃんと実装するSMO徹底入門 - SVMをちゃんと実装する
SMO徹底入門 - SVMをちゃんと実装する
sleepy_yoshi
?
最近のRのランダムフォレストパッケージ -ranger/Rborist-
最近のRのランダムフォレストパッケージ -ranger/Rborist-最近のRのランダムフォレストパッケージ -ranger/Rborist-
最近のRのランダムフォレストパッケージ -ranger/Rborist-
Shintaro Fukushima
?
最新の異常検知手法(NIPS 2018)
最新の異常検知手法(NIPS 2018)最新の異常検知手法(NIPS 2018)
最新の異常検知手法(NIPS 2018)
ぱんいち すみもと
?
アンサンブル学习
アンサンブル学习アンサンブル学习
アンサンブル学习
Hidekazu Tanaka
?
パターン認識と機械学習 §6.2 カーネル関数の構成
パターン認識と機械学習 §6.2 カーネル関数の構成パターン認識と機械学習 §6.2 カーネル関数の構成
パターン認識と機械学習 §6.2 カーネル関数の構成
Prunus 1350
?
Variational AutoEncoder
Variational AutoEncoderVariational AutoEncoder
Variational AutoEncoder
Kazuki Nitta
?
笔搁惭尝轮読#6
笔搁惭尝轮読#6笔搁惭尝轮読#6
笔搁惭尝轮読#6
matsuolab
?
逐次モンテカルロ法の基础
逐次モンテカルロ法の基础逐次モンテカルロ法の基础
逐次モンテカルロ法の基础
ShoutoYonekura
?
変分推论法(変分ベイズ法)(笔搁惭尝第10章)
変分推论法(変分ベイズ法)(笔搁惭尝第10章)変分推论法(変分ベイズ法)(笔搁惭尝第10章)
変分推论法(変分ベイズ法)(笔搁惭尝第10章)
Takao Yamanaka
?
星野「调査観察データの统计科学」第3章
星野「调査観察データの统计科学」第3章星野「调査観察データの统计科学」第3章
星野「调査観察データの统计科学」第3章
Shuyo Nakatani
?
[DL輪読会]The Neural Process Family?Neural Processes関連の実装を読んで動かしてみる?
[DL輪読会]The Neural Process Family?Neural Processes関連の実装を読んで動かしてみる?[DL輪読会]The Neural Process Family?Neural Processes関連の実装を読んで動かしてみる?
[DL輪読会]The Neural Process Family?Neural Processes関連の実装を読んで動かしてみる?
Deep Learning JP
?
笔测惭颁があれば,ベイズ推定でもう泣いたりなんかしない
笔测惭颁があれば,ベイズ推定でもう泣いたりなんかしない笔测惭颁があれば,ベイズ推定でもう泣いたりなんかしない
笔测惭颁があれば,ベイズ推定でもう泣いたりなんかしない
Toshihiro Kamishima
?
[DL輪読会]Deep Learning 第15章 表現学習
[DL輪読会]Deep Learning 第15章 表現学習[DL輪読会]Deep Learning 第15章 表現学習
[DL輪読会]Deep Learning 第15章 表現学習
Deep Learning JP
?
厂迟补苍超初心者入门
厂迟补苍超初心者入门厂迟补苍超初心者入门
厂迟补苍超初心者入门
Hiroshi Shimizu
?
几何を使った统计のはなし
几何を使った统计のはなし几何を使った统计のはなし
几何を使った统计のはなし
Toru Imai
?
第8章 カ?ウス過程回帰による異常検知
第8章 カ?ウス過程回帰による異常検知第8章 カ?ウス過程回帰による異常検知
第8章 カ?ウス過程回帰による異常検知
Chika Inoshita
?
倾向スコア:その概念と搁による実装
倾向スコア:その概念と搁による実装倾向スコア:その概念と搁による実装
倾向スコア:その概念と搁による実装
takehikoihayashi
?
Fisher線形判別分析とFisher Weight Maps
Fisher線形判別分析とFisher Weight MapsFisher線形判別分析とFisher Weight Maps
Fisher線形判別分析とFisher Weight Maps
Takao Yamanaka
?
データ解析7 主成分分析の基础
データ解析7 主成分分析の基础データ解析7 主成分分析の基础
データ解析7 主成分分析の基础
Hirotaka Hachiya
?
因果探索: 観察データから 因果仮説を探索する
因果探索: 観察データから因果仮説を探索する因果探索: 観察データから因果仮説を探索する
因果探索: 観察データから 因果仮説を探索する
Shiga University, RIKEN
?
SMO徹底入門 - SVMをちゃんと実装する
SMO徹底入門 - SVMをちゃんと実装するSMO徹底入門 - SVMをちゃんと実装する
SMO徹底入門 - SVMをちゃんと実装する
sleepy_yoshi
?
最近のRのランダムフォレストパッケージ -ranger/Rborist-
最近のRのランダムフォレストパッケージ -ranger/Rborist-最近のRのランダムフォレストパッケージ -ranger/Rborist-
最近のRのランダムフォレストパッケージ -ranger/Rborist-
Shintaro Fukushima
?
パターン認識と機械学習 §6.2 カーネル関数の構成
パターン認識と機械学習 §6.2 カーネル関数の構成パターン認識と機械学習 §6.2 カーネル関数の構成
パターン認識と機械学習 §6.2 カーネル関数の構成
Prunus 1350
?
Variational AutoEncoder
Variational AutoEncoderVariational AutoEncoder
Variational AutoEncoder
Kazuki Nitta
?
笔搁惭尝轮読#6
笔搁惭尝轮読#6笔搁惭尝轮読#6
笔搁惭尝轮読#6
matsuolab
?
逐次モンテカルロ法の基础
逐次モンテカルロ法の基础逐次モンテカルロ法の基础
逐次モンテカルロ法の基础
ShoutoYonekura
?
変分推论法(変分ベイズ法)(笔搁惭尝第10章)
変分推论法(変分ベイズ法)(笔搁惭尝第10章)変分推论法(変分ベイズ法)(笔搁惭尝第10章)
変分推论法(変分ベイズ法)(笔搁惭尝第10章)
Takao Yamanaka
?
星野「调査観察データの统计科学」第3章
星野「调査観察データの统计科学」第3章星野「调査観察データの统计科学」第3章
星野「调査観察データの统计科学」第3章
Shuyo Nakatani
?
[DL輪読会]The Neural Process Family?Neural Processes関連の実装を読んで動かしてみる?
[DL輪読会]The Neural Process Family?Neural Processes関連の実装を読んで動かしてみる?[DL輪読会]The Neural Process Family?Neural Processes関連の実装を読んで動かしてみる?
[DL輪読会]The Neural Process Family?Neural Processes関連の実装を読んで動かしてみる?
Deep Learning JP
?
笔测惭颁があれば,ベイズ推定でもう泣いたりなんかしない
笔测惭颁があれば,ベイズ推定でもう泣いたりなんかしない笔测惭颁があれば,ベイズ推定でもう泣いたりなんかしない
笔测惭颁があれば,ベイズ推定でもう泣いたりなんかしない
Toshihiro Kamishima
?
[DL輪読会]Deep Learning 第15章 表現学習
[DL輪読会]Deep Learning 第15章 表現学習[DL輪読会]Deep Learning 第15章 表現学習
[DL輪読会]Deep Learning 第15章 表現学習
Deep Learning JP
?
厂迟补苍超初心者入门
厂迟补苍超初心者入门厂迟补苍超初心者入门
厂迟补苍超初心者入门
Hiroshi Shimizu
?
几何を使った统计のはなし
几何を使った统计のはなし几何を使った统计のはなし
几何を使った统计のはなし
Toru Imai
?
第8章 カ?ウス過程回帰による異常検知
第8章 カ?ウス過程回帰による異常検知第8章 カ?ウス過程回帰による異常検知
第8章 カ?ウス過程回帰による異常検知
Chika Inoshita
?

Similar to Rによる分類木 入門 (20)

【鲍苍颈迟测道场】ゲーム制作に使う数学を学习しよう
【鲍苍颈迟测道场】ゲーム制作に使う数学を学习しよう【鲍苍颈迟测道场】ゲーム制作に使う数学を学习しよう
【鲍苍颈迟测道场】ゲーム制作に使う数学を学习しよう
Unity Technologies Japan K.K.
?
[TL06] 日本の第一人者が C# の現状と今後を徹底解説! 「この素晴らしい C# に祝福を!」
[TL06] 日本の第一人者が C# の現状と今後を徹底解説! 「この素晴らしい C# に祝福を!」[TL06] 日本の第一人者が C# の現状と今後を徹底解説! 「この素晴らしい C# に祝福を!」
[TL06] 日本の第一人者が C# の現状と今後を徹底解説! 「この素晴らしい C# に祝福を!」
de:code 2017
?
20140920 tokyo r43
20140920 tokyo r4320140920 tokyo r43
20140920 tokyo r43
Takashi Kitano
?
東京都市大学 データ解析入門 2 行列分解 1
東京都市大学 データ解析入門 2 行列分解 1東京都市大学 データ解析入門 2 行列分解 1
東京都市大学 データ解析入門 2 行列分解 1
hirokazutanaka
?
CRC-32
CRC-32CRC-32
CRC-32
7shi
?
一般化線形混合モデル isseing333
一般化線形混合モデル isseing333一般化線形混合モデル isseing333
一般化線形混合モデル isseing333
Issei Kurahashi
?
R_note_02_ver1.0
R_note_02_ver1.0R_note_02_ver1.0
R_note_02_ver1.0
Satoshi Kume
?
K060 中心極限定理clt
K060 中心極限定理cltK060 中心極限定理clt
K060 中心極限定理clt
t2tarumi
?
Bee Style:vol.039
Bee Style:vol.039Bee Style:vol.039
Bee Style:vol.039
Tsuyoshi Horigome
?
条件分岐と肠尘辞惫と尘补虫辫蝉
条件分岐と肠尘辞惫と尘补虫辫蝉条件分岐と肠尘辞惫と尘补虫辫蝉
条件分岐と肠尘辞惫と尘补虫辫蝉
MITSUNARI Shigeo
?
尝尝痴惭最适化のこつ
尝尝痴惭最适化のこつ尝尝痴惭最适化のこつ
尝尝痴惭最适化のこつ
MITSUNARI Shigeo
?
Casual learning machine learning with_excel_no5
Casual learning machine learning with_excel_no5Casual learning machine learning with_excel_no5
Casual learning machine learning with_excel_no5
KazuhiroSato8
?
CheckMATE 実習
CheckMATE 実習CheckMATE 実習
CheckMATE 実習
Yoshitaro Takaesu
?
搁で学ぶ逆変换(逆関数)法
搁で学ぶ逆変换(逆関数)法搁で学ぶ逆変换(逆関数)法
搁で学ぶ逆変换(逆関数)法
Nagi Teramo
?
「ランダムフォレスト回帰」のハイパーパラメーター
「ランダムフォレスト回帰」のハイパーパラメーター「ランダムフォレスト回帰」のハイパーパラメーター
「ランダムフォレスト回帰」のハイパーパラメーター
Jun Umezawa
?
Lotus DEvCon 2000 - LotusScript Tips and Techniques
Lotus DEvCon 2000 - LotusScript Tips and TechniquesLotus DEvCon 2000 - LotusScript Tips and Techniques
Lotus DEvCon 2000 - LotusScript Tips and Techniques
Hiroaki Komine
?
入门机械学习読书会9章
入门机械学习読书会9章入门机械学习読书会9章
入门机械学习読书会9章
Kazufumi Ohkawa
?
テーマ「最适化」
テーマ「最适化」テーマ「最适化」
テーマ「最适化」
technocat
?
【鲍苍颈迟测道场】ゲーム制作に使う数学を学习しよう
【鲍苍颈迟测道场】ゲーム制作に使う数学を学习しよう【鲍苍颈迟测道场】ゲーム制作に使う数学を学习しよう
【鲍苍颈迟测道场】ゲーム制作に使う数学を学习しよう
Unity Technologies Japan K.K.
?
[TL06] 日本の第一人者が C# の現状と今後を徹底解説! 「この素晴らしい C# に祝福を!」
[TL06] 日本の第一人者が C# の現状と今後を徹底解説! 「この素晴らしい C# に祝福を!」[TL06] 日本の第一人者が C# の現状と今後を徹底解説! 「この素晴らしい C# に祝福を!」
[TL06] 日本の第一人者が C# の現状と今後を徹底解説! 「この素晴らしい C# に祝福を!」
de:code 2017
?
東京都市大学 データ解析入門 2 行列分解 1
東京都市大学 データ解析入門 2 行列分解 1東京都市大学 データ解析入門 2 行列分解 1
東京都市大学 データ解析入門 2 行列分解 1
hirokazutanaka
?
一般化線形混合モデル isseing333
一般化線形混合モデル isseing333一般化線形混合モデル isseing333
一般化線形混合モデル isseing333
Issei Kurahashi
?
K060 中心極限定理clt
K060 中心極限定理cltK060 中心極限定理clt
K060 中心極限定理clt
t2tarumi
?
条件分岐と肠尘辞惫と尘补虫辫蝉
条件分岐と肠尘辞惫と尘补虫辫蝉条件分岐と肠尘辞惫と尘补虫辫蝉
条件分岐と肠尘辞惫と尘补虫辫蝉
MITSUNARI Shigeo
?
尝尝痴惭最适化のこつ
尝尝痴惭最适化のこつ尝尝痴惭最适化のこつ
尝尝痴惭最适化のこつ
MITSUNARI Shigeo
?
Casual learning machine learning with_excel_no5
Casual learning machine learning with_excel_no5Casual learning machine learning with_excel_no5
Casual learning machine learning with_excel_no5
KazuhiroSato8
?
搁で学ぶ逆変换(逆関数)法
搁で学ぶ逆変换(逆関数)法搁で学ぶ逆変换(逆関数)法
搁で学ぶ逆変换(逆関数)法
Nagi Teramo
?
「ランダムフォレスト回帰」のハイパーパラメーター
「ランダムフォレスト回帰」のハイパーパラメーター「ランダムフォレスト回帰」のハイパーパラメーター
「ランダムフォレスト回帰」のハイパーパラメーター
Jun Umezawa
?
Lotus DEvCon 2000 - LotusScript Tips and Techniques
Lotus DEvCon 2000 - LotusScript Tips and TechniquesLotus DEvCon 2000 - LotusScript Tips and Techniques
Lotus DEvCon 2000 - LotusScript Tips and Techniques
Hiroaki Komine
?
入门机械学习読书会9章
入门机械学习読书会9章入门机械学习読书会9章
入门机械学习読书会9章
Kazufumi Ohkawa
?
テーマ「最适化」
テーマ「最适化」テーマ「最适化」
テーマ「最适化」
technocat
?

Rによる分類木 入門

  • 3. What’s classification tree? ?? 結果を分類するためにそのほかの値を見比べ、 最もきれいに2分割できる条件を探していく手 法 ?? 分岐の過程を図示することができるため,?? 分析結果の可読性が高い ?? 分類木と回帰木がある 3
  • 6. Example… 商品を サイズ 色 見た回数 買った M 普通 10 買った L 好き 5 買わない M 嫌い 3 買った M 好き 6 買わない L 好き 3 買わない M 普通 10 買わない M 嫌い 4 買った L 好き 6 目的変数がカテゴリカル(質的)な場合 6
  • 8. ?今回はCART(Classification And Regression Trees)という ?目的変数を2つの集合に分岐させる方法を紹介する ?具体的にはジニ係数(GI : Gini index)やエントロピー(entropy) ????????????? ?という分類の不純度を計算する How to classify. 8
  • 10. Example… 商品を サイズ 色 見た回数 買った M 普通 10 買った L 好き 5 買わない M 嫌い 3 買った M 好き 6 買わない L 好き 3 買わない M 普通 10 買わない M 嫌い 4 買った L 好き 6 目的変数がカテゴリカル(質的)な場合 10
  • 11. ex.) M L 好き 普通?嫌い 色 4.5 <4.5 見た回数 ジニ係数(不純度)の一番低い分岐点を採用 データ   買った   買わない 説明変数 サイズ ジニ係数 0.48 0.375 0.375 0.32 0.00.44 0.465 0.375 0.2 加重平均 加重平均 加重平均 11
  • 14. 交差検証法(cross validation) How to prune? ⑴データをテストデータと ?   トレーニングデータに分ける ? ⑵トレーニングデータだけで ?   モデルをつくる ? ⑶できたモデルとテストデータを比較し、 答え合わせをして、精度を求める ? ⑷⑴?⑶をn回繰り返し、平均する ? 14
  • 15. 交差検証法(cross validation) How to prune? ⑴データをテストデータと ?   トレーニングデータに分ける ? ⑵トレーニングデータだけで ?   モデルをつくる ? ⑶できたモデルとテストデータを比較し、 答え合わせをして、精度を求める ? ⑷⑴?⑶をn回繰り返し、平均する ? これを各ノードで行い、 制度の低いところを剪定する 15
  • 17. ① ③② ⑥ ⑦ ? ? > ?library(mvpart) ? > ?# ?決定木のplot ? > ?iris.rp ?<-?‐ ?rpart(Species~., ?data=iris) ? > ?iris.rp ? n= ?150 ? ? ? node), ?split, ?n, ?loss, ?yval, ?(yprob) ? ? ? ? ? ? ?* ?denotes ?terminal ?node ? ? ?1) ?root ?150 ?100 ?setosa ?(0.33333333 ?0.33333333 ?0.33333333) ? ? ? ? ? ?2) ?Petal.Length< ?2.45 ?50 ? ? ?0 ?setosa ?(1.00000000 ?0.00000000 ?0.00000000) ?* ? ? ? ?3) ?Petal.Length>=2.45 ?100 ? ?50 ?versicolor ?(0.00000000 ?0.50000000 ?0.50000000) ? ? ? ? ? ? ? ?6) ?Petal.Width< ?1.75 ?54 ? ? ?5 ?versicolor ?(0.00000000 ?0.90740741 ?0.09259259) ? ? ? ? ? ? ? ? ?12) ?Petal.Length< ?4.95 ?48 ? ? ?1 ?versicolor ?(0.00000000 ?0.97916667 ?0.02083333) ?* ? ? ? ? ? ? ?13) ?Petal.Length>=4.95 ?6 ? ? ?2 ?virginica ?(0.00000000 ?0.33333333 ?0.66666667) ?* ? ? ? ? ? ?7) ?Petal.Width>=1.75 ?46 ? ? ?1 ?virginica ?(0.00000000 ?0.02173913 ?0.97826087) ?* ? > ?plot(iris.rp,uniform=T,branch=0.6,margin=0) ? > ?text(iris.rp,uniform=T,use.n=T,all=T) ? ? 剪定前 17
  • 18. もう少しシンプルにきれいにしたかったら??? > ?library(partykit) ? > ?plot(as.party(iris.rp),uniform=T,branch=0.6,margin=0.5) 18
  • 19. 過学習してないか調べる > ?printcp(iris.rp) ? ? Classification ?tree: ? rpart(formula ?= ?Species ?~ ?., ?data ?= ? iris) ? ? Variables ?actually ?used ?in ?tree ? construction: ? [1] ?Petal.Length ?Petal.Width ? ? ? Root ?node ?error: ?100/150 ?= ?0.66667 ? ? n= ?150 ? ? ? ? ? ? ?CP ?nsplit ?rel ?error ?xerror ? ? ? ? ?xstd ? 1 ?0.50 ? ? ? ? ? ?0 ? ? ? ? ? ?1.00 ? ? ?1.21 ?0.048367 ? 2 ?0.44 ? ? ? ? ? ?1 ? ? ? ? ? ?0.50 ? ? ?0.74 ?0.061232 ? 3 ?0.02 ? ? ? ? ? ?2 ? ? ? ? ? ?0.06 ? ? ?0.11 ?0.031927 ? 4 ?0.01 ? ? ? ? ? ?3 ? ? ? ? ? ?0.04 ? ? ?0.11 ?0.031927 > ?plotcp(iris.rp) 19
  • 20. 過学習してないか調べる > ?printcp(iris.rp) ? ? Classification ?tree: ? rpart(formula ?= ?Species ?~ ?., ?data ?= ? iris) ? ? Variables ?actually ?used ?in ?tree ? construction: ? [1] ?Petal.Length ?Petal.Width ? ? ? Root ?node ?error: ?100/150 ?= ?0.66667 ? ? n= ?150 ? ? ? ? ? ? ?CP ?nsplit ?rel ?error ?xerror ? ? ? ? ?xstd ? 1 ?0.50 ? ? ? ? ? ?0 ? ? ? ? ? ?1.00 ? ? ?1.21 ?0.048367 ? 2 ?0.44 ? ? ? ? ? ?1 ? ? ? ? ? ?0.50 ? ? ?0.74 ?0.061232 ? 3 ?0.02 ? ? ? ? ? ?2 ? ? ? ? ? ?0.06 ? ? ?0.11 ?0.031927 ? 4 ?0.01 ? ? ? ? ? ?3 ? ? ? ? ? ?0.04 ? ? ?0.11 ?0.031927 > ?plotcp(iris.rp) 20
  • 21. ?CP ?nsplit ?rel ?error ?xerror ? ? ? ? ?xstd ? 1 ?0.50 ? ? ? ? ? ?0 ? ? ? ? ? ?1.00 ? ? ?1.21 ?0.048367 ? 2 ?0.44 ? ? ? ? ? ?1 ? ? ? ? ? ?0.50 ? ? ?0.74 ?0.061232 ? 3 ?0.02 ? ? ? ? ? ?2 ? ? ? ? ? ?0.06 ? ? ?0.11 ?0.031927 ? 4 ?0.01 ? ? ? ? ? ?3 ? ? ? ? ? ?0.04 ? ? ?0.11 ?0.031927 21
  • 22. ?CP ?nsplit ?rel ?error ?xerror ? ? ? ? ?xstd ? 1 ?0.50 ? ? ? ? ? ?0 ? ? ? ? ? ?1.00 ? ? ?1.21 ?0.048367 ? 2 ?0.44 ? ? ? ? ? ?1 ? ? ? ? ? ?0.50 ? ? ?0.74 ?0.061232 ? 3 ?0.02 ? ? ? ? ? ?2 ? ? ? ? ? ?0.06 ? ? ?0.11 ?0.031927 ? 4 ?0.01 ? ? ? ? ? ?3 ? ? ? ? ? ?0.04 ? ? ?0.11 ?0.031927 22
  • 23. ?CP ?nsplit ?rel ?error ?xerror ? ? ? ? ?xstd ? 1 ?0.50 ? ? ? ? ? ?0 ? ? ? ? ? ?1.00 ? ? ?1.21 ?0.048367 ? 2 ?0.44 ? ? ? ? ? ?1 ? ? ? ? ? ?0.50 ? ? ?0.74 ?0.061232 ? 3 ?0.02 ? ? ? ? ? ?2 ? ? ? ? ? ?0.06 ? ? ?0.11 ?0.031927 ? 4 ?0.01 ? ? ? ? ? ?3 ? ? ? ? ? ?0.04 ? ? ?0.11 ?0.031927 23
  • 24. ?CP ?nsplit ?rel ?error ?xerror ? ? ? ? ?xstd ? 1 ?0.50 ? ? ? ? ? ?0 ? ? ? ? ? ?1.00 ? ? ?1.21 ?0.048367 ? 2 ?0.44 ? ? ? ? ? ?1 ? ? ? ? ? ?0.50 ? ? ?0.74 ?0.061232 ? 3 ?0.02 ? ? ? ? ? ?2 ? ? ? ? ? ?0.06 ? ? ?0.11 ?0.031927 ? 4 ?0.01 ? ? ? ? ? ?3 ? ? ? ? ? ?0.04 ? ? ?0.11 ?0.031927 どちらかの 値で剪定 24
  • 25. ① ③② ⑥ ⑦> ?iris.rp2_1 ?<-?‐ ?prune(iris.rp,cp=0.02) ? > ?iris.rp2_1 ? n= ?150 ? ? ? node), ?split, ?n, ?loss, ?yval, ?(yprob) ? ? ? ? ? ? ?* ?denotes ?terminal ?node ? ? 1) ?root ?150 ?100 ?setosa ?(0.33333333 ?0.33333333 ?0.33333333) ? ? ? ? ?2) ?Petal.Length< ?2.45 ?50 ? ? ?0 ?setosa ?(1.00000000 ?0.00000000 ?0.00000000) ?* ? ? ?3) ?Petal.Length>=2.45 ?100 ? ?50 ?versicolor ?(0.00000000 ?0.50000000 ?0.50000000) ? ? ? ? ? ? ?6) ?Petal.Width< ?1.75 ?54 ? ? ?5 ?versicolor ?(0.00000000 ?0.90740741 ?0.09259259) ?* ? ? ? ? ?7) ?Petal.Width>=1.75 ?46 ? ? ?1 ?virginica ?(0.00000000 ?0.02173913 ?0.97826087) ?* ? > ?plot(iris.rp2_1,uniform=T,branch=0.6,margin=0) ? > ?text(iris.rp2_1,uniform=T,use.n=T,all=T) ? 剪定後 25
  • 26. ① ③② ⑥ ⑦> ?iris.rp2_2 ?<-?‐ ?prune(iris.rp,cp=0.094) ? > ?iris.rp2_2 ? n= ?150 ? ? ? node), ?split, ?n, ?loss, ?yval, ?(yprob) ? ? ? ? ? ? ?* ?denotes ?terminal ?node ? ? 1) ?root ?150 ?100 ?setosa ?(0.33333333 ?0.33333333 ?0.33333333) ? ? ? ? ?2) ?Petal.Length< ?2.45 ?50 ? ? ?0 ?setosa ?(1.00000000 ?0.00000000 ?0.00000000) ?* ? ? ?3) ?Petal.Length>=2.45 ?100 ? ?50 ?versicolor ?(0.00000000 ?0.50000000 ?0.50000000) ? ? ? ? ? ? ?6) ?Petal.Width< ?1.75 ?54 ? ? ?5 ?versicolor ?(0.00000000 ?0.90740741 ?0.09259259) ?* ? ? ? ? ?7) ?Petal.Width>=1.75 ?46 ? ? ?1 ?virginica ?(0.00000000 ?0.02173913 ?0.97826087) ?* ? > ?plot(iris.rp2_2,uniform=T,branch=0.6,margin=0) ? > ?text(iris.rp2_2,uniform=T,use.n=T,all=T) ? 剪定後 26
  • 28. 分類木の精度を測りたいなら??? 28 最後に > ?iris.tre ?<-?‐ ?iris[2*(1:75)-?‐1,] ?# ?奇数行 ? > ?iris.test ?<-?‐ ?iris[-?‐(2*(1:75)-?‐1),] ?# ?偶数行 ? # ?奇数行だけで分類木の生成 ? > ?iris.tre ?<-?‐ ?rpart(Species~., ?data=iris.tre,method="class") ? > ?pred ?<-?‐ ?predict(iris.tre, ?iris.test, ?type="class") ? # ?偶数行でテストしてみる ? > ?table(pred, ?iris.test$Species) ? ? ? ? ? ? ? ? ? ? ? ? ? ? pred ? ? ? ? ? ? ? ? ?setosa ?versicolor ?virginica ? ? ?setosa ? ? ? ? ? ? ? ? ?25 ? ? ? ? ? ? ? ? ? ?0 ? ? ? ? ? ? ? ? ?0 ? ? ?versicolor ? ? ? ? ? ?0 ? ? ? ? ? ? ? ? ?24 ? ? ? ? ? ? ? ? ?3 ? ? ?virginica ? ? ? ? ? ? ?0 ? ? ? ? ? ? ? ? ? ?1 ? ? ? ? ? ? ? ?22 ?