Я практикую принятие деревьев решений с использованием пакета, называемого «деревом».
#install.packages("ISLR")
set.seed(666)
library(ISLR)
index=sample(1:nrow(OJ),800,replace=F)
OJtrain=OJ[index,]
OJtest=OJ[-index,]
#install.packages("tree")
library(tree)
OJtraintree=tree(Purchase~.,data=OJtrain)
OJtraintree
Вывод этого:
node), split, n, deviance, yval, (yprob)
* denotes terminal node
1) root 800 1073.00 CH ( 0.60625 0.39375 )
2) LoyalCH < 0.508643 353 415.10 MM ( 0.27479 0.72521 )
4) LoyalCH < 0.277977 161 112.80 MM ( 0.11180 0.88820 )
8) LoyalCH < 0.035047 55 0.00 MM ( 0.00000 1.00000 ) *
9) LoyalCH > 0.035047 106 96.58 MM ( 0.16981 0.83019 ) *
5) LoyalCH > 0.277977 192 260.10 MM ( 0.41146 0.58854 )
10) PriceDiff < 0.195 84 84.62 MM ( 0.20238 0.79762 )
20) SpecialCH < 0.5 67 49.01 MM ( 0.11940 0.88060 ) *
21) SpecialCH > 0.5 17 23.51 CH ( 0.52941 0.47059 ) *
11) PriceDiff > 0.195 108 147.30 CH ( 0.57407 0.42593 ) *
3) LoyalCH > 0.508643 447 348.80 CH ( 0.86801 0.13199 )
6) LoyalCH < 0.764572 189 214.20 CH ( 0.74603 0.25397 )
12) PriceDiff < -0.165 33 43.26 MM ( 0.36364 0.63636 ) *
13) PriceDiff > -0.165 156 143.70 CH ( 0.82692 0.17308 )
26) PriceDiff < 0.265 86 99.88 CH ( 0.73256 0.26744 ) *
27) PriceDiff > 0.265 70 30.66 CH ( 0.94286 0.05714 ) *
7) LoyalCH > 0.764572 258 90.94 CH ( 0.95736 0.04264 ) *
Я понимаю, что строки со звездочками на дерево являются терминальными узлами. Я изо всех сил пытаюсь следовать другим вещам. Используя строку 7 в качестве примера, я знаю, что «LoyalCH> 0,764572» - это место, где дерево решений разделяется и разветвляется на терминальный узел, а CH - это качественное значение терминального узла, где клиенты более 76,4572% лояльны к CH ( данные предварительно загружены в пакет ISLR, CH - торговая марка сока). Я предполагаю, что 258 должно быть числом точек данных, которые заканчиваются в этом терминальном узле. Я знаю, что 90,94 должен описывать правильность соответствия модели, но я немного запутался в концепции отклонения. Является ли более высокая ценность отклонения плохо? 90.94 указывает, что это более слабая посадка? Что касается чисел в скобках, могу ли я понять, что 0,95736 - это вероятность того, что каждая точка данных в этой ветви выберет CH?