Có một quy tắc ngón tay cái nào về cách chia tập dữ liệu thành các tập huấn luyện và xác nhận không?


194

Có một quy tắc chung nào về cách phân chia dữ liệu tốt nhất thành các tập huấn luyện và xác nhận không? Là một chia thậm chí 50/50 khuyến khích? Hoặc có những lợi thế rõ ràng của việc có nhiều dữ liệu đào tạo liên quan đến dữ liệu xác nhận (hoặc ngược lại)? Hay sự lựa chọn này phụ thuộc khá nhiều vào ứng dụng?

Tôi đã chủ yếu sử dụng 80% / 20% dữ liệu đào tạo và xác nhận, nhưng tôi đã chọn bộ phận này mà không có bất kỳ lý do chính nào. Ai đó có nhiều kinh nghiệm hơn trong học máy có thể tư vấn cho tôi?


Nếu bạn không có quá nhiều dữ liệu, hãy xem xét en.wikipedia.org/wiki/Resampling_(statistic)#Jackknife
nair.ashvin

Câu trả lời:


220

Có hai mối quan tâm cạnh tranh: với ít dữ liệu đào tạo, ước tính tham số của bạn có phương sai lớn hơn. Với ít dữ liệu thử nghiệm, thống kê hiệu suất của bạn sẽ có phương sai lớn hơn. Nói rộng hơn, bạn nên quan tâm đến việc phân chia dữ liệu sao cho phương sai không quá cao, điều này có liên quan nhiều hơn đến số lượng phiên bản tuyệt đối trong mỗi danh mục thay vì tỷ lệ phần trăm.

Nếu bạn có tổng cộng 100 trường hợp, có lẽ bạn bị mắc kẹt với xác thực chéo vì không có sự phân chia đơn lẻ nào sẽ mang lại cho bạn phương sai thỏa đáng trong ước tính của bạn. Nếu bạn có 100.000 trường hợp, điều đó thực sự không quan trọng cho dù bạn chọn chia 80:20 hay chia 90:10 (thực sự bạn có thể chọn sử dụng ít dữ liệu đào tạo hơn nếu phương pháp của bạn đặc biệt chuyên sâu về mặt tính toán).

Giả sử bạn có đủ dữ liệu để thực hiện dữ liệu kiểm tra được tổ chức phù hợp (thay vì xác thực chéo), sau đây là một cách mang tính hướng dẫn để xử lý các phương sai:

  1. Chia dữ liệu của bạn thành đào tạo và kiểm tra (80/20 thực sự là một điểm khởi đầu tốt)
  2. Chia dữ liệu đào tạo thành đào tạo và xác nhận (một lần nữa, 80/20 là một sự phân chia công bằng).
  3. Các mẫu lựa chọn ngẫu nhiên của dữ liệu đào tạo của bạn, huấn luyện bộ phân loại với cái này và ghi lại hiệu suất trên bộ xác nhận
  4. Hãy thử một loạt các lần chạy với số lượng dữ liệu đào tạo khác nhau: lấy mẫu ngẫu nhiên 20% trong số đó, giả sử, 10 lần và quan sát hiệu suất trên dữ liệu xác nhận, sau đó thực hiện tương tự với 40%, 60%, 80%. Bạn sẽ thấy cả hiệu suất cao hơn với nhiều dữ liệu hơn, nhưng cũng có phương sai thấp hơn trên các mẫu ngẫu nhiên khác nhau
  5. Để xử lý phương sai do kích thước của dữ liệu thử nghiệm, hãy thực hiện quy trình tương tự ngược lại. Huấn luyện trên tất cả các dữ liệu đào tạo của bạn, sau đó lấy mẫu ngẫu nhiên một tỷ lệ phần trăm dữ liệu xác thực của bạn một số lần và quan sát hiệu suất. Bây giờ bạn sẽ thấy rằng hiệu suất trung bình trên các mẫu nhỏ của dữ liệu xác thực của bạn gần giống với hiệu suất trên tất cả dữ liệu xác thực, nhưng phương sai cao hơn nhiều với số lượng mẫu thử nghiệm nhỏ hơn

Cảm ơn, điều này cũng rất hữu ích! Tôi sẽ cho nó nó một cơ hội. FYI, tôi có khoảng 6000 trường hợp dữ liệu đào tạo. Tôi đang sử dụng SVM, vì vậy hiệu suất có phần là một vấn đề.
cướp

1
FWIW, phương sai trong hiệu suất có thể được tính bằng cách phân loại tất cả các trường hợp một lần, chấm điểm các quyết định xem chúng có đúng hay không, sau đó lấy mẫu các quyết định này thay vì các trường hợp kiểm tra để tạo ra hiệu ứng của việc sử dụng các kích thước tập kiểm tra khác nhau
Ben Allison

Và 6000 trường hợp là đủ để sự khác biệt giữa việc sử dụng 10% hoặc 20% để thử nghiệm sẽ không lớn (bạn có thể xác nhận điều này bằng phương pháp tôi mô tả)
Ben Allison

1
Xin chào lần nữa. Tôi hơi bối rối ở điểm # 5. Bạn đã nói "sau đó lấy mẫu ngẫu nhiên một tỷ lệ phần trăm dữ liệu xác thực của bạn một số lần". Bạn có nghĩa là để xem dữ liệu thử nghiệm thay thế? Nếu tôi hiểu đúng, trước tiên tôi nên chia dữ liệu của mình thành tập dữ liệu huấn luyện và kiểm tra, sau đó chia thêm một số tập dữ liệu huấn luyện của tôi thành tập dữ liệu xác nhận. Vì vậy, trong bước 5, nếu tôi đang đo phương sai trên dữ liệu thử nghiệm của mình, tôi có nên lấy mẫu ngẫu nhiên các quần thể từ dữ liệu thử nghiệm của mình không? Hay tôi đang thiếu một cái gì đó?
cướp

2
Vấn đề là trong khi bạn đang chơi xung quanh với các tham số, quan sát ảnh hưởng của việc thay đổi mọi thứ, bạn nên sử dụng dữ liệu xác thực của mình để kiểm tra. Nếu bạn bắt đầu xem xét dữ liệu thử nghiệm của mình và chọn chiến lược dựa trên những gì mang lại cho bạn điểm số cao nhất về điều đó, bạn sẽ có cảm giác bị thổi phồng về hiệu suất của phương pháp. Khi tất cả các tham số của bạn được đặt và các quyết định được đưa ra, sau đó chạy trên dữ liệu thử nghiệm của bạn. Điều này cho bạn biết loại hiệu suất nào bạn sẽ nhận được trên dữ liệu thực sự mới, không quan sát được (có lẽ là điều bạn quan tâm!)
Ben Allison

54

Bạn sẽ ngạc nhiên khi thấy rằng 80/20 là một tỷ lệ khá phổ biến, thường được gọi là nguyên tắc Pareto . Đó thường là đặt cược an toàn nếu bạn sử dụng tỷ lệ đó.

Tuy nhiên, tùy thuộc vào phương pháp đào tạo / xác nhận bạn sử dụng, tỷ lệ có thể thay đổi. Ví dụ: nếu bạn sử dụng xác thực chéo 10 lần, thì bạn sẽ kết thúc với bộ xác thực 10% ở mỗi lần.

Đã có một số nghiên cứu về tỷ lệ thích hợp giữa tập huấn luyện và tập xác thực :

Tỷ lệ các mẫu dành riêng cho bộ xác thực phải tỷ lệ nghịch với căn bậc hai của số lượng tham số điều chỉnh miễn phí.

Trong kết luận của họ, họ chỉ định một công thức:

Bộ xác nhận (v) cho tỷ lệ kích thước của tập huấn luyện (t), v / t, tỷ lệ như ln (N / h-max), trong đó N là số gia đình của người nhận biết và h-max là độ phức tạp lớn nhất của các gia đình đó.

Ý nghĩa của sự phức tạp là:

Mỗi họ của bộ nhận dạng được đặc trưng bởi độ phức tạp của nó, có thể có hoặc không liên quan đến kích thước VC , chiều dài mô tả, số lượng tham số có thể điều chỉnh hoặc các biện pháp phức tạp khác.

Lấy quy tắc đầu tiên (bộ ievalidation phải tỷ lệ nghịch với căn bậc hai của số tham số điều chỉnh miễn phí), bạn có thể kết luận rằng nếu bạn có 32 tham số có thể điều chỉnh, căn bậc hai của 32 là ~ 5,65, phân số phải là 1 / 5.65 hoặc 0.177 (v / t). Khoảng 17,7% nên được dành riêng để xác nhận và 82,3% cho đào tạo.


2
Bài báo, đối với những người có thể gặp khó khăn khi tải nó như tôi (không rõ tại sao), là: "Luật quy mô cho kích thước tỷ lệ tập huấn luyện tập xác thực" (I. Guyon, 1996, Báo cáo kỹ thuật chưa được công bố, Phòng thí nghiệm của AT & T Bell ).
bác sĩ lâm sàng

2
Liệu quy tắc của ngón tay cái có ý nghĩa? Nếu bạn có hai tham số có thể điều chỉnh thì tỷ lệ là 0,77, có nghĩa là bạn sẽ sử dụng 77% để xác thực. Vấn đề là định nghĩa tham số miễn phí. Đối với một SVM tuyến tính, bạn có thể đặt tham số hình phạt C cho cụm từ lỗi là một tham số, nhưng độ phức tạp cao hơn Kích thước + 1 cho một SVM.
Reed Richards

4
Vậy thì kích thước thử nghiệm của tôi có phải là 1 nếu tôi có mạng lưới thần kinh không ..?
YellowPvel

51

Năm ngoái, tôi đã tham gia khóa học máy học trực tuyến của Giáo sư Andrew Ng. Đề nghị của ông là:

Đào tạo : 60%

Xác nhận chéo : 20%

Kiểm tra : 20%


20
coursera.org/learn/deep-neural-network/lecture/cxG1s/ khăn in the modern big data era, where, for example, you might have a million examples in total, then the trend is that your dev (cross validation) and test sets have been becoming a much smaller percentage of the total. Ông gợi ý rằng nó có thể là 99,5: 0,25: 0,25.
Nobu

9

Vâng, bạn nên nghĩ về một điều nữa.

Nếu bạn có bộ dữ liệu thực sự lớn, như 1.000.000 ví dụ, việc chia 80/10/10 có thể không cần thiết, bởi vì 10% = 100.000 ví dụ là không cần thiết để cho biết mô hình đó hoạt động tốt.

Có thể 99 / 0,5 / 0,5 là đủ, bởi vì 5.000 ví dụ có thể đại diện cho hầu hết phương sai trong dữ liệu và bạn có thể dễ dàng biết mô hình đó hoạt động tốt dựa trên 5.000 ví dụ này trong thử nghiệm và dev.


0,5% trong bộ xác nhận có thể là đủ nhưng tôi cho rằng bạn đang gặp rủi ro lớn và không cần thiết vì bạn không biết là đủ hay không. Việc đào tạo của bạn có thể dễ dàng gặp trục trặc nếu bạn đang sử dụng một bộ xác nhận quá nhỏ, nhưng gần như không thể sai khi sử dụng một bộ xác thực lớn.
Bjorn Lindqvist

2

Giả sử bạn có ít dữ liệu hơn, tôi khuyên bạn nên thử 70%, 80% và 90% và kiểm tra xem kết quả nào tốt hơn. Trong trường hợp 90% có khả năng cho bài kiểm tra 10% bạn có độ chính xác kém.


1

Có lẽ 63,2% / 36,8% là một lựa chọn hợp lý. Lý do sẽ là nếu bạn đã có một cỡ mẫu tổng n và muốn mẫu ngẫu nhiên với thay thế (hay còn gọi là tái mẫu, như trong bootstrap thống kê) n trường hợp ra khỏi ban đầu n , xác suất của một trường hợp cá nhân được lựa chọn trong mẫu lại sẽ xấp xỉ 0,632, với điều kiện n không quá nhỏ, như được giải thích ở đây: https://stats.stackexchange.com/a/88993/16263

Đối với mẫu n = 250, xác suất của một trường hợp riêng lẻ được chọn cho mẫu lại thành 4 chữ số là 0,6329. Đối với mẫu n = 20000, xác suất là 0,6321.


1

Tất cả phụ thuộc vào dữ liệu trong tay. Nếu bạn có lượng dữ liệu đáng kể thì 80/20 là một lựa chọn tốt như đã đề cập ở trên. Nhưng nếu bạn không Xác thực chéo với tỷ lệ phân chia 50/50 có thể giúp bạn nhiều hơn và ngăn bạn tạo một mô hình phù hợp với dữ liệu đào tạo của bạ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.