前提・実現したいこと
Rのrpart関数で分析した回帰木について、
printcp()、plotcp()で出力される
nsplit、xerror、x-val Relative Errorの三種類について、どのように見ればよいかアドバイスをいただけないでしょうか。
printcpで下記の結果が得られています。
Regression tree:
rpart(formula = dis ~ A + B + C + D + E + F + G + H + I + s, data = df, control = rpart.control(minsplit = 3, cp = 0.02))
Variables actually used in tree construction:[1] A B C E G H I
Root node error: 2967.3/313 = 9.4801
n= 313
CP nsplit rel error xerror xstd
1 0.044920 0 1.00000 1.0036 0.13452
2 0.035167 2 0.91016 1.0677 0.15093
3 0.032239 6 0.76949 1.0513 0.14980
4 0.021988 7 0.73725 1.1001 0.16026
5 0.020104 8 0.71526 1.0559 0.15687
6 0.020000 9 0.69516 1.0794 0.15861
ここでnsplitは何を表しているのでしょうか?
ネットで検索すると「木のサイズ」とありますが、0,2,6,7,8,9ととびとびの値になっていたり、見方がよくわかりません。
また、xerrorも同様に何を表しているのでしょうか?
各階層の誤差率と認識していますが、エラーの確率すなわち0に近い方が誤差が小さいと解釈してあっているのでしょうか?
plotcp()で添付のグラフの結果が得られております。
ここでX-val Relative Errorとは何を表しているのでしょうか?
各階層の誤差率と解釈していますが、1.0を超える階層もあり、上記のxerror(xerror+xstd?)とは異なるものなのでしょうか。
該当のソースコード
R
1library(rpart) 2library(partykit) 3library(ggplot2) 4library(ggparty) 5 6df <- read.csv("2_C1.csv",header=T) 7 8head(df) 9 10rt <- rpart(displacement ~ A+B+C+D+E+F+G+H+I+shiho , data = df, control=rpart.control(minsplit=3,cp=0.02) ) 11 12prt <- as.party(rt) 13g <- ggparty(prt, terminal_space = 0.35) #グラフ部分が全体の何割を占めるか(下から) 14g <- g + geom_edge(size = 2) #分岐線の太さ 15g <- g + geom_edge_label(colour = "black", size = 4.5)#分岐の文字の大きさ 16g <- g + geom_node_plot( 17 gglist = list(geom_boxplot(aes(x="",y=displacement)),theme_bw(base_size =13)), #縦軸の文字の大きさ 18 scales = "fixed", 19 id = "terminal", 20 shared_axis_labels = TRUE, 21 shared_legend = TRUE, 22 legend_separator = TRUE, 23 ) 24 25g <- g + geom_node_label( 26 aes(col = splitvar), 27 line_list = list(aes(label = paste("Node", id)), 28 aes(label = splitvar)), 29 line_gpar = list(list( 30 size = 8, #Nodeの文字の大きさ 31 col = "black", 32 fontface = "bold" 33 ), 34 list(size = 14)), #変数Aとかの文字の大きさ 35 ids = "inner" 36 ) 37 38g <- g + geom_node_label( 39 aes(label = paste0("Node ", id, "\n N = ", nodesize)), 40 fontface = "bold", 41 ids = "terminal", 42 size = 2.5, #グラフの上のタイトルの大きさ 43 nudge_y = 0.01 #グラフとタイトルの幅 44 ) 45 46g <- g + theme(legend.position = "none") 47plot(g) 48#plotcp(rt)でcross validationの結果を表示。横の点線を下回ってるところのcpにセットするとよい 49#plot(rt) 50#text(rt, use.n=TRUE, cex=0.5) でもok 51#plot(as.party(rt)) でもok みづらい 52#printcp(rt)で交叉検証の結果 53#plotcp(rt)で交叉検証のグラフ 54
試したこと
https://www1.doshisha.ac.jp/~mjin/R/Chap_19/19.html
ここでいろいろ解説されているのですが、
「nsplit は木のサイズ」とあるのですが、意味がよくわかりません。サイズとは具体的にどこを見ればわかるのでしょうか。
「xerror は交差確認法による誤分類率の平均値」とあるのですが、つまり誤差の確率(=小さい方が誤差が小さい)ということでしょうか。
回帰木とplotcpの結果
ここにより詳細な情報を記載してください。
あなたの回答
tips
プレビュー