Xác thực chéo lồng nhau để lựa chọn mô hình


91

Làm thế nào người ta có thể sử dụng xác nhận chéo lồng nhau để lựa chọn mô hình ?

Từ những gì tôi đọc trực tuyến, CV lồng nhau hoạt động như sau:

  • Có vòng CV bên trong, nơi chúng tôi có thể tiến hành tìm kiếm dạng lưới (ví dụ: chạy K-Fold cho mọi mô hình có sẵn, ví dụ: kết hợp các siêu đường kính / tính năng)
  • Có vòng CV bên ngoài, nơi chúng tôi đo hiệu suất của mô hình giành được ở nếp gấp bên trong, trên một nếp gấp bên ngoài riêng biệt.

Vào cuối của quá trình này, chúng tôi kết thúc với mô hình ( là số nếp gấp trong vòng ngoài). Những mô hình này là những mô hình đã giành chiến thắng trong tìm kiếm lưới trong CV bên trong và chúng có thể khác nhau (ví dụ: SVM với các hạt nhân khác nhau, được đào tạo với các tính năng có thể khác nhau, tùy thuộc vào tìm kiếm lưới).KK

Làm thế nào để tôi chọn một mô hình từ đầu ra này? Theo tôi, việc chọn mô hình tốt nhất trong số các mô hình chiến thắng đó sẽ không phải là một so sánh công bằng vì mỗi mô hình đã được đào tạo và thử nghiệm trên các phần khác nhau của bộ dữ liệu.K

Vậy làm thế nào tôi có thể sử dụng CV lồng nhau để lựa chọn mô hình?

Ngoài ra tôi đã đọc các chủ đề thảo luận về cách lựa chọn mô hình lồng nhau là hữu ích để phân tích quy trình học tập. Những loại phân tích / kiểm tra nào tôi có thể làm với điểm số mà tôi nhận được từ các nếp gấp K bên ngoài?

Câu trả lời:


76

Làm cách nào để tôi chọn một mô hình từ đầu ra [xác nhận chéo bên ngoài] này?

Câu trả lời ngắn gọn: Bạn không.

Xử lý xác nhận chéo bên trong như là một phần của quy trình phù hợp mô hình. Điều đó có nghĩa là sự phù hợp bao gồm sự phù hợp của các tham số siêu (đây là nơi ẩn xác thực chéo bên trong) giống như bất kỳ thói quen esitmation mô hình nào khác.
Xác nhận chéo bên ngoài ước tính hiệu suất của phương pháp phù hợp mô hình này. Cho rằng bạn sử dụng các giả định thông thường

  • các mô hình thay thế bên ngoài tương đương với mô hình "thực" được xây dựng bằng tất cả dữ liệu.kmodel.fitting.procedure
  • Hoặc, trong trường hợp 1. bị phá vỡ (sai lệch bi quan của xác nhận lại mẫu), ít nhất các mô hình thay thế bên ngoài tương đương với nhau. Điều này cho phép bạn gộp (trung bình) kết quả kiểm tra. Điều đó cũng có nghĩa là bạn không cần phải chọn trong số họ vì bạn cho rằng về cơ bản chúng giống nhau. Việc phá vỡ giả định thứ hai, yếu hơn này là sự không ổn định của mô hình.k

Đừng không chọn dường như tốt nhất của mô hình thay thế - mà thường sẽ chỉ là "thu hoạch" thử nghiệm không chắc chắn và dẫn đến sự sai lệch lạc.k

Vậy làm thế nào tôi có thể sử dụng CV lồng nhau để lựa chọn mô hình?

Các nội CV hiện các lựa chọn.

Theo tôi, việc chọn mô hình tốt nhất trong số các mô hình chiến thắng K đó sẽ không phải là một so sánh công bằng vì mỗi mô hình đã được đào tạo và thử nghiệm trên các phần khác nhau của bộ dữ liệu.

Bạn đúng ở chỗ không nên chọn một trong những mô hình thay thế . Nhưng bạn đã sai về lý do. Lý do thực sự: xem ở trên. Việc họ không được đào tạo và thử nghiệm trên cùng một dữ liệu không "làm tổn thương" ở đây.k

  • Không có cùng dữ liệu thử nghiệm: như bạn muốn tuyên bố sau đó rằng kết quả thử nghiệm tổng quát thành dữ liệu chưa từng thấy, điều này không thể tạo ra sự khác biệt.
  • Không có cùng dữ liệu đào tạo:
    • nếu các mô hình ổn định, điều này không tạo ra sự khác biệt: Ổn định ở đây có nghĩa là mô hình không thay đổi (nhiều) nếu dữ liệu đào tạo bị "nhiễu" bằng cách thay thế một vài trường hợp bằng các trường hợp khác.
    • Nếu các mô hình không ổn định, ba cân nhắc là quan trọng:
      1. bạn thực sự có thể đo xem đây là trường hợp nào và ở mức độ nào, bằng cách sử dụng xác nhận chéo lặp lại / lặp lại . Điều đó cho phép bạn so sánh kết quả xác thực chéo cho cùng một trường hợp được dự đoán bởi các mô hình khác nhau được xây dựng trên dữ liệu đào tạo hơi khác nhau.k
      2. Nếu các mô hình không ổn định, phương sai quan sát được trong kết quả kiểm tra của xác thực chéo tăng lên: bạn không chỉ có phương sai do thực tế là chỉ có một số lượng các trường hợp hữu hạn được kiểm tra, nhưng có thêm phương sai do sự không ổn định của các mô hình (phương sai trong khả năng dự đoán).k
      3. Nếu sự không ổn định là một vấn đề thực sự, bạn không thể ngoại suy tốt hiệu năng cho mô hình "thực".

Điều này đưa tôi đến câu hỏi cuối cùng của bạn:

Những loại phân tích / kiểm tra nào tôi có thể làm với điểm số mà tôi nhận được từ các nếp gấp K bên ngoài?

  • kiểm tra tính ổn định của các dự đoán (sử dụng xác thực chéo / lặp lại)
  • kiểm tra tính ổn định / biến thể của các siêu tham số được tối ưu hóa.
    Đối với một điều, các siêu tham số tán xạ cực mạnh có thể chỉ ra rằng tối ưu hóa bên trong không hoạt động. Đối với một điều khác, điều này có thể cho phép bạn quyết định các siêu đường kính mà không cần bước tối ưu hóa tốn kém trong các tình huống tương tự trong tương lai. Với chi phí đắt, tôi không đề cập đến tài nguyên tính toán mà thực tế là thông tin "chi phí" này có thể được sử dụng tốt hơn để ước tính các tham số mô hình "bình thường".

  • kiểm tra sự khác biệt giữa ước tính bên trong và bên ngoài của mô hình đã chọn. Nếu có một sự khác biệt lớn (nội tâm rất quá mức), có nguy cơ tối ưu hóa bên trong không hoạt động tốt vì quá nhiều.


Cập nhật câu hỏi của @ user99889: Phải làm gì nếu CV bên ngoài thấy không ổn định?

Trước hết, việc phát hiện trong vòng CV bên ngoài rằng các mô hình không mang lại dự đoán ổn định ở khía cạnh đó không thực sự khác biệt với việc phát hiện ra rằng lỗi dự đoán là quá cao đối với ứng dụng. Đó là một trong những kết quả có thể có của xác nhận mô hình (hoặc xác minh) ngụ ý rằng mô hình chúng tôi có không phù hợp với mục đích của nó.

Trong phần trả lời bình luận @davips, tôi đã nghĩ đến việc giải quyết sự không ổn định trong CV bên trong - tức là một phần của quy trình tối ưu hóa mô hình.

Nhưng bạn chắc chắn đúng: nếu chúng tôi thay đổi mô hình của chúng tôi dựa trên những phát hiện của CV bên ngoài, thì một vòng thử nghiệm độc lập khác của mô hình đã thay đổi là cần thiết.
Tuy nhiên, sự không ổn định trong CV bên ngoài cũng sẽ là một dấu hiệu cho thấy việc tối ưu hóa không được thiết lập tốt - vì vậy việc tìm thấy sự không ổn định trong CV bên ngoài ngụ ý rằng CV bên trong không xử phạt sự mất ổn định theo cách cần thiết - đây sẽ là điểm chính của tôi phê bình trong một tình huống như vậy. Nói cách khác, tại sao việc tối ưu hóa lại cho phép / dẫn đến các mô hình quá phù hợp?

Tuy nhiên, có một điểm đặc biệt ở đây là IMHO có thể tha thứ cho sự thay đổi tiếp theo của mô hình "cuối cùng" sau khi xem xét cẩn thận các trường hợp chính xác : Khi chúng tôi phát hiện ra quá mức, mọi thay đổi được đề xuất (ít df / hạn chế hoặc tổng hợp hơn) cho mô hình sẽ theo hướng ít quá mức (hoặc ít nhất là siêu đường kính ít bị quá mức). Điểm của kiểm tra độc lập là phát hiện quá mức - thiếu chất lượng có thể được phát hiện bởi dữ liệu đã được sử dụng trong quá trình đào tạo.

Vì vậy, nếu chúng ta đang nói, về việc giảm thêm số lượng biến tiềm ẩn trong mô hình PLS sẽ tương đối lành tính (nếu thay đổi được đề xuất sẽ là một loại mô hình hoàn toàn khác, giả sử PLS thay vì SVM, tất cả các cược sẽ bị tắt ), và tôi thậm chí sẽ thoải mái hơn về điều đó nếu tôi biết rằng chúng ta dù sao cũng đang ở giai đoạn trung gian của mô hình hóa - sau tất cả, nếu các mô hình được tối ưu hóa vẫn không ổn định, không có câu hỏi nào cần thêm trường hợp. Ngoài ra, trong nhiều tình huống, cuối cùng bạn sẽ cần thực hiện các nghiên cứu được thiết kế để kiểm tra chính xác các khía cạnh khác nhau của hiệu suất (ví dụ: khái quát hóa dữ liệu thu được trong tương lai). Tuy nhiên, tôi khẳng định rằng quy trình mô hình hóa đầy đủ sẽ cần phải được báo cáo và ý nghĩa của những thay đổi muộn này sẽ cần được thảo luận cẩn thận.

Ngoài ra, có thể tổng hợp ước tính hiệu suất CV tương tự và bao gồm các kết quả có sẵn từ các kết quả đã có sẵn - đây là loại "xử lý hậu kỳ" khác của mô hình mà tôi sẵn sàng xem xét lành tính ở đây. Tuy nhiên, một lần nữa, sẽ tốt hơn nếu nghiên cứu được thiết kế ngay từ đầu để kiểm tra xem tập hợp không mang lại lợi thế nào cho các dự đoán riêng lẻ (đó là một cách khác để nói rằng các mô hình riêng lẻ ổn định).


Cập nhật (2019): tôi càng nghĩ về những tình huống này, tôi càng ủng hộ phương pháp "xác thực chéo lồng nhau rõ ràng mà không cần lồng" .


Lựa chọn mô hình Wrt, nếu trình phân loại không ổn định, chúng ta có nên chọn mô hình có hiệu suất trung bình trong số các mô hình tốt nhất không? Lựa chọn này sẽ tương tự như đề xuất của bạn để so sánh hiệu suất bên trong với hiệu suất bên ngoài.
viyps

2
@davips: Nếu các mô hình không ổn định, tối ưu hóa sẽ không hoạt động (mất ổn định gây ra phương sai bổ sung). Tuy nhiên, việc chọn một mô hình có hiệu suất trung bình (hoặc trung bình) sẽ không giúp ích gì. Thay vào đó, nếu các mô hình không ổn định, tôi khuyên bạn nên sử dụng các mô hình hạn chế hơn (ví dụ: chính quy hóa mạnh hơn) hoặc xây dựng một mô hình tập hợp (khác về cơ bản so với việc chọn một mô hình).
cbeleites

1
@ user99889: vui lòng xem câu trả lời cập nhật.
cbeleites

1
@ user99889: có - nhưng đừng mong đợi phép màu ở đó. Nếu sự ổn định là một vấn đề khi đào tạo với 80% các trường hợp (k = 5) thì đó có thể sẽ là một vấn đề với k = 10 tức là 90% của n = thêm 12,5% so với các mô hình thay thế 80% / k = 5.
cbeleites

1
@cbeleites: một giả thuyết liên quan. Giả sử tôi quyết định tìm kiếm một không gian tham số c: [1,2,3]. Tôi thực hiện CV lồng nhau trên toàn bộ dữ liệu của mình và thấy hiệu suất không quá tuyệt vời. Do đó, tôi mở rộng không gian tìm kiếm của mình thành c: [0,5,1,1,5,2,2,5,3,3,5,4]. Tôi đã làm một cái gì đó rất xấu? Có vẻ như về cơ bản tôi đã thay đổi không gian tham số của mình (là một phần của quy trình mô hình hóa) dựa trên kiến ​​thức thu được từ dữ liệu thử nghiệm, và do đó cần phải đánh giá dữ liệu bên ngoài dữ liệu hiện tại của tôi? Rất vui khi đặt câu hỏi này thành một câu hỏi riêng nếu bạn nghĩ nó tốt nhất.
dùng0

27

Ngoài câu trả lời xuất sắc của cebeleites (+1), ý tưởng cơ bản là xác thực chéo được sử dụng để đánh giá hiệu suất của một phương pháp để phù hợp với một mô hình, chứ không phải của chính mô hình. Nếu bạn cần thực hiện lựa chọn mô hình, thì bạn cần thực hiện điều đó một cách độc lập trong mỗi lần của quy trình xác thực chéo, vì đây là một phần không thể thiếu của quy trình khớp mô hình. Nếu bạn sử dụng quy trình lựa chọn mô hình dựa trên xác thực chéo, điều này có nghĩa là bạn kết thúc với xác thực chéo được lồng nhau. Rất hữu ích khi xem xét mục đích của mỗi xác thực chéo - một là để lựa chọn mô hình, một là để ước tính hiệu suất.

Tôi sẽ tạo mô hình cuối cùng của mình bằng cách khớp mô hình (bao gồm lựa chọn mô hình) cho toàn bộ tập dữ liệu, sau khi sử dụng xác thực chéo lồng nhau để có ý tưởng về hiệu suất mà tôi có thể mong đợi một cách hợp lý để có được từ mô hình đó.


1
Tại sao bạn cần get an idea of the performance?
viyps

1
@davips Nói chung nếu một phương pháp thống kê sẽ được sử dụng cho một số mục đích thực tế, thì người dùng thường muốn có một số ý tưởng về cách thức hoạt động của nó (ví dụ: kiểm tra sàng lọc y tế). Ngoài ra nếu bạn đang phát triển một thuật toán học máy thì sẽ rất hữu ích khi có một ước tính không thiên vị về hiệu suất của nó so với các phương pháp cạnh tranh. Nó cũng là một phương tiện hữu ích để xác nhận xem phương thức có thực sự hoạt động hay không (không hợp lệ nếu xác thực chéo được sử dụng cả để chọn tham số và ước tính hiệu suất).
Dikran Marsupial

5
Vì vậy, để thực sự quyết định tham số nào sẽ sử dụng trong mô hình cuối cùng, bạn sẽ thực hiện vòng lặp bên trong một lần? Vì vậy, nếu vòng lặp bên trong được xác thực 10 lần, bạn sẽ giữ 1/10 dữ liệu đào tạo mỗi mô hình lặp lại 10 lần này và sau đó chọn giá trị tham số có lỗi trung bình nhỏ nhất? Sau đó đào lại mô hình với giá trị tham số đó trên toàn bộ tập dữ liệu?
emschorsch

2
Vâng, đó là chính xác. r
Dikran Marsupial

1
@FedericoTedeschi Thập tự-kiểm chứng thực cần phải được lồng vào nhau, chứ không phải chỉ đơn thuần là một sự chia rẽ khác nhau để có được một hiệu suất ước lượng không thiên vị (xem phần 5.3 của giấy của tôi jmlr.csail.mit.edu/papers/volume11/cawley10a/cawley10a.pdf ) . Nói chung, tôi chỉ sử dụng LOOCV để lựa chọn mô hình cho các mô hình có thể tính toán hiệu quả và sẽ sử dụng bootstrapping / đóng gói cho các bộ dữ liệu nhỏ của mô hình (với lỗi OOB thay thế xác thực chéo bên ngoài).
Dikran Marsupial

7

Tôi không nghĩ có ai thực sự trả lời câu hỏi đầu tiên. Bằng cách "xác thực chéo lồng nhau" Tôi nghĩ rằng anh ta có nghĩa là kết hợp nó với GridSearch. Thông thường GridSearch có CV tích hợp và lấy tham số về số lần chúng tôi muốn kiểm tra. Kết hợp cả hai tôi nghĩ đó là một cách thực hành tốt nhưng mô hình từ GridSearch và CrossValidation không phải là mô hình cuối cùng của bạn. Cuối cùng, bạn nên chọn các tham số tốt nhất và huấn luyện một mô hình mới với tất cả dữ liệu của mình hoặc thậm chí thực hiện CrossValidation ở đây trên dữ liệu chưa xem và sau đó nếu mô hình đó thực sự tốt, bạn sẽ huấn luyện nó trên tất cả dữ liệu của mình. Đó là mô hình cuối cùng của bạn.


3
để làm rõ, trong python scikit-learn, GridSearchCV(refit=True)thực sự chỉnh lại một mô hình trên dữ liệu ĐẦY ĐỦ bằng cách sử dụng các tham số tốt nhất, do đó không cần thêm bước. Xem tài liệu
Paul

Bạn đã đúng về tùy chọn tái trang bị. Tôi chỉ nói rõ ràng thôi !!
anselal

"Mô hình từ GridSearch không phải là mô hình cuối cùng của bạn". Nhưng quan điểm của tôi là mô hình tìm kiếm lưới với refit = True mô hình cuối cùng. Bạn có nghĩa là bạn và tôi ở trên cùng một trang? Nhưng sau đó tôi vẫn không thấy nơi lồng nhau xảy ra trong tìm kiếm Grid với CV. Nó có vẻ giống như một lớp CV đối với tôi (ví dụ: CV 5 lần trong tìm kiếm dạng lưới là một lớp CV).
Paul

Chúng tôi đang ở cùng một trang về việc tái trang bị. Nhưng với CV lồng nhau, chúng tôi có nghĩa là bạn tạo một vòng CV khác bên ngoài GridSearch của bạn, bỏ một số dữ liệu ra khỏi khóa đào tạo và kiểm tra mô hình cuối cùng của bạn để xem liệu nó có khái quát không (đưa ra dự đoán tốt về dữ liệu chưa biết)
anselal
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.