Làm thế nào để chọn một mô hình dự đoán sau khi xác thực chéo k-gấp?


148

Tôi đang tự hỏi làm thế nào để chọn một mô hình dự đoán sau khi thực hiện xác thực chéo K-Fold.

Đây có thể là cụm từ khó xử, vì vậy hãy để tôi giải thích chi tiết hơn: bất cứ khi nào tôi chạy xác thực chéo K-Fold, tôi sử dụng tập hợp con K của dữ liệu đào tạo và kết thúc với K mô hình khác nhau.

Tôi muốn biết làm thế nào để chọn một trong những mô hình K, để tôi có thể trình bày nó cho ai đó và nói "đây là mô hình tốt nhất mà chúng tôi có thể sản xuất."

Có thể chọn bất kỳ một trong các mô hình K? Hoặc có một số loại thực hành tốt nhất có liên quan, chẳng hạn như chọn mô hình đạt được lỗi kiểm tra trung bình?


2
Bạn có thể tìm thấy câu trả lời trong câu hỏi sau đây hữu ích: stats.stackexchange.com/questions/2306/iêu
BGreene 15/03/13

Bạn sẽ cần lặp lại 5 lần CV 100 lần và tính trung bình các kết quả để có đủ độ chính xác. Và câu trả lời từ @bogdanovist là tại chỗ. Bạn có thể có cùng độ chính xác của ước tính độ chính xác từ bootstrap với ít mô hình phù hợp hơn.
Frank Harrell

@Frank Harrell, tại sao bạn nói 100 lần lặp lại là cần thiết (tôi thường sử dụng 10 lần lặp lại trên 10 lần), đây có phải là quy tắc ngón tay cái vì OP không đưa ra thông tin cụ thể nào không?
BGreene

2
Đối với cv 10 lần, tốt nhất nên lặp lại . Sẽ cần lặp lại nhiều hơn với 5 lần. Đây là những quy tắc của ngón tay cái. Một cv 10 lần duy nhất sẽ đưa ra một câu trả lời không ổn định, nghĩa là lặp lại 10 lần chia tách và bạn có đủ câu trả lời khác để lo lắng. 50
Frank Harrell

Gần như là một bản sao chính xác: stats.stackexchange.com/questions/11602 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. Nhưng một cái khác cũ hơn và có nhiều lượt xem / upvote hơn nên có thể hợp nhất cái này vào cái kia.
amip

Câu trả lời:


200

Tôi nghĩ rằng bạn đang thiếu một cái gì đó vẫn còn trong sự hiểu biết của bạn về mục đích xác nhận chéo.

Chúng ta hãy hiểu một số thuật ngữ, nói chung khi chúng ta nói 'một mô hình', chúng ta đề cập đến một phương pháp cụ thể để mô tả cách một số dữ liệu đầu vào liên quan đến những gì chúng ta đang cố gắng dự đoán. Chúng tôi thường không coi các trường hợp cụ thể của phương pháp đó là các mô hình khác nhau. Vì vậy, bạn có thể nói 'Tôi có mô hình hồi quy tuyến tính' nhưng bạn sẽ không gọi hai bộ mô hình hệ số được đào tạo khác nhau. Ít nhất là không trong bối cảnh lựa chọn mô hình.

Vì vậy, khi bạn thực hiện xác thực chéo K-Fold, bạn đang kiểm tra xem mô hình của bạn có thể được đào tạo tốt như thế nào bởi một số dữ liệu và sau đó dự đoán dữ liệu mà nó chưa thấy. Chúng tôi sử dụng xác nhận chéo cho việc này vì nếu bạn đào tạo sử dụng tất cả dữ liệu bạn có, bạn không còn gì để kiểm tra. Bạn có thể làm điều này một lần, bằng cách sử dụng 80% dữ liệu để đào tạo và 20% để kiểm tra, nhưng nếu 20% bạn tình cờ chọn để kiểm tra thì có chứa một loạt các điểm đặc biệt dễ (hoặc đặc biệt khó) dự đoán? Chúng tôi sẽ không đưa ra ước tính tốt nhất có thể về khả năng tìm hiểu và dự đoán mô hình.

Chúng tôi muốn sử dụng tất cả các dữ liệu. Vì vậy, để tiếp tục ví dụ trên về phân tách 80/20, chúng tôi sẽ thực hiện xác nhận chéo 5 lần bằng cách đào tạo mô hình 5 lần trên 80% dữ liệu và thử nghiệm trên 20%. Chúng tôi đảm bảo rằng mỗi điểm dữ liệu kết thúc trong thử nghiệm 20% được đặt chính xác một lần. Do đó, chúng tôi đã sử dụng mọi điểm dữ liệu mà chúng tôi phải đóng góp để hiểu được mô hình của chúng tôi thực hiện tốt nhiệm vụ học hỏi từ một số dữ liệu và dự đoán một số dữ liệu mới như thế nào.

Nhưng mục đích của xác nhận chéo là không đưa ra mô hình cuối cùng của chúng tôi. Chúng tôi không sử dụng 5 trường hợp mô hình được đào tạo này để thực hiện bất kỳ dự đoán thực tế nào. Cho rằng chúng tôi muốn sử dụng tất cả các dữ liệu chúng tôi phải đưa ra mô hình tốt nhất có thể. Mục đích của xác nhận chéo là kiểm tra mô hình, không phải xây dựng mô hình.

Bây giờ, giả sử chúng ta có hai mô hình, giả sử mô hình hồi quy tuyến tính và mạng lưới thần kinh. Làm thế nào chúng ta có thể nói mô hình nào là tốt hơn? Chúng ta có thể xác thực chéo K-Fold và xem cái nào chứng minh tốt hơn trong việc dự đoán các điểm đặt thử nghiệm. Nhưng một khi chúng tôi đã sử dụng xác thực chéo để chọn mô hình hoạt động tốt hơn, chúng tôi huấn luyện mô hình đó (cho dù đó là hồi quy tuyến tính hay mạng thần kinh) trên tất cả dữ liệu. Chúng tôi không sử dụng các trường hợp mô hình thực tế mà chúng tôi đã đào tạo trong quá trình xác thực chéo cho mô hình dự đoán cuối cùng của chúng tôi.

Lưu ý rằng có một kỹ thuật gọi là tổng hợp bootstrap (thường được rút ngắn thành 'đóng bao') theo cách sử dụng các thể hiện mô hình được tạo theo cách tương tự như xác thực chéo để xây dựng mô hình tập hợp, nhưng đó là một kỹ thuật nâng cao ngoài phạm vi câu hỏi của bạn ở đây.


8
Tôi hoàn toàn đồng ý với quan điểm này và nghĩ về việc sử dụng tất cả dữ liệu. Điều đó nói rằng, nếu chúng tôi đào tạo mô hình cuối cùng của chúng tôi bằng cách sử dụng toàn bộ tập dữ liệu thì điều này sẽ không dẫn đến việc quá mức và do đó phá hoại các dự đoán trong tương lai?
Berk U.

19
Không! Quá mức phải làm với độ phức tạp của mô hình, nó không liên quan gì đến lượng dữ liệu được sử dụng để huấn luyện mô hình. Độ phức tạp của mô hình phải thực hiện với phương thức mà mô hình sử dụng, chứ không phải các giá trị mà tham số của nó lấy. Chẳng hạn, có bao gồm x ^ 2 đồng hiệu quả cũng như x đồng hiệu quả trong mô hình hồi quy hay không.
Bogdanovist

17
@Bogdanovist: Tôi muốn nói rằng quá mức phải làm với việc có quá ít trường hợp đào tạo cho một mô hình quá phức tạp. Vì vậy, nó (cũng) phải làm với số lượng các trường hợp đào tạo. Nhưng có nhiều trường hợp đào tạo sẽ làm giảm nguy cơ thừa (đối với độ phức tạp của mô hình không đổi).
cbeleites 15/03/13

3
@Bogdanovist For that we want to use all the data we have to come up with the best model possible.- Khi thực hiện tìm kiếm dạng lưới với xác thực chéo K- Fold , điều này có nghĩa là bạn sẽ sử dụng các thông số tốt nhất được tìm thấy bằng tìm kiếm lưới và phù hợp với một mô hình trên toàn bộ dữ liệu đào tạo, sau đó đánh giá hiệu suất tổng quát hóa bằng bộ kiểm tra?
arun

4
@arun, nếu bạn đã sử dụng xác thực chéo k-Fold và chọn mô hình tốt nhất với các tham số & siêu tham số tốt nhất, thì sau khi khớp mô hình cuối cùng trên tập huấn luyện, bạn không cần phải kiểm tra lại hiệu suất bằng cách sử dụng Tập kiểm tra. Điều này là do bạn đã kiểm tra mô hình với các tham số đã chỉ định hoạt động như thế nào trên dữ liệu không nhìn thấy.
Sandeep S. Sandhu

29

Hãy để tôi ném vào một vài điểm ngoài câu trả lời của Bogdanovist

Như bạn nói, bạn đào tạo mô hình khác nhau. Chúng khác nhau ở chỗ 1 / (k-1) của dữ liệu huấn luyện được trao đổi với các trường hợp khác. Những mô hình này đôi khi được gọi là mô hình thay thế bởi vì hiệu suất (trung bình) được đo cho các mô hình này được coi là sự thay thế hiệu suất của mô hình được đào tạo trong mọi trường hợp.k

Bây giờ, có một số giả định trong quá trình này.

  • Giả định 1: các mô hình thay thế tương đương với mô hình "toàn bộ dữ liệu".
    Một điều khá phổ biến là giả định này bị phá vỡ, và triệu chứng là sự thiên vị bi quan nổi tiếng của xác thực chéo Fold (hoặc các sơ đồ xác nhận dựa trên mô hình lại khác). Hiệu suất của các mô hình thay thế trung bình kém hơn hiệu suất của mô hình "toàn bộ dữ liệu" nếu đường cong học tập vẫn có độ dốc dương (tức là ít mẫu đào tạo dẫn đến các mô hình kém hơn).k

  • Giả định 2 là phiên bản yếu hơn của giả định 1: ngay cả khi các mô hình thay thế trung bình kém hơn toàn bộ mô hình dữ liệu, chúng tôi giả sử chúng tương đương với nhau. Điều này cho phép tóm tắt kết quả thử nghiệm cho các mô hình thay thế là một hiệu suất trung bình. Sự không ổn định của mô hình dẫn đến sự cố của giả định này: hiệu suất thực sự của các mô hình được đào tạo về các trường hợp đào tạo thay đổi rất nhiều. Bạn có thể đo lường điều này bằng cách thực hiện các lần lặp / lặp lại của xác thực chéo lần (gán ngẫu nhiên mới cho các tập con ) và xem xét phương sai (sự khác biệt ngẫu nhiên) giữa các dự đoán của các mô hình thay thế khác nhau cho cùng một trường hợp.N k - 1k
    kkNk1kkk

  • Số lượng các trường hợp hữu hạn có nghĩa là phép đo hiệu suất sẽ bị lỗi ngẫu nhiên (phương sai) do số lượng các trường hợp kiểm tra hữu hạn. Nguồn phương sai này khác với (và do đó thêm vào) phương sai không ổn định của mô hình.

Sự khác biệt trong hiệu suất quan sát được là do hai nguồn phương sai này.

"Lựa chọn" mà bạn nghĩ đến là lựa chọn tập dữ liệu: chọn một trong các mô hình thay thế có nghĩa là chọn một tập hợp con của các mẫu đào tạo và tuyên bố rằng tập hợp con các mẫu đào tạo này dẫn đến một mô hình ưu việt. Trong khi điều này có thể thực sự là trường hợp, thường thì "ưu thế" là giả mạo. Trong mọi trường hợp, vì chọn "tốt nhất" của các mô hình thay thế là tối ưu hóa dựa trên dữ liệu, bạn cần xác thực (đo lường hiệu suất) mô hình đã chọn này với dữ liệu mới chưa biết. Bộ kiểm tra trong xác thực chéo này không độc lập vì nó được sử dụng để chọn mô hình thay thế.

Bạn có thể muốn xem bài báo của chúng tôi, đó là về phân loại, nơi mọi thứ thường tồi tệ hơn so với hồi quy. Tuy nhiên, nó cho thấy các nguồn phương sai và sai lệch cộng lại như thế nào.
Beleites, C. và Neugebauer, U. và Bocklitz, T. và Krafft, C. và Popp, J.: Lập kế hoạch cỡ mẫu cho các mô hình phân loại. Hậu môn Chim Acta, 2013, 760, 25-33.
DOI: 10.1016 / j.aca.2012.11.007
bản thảo được chấp nhận trên arXiv: 1211.1323


Bạn và Bogdanovist bất đồng khi bạn nói picking "the best" of the surrogate models is a data-driven optimization, you'd need to validate (measure performance) this picked model with new unknown data. The test set within this cross validation is not independent as it was used to select the surrogate model.và anh ấy nói But once we have used cross-validation to select the better performing model, we train that model (whether it be the linear regression or the neural network) on all the data.Điều này khá phổ biến và điều quan trọng là cách tiếp cận được tiêu chuẩn hóa được chỉ định
jpcgandre

Đặc biệt là đối với các bộ dữ liệu nhỏ, nơi có thể bỏ dữ liệu khỏi CV là không khả thi nhưng rủi ro của việc quá mức mô hình của bạn cũng rất cao! Tài liệu tham khảo là cần thiết để làm rõ vấn đề này.
jpcgandre

5
@jpcgandre: Tôi không thấy bất kỳ sự bất đồng nào. Bogdanovist giải thích làm thế nào để thực sự tính toán mô hình lựa chọn từ các siêu đường kính đã được chọn thông qua xác nhận chéo và tôi nói thêm rằng sau khi lựa chọn như vậy, mô hình cần trải qua một mức độ xác nhận độc lập (bên ngoài) khác. Nói cách khác, ví dụ thiết kế xác thực lồng nhau: vòng xác thực bên trong để chọn siêu tham số, vòng ngoài để kiểm tra các mô hình đã chọn (nếu bạn có đủ trường hợp, bạn cũng có thể đi đến một bộ kiểm tra độc lập).
cbeleites

5
Xác thực bên trong / bên ngoài được thiết lập là để xác thực chéo được gọi là xác thực chéo kép hoặc lồng nhau, tôi đã thấy nó cũng được đặt tên là xác thực mô hình chéo ( dx.doi.org/10.1016/j.chemolab.2006.04.021 ). Với bộ kiểm tra độc lập, nó tương ứng với việc chia thành ba bộ: xác thực / kiểm tra (tối ưu hóa) / kiểm tra (= xác nhận cuối cùng). Nếu bạn có quá ít trường hợp không thể để lại dữ liệu cho CV cấp độ hai, tôi cho rằng bạn nên sửa siêu âm của mình bằng các cách khác thay vì cố gắng tối ưu hóa bằng cách chọn một trong các bộ siêu tham số.
cbeleites

@cbeleites Mình có câu hỏi. Sau đó, để có được các tham số mô hình cuối cùng, bạn có lấy trung bình của các siêu đường kính từ mỗi nếp gấp bên ngoài và giữ lại toàn bộ tập dữ liệu bằng cách sử dụng siêu tham số trung bình đó không? Hoặc thực hiện tìm kiếm siêu tham số trong một CV thông thường, sau đó xác nhận tính ổn định của phương pháp này bằng cách sử dụng CV lồng nhau lặp đi lặp lại cũng hoạt động?
Michelle

11

Tôi thấy bài viết tuyệt vời này Cách đào tạo một mô hình học máy cuối cùng rất hữu ích trong việc làm sáng tỏ tất cả những nhầm lẫn mà tôi có về việc sử dụng CV trong học máy.

Về cơ bản, chúng tôi sử dụng CV (ví dụ: tách 80/20, gấp k, v.v.) để ước tính toàn bộ quy trình của bạn (bao gồm kỹ thuật dữ liệu, lựa chọn mô hình (tức là thuật toán) và siêu tham số, v.v.) sẽ thực hiện trong tương lai dữ liệu. Và một khi bạn đã chọn "thủ tục" chiến thắng, các mô hình được trang bị từ CV đã phục vụ mục đích của họ và bây giờ có thể bị loại bỏ. Sau đó, bạn sử dụng cùng một "thủ tục" chiến thắng và huấn luyện mô hình cuối cùng của mình bằng cách sử dụng toàn bộ tập dữ liệu.


1

Đó là một câu hỏi rất thú vị. Để làm rõ, chúng ta nên hiểu sự khác biệt của mô hình và đánh giá mô hình. Chúng tôi sử dụng tập huấn luyện đầy đủ để xây dựng một mô hình và chúng tôi hy vọng mô hình này cuối cùng sẽ được sử dụng.

Đánh giá chéo K sẽ xây dựng mô hình K nhưng tất cả sẽ bị loại bỏ. Các mô hình K chỉ được sử dụng để đánh giá. và Nó chỉ tạo ra các số liệu để cho bạn biết mô hình này phù hợp với dữ liệu của bạn như thế nào.

Ví dụ: bạn chọn algo tuyến tính và thực hiện hai thao tác trên cùng một tập huấn luyện: một thao tác xác thực chéo 10 lần và một thao tác khác với 20 lần. mô hình hồi quy (hoặc phân loại) phải giống nhau, nhưng hệ số tương quan và lỗi bình phương gốc tương đối khác nhau.

Dưới đây là hai lần chạy xác thực chéo 10 lần và 20 lần với weka

Lần chạy đầu tiên với 10 lần

=== Run information ===
Test mode:    10-fold cross-validation
...
=== Classifier model (full training set) ===


Linear Regression Model  <---- This model is the same

Date = 844769960.1903 * passenger_numbers -711510446549.7296

Time taken to build model: 0 seconds

=== Cross-validation ===  <---- Hereafter produced different metrics
=== Summary ===

Correlation coefficient                  0.9206
Mean absolute error                35151281151.9807
Root mean squared error            42707499176.2097
Relative absolute error                 37.0147 %
Root relative squared error             38.9596 %
Total Number of Instances              144     

Lần chạy thứ 2 với 20 lần

=== Run information ===
...
Test mode:    20-fold cross-validation

=== Classifier model (full training set) ===


Linear Regression Model   <---- This model is the same

Date = 844769960.1903 * passenger_numbers -711510446549.7296

Time taken to build model: 0 seconds

=== Cross-validation ===  <---- Hereafter produced different metrics
=== Summary ===

Correlation coefficient                  0.9203
Mean absolute error                35093728104.8746
Root mean squared error            42790545071.8199
Relative absolute error                 36.9394 %
Root relative squared error             39.0096 %
Total Number of Instances              144     

0

Tôi không chắc cuộc thảo luận ở trên là hoàn toàn chính xác. Trong xác thực chéo, chúng tôi có thể chia dữ liệu thành Đào tạo và Kiểm tra cho mỗi lần chạy. Chỉ sử dụng dữ liệu huấn luyện, người ta cần phải phù hợp với mô hình và chọn các tham số điều chỉnh trong từng loại mô hình đang được xem xét. Ví dụ, trong Mạng lưới thần kinh, các tham số điều chỉnh là số lượng tế bào thần kinh và các lựa chọn cho chức năng kích hoạt. Để làm điều này, một người xác nhận chéo trong dữ liệu đào tạo một mình .

Khi tìm thấy mô hình tốt nhất trong mỗi lớp, mô hình phù hợp nhất được đánh giá bằng cách sử dụng dữ liệu thử nghiệm. Vòng xác thực chéo "bên ngoài" có thể được sử dụng để đưa ra ước tính tốt hơn về hiệu suất dữ liệu thử nghiệm cũng như ước tính về tính biến thiên. Sau đó, một cuộc thảo luận có thể so sánh hiệu suất thử nghiệm cho các lớp khác nhau nói Neural Nets so với SVM. Một lớp mô hình được chọn, với kích thước mô hình được cố định và bây giờ toàn bộ dữ liệu được sử dụng để tìm hiểu mô hình tốt nhất.

Bây giờ, nếu là một phần của thuật toán học máy bạn muốn liên tục chọn lớp mô hình tốt nhất (giả sử mỗi tuần), thì ngay cả lựa chọn này cũng cần được đánh giá trong dữ liệu đào tạo! Đo lường dữ liệu thử nghiệm không thể được sử dụng để đánh giá sự lựa chọn lớp mô hình nếu đó là một tùy chọn động.


0

Tại sao chúng ta sử dụng xác nhận chéo k-gấp?

Xác thực chéo là một phương pháp để ước tính kỹ năng của một phương pháp trên dữ liệu không nhìn thấy. Giống như sử dụng một phân chia thử nghiệm tàu.

Xác thực chéo có hệ thống tạo và đánh giá nhiều mô hình trên nhiều tập con của tập dữ liệu. Điều này, đến lượt nó, cung cấp một số lượng các biện pháp thực hiện .

  • Chúng ta có thể tính toán trung bình của các biện pháp này để có được ý tưởng về mức độ trung bình của quy trình thực hiện.
  • Chúng ta có thể tính toán độ lệch chuẩn của các biện pháp này để có được ý tưởng về mức độ kỹ năng của quy trình dự kiến ​​sẽ thay đổi trong thực tế.

Điều này cũng hữu ích cho việc cung cấp một so sánh nhiều sắc thái của một thủ tục này với một thủ tục khác khi bạn đang cố gắng chọn thuật toán và quy trình chuẩn bị dữ liệu nào sẽ sử dụng.

Ngoài ra, thông tin này là vô giá khi bạn có thể sử dụng giá trị trung bình và mức chênh lệch để đưa ra khoảng tin cậy về hiệu suất dự kiến ​​trong quy trình học máy trong thực tế.

tài liệu tham khảo

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.