Tại sao không đào tạo mô hình cuối cùng trên toàn bộ dữ liệu sau khi thực hiện dữ liệu kiểm tra cơ sở điều chỉnh siêu chuẩn và dữ liệu xác thực cơ sở lựa chọn mô hình?


9

Theo toàn bộ dữ liệu, ý tôi là đào tạo + kiểm tra + xác nhận

Khi tôi đã sửa lỗi siêu tham số của mình bằng dữ liệu xác thực và chọn mô hình sử dụng dữ liệu thử nghiệm, sẽ tốt hơn nếu có một mô hình được đào tạo trên toàn bộ dữ liệu để các tham số được đào tạo tốt hơn thay vì chỉ đào tạo mô hình dữ liệu đào tạo


2
Bạn KHÔNG BAO GIỜ sửa chữa siêu âm của bạn bằng cách sử dụng dữ liệu thử nghiệm của bạn. Bạn chỉ làm hỏng toàn bộ thử nghiệm của mình bằng cách xóa nhóm kiểm soát mù (bộ kiểm tra).
JahKnows

@JahKnows Sau khi tôi hoàn thành việc điều chỉnh các tham số siêu cho một mô hình, tôi không hiểu tác hại ngoại trừ việc tôi sẽ không biết nó khái quát tốt như thế nào qua một tập dữ liệu khác. Làm thế nào tôi làm hỏng thí nghiệm của tôi? tui bỏ lỡ điều gì vậy?
Apoorva Abhishekh

Câu trả lời:


8

Câu hỏi là theo một giả định sai. Nhiều người làm những gì bạn nói họ "không thể" làm.

Trong thực tế, việc thực hiện tìm kiếm lưới trong gói sklearn được triển khai rộng rãi thực hiện điều đó. Trừ khi refit=False, nó sẽ đào tạo lại mô hình cuối cùng bằng cách sử dụng toàn bộ dữ liệu.

Tôi nghĩ đối với một số siêu âm, điều này có thể không được mong muốn lắm, vì chúng liên quan đến khối lượng dữ liệu. Ví dụ, hãy xem xét min_samples_leafchiến thuật cắt tỉa trước cho cây quyết định . Nếu bạn có nhiều dữ liệu hơn, việc cắt tỉa trước có thể không thực hiện như bạn muốn.

Nhưng một lần nữa, hầu hết mọi người thực tế đào tạo lại bằng cách sử dụng toàn bộ dữ liệu sau khi xác thực chéo, để họ kết thúc với mô hình tốt nhất có thể.

Phụ lục: @NeilSlater nói bên dưới rằng một số người thực hiện giữ trên đầu CV. Nói cách khác, họ có sự phân tách kiểm tra tàu và sau đó thực hiện lựa chọn mô hình trong khóa đào tạo. Theo ông, họ đào tạo lại bằng cách sử dụng bộ huấn luyện ban đầu tách ra, nhưng không phải là bộ thử nghiệm. Bộ thử nghiệm sau đó được sử dụng để thực hiện ước lượng mô hình cuối cùng. Cá nhân, tôi thấy ba lỗ hổng về điều này: (a) nó không giải quyết được vấn đề mà tôi đã đề cập với một số siêu âm phụ thuộc vào khối lượng đào tạo vì dù sao bạn đang đào tạo lại, (b) khi thử nghiệm nhiều mô hình, tôi thích tinh vi hơn các phương thức như xác thực chéo lồng nhau để không có dữ liệu nào bị lãng phí và (c) giữ lại là một phương pháp khủng khiếp để suy ra cách một mô hình sẽ khái quát hóa khi bạn có ít dữ liệu.


Tính năng này là về việc sử dụng lại xác thực chéo, vẫn không nên sử dụng lại dữ liệu thử nghiệm, bởi vì bạn chỉ có các giả định từ xác thực chéo và không có thước đo hiệu suất. Bất kỳ lỗi hoặc tham số vấn đề nào (chẳng hạn như ví dụ bạn đưa ra) có thể làm cho mô hình trở nên tồi tệ hơn không thể phát hiện được.
Neil Slater

@NeilSlater Tôi không hiểu những gì bạn nói ở đây: "Tính năng này là về việc sử dụng lại xác thực chéo"
Ricardo Cruz

"tính năng" -> refittùy chọn của hàm GridSearchCV. Nó không phù hợp để bao gồm dữ liệu kiểm tra được tổ chức (thậm chí không thể xem dữ liệu đó).
Neil Slater

@NeilSlater, bạn có thể dễ dàng tự kiểm tra mã nếu bạn không tin tôi (tại đây) . Nếu refit = True, thì "phù hợp với công cụ ước tính tốt nhất bằng cách sử dụng toàn bộ tập dữ liệu".
Ricardo Cruz

1
@NeilSlater, đó không phải là kinh nghiệm của tôi, nhưng tôi đã thêm kinh nghiệm của bạn vào nhận xét của mình để người khác có thể hưởng lợi từ nó. Cảm ơn bạn.
Ricardo Cruz

1

Có bạn có thể.

Vì dữ liệu thử nghiệm được cho là từ phân phối tương tự để đào tạo dữ liệu, bạn sẽ không phá vỡ mô hình của mình. Nếu bạn đã đào tạo mô hình đúng cách, thì bạn sẽ nhận thấy không có thay đổi đáng kể (ngoại trừ số liệu chính xác tốt hơn trên dữ liệu kiểm tra / xác nhận trước đó).

Nhưng thật hiếm khi dữ liệu thử nghiệm đến từ phân phối chính xác giống như dữ liệu tàu hỏa, do đó, trong trường hợp ứng dụng thực tế, bạn có thể có được tính khái quát tốt hơn cho mô hình của mình.


1
Vấn đề với việc bao gồm dữ liệu thử nghiệm theo đề xuất này, hiện tại bạn không có sự đo lường nào về mức độ tổng quát của mô hình. Có bạn có thể mong đợi nó để khái quát tốt hơn. Tuy nhiên, bạn không biết , vì bạn đã loại bỏ khả năng đo lường của mình. Tôi đề nghị thêm cảnh báo đó và giải thích tại sao đôi khi điều này vẫn ổn (ví dụ: khi nhận dữ liệu mới, bạn có thể coi đó là một thử nghiệm mới và xây dựng một phép đo mới theo thời gian, trong khi hy vọng tận dụng mô hình tốt hơn - mặc dù đó là một rủi ro)
Neil Slater

@NeilSlater: Tôi hiểu rằng tôi đã loại bỏ khả năng của mình để đo lường mức độ tốt của nó trên một tập dữ liệu khác nhau. Nhưng nếu tôi có cả kiểm tra và kiểm tra, ngay cả sau khi điều chỉnh tham số siêu tốc, tôi có thể đào tạo lại mô hình của mình trên tàu + kiểm tra, tôi sẽ vẫn còn giữ lại để kiểm tra xem mô hình của tôi có khái quát không. Tôi biết điều này khác với những gì tôi yêu cầu. Nhưng tôi chỉ muốn biết quan điểm của bạn.
Apoorva Abhishekh

1
@ApoorvaAbhishekh: Nếu bạn đã có một bộ dữ liệu lưu trữ khác, thì có, bạn có thể sử dụng nó làm thử nghiệm mới đối với mô hình mới được đào tạo trên new_train = {tàu cũ, cv cũ, thử nghiệm cũ}. Sau đó, bạn sẽ có được một biện pháp tổng quát hóa. Mặc dù bạn phải cẩn thận không sử dụng quá mức - nếu nó xảy ra sự cố với bộ kết hợp mới (ví dụ: cần dừng sớm để thay đổi do có nhiều dữ liệu hơn) thì bạn cũng không thể sử dụng nó làm bộ cv mới. . . trừ khi bạn có một khoản giữ khác được đặt trong dự trữ. . .
Neil Slater

@NeilSlater Về lý thuyết bạn cần tập dữ liệu mới để biết hiệu suất. Trong thực tế, bạn có thể chắc chắn rằng mô hình của bạn hoạt động tốt, vì bạn đã làm việc với nó một thời gian dài và bạn biết những gì mong đợi. Nhưng thông thường, bạn cũng có dữ liệu khác để kiểm tra hiệu suất của một mô hình, ví dụ, trong thị giác máy tính - dữ liệu chưa được gắn nhãn. Nó không đúng, nhưng nó cũng hoạt động. Chắc chắn đó là trường hợp cực đoan, nhưng tôi muốn nói rằng nó có thể hoạt động. Bản thân tôi luôn có bộ kiểm tra mà tôi không kết hợp vào đào tạo.
Il'ya Zhenin

1

Câu trả lời cho câu hỏi này phụ thuộc vào thuật toán đào tạo (công nghệ) mà bạn sử dụng. Ví dụ, tôi đã thấy một số cách tiếp cận trong phân loại đồng bộ trong đó các bộ huấn luyện và xác nhận (nhưng không kiểm tra) được kết hợp ở cuối. Điều rất quan trọng là phải biết rằng thậm chí xác nhận được sử dụng chủ yếu để quyết định các tham số siêu tốc, một số tham số siêu này có thể là một chức năng của dữ liệu được sử dụng cho đào tạo. Ví dụ: trong xác thực DNN được sử dụng để biết khi nào nên dừng, vì quá mức có thể xảy ra do việc điều chỉnh các tham số (trọng số) của mạng, chúng ta cần một cách để biết khi nào nên dừng. Nếu không có bộ xác nhận, bạn sẽ đi bộ một cách mù quáng trong quá trình đào tạo. Mặt khác, nếu bạn sử dụng chính xác cùng số lần lặp như đã chỉ định trước đó, thì có một khả năng cao là bạn sẽ không đạt được từ các mẫu bổ sung này. Bộ thử nghiệm hoàn toàn không nên chạm vào, như đã nêu ở trên mà không có bộ thử nghiệm, bạn sẽ không có phương pháp để đánh giá mô hình của mình. Đây là cờ bạc, bạn KHÔNG THỂ cung cấp bất kỳ mô hình hoặc giải pháp nào mà không ước tính độ chính xác của nó trên phân phối dữ liệu thực (được biểu thị bằng dữ liệu thử nghiệm).


Tôi có nghĩa là sau khi đào tạo về dữ liệu đào tạo, siêu điều chỉnh tham số trên dữ liệu xác nhận và chọn cơ sở mô hình dữ liệu thử nghiệm, tôi có thể đào tạo cơ sở mô hình của mình toàn bộ dữ liệu. Hoặc, tôi có thể kết hợp dữ liệu huấn luyện và dữ liệu xác nhận sau khi tôi hoàn thành việc điều chỉnh siêu tham số và ước tính độ chính xác bằng cách sử dụng dữ liệu thử nghiệm. Xin lỗi vì đã viết không chính xác. Đã sửa nó ngay.
Apoorva Abhishekh
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.