2012-05-08 17 views
7

ile birlikte LOOCV kullanırken hata oluştu Model oluşturma için R düzeltme modülünü kullanmaya çalışıyorum ve bazı çapraz doğrulama işlevlerini kullanmak istiyorum. rpart ile birlikte çalışan tek çapraz doğrulama işlevinin LOOCV olduğunu öğrendim (çapraz doğrulamayı bir kez bırakın).caret: rpart

library(cart) 
data(trees) 
formula=Volume~Girth+Height 
train(formula, data=trees, method='rpart') 

Warning message: In nominalTrainWorkflow(dat = trainData, info = trainInfo, method = method, : There were missing values in resampled performance measures.

bu hata ne anlama geliyor ve bunu gitmesini nasıl yapabilirim:

Aşağıdaki kod hatası atar? İnternette aradım, bu hata mesajı için tek bir vuruş değil. Hatayı rpart model nesline kadar takip ettim. Bir şekilde bu hata mesajını çıkarıyor, diğer tüm mod-nesil yöntemleri iyi çalışıyor!

LOOCV kullanıyorsam her şey iyi çalışıyor.

Uyarıyı workflows.R dosyasına kadar izledim, ancak bu uyarının neden atıldığını anlamıyorum. nedense oluşturulan modelin hata oluşur sabit ise

: R MAILINGLIST ve ben aşağıdaki çözümü öğrendim caret yazarın yardım almak

> sessionInfo() 
R version 2.15.0 (2012-03-30) 
Platform: x86_64-pc-linux-gnu (64-bit) 

locale: 
[1] LC_CTYPE=en_GB.UTF-8  LC_NUMERIC=C    
[3] LC_TIME=en_GB.UTF-8  LC_COLLATE=en_GB.UTF-8  
[5] LC_MONETARY=en_GB.UTF-8 LC_MESSAGES=en_GB.UTF-8 
[7] LC_PAPER=C     LC_NAME=C     
[9] LC_ADDRESS=C    LC_TELEPHONE=C    
[11] LC_MEASUREMENT=en_GB.UTF-8 LC_IDENTIFICATION=C  

attached base packages: 
[1] parallel stats  graphics grDevices utils  datasets methods 
[8] base  

other attached packages: 
[1] earth_3.2-3   plotrix_3.4   plotmo_1.3-1   
[4] leaps_2.9    doMC_1.2.5   multicore_0.1-7  
[7] iterators_1.0.6  forecast_3.20   RcppArmadillo_0.3.0.2 
[10] Rcpp_0.9.10   fracdiff_1.4-1  tseries_0.10-28  
[13] zoo_1.7-7    quadprog_1.5-4  caret_5.15-023  
[16] foreach_1.4.0   cluster_1.14.2  reshape_0.8.4   
[19] plyr_1.7.1   lattice_0.20-6  mda_0.4-2    
[22] class_7.3-3   rpart_3.1-52   data.table_1.8.0  

loaded via a namespace (and not attached): 
[1] codetools_0.2-8 compiler_2.15.0 grid_2.15.0  

cevap

9

. Sabit olan bu durumda, tüm giriş değerleri için model her zaman aynı değeri verir. Bu durumda, R^2'nin hesaplanması başarısız olur. R^2, varsayım başına caret ile hesaplanır. Piyano, model seçimi için R^2 değerini kullanmıyorsa, bu hatayı atlayabilirsiniz.

İki soru kalır: R^2 hesaplama modeli sabitse başarısız neden benim için açık değildir

  • . Model tahmininde en az iki farklı değer yoksa, caret'daki kod açıkça başarısız olur. R^2 hesaplamasını, bu sınırlara sahip olmayan, kendinden yazılan bir yazıyla değiştirdim.
  • Bazen rpart'ın neden sabit bir model oluşturduğu sorusu hala açık. Özellikle neden sadece LOOCV'den başka çapraz doğrulamalar için sabit modeller üretiyor.

Kısaca: Uyarıyı göz ardı edebilirsiniz ve eğer gerekirse, uyarıyı gidermek için kendi R^2'nizi yazabilirsiniz.

+0

Cevabı SO ile paylaştığınız için teşekkürler. Nnet, knn ve svmRadial'ı takarken aynı problemle karşılaşıyorum. Bu bağlamda R^2 ile ne demek istiyorsun? (ve kendi düzeninizi nasıl düzenlediniz?). Yukarıda belirttiğiniz iki soruda herhangi bir ilerleme kaydettiniz mi? –

+0

Eh, caret, modeller için MAPE ve R^2 dahil olmak üzere çeşitli metrikleri hesaplar. R^2 hesaplaması, modeliniz sabit ise bir hata atar (tüm bağımsız değişkenler için aynı değeri tahmin eder). Caret tarafından kullanılan R^2 işlevi sabit modeller için kullanılamaz. Çalışmakta olan diğer R^2 tanımları vardır. Onlardan birini kullandım. Farklı değerler ve kısıtlamalara yol açan bir (!) R^2 tanımının bulunmadığını unutmayın. – theomega

İlgili konular