R / caret: tập huấn luyện và kiểm tra so với xác nhận chéo?


9

Đây có thể là một câu hỏi ngớ ngẩn, nhưng khi tạo một mô hình bằng dấu mũ và sử dụng một cái gì đó giống LOOCVhoặc (thậm chí nhiều hơn) LGOCV, lợi ích của việc chia dữ liệu thành tập hợp và kiểm tra nếu đây thực chất là bước xác thực chéo không?

Tôi đã đọc một số câu hỏi liên quan và họ gợi ý rằng một số phương pháp xác thực chéo (ví dụ: những gì được mô tả ở đây tại trang web caret ) là dành cho mục đích lựa chọn tính năng . Nhưng trong trường hợp của tôi, tôi đang sử dụng randomForest( method = "rf") và kernlab( method = svmRadial), không được liệt kê trong nhóm cố gắng thanh lọc những người dự đoán.

Vì vậy, câu hỏi của tôi là nếu tôi sử dụng một cái gì đó như cross_val <- trainControl(method = "LGOCV", p = 0.8), không giống như đào tạo 80% dữ liệu của tôi, thử nghiệm mô hình kết quả trên 20% còn lại và thực hiện nó nhiều lần để có ý tưởng về việc làm thế nào tốt Mô hình đang hoạt động?

Nếu vậy, có cần phải chia dữ liệu của tôi thành các bộ thử nghiệm / đào tạo không?

PS Tôi hỏi một phần khi tôi tiến hành các mô hình trên các nguyên mẫu DOE được tạo theo kinh nghiệm (nghĩ rằng hàng hóa cứng trong đó chúng tôi điều chỉnh đầu vào và sau đó sử dụng các phương pháp thử nghiệm để đo các thuộc tính khác nhau về nguyên mẫu).

Do đó, tôi không có một bộ dữ liệu khổng lồ với nhiều cấp độ dự đoán chồng chéo để mô hình hóa - chúng tôi thường chạy thử nghiệm tại mỗi điểm quan tâm của DOE vì việc tạo dữ liệu rất tốn kém trong trường hợp này. Vì vậy, tôi muốn sử dụng tất cả dữ liệu tôi có thể cho một mô hình chính xác, nhưng muốn kiểm tra ở đây rằng tôi không thiếu thứ gì đó rõ ràng và tạo ra một mô hình kém bằng cách không phân tách mọi thứ.


Chỉnh sửa: Để trả lời câu hỏi của @ topepo, tôi đang lập mô hình các thuộc tính được đo lường vật lý của một hợp chất dựa trên việc điều chỉnh các đầu vào hóa học của công thức. Tôi không thể thảo luận về ứng dụng thực tế của mình, nhưng tôi sẽ tạo ra một ví dụ dựa trên công thức sơn latex nội thất. Tôi đang chạy các thí nghiệm được thiết kế trong đó chúng tôi pha trộn 4-5 hóa chất, có thể chơi với% chất rắn và một lượng thời gian để làm nóng dung dịch polymer để điều chỉnh mức độ trùng hợp.

Sau đó chúng tôi có thể đo lưu biến, trọng lượng phân tử, độ cứng của lớp sơn, khả năng chống nước, v.v.

Chúng tôi có các bản sao tốt của một số biến, nhưng một vài bản sao thực sự theo nghĩa là mọi cấp độ DOE đều giống hệt nhau. Tổng số dữ liệu được đặt là ~ 80 quan sát và có thể 4-5 lần lặp lại chính xác. Chúng tôi đã tiến hành 15 thử nghiệm khác nhau và có lẽ 5-6 trong số chúng đã được thực hiện cho mỗi lần quan sát. Một số câu trả lời có mặt cho 25-50% dữ liệu.

Từ đây, chúng tôi muốn mô hình hóa các tác động của 7 yếu tố dự đoán của chúng tôi lên các thuộc tính đầu ra và sau đó tối ưu hóa để nhắm mục tiêu các không gian thiết kế mới có khả năng đưa ra các thuộc tính mong muốn.

(Do đó, câu hỏi của tôi TẠI ĐÂY . Một khi tôi có một mô hình được đào tạo, sẽ rất tuyệt nếu thực hiện "đảo ngược" và đưa ra các phản hồi mong muốn để có được dự đoán tốt nhất ở các mức đầu vào có thể để thử tiếp theo).


Bộ xác nhận và bộ kiểm tra là hai thứ khác nhau! Xem số liệu thống kê.stackexchange.com/questions/19048 / Từen.wikipedia.org/wiki/Test_set
sashkello

@sashkello Cảm ơn vì điều đó. Điều này có thể được đóng lại như một bản sao, và bằng cách nào đó tôi đã bỏ lỡ câu hỏi đó hoàn toàn. Một chút thiếu có thể là: Nếu tôi luyện tập với data_set1, tôi sẽ xem xét bước nào được thực hiện bằng LGOCVxác nhận chéo? Từ cách đọc của tôi, tôi giả sử 1) caretlặp đi lặp lại thông qua điều chỉnh các tham số data_set1và sau đó 2) giữ các tham số đó cố định và 3) tạo ra một "mô hình phụ" bằng cách sử dụng các tham số từ số 1 cho mỗi p = 0.8mẫu data_set1và kiểm tra dự đoán về 0,2 còn lại để đánh giá độ chính xác . Đó có phải là một bản tóm tắt hợp lý?
Hendy

Một điều còn thiếu khác: việc bỏ đi một bộ để kiểm tra độ chính xác của mô hình có giúp ích gì không? Có vẻ như nó chỉ đưa ra một bộ không thiên vị cho thử nghiệm trong tương lai. Nếu dữ liệu bị giới hạn và không có nhiều điểm thiết kế chồng chéo, tôi không nên tập luyện với toàn bộ và dựa vào xác thực chéo để ước tính độ chính xác?
Hendy

Với chiến lược tìm kiếm tốt hơn, đây là một chiến lược hữu ích: stats.stackexchange.com/questions/9357/ . Đặc biệt điều này "Tôi sẽ nghĩ rằng một yếu tố hạn chế ở đây là bạn có bao nhiêu dữ liệu. Hầu hết thời gian, chúng tôi thậm chí không muốn chia dữ liệu thành các phân vùng cố định, do đó CV." Tôi nghĩ rằng điều này đặt ra cho câu hỏi của tôi (có lẽ là đặc trưng cho tính chất hạn chế của dữ liệu của tôi (chỉ có 80 quan sát). Có vẻ như một cuộc bỏ phiếu không chia tách trong những trường hợp này?
Hendy 23/07/13

Câu trả lời:


7

Suy nghĩ chung của tôi:

Vì vậy, khi bạn đang đánh giá các mô hình khác nhau, bạn có thể muốn điều chỉnh chúng, thử các loại tiền xử lý khác nhau, vv cho đến khi bạn tìm thấy những gì bạn nghĩ là một mô hình tốt. Lấy mẫu lại có thể giúp hướng dẫn bạn đi đúng hướng trong quá trình đó.

Tuy nhiên, vẫn có cơ hội phù hợp quá mức và tỷ lệ xảy ra điều này bị ảnh hưởng rất lớn bởi số lượng dữ liệu (và dự đoán) bạn có. Nếu bạn có một ít dữ liệu, có một vài cách để nghĩ về điều này:

  • Sử dụng tất cả dữ liệu để đào tạo vì mỗi điểm dữ liệu sẽ thêm đáng kể vào mức độ tốt của mô hình.
  • Đặt một thử nghiệm nhỏ được đặt làm kiểm tra cuối cùng cho các lỗi thô do khớp quá mức. Cơ hội phù hợp quá mức với kích thước mẫu nhỏ là không nhỏ và lớn hơn với số lượng mẫu.

Tôi rơi vào trại thứ hai nhưng lần đầu tiên không sai.

Nếu bạn có rất nhiều dữ liệu thì điều đó không thực sự quan trọng (trừ khi bạn có tỷ lệ sự kiện nhỏ).

Cho bạn:

Bạn có một DOE. Các loại thiết kế sẽ giúp trả lời câu hỏi. Bạn đang cố gắng nội suy giữa các điểm thiết kế hoặc dự đoán các điểm thiết kế chưa được thử nghiệm cho đến nay?

Bạn có một bản sao. Tôi ngã như rừng ngẫu nhiên đang đóng đinh bằng búa tạ và có thể dẫn đến khớp quá mức. Tôi sẽ thử một cái gì đó mượt mà hơn như một mạng lưới thần kinh SVM hoặc (gasp).

Tối đa


Tôi đã thêm một bản cập nhật cho bạn ở trên. Tôi đã có những đường cong khá đẹp (tôi đoán đó là chủ quan) với method = "svmRadial". Tôi hy vọng sẽ đánh giá một số người khác, bao gồm method = neuralnet, mặc dù trong những lần thử trước đây tôi đã thấy mạng lưới thần kinh rất nhạy cảm với `set.seed (). Nói tóm lại, chúng tôi đang cố gắng 1) hiểu rõ hơn về mối quan hệ giữa đầu vào / nhiều phản hồi và 2) đưa ra dự đoán tốt nhất ở không gian thiết kế có khả năng nhất để mang lại các thuộc tính mong muốn để chúng tôi có thể chạy DOE mới, tập trung hơn so với điển hình hơn cách tiếp cận mở rộng / shotgun về mặt mức đầu vào tối thiểu / tối đa để thử.
Hendy
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.