Tóm tắt các kỹ thuật xác nhận chéo


43

Tôi tự hỏi liệu có ai biết về một bản tóm tắt các kỹ thuật xác thực chéo với một cuộc thảo luận về sự khác biệt giữa chúng và hướng dẫn khi nào nên sử dụng từng kỹ thuật. Wikipedia có một danh sách các kỹ thuật phổ biến nhất, nhưng tôi tò mò liệu có các kỹ thuật khác không và liệu có bất kỳ phân loại nào cho chúng không.

Ví dụ: tôi chỉ chạy vào một thư viện cho phép tôi chọn một trong các chiến lược sau:

  • Không đồng ý
  • Bootstrap
  • Xác thực chéo K
  • Để lại một
  • Xác thực chéo
  • Cân bằng chéo xác thực chéo
  • Phân tầng Giữ
  • Bootstrap phân tầng

và tôi đang cố gắng hiểu ý nghĩa phân tầng và cân bằng trong bootstrapping, giữ hoặc CV.

Chúng tôi cũng có thể biến bài đăng này thành wiki cộng đồng nếu mọi người muốn và thu thập một cuộc thảo luận về các kỹ thuật hoặc phân loại ở đây.


Câu hỏi tuyệt vời này sẽ còn hữu ích hơn nữa nếu chúng ta có thể liên kết với các giải thích về từng phương pháp.
mkt - Tái lập Monica

Câu trả lời:


16

Bạn có thể thêm vào danh sách đó:

  • Xác nhận lặp lại
  • Xác thực chéo nhóm
  • Hết túi (đối với rừng ngẫu nhiên và các mô hình đóng bao khác)
  • Các 632+ bootstrap

Tôi thực sự không có nhiều lời khuyên về cách sử dụng các kỹ thuật này hoặc khi nào nên sử dụng chúng. Bạn có thể sử dụng gói caret trong R để so sánh CV, Boot, Boot632, bỏ qua một lần, rời khỏi nhóm và xác thực chéo túi.

Nói chung, tôi thường sử dụng boostrap vì nó ít tính toán hơn so với CV gấp k lặp lại, hoặc CV bỏ đi. Boot632 là thuật toán lựa chọn của tôi vì nó không yêu cầu tính toán nhiều hơn bootstrap và được chứng minh là tốt hơn so với xác thực chéo hoặc bootstap cơ bản trong một số tình huống.

Tôi hầu như luôn sử dụng các ước tính lỗi ngoài túi cho các khu rừng ngẫu nhiên, thay vì xác thực chéo. Các lỗi xuất túi thường không thiên vị và các khu rừng ngẫu nhiên mất đủ thời gian để tính toán như hiện tại.


3
Bất kỳ lời khuyên liên quan đến khi sử dụng mỗi trong số này?
whuber

16

Xác thực chéo K-Fold (CV) ngẫu nhiên chia dữ liệu của bạn thành các phân vùng K và bạn lần lượt giữ một trong những phần K đó làm trường hợp thử nghiệm và gộp các phần K-1 khác lại với nhau làm dữ liệu huấn luyện của bạn. Rời khỏi một lần (LOO) là trường hợp đặc biệt khi bạn lấy các mục dữ liệu N của mình và thực hiện CV N-Fold. Về mặt nào đó, Hold Out là một trường hợp đặc biệt khác, trong đó bạn chỉ chọn một trong các nếp gấp K của mình làm thử nghiệm và không xoay qua tất cả các nếp gấp K.

Theo như tôi biết, CV 10 lần gần như là một vấn đề khó khăn, vì nó sử dụng dữ liệu của bạn một cách hiệu quả và cũng giúp tránh các lựa chọn phân vùng không may mắn. Hold Out không sử dụng hiệu quả dữ liệu của bạn và LOO không mạnh mẽ (hoặc một cái gì đó tương tự), nhưng 10 lần là hoàn toàn đúng.

Nếu bạn biết rằng dữ liệu của bạn chứa nhiều hơn một danh mục và một hoặc nhiều danh mục nhỏ hơn nhiều so với phần còn lại, một số phân vùng ngẫu nhiên K của bạn thậm chí có thể không chứa bất kỳ danh mục nhỏ nào, điều này sẽ rất tệ. Để đảm bảo mỗi phân vùng có tính đại diện hợp lý, bạn sử dụng phân tầng: chia dữ liệu của bạn thành các danh mục và sau đó tạo phân vùng ngẫu nhiên bằng cách chọn ngẫu nhiên và tỷ lệ từ mỗi danh mục.

Tất cả các biến thể trên CV K-Fold chọn từ dữ liệu của bạn mà không cần thay thế. Bootstrap chọn dữ liệu có thay thế, do đó cùng một dữ liệu có thể được bao gồm nhiều lần và một số dữ liệu có thể không được bao gồm trong tất cả. (Mỗi "phân vùng" cũng sẽ có N mục, không giống như K-Fold, trong đó mỗi phân vùng sẽ có các mục N / K.)

(Tuy nhiên, tôi phải thừa nhận rằng tôi không biết chính xác cách bootstrap sẽ được sử dụng trong CV. Nguyên tắc kiểm tra và CV là đảm bảo bạn không kiểm tra dữ liệu mà bạn đã đào tạo, để bạn có được một ý tưởng thực tế hơn về cách kỹ thuật + hệ số của bạn có thể hoạt động trong thế giới thực.)

EDIT: Đã thay thế "Giữ không hiệu quả" bằng "Giữ ngoài không sử dụng hiệu quả dữ liệu của bạn" để giúp làm rõ, theo các nhận xét.


1
Khi bạn nói rằng "Giữ không hiệu quả", tôi không chắc là mình làm theo. Bạn có ý nghĩa gì bởi hiệu quả ở đây? Trái ngược với nếp gấp N thông thường, Hold Out không xoay qua các nếp gấp, vì vậy nó sẽ nhanh hơn. Thay vào đó, ý bạn là nó tệ hơn khi chiến đấu với việc quá mức so với CV N-Fold thông thường?
Amelio Vazquez-Reina

2
"Hiệu quả" Tôi có nghĩa là nó không sử dụng dữ liệu của bạn một cách hiệu quả. Cái hay của CV K-Fold là 100% dữ liệu của bạn được sử dụng cho đào tạo và 100% dữ liệu của bạn được sử dụng để thử nghiệm, giúp sử dụng hiệu quả dữ liệu của bạn. Tất nhiên, điều quan trọng là tất cả dữ liệu của bạn không được sử dụng để kiểm tra và đào tạo cùng một lúc, điều này sẽ mang lại kết quả kiểm tra lạc quan theo cách (quá mức). Bằng cách thực hiện phân chia tĩnh, Hold Out cho biết, giả sử, 1/3 dữ liệu của bạn sẽ không bao giờ được sử dụng cho đào tạo và 2/3 dữ liệu của bạn sẽ không bao giờ được sử dụng để kiểm tra, gây lãng phí rất nhiều thông tin trong dữ liệu của bạn.
Wayne

@Wayne Không phải là ước lượng người hết tiệm không thiên vị? Ngoài ra, CV gấp k đơn giản dễ bị lỗi loại II hơn CV gấp k lặp lại.
chl

@chl: Tôi tin rằng bạn đúng về cả hai tính. Tôi đã không sử dụng CV gấp K lặp đi lặp lại, nhưng nó sẽ có phương sai thấp hơn, điều này sẽ giúp ích.
Wayne

3

Tôi thấy một trong những tài liệu tham khảo được liên kết đến trong bài viết Wikipedia khá hữu ích

http://citeseerx.ist.psu.edu/viewdoc/doad?doi=10.1.1.48.529&rep=rep1&type=pdf

"Một nghiên cứu về xác thực chéo và bootstrap để ước tính độ chính xác và lựa chọn mô hình", Ron Kohavi, IJCAI95

Nó chứa một so sánh thực nghiệm cho một tập hợp các kỹ thuật CV. Phiên bản tl; dr về cơ bản là "sử dụng CV 10 lần".


1

... và hướng dẫn khi nào nên sử dụng từng ...

Thật không may, vấn đề đó khó hơn tín dụng. Có ít nhất 2 cách sử dụng chính của xác thực chéo: chọn một mô hình và đánh giá hiệu suất của mô hình.

Nói một cách đơn giản, nếu bạn sử dụng một biến thể CV phân tách dữ liệu bằng tỷ lệ kiểm tra-thử nghiệm cao, điều này có thể tốt hơn để đánh giá. Sử dụng một tập huấn luyện lớn hơn sẽ mô phỏng chính xác hơn hiệu suất của mô hình phù hợp với bộ dữ liệu đầy đủ.

Nhưng tỷ lệ đào tạo-kiểm tra cao có thể tồi tệ hơn để lựa chọn. Hãy tưởng tượng thực sự có một mô hình "tốt nhất" mà bạn "nên" chọn, nhưng tập dữ liệu của bạn khá lớn. Sau đó, các mô hình quá lớn, hơi quá mức sẽ có hiệu suất CV gần như tương đương với mô hình "tốt nhất" (vì bạn sẽ ước tính thành công các tham số giả của chúng là không đáng kể). Tính ngẫu nhiên trong dữ liệu và quy trình chia tách CV / thường sẽ khiến bạn chọn một mô hình quá mức thay vì mô hình thực sự "tốt nhất".

Xem Shao (1993), "Lựa chọn mô hình tuyến tính bằng xác nhận chéo" cho lý thuyết tiệm cận cũ hơn trong trường hợp hồi quy tuyến tính. Yang (2007), "Tính nhất quán của kiểm chứng chéo để so sánh các thủ tục hồi quy"Yang (2006), "So sánh các phương pháp học để phân loại" đưa ra lý thuyết tiệm cận cho các vấn đề hồi quy và phân loại tổng quát hơn. Nhưng lời khuyên mẫu hữu hạn nghiêm ngặt là khó khăn để đi.

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.