Quá liều: Không có viên đạn bạc?


21

Tôi hiểu rằng ngay cả khi tuân theo các quy trình lựa chọn mô hình và xác thực chéo phù hợp, việc quá mức sẽ xảy ra nếu một người tìm kiếm một mô hình đủ mạnh , trừ khi người ta áp đặt các hạn chế về độ phức tạp của mô hình, thời gian. Hơn nữa, thường thì mọi người cố gắng tìm hiểu các hình phạt về độ phức tạp của mô hình từ dữ liệu làm suy yếu sự bảo vệ mà họ có thể cung cấp.

Câu hỏi của tôi là: Có bao nhiêu sự thật cho tuyên bố trên?

Tôi thường nghe những người thực hành ML nói: " Tại công ty / phòng thí nghiệm của tôi, chúng tôi luôn thử mọi mô hình có sẵn (ví dụ từ các thư viện như caret hoặc scikit-learn ) để xem cái nào hoạt động tốt nhất ". Tôi thường lập luận rằng phương pháp này có thể dễ dàng vượt qua ngay cả khi họ nghiêm túc về việc xác nhận chéo và giữ các bộ giữ theo bất kỳ cách nào họ muốn. Hơn nữa, họ càng tìm kiếm nhiều, họ càng có khả năng phù hợp hơn. Nói cách khác, tối ưu hóa quá mức là một vấn đề thực sự và không có phương pháp phỏng đoán nào có thể giúp bạn chiến đấu chống lại nó một cách có hệ thống. Tôi có sai khi nghĩ theo cách này?


Bạn đang hỏi về ML mô hình cụ thể hoặc đa biến nói chung?
rumtscho

@rumtscho mọi thứ trong ML.
Amelio Vazquez-Reina

1
Cảm ơn @CagdasOzgenc: "không gian tìm kiếm càng lớn (các mô hình được xem xét), kết quả càng kém" . Không chắc chắn mức độ trừu tượng của "không gian tìm kiếm" mà bạn đang đề cập ở đây, nhưng bằng cách "cố gắng hết sức", tất nhiên tôi có nghĩa là tìm kiếm qua nhiều mô hình hơn và do đó làm tăng độ phức tạp / không gian tìm kiếm của "mô hình meta" (nếu bạn muốn) rằng chúng tôi đang cố gắng để phù hợp.
Amelio Vazquez-Reina

Câu trả lời:


8

Không phải là toàn bộ câu trả lời, nhưng một điều mà mọi người bỏ qua trong cuộc thảo luận này là Xác thực chéo (ví dụ) có nghĩa là gì, tại sao bạn sử dụng nó và nó bao gồm những gì?

Vấn đề tôi thấy với việc tìm kiếm quá khó là CV mà mọi người đang làm thường nằm trong một mô hình duy nhất. Dễ dàng thực hiện bằng cách đặt một folds=đối số của quy trình khớp mô hình. Nhưng khi bạn đi đến nhiều mô hình và thậm chí nhiều quy trình để tạo nhiều mô hình, bạn sẽ thêm một hoặc hai lớp khác mà bạn chưa gói trong CV.

Vì vậy, họ nên được sử dụng CV lồng nhau. Và họ cũng nên sử dụng "Target Shuffling" (thử nghiệm lấy mẫu lại / hoán vị) bao quanh toàn bộ quá trình của họ để xem quy trình của họ sẽ hoạt động tốt như thế nào nếu bạn phá vỡ mối quan hệ giữa các biến phụ thuộc và biến độc lập - tức là bạn làm tốt hơn bao nhiêu so với ngẫu nhiên xem xét toàn bộ quá trình của bạn?


1
+1. Thực hiện lựa chọn mô hình với các lớp CV đơn (hoặc quá ít) chạy tìm kiếm dạng lưới (lựa chọn mô hình) chắc chắn có thể dẫn đến quá mức (đối với bất kỳ ai quan tâm, tôi khuyên bạn nên sử dụng ví dụ này và các nguồn trong đó). Tôi đã đọc về "Target Shuffling" (đối với những độc giả khác, tôi khuyên bạn nên trình bày này ), nhưng bản thân tôi chưa bao giờ sử dụng nó; Tôi tự hỏi nếu nó cũng có thể bị lạm dụng, (ví dụ như thực hiện nhiều thử nghiệm dẫn đến kết quả dương tính giả, và do đó một lần nữa tìm kiếm "đủ cứng" (?)).
Amelio Vazquez-Reina

7

Trong hơn 4 năm kinh nghiệm của mình, tôi đã phát hiện ra rằng việc thử mọi mô hình có sẵn trong caret (hoặc scikit-learn) không nhất thiết dẫn đến thừa. Tôi đã thấy rằng nếu bạn có một bộ dữ liệu đủ lớn (10.000+ hàng) và số dư các lớp thậm chí ít hơn (nghĩa là không có sự mất cân bằng về lớp học như trong rủi ro tín dụng hoặc các vấn đề tiếp thị), thì việc cung cấp quá mức có xu hướng là tối thiểu. Điều đáng chú ý là tìm kiếm lưới của tôi về các tham số điều chỉnh có xu hướng không quá 30 hoán vị cho mỗi mô hình. Cuối cùng, nếu bạn sử dụng 100 hoặc 1.000 hoán vị cho mỗi mô hình, bạn có thể sẽ phù hợp hơn.

Cách bạn nói câu hỏi của bạn làm cho câu trả lời khá dễ dàng: ở mức cực đoan, vâng, quá mức có thể nếu không chắc chắn. Không có viên đạn bạc, và tôi nghi ngờ bất cứ ai sẽ đề nghị khác. Tuy nhiên, vẫn còn một phổ rộng hợp lý trong đó mức độ quá mức là đủ tối thiểu để có thể chấp nhận được. Có một lượng dữ liệu chưa thấy trong bộ lưu trữ xác thực của bạn chắc chắn sẽ giúp ích. Có nhiều bộ nắm giữ xác nhận chưa thấy thậm chí còn tốt hơn. Tôi đủ may mắn để làm việc trong một lĩnh vực mà tôi có một lượng lớn dữ liệu mới xuất hiện hàng ngày.

Nếu tôi ở vị trí mà tôi bị mắc kẹt với bộ dữ liệu tĩnh có ít hơn 2.000-3.000 quan sát (ví dụ: dữ liệu y tế khó có thể xuất hiện), tôi thường chỉ sử dụng các mô hình tuyến tính vì tôi thường thấy quá mức với độ dốc tăng cường và hỗ trợ các máy vectơ trên các bộ dữ liệu đủ nhỏ. Mặt khác, tôi đã nói chuyện với một Kaggler hàng đầu (5% hàng đầu) nói rằng anh ta xây dựng hàng chục ngàn mô hình cho mỗi cuộc thi và sau đó tập hợp chúng lại, sử dụng vài nghìn mô hình trong bộ đồng phục cuối cùng của anh ấy. Ông nói đây là lý do chính cho thành công của mình trên bảng xếp hạng cuối cùng.


1
Vâng. Tôi đã làm việc với dữ liệu có hàng triệu quan sát. Bất kể xác nhận nào tôi đã thử (kprint, bootstrapping và thậm chí là đơn giản), có rất ít biến thể trong các mô hình. Khi dữ liệu của bạn tăng lên, bạn càng ít quan tâm đến cách bạn xác nhận.
Ricardo Cruz

Nói cách khác, không có mô hình nào có đủ mức độ tự do để "ghi nhớ" hàng triệu quan sát.
Ricardo Cruz

5

Vì vậy, nhiều phụ thuộc vào quy mô. Tôi ước tôi có thể tin tưởng vào việc có hơn 2.000-3.000 trường hợp như @RyanZotti thường có; Tôi hiếm khi có 1/10 mà nhiều. Đó là một sự khác biệt lớn trong quan điểm giữa dân gian học máy "dữ liệu lớn" và những người làm việc trong các lĩnh vực như y sinh, có thể giải thích cho một số quan điểm khác nhau mà bạn sẽ tìm thấy trên trang web này.

Tôi sẽ trình bày một lời giải thích theo kinh nghiệm của tôi về vấn đề này. Vấn đề cơ bản trong việc quá mức, như được mô tả trên trang Wikipedia , là mối quan hệ giữa số lượng các trường hợp và số lượng tham số bạn đang đánh giá. Vì vậy, hãy bắt đầu với ý tưởng sơ bộ rằng nếu bạn có các mô hình M bạn đang chọn trong số và các tham số p trên mỗi mô hình thì bạn đang đánh giá một cái gì đó theo thứ tự các tham số Mp .

Nếu có nguy cơ quá mức, có hai cách chung để kéo trở lại mô hình tổng quát hơn: giảm số lượng tham số hoặc phạt chúng theo một cách nào đó.

Với các tập dữ liệu đủ lớn, bạn có thể không bao giờ đến quá mức. Nếu bạn có 20.000 trường hợp và 20 mô hình khác nhau với 100 tham số cho mỗi mô hình, thì bạn có thể không gặp rắc rối ngay cả khi không bị phạt vì bạn vẫn có 10 trường hợp cho mỗi tham số hiệu quả. Đừng thử chiến lược mô hình hóa đó chỉ với 200 trường hợp.

Tính trung bình của mô hình có thể được coi là một hình thức xử phạt. Trong ví dụ về Kaggler được trích dẫn bởi @RyanZotti, số lượng các trường hợp có lẽ là rất lớn và mỗi mô hình "vài nghìn" trong bản hòa tấu cuối cùng chỉ đóng góp một phần nhỏ của mô hình cuối cùng. Bất kỳ hoạt động quá mức cụ thể nào đối với một mô hình đóng góp cụ thể sẽ không có ảnh hưởng lớn đến kết quả cuối cùng, và số lượng lớn các trường hợp trong cuộc thi Kaggler càng làm giảm nguy cơ thừa.

Vì vậy, cũng như rất nhiều vấn đề ở đây, câu trả lời hợp lý duy nhất là: "Nó phụ thuộc". Trong trường hợp này, nó phụ thuộc vào mối quan hệ giữa số lượng các trường hợp và số lượng tham số hiệu quả được kiểm tra, cùng với mức phạt được áp dụng.


2

Tôi nghĩ rằng đây là một câu hỏi rất hay. Tôi luôn muốn quan sát đường cong hình chữ "U" trong các thí nghiệm xác thực chéo với dữ liệu thực. Tuy nhiên, kinh nghiệm của tôi với dữ liệu trong thế giới thực (~ 5 năm trong giao dịch thẻ tín dụng và dữ liệu giáo dục) không cho tôi biết sự phù hợp có thể dễ dàng xảy ra với số lượng lớn (tỷ hàng) dữ liệu trong thế giới thực .

Tôi thường quan sát rằng bạn có thể cố gắng hết sức để phù hợp với tập huấn luyện, nhưng bạn không thể làm quá nhiều (ví dụ: giảm tổn thất về 0), vì tập huấn luyện thực sự lớn và chứa nhiều thông tin và tiếng ồn.

Đồng thời, bạn có thể thử mô hình phức tạp nhất (không có bất kỳ quy tắc chính quy nào) trên dữ liệu thử nghiệm, và nó có vẻ tốt và thậm chí tốt hơn so với một số mô hình chính quy.

Cuối cùng, tôi nghĩ rằng tuyên bố của tôi có thể đúng chỉ trong điều kiện bạn có hàng tỷ điểm dữ liệu trong đào tạo. Theo trực giác, dữ liệu phức tạp hơn nhiều so với mô hình của bạn, do đó bạn sẽ không quá phù hợp. Đối với hàng tỷ hàng dữ liệu, ngay cả khi bạn đang sử dụng một mô hình với hàng ngàn tham số, nó vẫn ổn. Đồng thời, bạn không thể đủ khả năng tính toán để xây dựng một mô hình với hàng triệu tham số miễn phí.

Theo tôi đây cũng là lý do tại sao mạng lưới thần kinh và học tập sâu đã trở nên phổ biến những ngày này. So với hàng tỷ hình ảnh trên Internet, bất kỳ mô hình nào bạn có thể đủ khả năng đào tạo là không đủ để phù hợp.


1

Tôi đồng ý với @ ryan-zotti rằng việc tìm kiếm đủ mạnh không nhất thiết dẫn đến việc cung cấp quá mức - hoặc ít nhất là không đến mức để chúng tôi gọi đó là quá mức. Hãy để tôi thử nêu quan điểm của tôi về điều này:

Hộp đã từng nói:

Hãy nhớ rằng tất cả các mô hình đều sai; Câu hỏi thực tế là làm thế nào sai để họ không hữu ích.

(Để hoàn hảo sẽ yêu cầu tất cả dữ liệu, do đó sẽ loại bỏ sự cần thiết của một mô hình ở vị trí đầu tiên).

1

Bởi vì: cuối cùng, chúng tôi sẽ luôn có lỗi mô hình / thừa / thiếu - đó là khả năng phát hiện / đo lường lỗi này trong phạm vi quan tâm của chúng tôi để đưa ra những lựa chọn hợp lý.


1

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.