Lựa chọn K trong xác nhận chéo K-Fold


136

Tôi đã sử dụng các -fold cross-validation một vài lần bây giờ để đánh giá hiệu suất của một số thuật toán học, nhưng tôi đã luôn luôn được bối rối như thế nào tôi nên chọn giá trị của .KKK

Tôi thường thấy và sử dụng giá trị , nhưng điều này dường như hoàn toàn tùy ý với tôi và bây giờ tôi chỉ sử dụng theo thói quen thay vì nghĩ về nó. Đối với tôi có vẻ như bạn đang có được độ chi tiết tốt hơn khi bạn cải thiện giá trị của , vì vậy lý tưởng nhất là bạn nên làm cho của bạn rất lớn, nhưng cũng có nguy cơ bị sai lệch.10 K KK=1010KK

Tôi muốn biết giá trị của nên phụ thuộc vào điều gì và tôi nên nghĩ về điều này như thế nào khi đánh giá thuật toán của mình. Nó có thay đổi điều gì nếu tôi sử dụng phiên bản phân tầng của xác thực chéo hay không?K


Câu trả lời:


69

Sự lựa chọn có phần tùy ý. Đây là cách tôi quyết định :kk=10k

  • trước hết, để giảm phương sai của kết quả CV, bạn có thể và nên lặp lại / lặp lại CV với các phân tách ngẫu nhiên mới.
    Điều này làm cho đối số của => thời gian tính toán cao hơn phần lớn không liên quan, vì dù sao bạn cũng muốn tính toán nhiều mô hình. Tôi có xu hướng nghĩ chủ yếu về tổng số mô hình được tính toán (tương tự như bootstrapping). Vì vậy, tôi có thể quyết định cho CV 100 x 10 lần hoặc 200 x 5 lần.k

  • @ogrisel đã giải thích rằng thường lớn có nghĩa là thiên vị ít (bi quan). (Một số trường hợp ngoại lệ được biết cụ thể cho , tức là bỏ qua một lần).k = nkk=n

  • Nếu có thể, tôi sử dụng là ước số của cỡ mẫu hoặc kích thước của các nhóm trong mẫu cần phân tầng.k

  • Quá lớn có nghĩa là chỉ có thể kết hợp số lượng mẫu thấp, do đó hạn chế số lần lặp khác nhau.k

    • Đối với loại bỏ một lần: các kết hợp mẫu thử nghiệm / mô hình khác nhau là có thể. Lặp đi lặp lại không có ý nghĩa gì cả.(n1)=n=k
    • Ví dụ: và : kết hợp mẫu thử nghiệm / mô hình khác nhau tồn tại. Bạn có thể xem xét việc trải qua tất cả các kết hợp có thể có ở đây vì 19 lần lặp CV hoặc tổng số 190 mô hình là không nhiều.k = 10 ( nn=20k=10k(n=202)=190=19kk
  • Những suy nghĩ này có trọng lượng hơn với kích thước mẫu nhỏ. Với nhiều mẫu có sẵn không quan trọng lắm. Số lượng kết hợp có thể sớm trở nên đủ lớn để 100 lần lặp lại của CV 10 lần không có nguy cơ bị trùng lặp lớn. Ngoài ra, nhiều mẫu đào tạo hơn thường có nghĩa là bạn đang ở một phần phẳng hơn của đường cong học tập, do đó, sự khác biệt giữa các mô hình thay thế và mô hình "thực" được đào tạo trên tất cả mẫu trở nên không đáng kể.nkn


6
(+1) cho việc xây dựng, nhưng (-1) cho số lần lặp lại của CV. Đúng là, rủi ro tạo ra các bản sao chính xác (nhìn vào id của các quan sát) là nhỏ (được cung cấp đủ dữ liệu, v.v.), nhưng rủi ro tạo các bản sao cấu trúc mô hình / dữ liệu là rất cao. Tôi sẽ không lặp lại CV quá 10 lần, bất kể k là gì ... chỉ để tránh đánh giá thấp phương sai.
steffen

3
@steffen, đó không phải là điều mà ogrisel đã chỉ ra: rằng các mô hình (thay thế) không thực sự độc lập? Tôi hoàn toàn đồng ý rằng đây là trường hợp. Trên thực tế, tôi cố gắng tính đến điều này bằng cách diễn giải các kết quả về tính ổn định của các mô hình (thay thế) wrt. trao đổi các mẫu "một vài" (mà tôi không muốn giải thích ở đây - nhưng xem ví dụ: stats.stackexchange.com/a/26548/4598 ). Và tôi không tính toán lỗi tiêu chuẩn mà báo cáo ví dụ trung bình và đến phần trăm các lỗi được quan sát qua các lần lặp. Tôi sẽ đăng một câu hỏi riêng về điều đó. 95 t h5th95th
cbeleites

2
Tôi hiểu rồi. Tôi đồng ý rằng phương pháp này là hợp lệ để ước tính sự ổn định của người thay thế. Những gì tôi đã nghĩ lại là thử nghiệm thống kê tiếp theo để quyết định xem một mô hình có tốt hơn mô hình khác hay không. Lặp đi lặp lại một cách cv quá thường xuyên làm tăng khả năng xảy ra lỗi alpha. Vì vậy, tôi đã nhầm lẫn bên trong với xác nhận bên ngoài (như dikran đã đặt nó ở đây ).
steffen

2
@cbeleites: Tôi đồng ý với bạn. Phương sai do kích thước mẫu hạn chế thường chiếm ưu thế so với độ không đảm bảo của mô hình.
jpcgandre

2
@jpcgandre: Ít nhất là đối với các lỗi phân loại như độ nhạy, độ đặc hiệu, v.v., độ không đảm bảo do tổng số trường hợp được kiểm tra có thể được tính toán. Mặc dù đúng là đây chỉ là một phần của tổng phương sai, nhưng ít nhất trong các tình huống tôi gặp phải trong công việc của mình, sự không chắc chắn này thường lớn đến mức ngay cả một phỏng đoán thô cũng đủ để làm rõ rằng kết luận bị hạn chế nghiêm trọng. Và giới hạn này vẫn tồn tại, nó sẽ không biến mất bằng cách sử dụng 50 lần 8 lần hoặc 80 lần 5 lần thay vì xác thực chéo 40 lần 10 lần.
cbeleites

37

K lớn hơn có nghĩa là ít thiên vị hơn trong việc đánh giá quá cao lỗi dự kiến ​​thực sự (vì các nếp gấp đào tạo sẽ gần với tổng số liệu hơn) nhưng phương sai cao hơn và thời gian chạy cao hơn (vì bạn đang tiến gần hơn đến trường hợp giới hạn: CV rời khỏi một lần).

Nếu độ dốc của đường cong học tập đủ bằng phẳng tại training_size = 90% tổng số liệu, thì có thể bỏ qua sai lệch và K = 10 là hợp lý.

Ngoài ra, K cao hơn cung cấp cho bạn nhiều mẫu hơn để ước tính khoảng tin cậy chính xác hơn cho ước tính của bạn (sử dụng lỗi tiêu chuẩn tham số giả định tính phân phối của lỗi kiểm tra CV hoặc CI bootstrap không tham số mà chỉ đưa ra giả định iid không thực sự đúng vì các nếp gấp CV không độc lập với nhau).

Chỉnh sửa: đánh giá thấp => đánh giá quá cao lỗi dự kiến ​​thực sự

Chỉnh sửa: phần trả lời này về phương sai cao hơn đối với K hoặc LOOCV lớn có lẽ là sai (không phải lúc nào cũng đúng). Thêm chi tiết với các mô phỏng trong câu trả lời này: Xu hướng và phương sai trong xác thực chéo một lần so với K-Fold (cảm ơn Xavier Bourret Sicotte cho công việc này).


1
bạn có thể giải thích thêm một chút về phương sai cao hơn với lớn không? Như một xấp xỉ đầu tiên tôi đã nói rằng tổng phương sai của kết quả CV (= một số loại lỗi được tính từ tất cả mẫu được kiểm tra bởi bất kỳ mô hình surrogate nào) = phương sai do chỉ kiểm tra mẫu + phương sai do chênh lệch giữa các mô hình (không ổn định). Tôi đang thiếu gì? n k n kknknk
cbeleites

6
Theo phương sai, tôi có nghĩa là phương sai của lỗi kiểm tra dự kiến ​​ước tính có được bằng cách lấy giá trị trung bình hoặc trung bình của các lỗi gấp CV viết "phân phối thực", không phải trên các nếp gấp CV. Khi k lớn, bạn gần với LOO-CV, điều này phụ thuộc rất nhiều vào tập huấn luyện cụ thể mà bạn có trong tay: nếu số lượng mẫu nhỏ thì không thể đại diện cho phân phối thực do đó phương sai. Khi k lớn, CV gấp k có thể mô phỏng các mẫu cứng tùy ý như vậy của tập huấn luyện.
ogrisel

8
Ngoài ra: Kohavi nghiên cứu sự đánh đổi sai lệch thiên vị trong xác nhận trong chương 3 của luận án tiến sĩ . Tôi khuyên bạn nên nó.
steffen

3
+1, btw "K lớn hơn có nghĩa là phương sai cao hơn", theo tôi hiểu, với lớn , tất cả các tập huấn luyện sẽ có dữ liệu lớn, do đó các mô hình được đào tạo sẽ có tương quan với nhau, dẫn đến lỗi kiểm tra tương quan , Vì vậy, giá trị trung bình của lỗi kiểm tra sẽ có phương sai cao hơn, phải không? KK KKKK

Vâng, tôi nghĩ rằng đây là một trực giác chính xác.
ogrisel

0

Tôi không biết làm thế nào Kảnh hưởng đến độ chính xác và khái quát hóa, và điều này có thể phụ thuộc vào thuật toán học tập, nhưng nó chắc chắn ảnh hưởng đến độ phức tạp tính toán gần như tuyến tính (không triệu chứng, tuyến tính) đối với các thuật toán đào tạo với độ phức tạp thuật toán trong số lượng trường hợp đào tạo. Thời gian tính toán cho đào tạo tăng K-1thời gian nếu thời gian đào tạo là tuyến tính trong số lượng các trường hợp đào tạo. Vì vậy, đối với các tập huấn luyện nhỏ, tôi sẽ xem xét các khía cạnh chính xác và khái quát hóa, đặc biệt là chúng ta cần tận dụng tối đa một số trường hợp đào tạo hạn chế.

Tuy nhiên, đối với các tập huấn luyện lớn và các thuật toán học tập với sự tăng trưởng độ phức tạp tính toán tiệm cận cao về số lượng các trường hợp đào tạo (ít nhất là tuyến tính), tôi chỉ chọn K=2để không tăng thời gian tính toán cho một thuật toán đào tạo với số phức tuyến tính không triệu chứng của các trường hợp đào tạo.


-6

Giải pháp:

K = N/N*0.30
  • N = Kích thước của tập dữ liệu
  • K = Gấp

Nhận xét: Chúng tôi cũng có thể chọn 20% thay vì 30%, tùy thuộc vào kích thước bạn muốn chọn làm bộ thử nghiệm của mình.

Thí dụ:

Nếu kích thước tập dữ liệu: N = 1500; K = 1500/1500 * 0,30 = 3,33; Chúng ta có thể chọn giá trị K là 3 hoặc 4

Ghi chú:

Giá trị K lớn khi bỏ qua một xác nhận chéo sẽ dẫn đến kết quả khớp quá mức. Giá trị K nhỏ khi bỏ qua một xác nhận chéo sẽ dẫn đến kết quả không phù hợp.

Cách tiếp cận có thể ngây thơ, nhưng vẫn tốt hơn là chọn k = 10 cho tập dữ liệu có kích thước khác nhau.


4
(-1)vì vậy, bạn đề nghị luôn luôn sử dụng k = 3 hoặc 4 bất kể kích thước mẫu - đây là IMHO không khác biệt cơ bản với việc sử dụng k = 10 như nhau bất kể kích thước mẫu. NN0.3=10.33.33=const.
cbeleites

K = N / N * 0,3 = 10/3 là hằng số. Vì vậy, không hợp lý khi sử dụng giá trị đó cho mọi điều kiện.
Kamal Thapa
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.