Xác thực chéo và tối ưu hóa tham số


11

Tôi có một câu hỏi về tối ưu hóa tham số khi tôi sử dụng xác nhận chéo 10 lần.

Tôi muốn hỏi rằng liệu các tham số có nên sửa hay không trong quá trình đào tạo mô hình của mỗi lần gấp, tức là (1) chọn một bộ tham số được tối ưu hóa cho độ chính xác trung bình của mỗi lần gấp.

hoặc là

(2) Tôi nên tìm tham số được tối ưu hóa cho mỗi lần gấp và sau đó mỗi lần sử dụng các tham số được tối ưu hóa khác nhau để huấn luyện mô hình của nó sau đó kiểm tra dữ liệu thử nghiệm của nếp gấp và cuối cùng là trung bình độ chính xác của mỗi lần gấp?

Cái nào là phương pháp đúng để xác nhận chéo? Cảm ơn rất nhiều.


Câu hỏi này: stats.stackexchange.com/questions/1826/ Có hai câu trả lời tuyệt vời (điểm cao nhất), tôi nghĩ rằng họ có thể giúp bạn trong câu hỏi của bạn. Thứ hai là chính xác những gì bạn muốn. OBS.: Tôi muốn viết bài này như một bình luận, nhưng tôi không thể làm điều đó, vì vậy tôi đã trả lời nó.
Augusto

Câu trả lời:


10

Trước tiên chúng ta hãy phân biệt giữa hai bộ tham số: tham số mô hình (ví dụ: trọng số cho các tính năng trong hồi quy) và tham số cho thuật toán học (và siêu đường kính). Mục đích của xác nhận chéo là để xác định các tham số học tập khái quát tốt trên các mẫu dân số mà chúng ta học được từ mỗi lần.

Cụ thể hơn: Chúng tôi tìm kiếm trên toàn cầu trong không gian qua các tham số học tập, nhưng trong mỗi lần, chúng tôi sửa các tham số học tập và tìm hiểu các tham số mô hình. Kết quả sẽ là học các tham số tạo ra hiệu suất trung bình tốt nhất trong tất cả các lần. Sau đó chúng ta có thể sử dụng chúng để huấn luyện một mô hình trên toàn bộ tập dữ liệu.


Xin lỗi, loại tham số tôi đã hỏi là siêu âm như bạn nói.
Kevin

Chẳng hạn như các tham số c và g trong libSVM. Vì vậy, tôi nên sử dụng cùng một c và g để huấn luyện mô hình của mỗi nếp gấp như phương pháp (2) mà tôi đã đề cập ở trên sau đó chọn phương pháp tốt nhất? Cảm ơn rât nhiều.
Kevin

2
(1) và (2) ở trên không rõ ràng với tôi vì vậy tôi đã không đề cập đến chúng một cách rõ ràng. Bạn nên tìm kiếm không gian của c & g để tối đa hóa số liệu nhiệm vụ của bạn khi tính trung bình trên các nếp gấp. Vì vậy, bạn đặt c & g thành một giá trị nào đó, chạy quy trình đào tạo và kiểm tra trên tất cả các nếp gấp, tính trung bình cho chúng, giữ điểm số đó, sửa đổi c hoặc g và lặp lại. Cuối cùng, bạn tìm thấy c & g tốt nhất và bạn có thể đào tạo mô hình cuối cùng trên tất cả dữ liệu của mình.
Joel

Cảm ơn rât nhiều. Tôi cố gắng tóm tắt các câu trả lời. Dữ liệu được chia thành 10 lần: gấp-1: (train1, test1) ... gấp-10: (train10, test10) Sau đó sử dụng một (c1, g1) để đào tạo và kiểm tra trên gấp-1 đến gấp-10, trung bình tất cả độ chính xác của nếp gấp. Hãy thử một cái khác (c2, g2) để thực hiện cùng một quy trình ... lặp lại cho đến khi tôi tìm thấy thứ tốt nhất (c, g). Và độ chính xác trung bình tốt nhất (c, g) sẽ là kết quả của xác thực chéo 10 lần của tôi.
Kevin

1
Nghe có vẻ đúng ...
Joel

15

Tôi nghĩ rằng câu trả lời hiện đang được chấp nhận là không đầy đủ theo một cách không may. Tôi không đồng ý với câu

Mục đích của xác nhận chéo là để xác định các tham số học tập khái quát tốt trên các mẫu dân số mà chúng ta học được từ mỗi lần.

Đây thực sự là một ứng dụng rất quan trọng của xác nhận chéo, nhưng không phải là ứng dụng duy nhất. Thông thường, bạn muốn làm hai điều:

  1. Xây dựng mô hình tốt nhất bạn có thể
  2. Có một ấn tượng chính xác về hiệu suất của nó

Bây giờ, để hoàn thành mục tiêu 1 tùy thuộc vào thuật toán của bạn, bạn có thể cần điều chỉnh một số siêu đường kính và điều này thực sự thường được thực hiện bằng xác nhận chéo. Nhưng điều này vẫn chưa giúp bạn với mục tiêu 2. Đối với điều này, về cơ bản bạn cần lồng xác thực chéo, như thế này:

  • Phân chia toàn bộ dữ liệu thành n lần
  • Đối với mỗi, hãy tách dữ liệu đào tạo lại thành các tệp con
  • Sử dụng xác nhận chéo trên các tệp con để tìm hiểu các siêu đường kính tốt
  • Với các siêu tham số này, xây dựng một mô hình về dữ liệu huấn luyện của nếp gấp đó
  • Kiểm tra mô hình trên dữ liệu thử nghiệm
  • Lặp lại ở lần tiếp theo

Để xây dựng một mô hình tốt, bạn chỉ cần xác nhận chéo bên trong. Bạn vẫn sẽ cần phải làm như vậy để có được một mô hình tốt. Nhưng để có được ước tính tốt về hiệu suất mô hình của bạn, bạn cần thực hiện toàn bộ quá trình xây dựng mô hình bên trong sơ đồ xác thực chéo. Điều này cũng bao gồm các bước như cắt cụt, vv


1
Erik, bạn có thể vui lòng cung cấp một tài liệu tham khảo về cách thực hiện quá trình này?
chao

Xin chào @Erik, vì vậy thứ tự phân tích chung sẽ là (1) Tìm các tham số điều chỉnh tối ưu với xác thực chéo, (2) Mô hình giữ lại (với các tham số điều chỉnh thu được) trên toàn bộ tập dữ liệu huấn luyện để lấy tham số mô hình và (3 ) Xem ước tính hiệu suất tổng thể của phương pháp này bằng cách sử dụng xác thực chéo lồng nhau? Điều tôi bối rối là có thể chọn các siêu đường kính khác nhau trong quá trình CV cuối, vì vậy CV lồng nhau sẽ không được điều tra cụ thể về hiệu suất tổng thể của các tham số siêu mô hình / tham số mà chúng tôi đã đạt được ở trên?
Michelle

Tôi hơi trễ cuộc trò chuyện, nhưng tôi muốn chỉ ra phương pháp này còn được gọi là "lồng nhau" hoặc "xác thực chéo kép" và đây là một lời giải thích hay của Tom Fearn và một ví dụ với mã trong scikit- tìm hiểu tài liệu
MD004
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.