Làm cách nào tôi có thể giúp đảm bảo dữ liệu thử nghiệm không bị rò rỉ vào dữ liệu đào tạo?


60

Giả sử chúng ta có ai đó xây dựng một mô hình dự đoán, nhưng ai đó không nhất thiết phải thành thạo các nguyên tắc thống kê hoặc máy học phù hợp. Có thể chúng tôi đang giúp người đó khi họ đang học hoặc có thể người đó đang sử dụng một loại gói phần mềm nào đó đòi hỏi kiến ​​thức tối thiểu để sử dụng.

Bây giờ người này rất có thể nhận ra rằng thử nghiệm thực sự đến từ độ chính xác (hoặc bất kỳ số liệu nào khác) trên dữ liệu ngoài mẫu . Tuy nhiên, mối quan tâm của tôi là có rất nhiều sự tinh tế ở đó để lo lắng. Trong trường hợp đơn giản, họ xây dựng mô hình của họ và đánh giá nó trên dữ liệu đào tạo và đánh giá nó trên dữ liệu thử nghiệm được tổ chức. Thật không may, đôi khi có thể quá dễ dàng để quay lại và điều chỉnh một số tham số mô hình hóa và kiểm tra kết quả trên cùng một dữ liệu "thử nghiệm". Tại thời điểm này, dữ liệu không còn là dữ liệu ngoài mẫu thực sự nữa và việc quá mức có thể trở thành một vấn đề.

Một cách tiềm năng để giải quyết vấn đề này là đề xuất tạo nhiều bộ dữ liệu ngoài mẫu sao cho mỗi bộ dữ liệu thử nghiệm có thể bị loại bỏ sau khi sử dụng và hoàn toàn không được sử dụng lại. Điều này đòi hỏi rất nhiều quản lý dữ liệu, đặc biệt là việc phân tách phải được thực hiện trước khi phân tích (vì vậy bạn sẽ cần phải biết có bao nhiêu lần phân tách trước đó).

Có lẽ một cách tiếp cận thông thường hơn là xác nhận chéo k-gấp. Tuy nhiên, trong một số trường hợp, mất đi sự khác biệt giữa bộ dữ liệu "đào tạo" và "thử nghiệm" mà tôi nghĩ có thể hữu ích, đặc biệt đối với những người vẫn đang học. Ngoài ra tôi không tin điều này có ý nghĩa đối với tất cả các loại mô hình dự đoán.

Có cách nào mà tôi đã bỏ qua để giúp khắc phục vấn đề thừa và kiểm tra rò rỉ trong khi vẫn còn phần nào rõ ràng cho người dùng thiếu kinh nghiệm?


Michael, tôi đã đóng một chủ đề trùng lặp từ trang ML và hợp nhất các câu trả lời ở đây. Xin vui lòng chỉnh sửa câu hỏi này để phản ánh bất kỳ thay đổi nào bạn muốn thực hiện - Tôi không muốn thực hiện điều đó vì sợ vô tình thay đổi ý nghĩa của bạn.
whuber

Câu hỏi này đã cũ và có câu trả lời được chấp nhận, nhưng tôi không thể thoát ra khỏi đầu rằng tiền đề ban đầu dường như bị mâu thuẫn. Nếu đây là về các bài tập học tập, thì cách tốt nhất để tiếp cận nó là để chúng thất bại và tạo ra một mô hình phù hợp mà sau đó không dự đoán tốt. . ở độ dài cánh tay. Có rất nhiều sự tinh tế, như bạn nói.
Wayne

Câu trả lời:


50

Bạn nói đúng, đây là một vấn đề quan trọng trong mô hình thống kê / học máy. Về cơ bản, cách duy nhất để thực sự giải quyết vấn đề này là giữ lại một bộ kiểm tra độc lập và giữ nó cho đến khi nghiên cứu hoàn tất và sử dụng nó để xác nhận cuối cùng.

Tuy nhiên, chắc chắn mọi người sẽ nhìn vào kết quả trên bộ thử nghiệm và sau đó thay đổi mô hình của họ cho phù hợp; tuy nhiên điều này sẽ không nhất thiết dẫn đến sự cải thiện hiệu suất tổng quát hóa vì sự khác biệt về hiệu suất của các mô hình khác nhau có thể phần lớn là do mẫu dữ liệu thử nghiệm cụ thể mà chúng tôi có. Trong trường hợp này, khi đưa ra lựa chọn, chúng tôi rất phù hợp với lỗi kiểm tra.

Cách để hạn chế điều này là làm cho phương sai của lỗi kiểm tra càng nhỏ càng tốt (nghĩa là độ biến thiên của lỗi kiểm tra chúng ta sẽ thấy nếu chúng ta sử dụng các mẫu dữ liệu khác nhau làm tập kiểm tra, được rút ra từ cùng một phân phối cơ bản). Điều này dễ dàng đạt được nhất bằng cách sử dụng một bộ kiểm tra lớn nếu có thể, hoặc ví dụ: bootstrapping hoặc xác thực chéo nếu không có nhiều dữ liệu.

Tôi đã thấy rằng loại phù hợp quá mức trong lựa chọn mô hình này rắc rối hơn nhiều so với thường được đánh giá cao, đặc biệt là liên quan đến ước tính hiệu suất, xem

GC Cawley và NLC Talbot, Quá phù hợp trong lựa chọn mô hình và sai lệch lựa chọn tiếp theo trong đánh giá hiệu suất, Tạp chí Nghiên cứu Máy học, 2010. Nghiên cứu, tập. 11, trang 2079-2107, tháng 7 năm 2010 (www)

Loại vấn đề này đặc biệt ảnh hưởng đến việc sử dụng các bộ dữ liệu điểm chuẩn, được sử dụng trong nhiều nghiên cứu và mỗi nghiên cứu mới bị ảnh hưởng ngầm bởi kết quả của các nghiên cứu trước đó, vì vậy hiệu suất quan sát được có thể là một ước tính quá lạc quan về sự thật thực hiện phương pháp. Cách tôi cố gắng giải quyết vấn đề này là xem xét nhiều bộ dữ liệu (vì vậy phương pháp không được điều chỉnh theo một tập dữ liệu cụ thể) và cũng sử dụng nhiều phân tách kiểm tra / huấn luyện ngẫu nhiên để ước tính hiệu suất (để giảm phương sai của ước tính). Tuy nhiên, kết quả vẫn cần cảnh báo rằng các điểm chuẩn này đã quá phù hợp.

Một ví dụ khác khi điều này xảy ra là trong các cuộc thi học máy với bảng lãnh đạo dựa trên bộ xác nhận. Chắc chắn một số đối thủ cạnh tranh tiếp tục mày mò với mô hình của họ để tiến xa hơn lên bảng dẫn đầu, nhưng sau đó kết thúc ở cuối bảng xếp hạng cuối cùng. Lý do cho điều này là vì nhiều lựa chọn của họ đã trang bị quá mức cho bộ xác thực (tìm hiểu hiệu quả các biến thể ngẫu nhiên trong bộ xác thực nhỏ).

Nếu bạn không thể giữ một bộ kiểm tra thuần thống kê, thì tôi sợ hai tùy chọn tốt nhất là (i) thu thập một số dữ liệu mới để tạo một bộ kiểm tra thuần thống kê mới hoặc (ii) tạo ra sự cảnh báo rằng mô hình mới được dựa trên trên một lựa chọn được thực hiện sau khi quan sát lỗi tập kiểm tra, do đó, ước tính hiệu suất có thể có sai lệch lạc quan.


1
+1 Tôi rất ấn tượng bởi câu trả lời này được thông báo tốt như thế nào bởi kinh nghiệm và cách nó giải quyết câu hỏi hiệu quả như thế nào.
whuber

3
Xin chúc mừng, đây là chủ đề nghiên cứu chính của tôi trong một vài năm và tôi đã thấy rằng nhiều quy trình lựa chọn mô hình được sử dụng rộng rãi trong học máy rất mong manh và càng được đánh giá kỹ lưỡng, chúng càng hoạt động kém hiệu quả. Tôi sẽ không ngạc nhiên khi nhiều phương pháp được sử dụng trong học máy không hoạt động tốt hơn các phương pháp đơn giản cũ hơn, đơn giản là do các quy trình lựa chọn mô hình thiên vị được sử dụng trong quá trình đánh giá hiệu suất. Câu hỏi là một câu hỏi thực sự hay, điều quan trọng là đừng trở thành một phần của quy trình lựa chọn mô hình bằng cách mày mò!
Dikran Marsupial

Rất thú vị. (Tôi cũng đã nêu lên câu hỏi vì câu trả lời của bạn khiến tôi đánh giá cao nó hơn.)
whuber

2
(+1) Phản hồi tốt đẹp. Việc sử dụng một số phân loại trên cùng một tập dữ liệu mang lại độ chính xác kiểm tra quá lạc quan đã được thảo luận trong lựa chọn phân loại tối ưu và sai lệch âm trong ước tính tỷ lệ lỗi: một nghiên cứu thực nghiệm về dự đoán chiều cao , BMC MRM 2009, 9:85 (với một số slide PDF ở đây ), với các cuộc thảo luận khác về thiên vị đa quy tắc khi so sánh các quy tắc phân loại (Yousefi et al., Bioinformatics 2011, 27 (12): 1675).
chl

Cảm ơn các liên kết đến các giấy tờ, họ trông thú vị.
Dikran Marsupial

15

Một cách để đảm bảo điều này là đảm bảo rằng bạn đã mã hóa tất cả những điều bạn làm để phù hợp với mô hình, thậm chí là "mày mò". Bằng cách này, khi bạn chạy quy trình nhiều lần, thông qua xác nhận chéo, bạn đang giữ mọi thứ nhất quán giữa các lần chạy. Điều này đảm bảo rằng tất cả các nguồn biến thể tiềm năng được nắm bắt bởi quá trình xác thực chéo.

Điều cực kỳ quan trọng khác là đảm bảo rằng bạn có một mẫu đại diện, trong cả hai bộ dữ liệu. Nếu tập dữ liệu của bạn không đại diện cho loại dữ liệu bạn muốn sử dụng để dự đoán, thì bạn không thể làm gì nhiều. Tất cả các mô hình đều dựa trên một giả định rằng "cảm ứng" hoạt động - những điều chúng ta chưa quan sát thấy giống như những điều chúng ta đã quan sát.

Theo nguyên tắc chung, hãy tránh xa các quy trình phù hợp mô hình phức tạp trừ khi (i) bạn biết bạn đang làm gì và (ii) bạn đã thử các phương pháp đơn giản hơn và thấy rằng chúng không hoạt động và cách phương thức phức tạp khắc phục vấn đề với phương pháp đơn giản. "Đơn giản" và "phức tạp" có nghĩa là "đơn giản" hoặc "phức tạp" đối với người thực hiện việc lắp đặt. Lý do điều này rất quan trọng là vì nó cho phép bạn áp dụng những gì tôi muốn gọi là "kiểm tra đánh hơi" cho kết quả. Liệu kết quả có đúng không? Bạn không thể "ngửi" kết quả từ một quy trình mà bạn không hiểu.

N>>p p Np N<p

1Nieitest=(1hii)1eitraineitrainhiiiihii=ppN>>phiip=21N×pX

hii=xiT(XTX)1xi=1Nsx2(1xi)(x2¯x¯x¯1)(1xi)=1+x~i2N

x¯=N1ixix2¯=N1ixi2sx2=x2¯x¯2x~i=xix¯sxxi1N100x~i=5hii=26100126100=7410010000126100001%10000x~=5025%

N>>p2hii=xiTEET(XTX)1EETxiEXTXΛhii=ziTΛ1zi=j=1pzji2Λjjzi=ETxixi

ke{k}test=(IkH{k})1e{k}trainH{k}=X{k}(XTX)1X{k}TX{k}N>>p

Về cơ bản, tất cả điều này làm giảm việc sử dụng một điều khoản phạt, để tính đến sự khác biệt giữa các lỗi đào tạo và kiểm tra, chẳng hạn như BIC hoặc AIC. Điều này thực sự đạt được kết quả tương tự như những gì sử dụng một bộ kiểm tra, tuy nhiên bạn không bị buộc phải vứt bỏ thông tin hữu ích tiềm năng. Với BIC, bạn đang tính gần đúng bằng chứng cho mô hình, trông giống như toán học:

p(D|MiI)=p(y1y2yN|MiI)

Mi

p(D|MiI)=p(y1|MiI)p(y2yN|y1MiI)
=p(y1|MiI)p(y2|y1MiI)p(y3yN|y1y2MiI)
==i=1Np(yi|y1yi1MiI)
log[p(D|MiI)]=i=1Nlog[p(yi|y1yi1MiI)]

Điều này cho thấy một hình thức xác nhận chéo, nhưng trong đó tập huấn luyện liên tục được cập nhật, một lần quan sát từ bộ kiểm tra - tương tự như Bộ lọc Kalman. Chúng tôi dự đoán quan sát tiếp theo từ tập kiểm tra bằng cách sử dụng tập huấn luyện hiện tại, đo độ lệch so với giá trị quan sát bằng khả năng ghi nhật ký có điều kiện và sau đó cập nhật tập huấn luyện để bao gồm quan sát mới. Nhưng lưu ý rằng quy trình này tiêu hóa đầy đủ tất cả các dữ liệu có sẵn, đồng thời đảm bảo rằng mọi quan sát đều được kiểm tra như một trường hợp "ngoài mẫu". Nó cũng bất biến, ở chỗ nó không quan trọng bạn gọi là "quan sát 1" hay "quan sát 10"; kết quả là như nhau (tính toán có thể dễ dàng hơn đối với một số hoán vị so với những cái khác). Hàm mất cũng "thích nghi"Li=log[p(yi|y1yi1MiI)]Lii

Tôi sẽ đề nghị rằng việc đánh giá các mô hình dự đoán theo cách này sẽ hoạt động khá tốt.


4
+1 - lời khuyên tốt và thảo luận thú vị về đòn bẩy (đối với các bộ dữ liệu lớn). Tôi có xu hướng sử dụng các bộ dữ liệu nhỏ, trong đó có khả năng phù hợp quá mức và trong những tình huống như vậy thường rất dễ phù hợp với khả năng cận biên ("bằng chứng"), và kết thúc với một mô hình tồi tệ hơn bạn bắt đầu. Tôi nghi ngờ AIC và BIC tương tự "giòn". Tối ưu hóa về cơ bản là gốc rễ của mọi tội lỗi trong thống kê, vì bất kỳ lựa chọn nào bạn đưa ra hoặc tham số bạn điều chỉnh dựa trên một mẫu hữu hạn đều đưa ra khả năng phù hợp quá mức. Marginalizing an toàn hơn nhiều, nhưng nói chung là tính toán tốn kém.
Dikran Marsupial

2
+1 - đặc biệt là trên đoạn thứ ba (sử dụng các phương thức đơn giản trước). Nhắc nhở về Quy tắc Pareto của ol tốt. Nếu những người học máy sẽ ghi nhớ điều đó trước khi họ công bố nỗ lực không đủ của họ để chứng minh tính ưu việt của thuật toán nhân giống mới của họ ...
steffen

8

Tôi cho rằng cách duy nhất để đảm bảo điều này là người khác có dữ liệu thử nghiệm . Trong mối quan hệ tư vấn khách hàng, điều này có thể được quản lý khá dễ dàng: khách hàng cung cấp cho nhà tư vấn tập huấn để xây dựng các mô hình và trong tập huấn luyện này, nhà tư vấn có thể phân chia dữ liệu theo bất kỳ cách nào cần thiết để đảm bảo rằng quá mức không xảy ra; sau đó các mô hình được trả lại cho khách hàng để sử dụng trên dữ liệu thử nghiệm của họ.

Đối với một nhà nghiên cứu cá nhân, lý do là thực tiễn tốt nhất sẽ là bắt chước thiết lập này. Điều này có nghĩa là bỏ đi một số dữ liệu để kiểm tra, sau khi tất cả các lựa chọn mô hình đã được thực hiện. Thật không may, như bạn nói, điều này không được thực hiện bởi nhiều người, và nó thậm chí còn xảy ra với những người nên biết rõ hơn!

Tuy nhiên, cuối cùng nó phụ thuộc vào những gì mô hình đang được sử dụng cho. Nếu bạn chỉ quan tâm đến dự đoán trên tập dữ liệu duy nhất đó, thì có lẽ bạn có thể vượt quá tất cả những gì bạn thích? Tuy nhiên, nếu bạn đang cố gắng quảng bá mô hình của mình như một mô hình tổng quát tốt, hoặc sử dụng mô hình trong một số ứng dụng trong thế giới thực, thì tất nhiên điều này có ý nghĩa rất lớn.

Có một vấn đề phụ mà tôi nghĩ tôi nên đề cập, đó là ngay cả khi bạn thực hiện đúng tất cả các quy trình, bạn vẫn có thể kết thúc với các mô hình bị quá mức, do dữ liệu không thực sự bị iid . Ví dụ: nếu có tương quan thời gian trong dữ liệu, thì nếu bạn lấy tất cả dữ liệu đào tạo của mình từ lần 1-3 và kiểm tra lần 4, thì bạn có thể thấy rằng lỗi dự đoán lớn hơn dự kiến. Ngoài ra, có thể có các đồ tạo tác cụ thể cho thí nghiệm, chẳng hạn như thiết bị đo được sử dụng hoặc nhóm đối tượng trong các thí nghiệm ở người, khiến cho việc khái quát hóa các mô hình trở nên tồi tệ hơn mong đợi.


Vâng, tôi biết rằng thật khó để tạo ra một bộ dữ liệu thực sự ngoài mẫu vì rất dễ vô tình kết thúc với các mối tương quan thời gian và những gì không.
Michael McGowan

1
Một số công ty thực hiện điều này như một chính sách, được triển khai, ví dụ như có các viewquyền cơ sở dữ liệu được đặt phù hợp trong đó một số nhóm là kiểm tra dữ liệu riêng tư và các nhóm khác bị mù dữ liệu thử nghiệm.
ijoseph

6

Đây là một câu hỏi rất hay và một vấn đề rất tinh tế. Tất nhiên có những lỗi cố ý xấu, xuất phát từ việc ai đó đang cố lừa dối bạn. Nhưng có một câu hỏi sâu sắc hơn về làm thế nào để tránh rò rỉ vô tình và tránh những sai lầm trung thực.

Hãy để tôi liệt kê một số thực hành tốt hoạt động. Tất cả đều bắt nguồn từ những sai lầm trung thực mà tôi đã mắc phải tại một số điểm:

  • Phân tách dữ liệu của bạn thành ba nhóm: đào tạo, xác nhận và kiểm tra.
  • Hiểu thiết lập vấn đề để có thể tranh luận cái gì hợp lý và cái gì không. Hiểu vấn đề, nhiều lần hiểu nhầm tinh tế trong những gì dữ liệu đại diện có thể dẫn đến rò rỉ. Ví dụ: trong khi không ai luyện tập và thử nghiệm trên cùng một khung hình của một video, thì sẽ tinh tế hơn khi hai khung hình của cùng một video rơi vào các nếp gấp khác nhau, hai khung hình của cùng một video có thể chia sẻ cùng một cá nhân cùng một ánh sáng, v.v. .
  • Hãy cực kỳ cẩn thận với các thủ tục xác nhận chéo bằng văn bản trước đây. Hơn nữa với những người không được viết bởi bạn (LIBSVM là một kẻ phạm tội lớn ở đây).
  • Lặp lại mọi thử nghiệm ít nhất hai lần trước khi báo cáo bất cứ điều gì, ngay cả khi báo cáo cho người bạn văn phòng của bạn. Kiểm soát phiên bản là bạn của bạn, trước khi chạy thử nghiệm cam kết và ghi lại phiên bản mã bạn đang chạy.
  • Hãy thật cẩn thận khi bình thường hóa dữ liệu của bạn. Nhiều lần điều này dẫn đến suy nghĩ bạn sẽ có bộ dữ liệu đầy đủ mà bạn muốn kiểm tra cùng một lúc, điều này thường không thực tế.

Có một câu hỏi về các bộ huấn luyện / đánh giá và tôi đã đưa ra một cái nhìn tổng quan về lý thuyết về vấn đề đó tại machinelearning.stackexchange.com/a/196/114 - giải thích sự phân tầng, xác thực chéo k và các thử nghiệm lặp lại. Đối với suy nghĩ vô học của tôi, những phương pháp đó hoàn toàn giải quyết câu hỏi trên và phần còn lại chỉ là "vấn đề của giáo viên". Ngoài ra, tất cả các thực tiễn trong danh sách của bạn dường như khắc phục "lỗi đơn giản, không thể chấp nhận được" và tôi không thấy bất kỳ sự tinh tế nào ở đó. Tôi rất muốn hiểu những gì tôi đang thiếu - bạn có thể nhận xét?
andreister

Tôi đồng ý rằng tất cả chúng đến từ sự cẩu thả. Tôi cũng đã đề cập rằng họ hoàn toàn không phải là lý thuyết (đã nói rằng họ đang hoạt động). Tôi đã chỉnh sửa bài viết của mình một chút.
carlosdc

5

Nhiều điểm quan trọng đã được đề cập trong các câu trả lời xuất sắc đã được đưa ra.

Gần đây, tôi đã phát triển danh sách kiểm tra cá nhân này để độc lập thống kê dữ liệu thử nghiệm:

  • Phân chia dữ liệu ở mức phân cấp dữ liệu cao nhất (ví dụ: phân chia theo bệnh nhân)
  • Chia cũng độc lập cho các yếu tố gây nhiễu đã biết hoặc nghi ngờ, chẳng hạn như sự thay đổi hàng ngày trong các công cụ, v.v.
  • (DoE nên quan tâm đến các phép đo ngẫu nhiên **)
  • Tất cả các bước tính toán bắt đầu bằng bước đầu tiên (thường là tiền xử lý) liên quan đến nhiều hơn một bệnh nhân * cần phải được thực hiện lại cho mỗi mô hình thay thế trong quá trình xác nhận lại mẫu. Đối với việc xác định giá trị bộ kiểm tra độc lập / kiểm tra độc lập, bệnh nhân thử nghiệm cần được tách ra trước bước này.
    • Điều này là bất kể việc tính toán được gọi là tiền xử lý hay được coi là một phần của mô hình thực tế.
    • Thủ phạm điển hình: định tâm trung bình, chia tỷ lệ phương sai (thường chỉ ảnh hưởng nhẹ), giảm kích thước như PCA hoặc PLS (có thể gây ra sai lệch nặng, ví dụ như đánh giá thấp không có lỗi theo thứ tự cường độ)
  • Bất kỳ loại tối ưu hóa dựa trên dữ liệu hoặc lựa chọn mô hình nào cũng cần thử nghiệm (bên ngoài) khác để xác nhận độc lập mô hình cuối cùng.
  • Có một số loại hiệu suất tổng quát hóa chỉ có thể được đo bằng các bộ thử nghiệm độc lập cụ thể, ví dụ như hiệu suất dự đoán sẽ giảm như thế nào đối với các trường hợp được đo trong tương lai (Tôi không xử lý dự báo chuỗi thời gian, chỉ với độ trôi của thiết bị). Nhưng điều này cần một nghiên cứu xác nhận được thiết kế đúng.
  • Có một loại rò rỉ dữ liệu đặc biệt khác trong lĩnh vực của tôi: chúng tôi thực hiện quang phổ phân giải không gian các mô sinh học. Việc ghi nhãn tham chiếu của phổ thử nghiệm cần được làm mờ đối với thông tin phổ, ngay cả khi sử dụng phân tích cụm và sau đó chỉ cần tìm ra mỗi cụm thuộc về loại nào (đó sẽ là dữ liệu thử nghiệm được giám sát bán không độc lập cả).

  • Cuối cùng nhưng không kém phần quan trọng: Khi mã hóa xác thực lại quá trình xác thực, tôi thực sự kiểm tra xem các chỉ số được tính toán trong tập dữ liệu có dẫn đến việc lấy các hàng thử nghiệm từ đào tạo bệnh nhân hay không, v.v.

Lưu ý rằng "phân tách không được thực hiện để đảm bảo tính độc lập" và "phân tách trước khi xảy ra bất kỳ tính toán nào liên quan đến nhiều trường hợp" cũng có thể xảy ra với thử nghiệm tuyên bố sử dụng bộ kiểm tra độc lập và sau đó ngay cả khi nhà phân tích dữ liệu mù để tham khảo các trường hợp thử nghiệm. Những sai lầm này không thể xảy ra nếu dữ liệu thử nghiệm bị giữ lại cho đến khi mô hình cuối cùng được trình bày.

* Tôi đang sử dụng bệnh nhân làm hệ thống phân cấp cao nhất trong dữ liệu chỉ để dễ mô tả.
** Tôi là nhà hóa học phân tích: Bánh trôi là một vấn đề đã biết. Trên thực tế, một phần của việc xác nhận các phương pháp phân tích hóa học là xác định tần suất hiệu chuẩn cần được kiểm tra đối với các mẫu xác nhận và tần suất hiệu chuẩn cần được thực hiện lại.


FWIW: Trong thực tế, tôi xử lý các ứng dụng trong đó

  • p102103
  • nrowsp
  • nbiol.replicatesnpatientsp100101102
  • tùy thuộc vào phương pháp đo phổ, tất cả các hàng của một bệnh nhân có thể rất giống nhau hoặc khá khác nhau vì các loại phổ khác nhau có tỷ lệ tín hiệu / nhiễu (lỗi dụng cụ) cũng thay đổi theo một độ lớn hoặc hơn

Cá nhân, tôi chưa gặp ứng dụng để phát triển trình phân loại, tôi có đủ các trường hợp độc lập để cho phép đặt một bộ kiểm tra độc lập phù hợp. Do đó, tôi đã đi đến kết luận rằng việc xác thực lại việc lấy mẫu đúng cách là cách thay thế tốt hơn trong khi phương thức vẫn đang được phát triển. Các nghiên cứu xác nhận hợp lệ cuối cùng sẽ cần phải được thực hiện, nhưng nó là một sự lãng phí tài nguyên lớn (hoặc kết quả sẽ không mang thông tin hữu ích vì phương sai) làm điều đó trong khi sự phát triển phương pháp đang ở giai đoạn mà mọi thứ vẫn thay đổi.


2

Nếu tôi nhớ chính xác, một số cuộc thi dự báo (như Netflix hoặc các cuộc thi trên Kaggle) sử dụng sơ đồ này:

Có một bộ đào tạo, với "câu trả lời". Có bộ kiểm tra số 1, mà nhà nghiên cứu cung cấp câu trả lời. Các nhà nghiên cứu tìm ra điểm số của họ. Có bộ kiểm tra số 2, mà nhà nghiên cứu cung cấp câu trả lời, NHƯNG nhà nghiên cứu không tìm ra điểm số của họ. Nhà nghiên cứu không biết trường hợp dự đoán nào nằm ở # 1 và # 2.

Tại một số điểm, bộ số 2 phải hiển thị, nhưng ít nhất bạn đã hạn chế sự nhiễm bẩn.


2

Trong một số trường hợp, chẳng hạn như các yếu tố dự đoán dựa trên trình tự sinh học, việc đảm bảo rằng các trường hợp không xuất hiện trong nhiều bộ là không đủ. Bạn vẫn cần phải lo lắng về sự phụ thuộc giữa các bộ.

Ví dụ, đối với các yếu tố dự đoán dựa trên chuỗi, người ta cần loại bỏ sự dư thừa bằng cách đảm bảo rằng các chuỗi trong các bộ khác nhau (bao gồm các bộ xác thực chéo khác nhau) không chia sẻ mức độ tương tự trình tự cao.


2

Tôi muốn nói "xác nhận chéo k-gấp" là câu trả lời đúng theo quan điểm lý thuyết, nhưng câu hỏi của bạn có vẻ nhiều hơn về công cụ tổ chức và giảng dạy vì vậy tôi sẽ trả lời khác nhau.


Khi mọi người "vẫn đang học", người ta thường nghĩ rằng họ đang học cách "nhanh chóng và bẩn thỉu" áp dụng các thuật toán và tất cả các kiến ​​thức "phụ" (động lực vấn đề, chuẩn bị dữ liệu, xác nhận, phân tích lỗi, vấn đề thực tế, v.v. ) sẽ được học "sau" khi họ "chuẩn bị kỹ lưỡng hơn".

Điều này là hoàn toàn sai.

  1. Nếu chúng ta muốn một học sinh hoặc bất cứ ai hiểu được sự khác biệt giữa một bộ kiểm tra và một bộ huấn luyện, điều tồi tệ nhất sẽ là trao hai bộ cho hai người khác nhau như thể chúng ta nghĩ rằng "ở giai đoạn này" thì "kiến thức bổ sung" là có hại. Điều này giống như cách tiếp cận thác nước trong phát triển phần mềm - vài tháng thiết kế thuần túy, rồi vài tháng mã hóa thuần túy, rồi vài tháng thử nghiệm thuần túy và kết quả đáng tiếc cuối cùng.

  2. Học không nên đi như thác nước. Tất cả các phần của việc học - động lực vấn đề, thuật toán, vấn đề thực tế, đánh giá kết quả - phải đi cùng nhau, trong các bước nhỏ. (Giống như cách tiếp cận nhanh trong phát triển phần mềm).

Có lẽ tất cả mọi người ở đây đã trải qua ml- class.org của Andrew Ng - Tôi đã đặt khóa học của mình như một ví dụ về một "người nhanh nhẹn" mạnh mẽ, nếu bạn muốn, phong cách học tập - câu hỏi sẽ không bao giờ đưa ra câu hỏi về "làm thế nào để đảm bảo rằng dữ liệu kiểm tra không bị rò rỉ vào dữ liệu đào tạo ".


Lưu ý rằng tôi có thể đã hoàn toàn hiểu sai câu hỏi của bạn, vì vậy xin lỗi! :)


Học cho con người (nghĩa là học cách làm mẫu nói chung) không nên đi như thác nước, mà học cho người mẫu thì nên. Nếu không, các bit của dữ liệu kiểm tra sẽ lẻn vào dữ liệu huấn luyện và mô hình của bạn dễ bị quá mức.
Michael McGowan

Và tôi đã nghĩ về nó nhiều hơn từ cuối phần mềm. Một người dùng xây dựng một mô hình đạt độ chính xác 90% khi đào tạo và 75% chính xác khi thử nghiệm. Sau đó, họ tinh chỉnh một số nút và cài đặt trong phần mềm và nhận được độ chính xác 80% khi "thử nghiệm". Họ quay trở lại một lần nữa và thực hiện nhiều điều chỉnh hơn và có độ chính xác 85% khi "thử nghiệm". Nhưng bộ dữ liệu được gọi là "thử nghiệm" này không còn nằm ngoài mẫu và mô hình đã quá phù hợp với nó.
Michael McGowan

Chính xác. Đây là một vấn đề học tập của con người (vấn đề giáo viên, nếu bạn sẽ). Nó nên được tiết lộ càng sớm càng tốt, thay vì ẩn bằng các phương tiện nhân tạo "đảm bảo X không rò rỉ vào Y"
andreister

Những người nên biết rõ hơn vẫn sẽ phạm sai lầm này. Bạn có thể giảm thiểu hiệu ứng này ở một mức độ nào đó trong gói phần mềm với quy trình làm việc ngầm hoặc rõ ràng khuyến khích các thực tiễn tốt và không khuyến khích các thực tiễn xấu. Rằng con người nên biết rõ hơn là không có lý do để bỏ qua vấn đề.
Michael McGowan

@MichaelMcGowan - bạn cũng đang bỏ qua các lợi ích của việc rò rỉ - rằng thuật toán của bạn có khả năng được cải thiện bằng cách sử dụng bộ kiểm tra (ví dụ: train + test chỉ có nhiều dữ liệu hơn so với chỉ đào tạo). Nó thực sự chỉ là một sự đánh đổi khác nhau, độ chính xác được cải thiện so với độ chính xác được cải thiện. Đối với tôi trước đây là quan trọng hơn.
xác suất
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.