Đào tạo với bộ dữ liệu đầy đủ sau khi xác nhận chéo?


139

Có phải luôn luôn là một ý tưởng tốt để đào tạo với bộ dữ liệu đầy đủ sau khi xác thực chéo ? Nói cách khác, là nó ok để đào tạo với tất cả các mẫu trong tập dữ liệu của tôi và không có khả năng để kiểm tra xem đặc biệt phù hợp này overfits ?


Một số nền tảng về vấn đề:

Giả sử tôi có một gia đình người mẫu được tham số hóa bởi . Cũng nói rằng tôi có một tập hợp các điểm dữ liệu và tôi thực hiện lựa chọn mô hình với xác thực chéo k-gấp để chọn mô hình tổng quát hóa dữ liệu tốt nhất.αN

Để chọn mô hình, tôi có thể thực hiện tìm kiếm (ví dụ: tìm kiếm dạng lưới) trên , ví dụ: chạy xác thực chéo k-Fold cho mỗi ứng cử viên. Trong mỗi lần xác thực chéo, tôi kết thúc với mô hình đã học .α βα

Điểm của việc xác thực chéo là ở mỗi nếp gấp này, tôi có thể kiểm tra xem mô hình đã học có quá phù hợp hay không, bằng cách kiểm tra nó trên "dữ liệu không nhìn thấy". Tùy thuộc vào kết quả, tôi có thể chọn mô hình đã học cho các tham số mà khái quát nhất trong quá trình xác thực chéo trong tìm kiếm lưới.βbestαbest

Bây giờ, nói rằng sau khi chọn mô hình , tôi muốn sử dụng tất cả các điểm trong tập dữ liệu của mình và hy vọng tìm hiểu một mô hình tốt hơn. Để làm điều này, tôi có thể sử dụng các tham số tương ứng với mô hình mà tôi đã chọn trong quá trình chọn mô hình và sau đó, sau khi đào tạo về bộ dữ liệu đầy đủ, tôi sẽ có được một mô hình đã học mới . Vấn đề là, nếu tôi sử dụng tất cả các điểm trong tập dữ liệu của tôi cho đào tạo, tôi không thể kiểm tra nếu mới học được mô hình này overfits trên bất kỳ dữ liệu vô hình. Cách đúng đắn để suy nghĩ xung quanh vấn đề này là gì?Nαbestβfull βfull


2
Gần như là một bản sao chính xác: stats.stackexchange.com/questions/52274 với rất nhiều câu trả lời xứng đáng. Có lẽ những chủ đề này nên được hợp nhất nhưng tôi không chắc chắn theo hướng nào. Cả hai đã chấp nhận câu trả lời là rất tốt.
amip

Câu trả lời:


111

Cách nghĩ về xác nhận chéo là ước tính hiệu suất thu được bằng cách sử dụng phương pháp xây dựng mô hình, thay vì ước tính hiệu suất của mô hình.

Nếu bạn sử dụng xác thực chéo để ước tính các siêu đường kính của một mô hình ( s) và sau đó sử dụng các tham số siêu đó để khớp một mô hình với toàn bộ dữ liệu, thì điều đó tốt, miễn là bạn nhận ra rằng ước tính xác thực chéo hiệu suất có khả năng là (có thể đáng kể) thiên vị lạc quan. Điều này là do một phần của mô hình (siêu tham số) đã được chọn để giảm thiểu hiệu suất xác thực chéo, do đó, nếu thống kê xác thực chéo có phương sai khác không (và nó sẽ) có khả năng khớp quá mức tiêu chí lựa chọn mô hình.α

Nếu bạn muốn chọn siêu tham số và ước tính hiệu suất của mô hình kết quả thì bạn cần thực hiện xác thực chéo lồng nhau, trong đó xác thực chéo bên ngoài được sử dụng để đánh giá hiệu suất của mô hình và trong mỗi lần gấp chéo xác nhận được sử dụng để xác định các siêu tham số riêng biệt trong mỗi lần. Bạn xây dựng mô hình cuối cùng bằng cách sử dụng xác thực chéo trên toàn bộ để chọn siêu tham số và sau đó xây dựng trình phân loại trên toàn bộ tập dữ liệu bằng cách sử dụng siêu tham số được tối ưu hóa.

Điều này tất nhiên là tốn kém về mặt tính toán, nhưng đáng giá vì sự thiên vị được đưa ra bởi ước tính hiệu suất không phù hợp có thể lớn. Xem giấy của tôi

GC Cawley và NLC Talbot, Quá phù hợp trong lựa chọn mô hình và sai lệch lựa chọn tiếp theo trong đánh giá hiệu suất, Tạp chí Nghiên cứu Máy học, 2010. Nghiên cứu, tập. 11, trang 2079-2107, tháng 7 năm 2010 ( www , pdf )

Tuy nhiên, vẫn có thể có sự phù hợp quá mức trong lựa chọn mô hình (xác thực chéo lồng nhau chỉ cho phép bạn kiểm tra nó). Một phương pháp tôi thấy hữu ích là thêm một thuật ngữ chính quy vào lỗi xác thực chéo để xử phạt các giá trị siêu tham số có khả năng dẫn đến các mô hình quá phức tạp, xem

GC Cawley và NLC Talbot, Ngăn chặn sự phù hợp quá mức trong lựa chọn mô hình thông qua việc chính quy hóa các tham số Bayes, Tạp chí Nghiên cứu Máy học, tập 8, trang 841-861, tháng 4 năm 2007 ( www , pdf )

Vì vậy, câu trả lời cho câu hỏi của bạn là (i) có, bạn nên sử dụng bộ dữ liệu đầy đủ để tạo mô hình cuối cùng của mình vì càng sử dụng nhiều dữ liệu thì càng có khả năng khái quát tốt nhưng (ii) đảm bảo bạn có được ước tính hiệu suất không thiên vị thông qua xác thực chéo lồng nhau và có khả năng xem xét xử phạt thống kê xác thực chéo để tiếp tục tránh sự phù hợp quá mức trong lựa chọn mô hình.


3
+1: Trả lời câu hỏi: "Nếu bạn sử dụng xác thực chéo để ước tính siêu đường kính của một mô hình (các α) và sau đó sử dụng các tham số siêu đó để khớp một mô hình cho toàn bộ dữ liệu, thì đó là điều tốt"
Neil G

4
@soufanom, không, việc sử dụng "các thử nghiệm ban đầu" để đưa ra các lựa chọn liên quan đến mô hình có thể dẫn đến sự phù hợp quá mức và gần như chắc chắn sẽ đưa ra sự thiên vị lạc quan vào phân tích hiệu suất. Xác thực chéo được sử dụng để phân tích hiệu suất phải lặp lại MERYI bước được sử dụng để khớp mô hình một cách độc lập trong mỗi lần gấp. Các thí nghiệm trong bài báo của tôi cho thấy các mô hình hạt nhân có thể rất nhạy cảm với loại sai lệch này, vì vậy điều quan trọng là phải thực hiện lựa chọn mô hình và đánh giá hiệu suất với tất cả sự nghiêm ngặt có thể.
Dikran Marsupial

3
Đối với các phương thức kernel, chẳng hạn như SVM, thường có thể thực hiện xác thực chéo một lần với chi phí gần như không tính toán (xem các giấy tờ được liệt kê trong câu trả lời của tôi). Tôi sử dụng xác thực chéo một lần "ảo" này để điều chỉnh các tham số siêu, được lồng trong xác thực chéo k-gấp để đánh giá hiệu suất. Chi phí sau đó khá hợp lý. Theo tôi, không thể chấp nhận sử dụng bất kỳ quy trình nào trong đó việc đánh giá hiệu suất bị sai lệch theo bất kỳ cách nào bằng cách điều chỉnh các tham số siêu. Đó là giá trị chi phí tính toán để có được một ước tính đáng tin cậy.
Dikran Marsupial

2
@DikranMarsupial. Tôi không nhận được đoạn thứ ba trong câu trả lời của bạn. Nếu tôi thực hiện xác thực chéo lồng nhau, tôi sẽ nhận được một bộ siêu đường kính khác nhau cho mỗi lần gấp của CV bên ngoài (tức là tôi nhận được một bộ siêu đường kính từ việc chạy CV bên trong trên một lưới các tham số). Làm thế nào để tôi chọn tập hợp siêu âm tốt nhất?
Amelio Vazquez-Reina

1
xác nhận chéo về cơ bản là một phương tiện để ước tính hiệu suất của một phương pháp phù hợp với một mô hình, chứ không phải là chính phương thức đó. Vì vậy, sau khi thực hiện xác thực chéo lồng nhau để có được ước tính hiệu suất, chỉ cần xây dựng lại mô hình cuối cùng bằng toàn bộ tập dữ liệu, sử dụng quy trình mà bạn đã xác thực chéo (bao gồm lựa chọn các tham số siêu).
Dikran Marsupial

23

Chỉ cần thêm vào câu trả lời bằng @ mark999, caretgói Max Kuhn (Phân loại và đào tạo hồi quy) là nguồn toàn diện nhất trong R để lựa chọn mô hình dựa trên xác thực chéo bootstrap hoặc CV N-Fold và một số sơ đồ khác.

Không bỏ qua sự tuyệt vời của rmsgói, nhưng caretcho phép bạn phù hợp với hầu hết mọi phương pháp học tập có sẵn trong R, trong khi validatechỉ hoạt động với rmscác phương thức (tôi nghĩ).

Các caretgói là một cơ sở hạ tầng duy nhất để trước xử lý dữ liệu, phù hợp và đánh giá bất kỳ mô hình phổ biến, do đó nó là đơn giản để sử dụng cho tất cả các phương pháp và cung cấp đánh giá đồ họa của nhiều biện pháp thực hiện (cái gì đó bên cạnh các vấn đề overfit có thể ảnh hưởng đến sự lựa chọn mô hình đáng kể như tốt) trên lưới của bạn và tầm quan trọng thay đổi.

Xem các họa tiết gói để bắt đầu (sử dụng rất đơn giản) Lựa chọn biến
tiền xử lý dữ liệu
với
mô hình caret Xây dựng với quan trọng biến đổi dấu mũ

Bạn cũng có thể xem trang web caret để biết thêm thông tin về gói và các ví dụ triển khai cụ thể:
Trang web chính thức


Cảm ơn. Bạn có biết, sau khi lựa chọn mô hình (được thực hiện bằng cách gọi train), có một cách trong caret để đào tạo với bộ dữ liệu đầy đủ không?
Amelio Vazquez-Reina

Không chắc đó là một ý tưởng tốt hay lý do tại sao bạn muốn điều đó, nhưng bạn chỉ có thể phù hợp với mô hình cuối cùng được tàu trả về cho tập dữ liệu đầy đủ.
Momo

16

Tôi tin rằng Frank Harrell sẽ khuyên bạn nên xác thực bootstrap thay vì xác thực chéo. Xác thực Bootstrap sẽ cho phép bạn xác thực mô hình được trang bị trên tập dữ liệu đầy đủ và ổn định hơn so với xác thực chéo. Bạn có thể làm điều đó trong R bằng cách sử dụng gói validatecủa Mitchell rms.

Xem cuốn sách "Chiến lược mô hình hồi quy" của Mitchell và / hoặc "Giới thiệu về Bootstrap" của Efron và Tibshirani để biết thêm thông tin.


9
Để bỏ qua một huyền thoại tiếp theo về "CV xấu", đây là một vấn đề thuật ngữ - "xác thực chéo" của Mitchell có nghĩa là CV N-Fold và "xác thực bootstrap" có nghĩa là lấy lại CV. Rõ ràng tôi đồng ý rằng hương vị thứ hai này ổn định hơn và tổng thể đẹp hơn, nhưng đây cũng là một loại xác nhận chéo.

1
mark999 hoặc @mbq, bạn có phiền khi nói về cách bootstrap sẽ cho phép một người xác nhận một mô hình được trang bị trên bộ dữ liệu đầy đủ không?
Amelio Vazquez-Reina

1
@ user27915816 Vâng, về nguyên tắc dù sao đi nữa; ý tưởng đằng sau việc xác thực chéo là bạn kiểm tra xem phương pháp đào tạo được đưa ra có đáng tin cậy để tạo ra các mô hình tốt trên một bộ rất giống với bộ cuối cùng hay không, và nếu vậy, hãy khái quát quan sát này thành toàn bộ với một giả định im lặng rằng sẽ không có gì lạ xảy ra và phương pháp CV mà bạn đã sử dụng không bị sai lệch. Điều này tất nhiên là luôn luôn đủ tốt, tuy nhiên bạn không bao giờ có thể chắc chắn rằng mô hình được xây dựng trên tất cả dữ liệu bạn có không bị quá mức.

14

Tôi nghĩ rằng bạn có một loạt các câu hỏi khác nhau ở đây:

Vấn đề là, nếu tôi sử dụng tất cả các điểm trong tập dữ liệu của mình để đào tạo, tôi không thể kiểm tra xem mô hình mới đã học này có hoàn toàn không!

Vấn đề là, bạn chỉ có thể sử dụng (một) bước xác thực cho một điều: hoặc để tối ưu hóa tham số, (x) hoặc để ước tính hiệu suất tổng quát hóa.

Vì vậy, nếu bạn thực hiện tối ưu hóa tham số bằng cách xác thực chéo (hoặc bất kỳ loại xác định tham số dựa trên dữ liệu nào khác), bạn cần các mẫu thử nghiệm độc lập với các mẫu đào tạo và tối ưu hóa đó. Dikran gọi nó là xác nhận chéo lồng nhau, một tên khác là xác nhận chéo kép. Hoặc, tất nhiên, một bộ thử nghiệm độc lập.

Vì vậy, đây là câu hỏi cho bài đăng này: Có phải là một ý tưởng tốt để đào tạo với bộ dữ liệu đầy đủ sau khi xác thực chéo k-gấp? Hoặc là tốt hơn thay vì gắn bó với một trong những mô hình đã học trong một trong các phân tách xác thực chéo cho αbest?

Sử dụng một trong các mô hình xác thực chéo thường kém hơn so với đào tạo trên toàn bộ (ít nhất là nếu hiệu suất học tập của bạn = f (nsamples) vẫn tăng. Trong thực tế, đó là: nếu không, có lẽ bạn đã đặt dành một bộ kiểm tra độc lập.)

Nếu bạn quan sát một biến thể lớn giữa các mô hình xác thực chéo (có cùng tham số), thì các mô hình của bạn không ổn định. Trong trường hợp đó, tổng hợp các mô hình có thể giúp ích và thực sự tốt hơn so với việc sử dụng một mô hình được đào tạo trên toàn bộ dữ liệu.

Cập nhật: Tập hợp này là ý tưởng đằng sau việc đóng gói được áp dụng để lấy mẫu lại mà không cần thay thế (xác thực chéo) thay vì lấy mẫu lại bằng thay thế (xác thực bootstrap / out-of-bootstrap).

Đây là một bài báo mà chúng tôi đã sử dụng kỹ thuật này:
Beleites, C. & Salzer, R.: Đánh giá và cải thiện tính ổn định của các mô hình hóa học trong các tình huống cỡ mẫu nhỏ, Anal Bioanal Chem, 390, 1261-1271 (2008).
DOI: 10.1007 / s00216-007-1818-6

Có lẽ quan trọng nhất, làm thế nào tôi có thể đào tạo với tất cả các điểm trong bộ dữ liệu của mình và vẫn chiến đấu với việc đánh giá quá mức?

Bằng cách rất bảo thủ với mức độ tự do được phép cho mô hình "tốt nhất", tức là bằng cách tính đến sự không chắc chắn (ngẫu nhiên) trên kết quả xác thực chéo tối ưu hóa. Nếu df thực sự phù hợp với các mô hình xác nhận chéo, thì rất có thể chúng không quá nhiều cho tập huấn luyện lớn hơn . Điều đáng tiếc là tối ưu hóa tham số thực sự là nhiều thử nghiệm. Bạn cần phải bảo vệ chống lại các bộ thông số tìm kiếm tốt.


...If you observe a large variation between the cross validation models (with the same parameters), then your models are unstable. In that case, aggregating the models can help...Bạn có thể giải thích điều này nhiều hơn một chút? ví dụ: nếu tôi đang chạy hồi quy logistic trong thiết lập được xác thực chéo 10 k và kết thúc với 10 bộ hệ số, bạn có khuyên bạn nên tổng hợp các ước tính coeff để tạo thành một mô hình cuối cùng không? Nếu vậy, làm thế nào điều này có thể được thực hiện, chỉ cần lấy phương tiện?
Zhubarb

@cbeleites bạn có thể giải thích If the d.f. are actually appropriate for the cross validation models. Theo hiểu biết của tôi, bạn đang lập luận rằng các bộ tàu / xác nhận không lớn lắm khi so sánh với bộ dữ liệu hoàn chỉnh, tôi có đúng không?
jpcgandre

1
@jpcgandre: Việc chọn một trong các mô hình thay thế để sử dụng tiếp trên thực tế là lựa chọn mô hình dựa trên dữ liệu, có nghĩa là bạn cần một mức độ xác nhận độc lập bên ngoài. Và nói chung, trừ khi bạn có đủ trường hợp để bạn thực sự có thể thực hiện so sánh mô hình có ý nghĩa thống kê trên cơ sở thử nghiệm trong tổng kích thước mẫu, IMHO bạn không nên chọn. 1k
cbeleites

1
Quan trọng hơn: các mô hình thay thế xác thực chéo lặp lại chia sẻ cùng một bộ siêu đường kính. Đó là, chúng tương đương với tất cả những gì bạn cho là quan trọng nhưng việc lựa chọn các trường hợp đào tạo và kiểm tra tùy ý. Do đó, việc chọn một mô hình "tốt" trong thực tế nên chủ yếu chọn một tổ hợp tập kiểm tra / huấn luyện tốt - về cơ bản là điều chúng ta thường không muốn: chúng ta muốn một lựa chọn có tính khái quát tốt và do đó không chỉ hoạt động cho các trường hợp thuận lợi. Từ quan điểm này, việc chọn một mô hình thay thế từ xác nhận chéo "bình thường" không có ý nghĩa gì với tôi.
cbeleites

1
@jpcgandre: (df) Tôi lập luận rằng việc chọn độ phức tạp của mô hình phù hợp để đào tạo trên của tập dữ liệu (mà tôi cho rằng gần như lớn bằng toàn bộ tập dữ liệu), bạn có thể đi đến một khuynh hướng đối với các mô hình hơi quá hạn chế để đào tạo trên toàn bộ tập dữ liệu. Tuy nhiên, tôi không nghĩ rằng điều này quan trọng trong thực tế, càng nhiều vì ấn tượng của tôi trong lĩnh vực của mình là chúng ta thường có xu hướng sai lầm đối với các mô hình quá phức tạp. 11k
cbeleites

6

Những gì bạn làm không phải là xác nhận chéo, mà là một loại tối ưu hóa ngẫu nhiên.

Ý tưởng của CV là mô phỏng hiệu suất của dữ liệu chưa xem bằng cách thực hiện một số vòng xây dựng mô hình trên một tập hợp con các đối tượng và thử nghiệm trên các đối tượng còn lại. Các kết quả trung bình phần nào của tất cả các vòng là xấp xỉ hiệu suất của một mô hình được đào tạo trên toàn bộ .

Trong trường hợp lựa chọn mô hình của bạn, bạn nên thực hiện CV đầy đủ cho từng bộ tham số và do đó có được xấp xỉ hiệu suất trên toàn bộ cho mỗi thiết lập, do đó dường như là điều bạn muốn có.

Tuy nhiên, lưu ý rằng hoàn toàn không đảm bảo rằng mô hình có độ chính xác gần đúng nhất sẽ là tốt nhất trên thực tế - bạn có thể xác thực chéo toàn bộ quy trình lựa chọn mô hình để thấy rằng tồn tại một phạm vi trong không gian tham số có sự khác biệt trong độ chính xác mô hình không đáng kể.


2
Cảm ơn @mbq, nhưng tôi không chắc là tôi làm theo. Tôi thực hiện xác thực chéo N lần cho mỗi giá trị điểm của tìm kiếm lưới của tôi trong không gian siêu tham số. Kết quả trung bình của các nếp gấp N cho tôi gần đúng mà bạn đề cập, tôi sử dụng để so sánh các mô hình và thực hiện lựa chọn mô hình bằng cách chọn mô hình phù hợp nhất với bộ xác thực. Câu hỏi của tôi là về những gì xảy ra khi tôi đào tạo với bộ dữ liệu đầy đủ. Tôi nghĩ rằng mô hình đã học thay đổi (các tham số của thay đổi mô hình đã học) và về nguyên tắc tôi không có cách nào để biết liệu tôi có bị ảnh hưởng quá mức hay không. β
Amelio Vazquez-Reina

@AmV Nếu vậy, ok - như tôi đã viết, CV đã kiểm tra toàn bộ kịch bản, bạn không thể nói nhiều hơn nếu không có dữ liệu mới. Một lần nữa, nhiều nhất bạn có thể làm một CV lồng nhau để xem nếu không có quá mức áp đặt bởi chính lựa chọn mô hình (nếu lựa chọn đó cải thiện rất tốt hoặc dữ liệu ồn ào thì nguy cơ này là khá lớn).
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.