2013-03-10 23 views
10

Ben R. içinde rpart kullanarak bir sınıflandırma yapıyorum ağaç modeli ile eğitilmiştir:R'de bir ağaç nasıl yapılır?

> tree <- rpart(activity ~ . , data=trainData) 
> pData1 <- predict(tree, testData, type="class") 

bu ağaç modeli için doğruluğu:

> sum(testData$activity==pData1)/length(pData1) 
[1] 0.8094276 

ağaca budamak için bir tutorial okumak çapraz doğrulama için:

> ptree <- prune(tree,cp=tree$cptable[which.min(tree$cptable[,"xerror"]),"CP"]) 
> pData2 <- predict(ptree, testData, type="class") 

budanmış ağaç doğruluk oranı hala aynı:

> sum(testData$activity==pData2)/length(pData2) 
[1] 0.8094276 

Budama ağacımın nesi olduğunu bilmek istiyorum? R'de çapraz doğrulamayı kullanarak ağaç modelini nasıl ayarlayabilirim? Teşekkürler.

cevap

9

Çapraz doğrulanmış minimum hata ağacını kullandınız. Bir alternatif, en iyi ağacın 1 standart hatası içinde bulunan en küçük ağacı kullanmaktır (seçtiğinizi). Bunun nedeni, hatanın CV tahminleri göz önüne alındığında, 1 standart hata içindeki en küçük ağacın en iyi (en düşük CV hatası) ağacı olarak öngördüğü kadar iyi bir iş yapmasıdır, ancak bunu daha az "şartlar" ile yapmaktır. ".

Plot aracılığıyla un -pruned ağaç için ağaç vs boyutu maliyet karmaşıklığı:

plotcp(tree) 

hata çubuğu içinde yatıyor cp değeri minimum hata ile tek solundaki ağaç bul en az hata ile. Budamanın, takılı ağacı etkilememesinin birçok nedeni olabilir. Örneğin, en iyi ağaç, algoritmanın ?rpart.control'da belirtildiği gibi durdurma kurallarına göre durduğu yer olabilir.

İlgili konular