2012-05-08 14 views
7

Tôi đang cố gắng sử dụng mô-đun R caret để tạo mô hình và tôi muốn sử dụng một số chức năng xác thực chéo. Tôi phát hiện ra rằng chức năng xác nhận chéo duy nhất hoạt động cùng với rpartLOOCV (để lại một xác thực chéo).dấu mũ: Lỗi khi sử dụng bất cứ điều gì nhưng LOOCV với rpart

Các mã sau ném lỗi:

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.

không lỗi này có nghĩa là gì và làm thế nào để làm cho nó biến mất? Tôi đã tìm kiếm trên internet, không phải một lần truy cập cho thông báo lỗi này. Tôi đã truy tìm lỗi xuống thế hệ mô hình rpart. Nó bằng cách nào đó xuất ra thông báo lỗi này, tất cả các phương thức thế hệ khác đều hoạt động tốt!

Mọi thứ hoạt động tốt nếu tôi sử dụng LOOCV.

Tôi đã truy tìm cảnh báo xuống tệp workflows.R, nhưng tôi không hiểu tại sao cảnh báo này bị ném.

> 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  

Trả lời

9

Sử dụng R mailinglist và sự giúp đỡ của các tác giả caret tôi phát hiện ra các giải pháp sau đây:

Nếu vì một số lý do mô hình được tạo ra là hằng số lỗi xảy ra. Hằng số có nghĩa là trong trường hợp này, đối với tất cả các giá trị đầu vào, mô hình luôn mang lại cùng một giá trị. Trong trường hợp này, phép tính R^2 thất bại. R^2 được tính theo mặc định bằng dấu mũ. Vì dấu mũ không sử dụng giá trị R^2 để chọn mô hình, bạn có thể bỏ qua lỗi này.

Hai câu hỏi vẫn còn:

  • Nó không phải là rõ ràng với tôi lý do tại sao R^2 tính thất bại nếu mô hình này là không đổi. Mã số trong caret rõ ràng không thành công nếu không có ít nhất hai giá trị khác nhau trong dự đoán mô hình. Tôi đã thay thế phép tính R^2 bằng một phép tính tự viết không có giới hạn này.
  • Câu hỏi tại sao đôi khi rpart tạo ra một mô hình không đổi vẫn mở. Đặc biệt là tại sao nó chỉ tạo ra các mô hình liên tục cho các xác nhận chéo khác hơn LOOCV.

Tóm lại: Bạn có thể bỏ qua cảnh báo và nếu cần, hãy viết R^2 của riêng bạn để khắc phục cảnh báo.

+0

Cảm ơn theomega đã chia sẻ câu trả lời với SO. Tôi đang chạy vào cùng một vấn đề bây giờ khi lắp nnet, knn và svmRadial. Bạn có ý nghĩa gì bởi R^2 trong bối cảnh này? (và làm thế nào bạn chỉnh sửa của riêng bạn?). Bạn có thực hiện bất kỳ tiến bộ nào về hai câu hỏi mà bạn đặt ra ở trên không? –

+0

Vâng, dấu sót tính toán một số chỉ số, bao gồm MAPE và R^2 cho các mô hình. Các tính toán R^2 ném một lỗi nếu mô hình của bạn là hằng số (dự đoán cùng một giá trị cho tất cả các biến độc lập). Chức năng R^2 được sử dụng bởi dấu mũ không thể được sử dụng cho các mô hình không đổi. Có các định nghĩa R^2 khác hoạt động. Tôi đã sử dụng một trong số họ. Bạn nên ghi nhớ rằng không có một (!) R^2 định nghĩa nhưng một số dẫn đến các giá trị và hạn chế khác nhau. – theomega

Các vấn đề liên quan