Tìm kiếm lưới trên xác nhận chéo k-Fold


16

Tôi đã có bộ dữ liệu gồm 120 mẫu trong cài đặt xác thực chéo 10 lần. Hiện tại, tôi chọn dữ liệu huấn luyện của lần đầu tiên và thực hiện xác nhận chéo 5 lần trên đó để chọn các giá trị của gamma và C bằng cách tìm kiếm theo lưới. Tôi đang sử dụng SVM với kernel RBF. Vì tôi đang thực hiện mười xác thực chéo để báo cáo độ chính xác, hãy nhớ lại, tôi có thực hiện tìm kiếm lưới này trong dữ liệu đào tạo của mỗi lần giữ (có 10 lần giữ, mỗi lần có 10% kiểm tra và 90% dữ liệu đào tạo) không? Điều đó có quá tốn thời gian không?

Nếu tôi sử dụng gamma và C của lần giữ đầu tiên và sử dụng nó cho 9 lần giữ lại của xác thực chéo k-gấp, thì đó là vi phạm vì tôi đã sử dụng dữ liệu xe lửa để lấy gamma và C và sử dụng lại một phần của dữ liệu đào tạo như thử nghiệm trong lần thứ hai?


Câu hỏi này cần thêm thông tin. Những mô hình bạn đang phù hợp? Gamma và C trong mô hình này là gì? Hơn nữa, bạn có thể cung cấp thông tin này bằng cách chỉnh sửa câu hỏi, và không có ý kiến.
xác suất

Câu trả lời:


14

Có, đây sẽ là một vi phạm vì dữ liệu thử nghiệm cho các lần 2-10 của xác thực chéo bên ngoài sẽ là một phần của dữ liệu huấn luyện cho lần 1 được sử dụng để xác định các giá trị của hạt nhân và các tham số chính quy. Điều này có nghĩa là một số thông tin về dữ liệu thử nghiệm có khả năng bị rò rỉ vào thiết kế của mô hình, điều này có khả năng mang lại sự thiên vị lạc quan cho việc đánh giá hiệu năng, đó là sự lạc quan nhất đối với các mô hình rất nhạy cảm với cài đặt của các tham số siêu (nghĩa là nó thích nhất các mô hình với một tính năng không mong muốn).

Sự thiên vị này có khả năng mạnh nhất đối với các bộ dữ liệu nhỏ, chẳng hạn như dữ liệu này, vì phương sai của tiêu chí lựa chọn mô hình là lớn nhất đối với các bộ dữ liệu nhỏ, điều này khuyến khích việc phù hợp với tiêu chí lựa chọn mô hình, có nghĩa là nhiều thông tin về dữ liệu thử nghiệm có thể bị rò rỉ xuyên qua.

Tôi đã viết một bài báo về điều này một hoặc hai năm trước vì tôi khá giật mình bởi mức độ sai lệch so với xác thực chéo hoàn toàn có thể giới thiệu, có thể dễ dàng tạo ra sự khác biệt về hiệu suất giữa các hệ thống phân loại. Bài viết là "Về sự phù hợp quá mức trong lựa chọn mô hình và xu hướng lựa chọn tiếp theo trong đánh giá hiệu suất" Gavin C. Cawley, Nicola LC Talbot; JMLR 11 (tháng 7): 2079−2107, 2010.

Về cơ bản, việc điều chỉnh các tham số siêu nên được coi là một phần không thể thiếu của việc khớp mô hình, vì vậy mỗi lần bạn huấn luyện SVM trên một mẫu dữ liệu mới, hãy lấy lại các tham số siêu cho mẫu đó một cách độc lập. Nếu bạn tuân theo quy tắc đó, có lẽ bạn không thể đi quá xa. Rất đáng để chi phí tính toán để có được ước tính hiệu suất không thiên vị, vì nếu không, bạn sẽ gặp rủi ro khi rút ra kết luận sai từ thí nghiệm của mình.


1
Kinh nghiệm cá nhân của tôi khiến tôi cũng rất thận trọng về các nguồn quá mức như vậy.
cbeleites hỗ trợ Monica

6

Sau khi thực hiện tìm kiếm lưới cho từng mô hình thay thế, bạn có thể và nên kiểm tra một số điều sau:

  • biến thể của các thông số tối ưu (ở đây C ). Các thông số tối ưu có ổn định không? Nếu không, bạn rất có thể gặp rắc rối.γC
  • So sánh hiệu suất được báo cáo của xác nhận chéo bên trong và bên ngoài.
    Nếu xác thực chéo bên trong (tức là điều chỉnh) trông tốt hơn nhiều so với bên ngoài (xác thực mô hình cuối cùng), thì bạn cũng gặp rắc rối: bạn đang quá mức. Có một rủi ro đáng kể, rằng các tham số điều chỉnh là không tối ưu. Tuy nhiên, nếu xác thực chéo bên ngoài được thực hiện đúng (tất cả các bộ kiểm tra thực sự độc lập với các mô hình thay thế tương ứng), thì ít nhất bạn vẫn có ước tính không thiên vị (!) Về hiệu suất của mô hình. Nhưng bạn không thể chắc chắn rằng nó là tối ưu.
  • Làm thế nào phát âm là tối ưu? Liệu hiệu suất giảm xuống nhanh chóng cho các tham số tối ưu? Làm thế nào tốt là hiệu suất tối ưu?

Có rất nhiều điều để nói về việc quá mức bằng cách lựa chọn mô hình. Tuy nhiên, thật tốt khi nhớ rằng cả phương sai và thiên vị lạc quan đều có thể thực sự gây tổn thương

  • phương sai có nghĩa là bạn có thể vô tình kết thúc khá xa các siêu tham số thực sự tối ưu.
  • nhưng cũng thiên vị có thể làm tổn thương: nếu bạn đang sử dụng quá mức, bạn có thể gặp phải tình huống trong đó nhiều mô hình trông hoàn hảo với xác nhận chéo bên trong (nhưng chúng không thực sự). Trong trường hợp đó, việc điều chỉnh có thể đi lạc hướng vì nó không nhận ra sự khác biệt giữa các mô hình.
  • Nếu sự thiên vị phụ thuộc vào các tham số siêu, bạn đang gặp rắc rối lớn.

Nếu bạn quan tâm đến một ví dụ và bạn có thể đọc tiếng Đức, tôi có thể đưa luận án Ngoại giao của mình lên mạng.

Theo kinh nghiệm của tôi, điều chỉnh siêu âm là một ý tưởng cực kỳ hiệu quả để vượt quá ...

Bây giờ, nếu bạn nhận ra rằng bạn đang sử dụng quá mức, bạn có hai tùy chọn chính:

  • báo cáo rằng việc tối ưu hóa có vấn đề với việc quá mức nhưng bạn đã thực hiện xác nhận bên ngoài phù hợp dẫn đến ... (kết quả xác thực chéo bên ngoài).
  • hạn chế sự phức tạp của mô hình. Một cách để làm điều này là sửa các siêu tham số:

Thay thế cho việc điều chỉnh các tham số siêu cho từng tập huấn luyện, bạn có thể chỉ định trước các tham số ( siêu) (tức là sửa chúng trước). Tôi làm điều đó càng nhiều càng tốt cho các mô hình của tôi vì tôi thường có ít trường hợp hơn bạn có, xem bên dưới.
Tuy nhiên, việc sửa lỗi này phải thực sự được thực hiện và trung thực trước đó: ví dụ: tôi đã hỏi một đồng nghiệp về các tham số được tối ưu hóa của anh ta trên một tập dữ liệu tương tự (thử nghiệm độc lập) hoặc thực hiện thử nghiệm trước, bao gồm tìm kiếm lưới trên các tham số. Thử nghiệm đầu tiên đó sau đó được sử dụng để sửa một số tham số thử nghiệm cũng như các tham số mô hình cho thử nghiệm thực tế và phân tích dữ liệu. Xem bên dưới để giải thích thêm.

Tất nhiên có thể thực hiện kiểm tra thích hợp trên các mô hình được tối ưu hóa tự động (xác thực kép hoặc lồng nhau), nhưng kích thước mẫu của bạn có thể không cho phép chia dữ liệu hai lần .
Trong tình huống đó, IMHO sẽ tốt hơn nhiều khi báo cáo ước tính trung thực cho một mô hình được xây dựng bằng kinh nghiệm chuyên môn về cách chọn tham số mô hình hơn là báo cáo ước tính quá mức trên một loại mô hình được tối ưu hóa tự động.
Một quan điểm khác về tình huống này là bạn phải đánh đổi

  • hiệu suất kém hơn do đặt sang một bên các trường hợp khác để tối ưu hóa tham số (kích thước mẫu đào tạo nhỏ hơn => mô hình kém hơn, nhưng tham số "tối ưu")
  • hiệu suất kém hơn do sửa chữa tham số dưới mức tối ưu của chuyên gia (nhưng trên dữ liệu đào tạo lớn hơn).

Một số suy nghĩ tương tự về một câu hỏi tương tự: /stats//a/27761/4598


Về việc sửa các tham số và nhận xét của Dikran Marsupial

Tôi đang sử dụng thuật ngữ siêu tham số vì Dikran Marsupial sử dụng nó trong bài viết của mình (liên kết trong câu trả lời của anh ấy)

Tôi làm việc với dữ liệu phổ. Đây là một loại phép đo trong đó phân tích và mô hình hóa dữ liệu thường bao gồm khá nhiều tiền xử lý. Điều này có thể được xem là siêu tham số (ví dụ: nên sử dụng thứ tự đa thức nào cho đường cơ sở? Nên đưa vào các kênh đo lường nào?). Có các quyết định khác gần hơn với các tham số svm của bạn, ví dụ: có bao nhiêu thành phần chính sẽ sử dụng nếu PCA được thực hiện để giảm kích thước trước khi mô hình "thực" được đào tạo? Và đôi khi tôi cũng sử dụng phân loại SVM, vì vậy tôi phải quyết định các tham số SVM.

Bây giờ, IMHO cách tốt nhất để sửa các siêu tham số là nếu bạn có lý do đến từ ứng dụng. Ví dụ, tôi thường quyết định loại đường cơ sở nào được sử dụng bởi các lý do vật lý / hóa học / sinh học (nghĩa là kiến ​​thức về mẫu vật và hành vi quang phổ xuất phát từ đó). Tuy nhiên, tôi không biết về một đối số như vậy giúp với các tham số SVM ...

Trường hợp tiền thí nghiệm tôi đã đề cập ở trên trông như sau:

  • chúng tôi lấy dữ liệu của một loạt các tế bào (muốn phân biệt các dòng tế bào khác nhau).
  • Phổ được phân tích, SVM xác thực chéo kép được chạy (dành một hoặc hai đêm trên máy chủ tính toán).

    • γC
    • Tôi cũng quan sát thấy một mức quá mức nhất định: xác nhận chéo bên ngoài không hoàn toàn tốt như kết quả điều chỉnh. Đó là như mong đợi.
    • Tuy nhiên, có sự khác biệt về hiệu suất so với phạm vi điều chỉnh của các tham số siêu và hiệu suất trên lưới điều chỉnh trông khá mượt mà. Tốt
  • Kết luận của tôi là: mặc dù tôi không thể chắc chắn rằng các tham số siêu cuối cùng là tối ưu, nhưng xác thực chéo bên ngoài cho tôi một ước tính chính xác về hiệu suất của các mô hình thay thế.

  • Trong phần thử nghiệm, chúng tôi đã quyết định một số thay đổi trong thiết lập thử nghiệm (những điều không ảnh hưởng đến tín hiệu nhiễu của dữ liệu, nhưng điều đó tiến thêm một bước trong tự động hóa thiết bị)

  • Chúng tôi cải thiện các thiết lập thử nghiệm và có được phổ mới. Là tế bào, chúng cần được phát triển mới. Tức là tập dữ liệu mới là các lô văn hóa độc lập.

Bây giờ tôi phải đối mặt với quyết định: Tôi có nên "bỏ qua" xác nhận chéo bên trong và chỉ đi với các tham số siêu tôi đã xác định với dữ liệu cũ?

  • Như đã đề cập ở trên, tôi có nguy cơ rằng các tham số siêu xác định trước này không tối ưu.
  • Nhưng tôi cũng không thể chắc chắn có được các tham số siêu tối ưu thực sự bằng cách thực hiện xác nhận chéo (điều chỉnh) bên trong.
  • Tuy nhiên, việc điều chỉnh dữ liệu cũ đã ổn định.
  • Thực hiện tối ưu hóa tôi sẽ huấn luyện ít mẫu hơn: Vì dù sao tôi cũng có quá ít mẫu (TM) Tôi phải mong đợi có được các mẫu xấu hơn nếu tôi đặt nhiều mẫu hơn cho vòng xác thực chéo thứ hai.

Vì vậy, trong trường hợp đó, tôi đã quyết định sử dụng các tham số cố định (theo kinh nghiệm trên dữ liệu tương tự và biết rằng trong tương lai chúng tôi sẽ phải thực hiện "bài tập về nhà" của mình, bao gồm cả những việc khác kiểm tra lại các quyết định này với dữ liệu lớn).

Lưu ý rằng điều quan trọng là tôi bỏ qua phần bên trong ( điều chỉnh xác thực chéo), không phải phần bên ngoài. Với các tham số siêu cố định, tôi có được ước tính không thiên vị về hiệu suất của một mô hình tối ưu có thể. Đúng là ước tính này có thể có phương sai cao, nhưng phương sai này về cơ bản là giống nhau cho dù tôi có thực hiện điều chỉnh bên trong hay không.
Bỏ qua việc trả tiền chéo bên ngoài Tôi sẽ có được ước tính sai lệch lạc quan về một mô hình được điều chỉnh - tùy thuộc vào ứng dụng và dữ liệu có thể là vô giá trị (nếu rất nhiều quá mức) và xu hướng lạc quan có thể không chấp nhận được.


Rất tiếc khi phải hạ câu trả lời này, nhưng sử dụng các giá trị được chỉ định trước cho siêu tham số không phải là cách thực hành tốt vì việc khái quát hóa tối ưu phụ thuộc vào các cài đặt phù hợp cho các tham số này, sẽ thay đổi từ tập dữ liệu sang datset (và đối với các sự cố sẽ ít dữ liệu từ mẫu để lấy mẫu). Một tìm kiếm lưới thử nghiệm trước thậm chí còn tồi tệ hơn vì nó dẫn đến chính xác cùng một dạng sai lệch được thảo luận trong bài báo của tôi. Đối với các SVM, vấn đề chia dữ liệu hai lần không được áp dụng vì bạn có thể sử dụng xác thực chéo một lần ảo làm tiêu chí lựa chọn mô hình trong CV bên trong, gần như miễn phí.
Dikran Marsupial

Tuy nhiên, việc kiểm tra sự thay đổi của các tham số được tối ưu hóa là một gợi ý tuyệt vời. Nếu bạn có đủ dữ liệu mà các tham số và siêu tham số có thể được ước tính một cách đáng tin cậy từ dữ liệu thì các loại sai lệch tôi đề cập trong bài báo của tôi có lẽ sẽ không phải là vấn đề quá lớn. Tuy nhiên, nếu có nhiều thay đổi trong các giá trị siêu tham số được tối ưu hóa, do một tập dữ liệu nhỏ, đó là loại tình huống trong đó xác thực chéo và các phương pháp nghiêm ngặt khác như vậy thực sự cần thiết để tránh sai lệch đáng kể trong ước tính hiệu suất.
Dikran Marsupial

@DikranMarsupial: Tôi đã giải thích nền tảng của tôi rõ ràng hơn một chút, hãy xem. Ngoài ra, tôi đọc bài viết của bạn kỹ hơn. Tôi nghĩ rằng điểm của chúng tôi không cách xa nhau. Nếu bạn thích, hãy gặp nhau trong cuộc trò chuyện - Tôi có một loạt câu hỏi về bài viết của bạn ...
cbeleites hỗ trợ Monica

@DikranMarsupial: (thật không may, đối với hầu hết các dữ liệu của tôi, tôi không thể sử dụng phân tích bỏ đi vì tôi có cấu trúc dữ liệu lồng nhau / chữ tượng hình). Ngoài ra, tôi đã gặp một số bất ngờ xấu xí với việc bỏ qua một lần để tôi thực hiện xác nhận k-Fold hoặc out-of-bootstrap. Tuy nhiên, đó là lạc đề cho câu hỏi này.
cbeleites hỗ trợ Monica

@DikranMarsupial: Nếu các tham số được tối ưu hóa không ổn định, dù sao tôi cũng gặp rắc rối. Tất nhiên, sau đó tôi không thể kết luận rằng tôi có thể sử dụng các tham số này cho dữ liệu mới. Nhưng ngoài ra, tôi sẽ không gọi chúng (trong số nhiều bộ tham số?) Tối ưu cho mô hình cuối cùng ... Tôi đã thấy tối ưu hóa hoàn toàn hoang dã nhưng điều đó luôn đi kèm với kết quả rất chính xác của xác thực (điều chỉnh) bên trong . Và tôi có thể đo bằng cách so sánh xác nhận chéo bên ngoài với ước tính xác thực chéo bên trong của mô hình tối ưu. Cập nhật câu trả lời cho phù hợp.
cbeleites hỗ trợ Monica

5

γCkterr(γ,C)γCγ,C{2nl,2nl+1,,2nu}γ

Chìa khóa tôi nghĩ là tìm kiếm một số độ mịn trên bề mặt xung quanh mức tối thiểu cục bộ (hoặc mỗi hình chiếu 1 mờ) và không chỉ lấy mức tối thiểu toàn cầu.

γ(pσ)1pγCC


Vì vậy, giả sử tôi có một bộ dữ liệu với 120 mẫu. Tôi có nên tìm gamma và C ban đầu bằng 120 mẫu không. Sau đó, xác thực chéo 10 lần bằng cách sử dụng cùng gamma và C cho các lần giữ k khi sử dụng 90% dữ liệu để đào tạo và 10% dữ liệu để kiểm tra? Điều đó có nghĩa là tôi đã sử dụng cùng một bộ huấn luyện để lấy gamma và C và một phần của các mẫu cũng nằm trong bộ thử nghiệm?
dùng13420

γC

(γ,C)(γ,C)(γ,C)

2
λβ

2
λβλββ(λ)
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.