Làm thế nào để chọn một bộ phân loại sau khi xác nhận chéo?


12

Khi chúng ta xác thực chéo k-Fold, chúng ta có nên sử dụng trình phân loại có độ chính xác kiểm tra cao nhất không? Nói chung cách tiếp cận tốt nhất để có được một bộ phân loại từ xác nhận chéo là gì?


Tôi nghĩ rằng câu hỏi này phụ thuộc rất nhiều vào số liệu được sử dụng để xác định "phương pháp tốt nhất". Nhiều người sử dụng độ chính xác một cách định lượng, nhưng tùy thuộc vào tập dữ liệu, các số liệu khác có thể được sử dụng như ý nghĩa Hài hòa như Điểm số F1. Vì vậy, sự lựa chọn số liệu có thể quan trọng như nhau.
Nathan McCoy

@NathanMcCoy giả sử chúng tôi chọn độ chính xác, chúng tôi sẽ chọn phân loại có độ chính xác kiểm tra cao nhất?
Armon Safai

Chắc chắn rồi! Chỉ cần cố gắng đề cập đến một cái gì đó khác để suy nghĩ về :)
Nathan McCoy

Câu trả lời:


15

Bạn xác thực chéo khi bạn muốn thực hiện bất kỳ điều nào trong hai điều sau:

  • Lựa chọn người mẫu
  • Ước tính lỗi của một mô hình

Lựa chọn mô hình có thể đến trong các kịch bản khác nhau:

  • Chọn một thuật toán so với các thuật toán khác cho một vấn đề / bộ dữ liệu cụ thể
  • Chọn siêu tham số của một thuật toán cụ thể cho một vấn đề / bộ dữ liệu cụ thể

(xin lưu ý rằng nếu bạn vừa chọn một thuật toán - tốt hơn là gọi nó là mô hình - vừa thực hiện tìm kiếm siêu tham số, bạn cần thực hiện Xác thực chéo lồng nhau. Nested-CV có thực sự cần thiết không? )

Xác thực chéo đảm bảo đến một mức độ nào đó rằng ước tính lỗi là gần nhất có thể là lỗi tổng quát hóa cho mô hình đó (mặc dù điều này rất khó để ước tính). Khi quan sát lỗi trung bình giữa các nếp gấp, bạn có thể dự đoán tốt về lỗi dự kiến ​​cho một mô hình được xây dựng trên bộ dữ liệu đầy đủ. Cũng rất quan trọng để quan sát phương sai của dự đoán, đây là, lỗi thay đổi từ lần này sang lần khác. Nếu biến thể quá cao (giá trị khác nhau đáng kể) thì mô hình sẽ có xu hướng không ổn định. Bootstrapping là phương pháp khác cung cấp xấp xỉ tốt theo nghĩa này. Tôi đề nghị đọc kỹ phần 7 trong cuốn sách "Các yếu tố của học thống kê", có sẵn miễn phí tại: ELS-Standford

Như nó đã được đề cập trước khi bạn không được lấy mô hình được xây dựng trong bất kỳ nếp gấp nào. Thay vào đó, bạn phải xây dựng lại mô hình với bộ dữ liệu đầy đủ (mô hình được chia thành các nếp gấp). Nếu bạn có một bộ thử nghiệm riêng biệt, bạn có thể sử dụng nó để thử mô hình cuối cùng này, nhận được một lỗi tương tự (và chắc chắn cao hơn) so với thử nghiệm thu được từ CV. Tuy nhiên, bạn nên dựa vào lỗi ước tính do quy trình CV đưa ra.

Sau khi thực hiện CV với các mô hình khác nhau (kết hợp thuật toán, v.v.), đã chọn một mô hình hoạt động tốt hơn liên quan đến lỗi và phương sai của nó trong các nếp gấp. Bạn sẽ cần xây dựng lại mô hình với toàn bộ dữ liệu. Ở đây có một sự nhầm lẫn phổ biến về các thuật ngữ: chúng tôi thường đề cập đến việc lựa chọn mô hình, nghĩ rằng mô hình là mô hình sẵn sàng dự đoán được xây dựng trên dữ liệu, nhưng trong trường hợp này, nó đề cập đến sự kết hợp của các thủ tục thuật toán + tiền xử lý mà bạn áp dụng. Vì vậy, để có được mô hình thực tế bạn cần để đưa ra dự đoán / phân loại, bạn cần xây dựng mô hình bằng cách sử dụng kết hợp người chiến thắng trên toàn bộ dữ liệu.

Điều cuối cùng cần lưu ý là nếu bạn đang áp dụng bất kỳ loại tiền xử lý nào thì việc sử dụng thông tin lớp (lựa chọn tính năng, giảm kích thước LDA, v.v.), điều này phải được thực hiện trong mỗi lần và không phải trước đó trên dữ liệu. Đây là một khía cạnh quan trọng. Nên làm điều tương tự nếu bạn đang áp dụng các phương pháp tiền xử lý liên quan đến thông tin trực tiếp của dữ liệu (PCA, chuẩn hóa, tiêu chuẩn hóa, v.v.). Tuy nhiên, bạn có thể áp dụng tiền xử lý không phụ thuộc vào dữ liệu (xóa một biến theo ý kiến ​​chuyên gia, nhưng điều này khá rõ ràng). Video này có thể giúp bạn theo hướng đó: CV đúng và sai

Ở đây, một lời giải thích tốt đẹp cuối cùng về chủ đề: CV và lựa chọn mô hình


Tôi hiểu rồi, bạn có thực sự cần phải có một dữ liệu thử nghiệm riêng biệt hay bạn chỉ có thể huấn luyện bộ phân loại của mình trên 100% tất cả dữ liệu bạn có vì chúng tôi đã xác thực chéo và có lỗi kiểm tra gần đúng cho mô hình?
Armon Safai

+1 cho "đã chọn một lỗi hoạt động tốt hơn liên quan đến lỗi và phương sai giữa các lần ". Mọi người dường như bỏ qua phương sai giữa các nếp gấp khi chọn mô hình.
stmax

Tại sao tôi phải quan tâm đến lỗi kiểm tra nếu chỉ có lỗi CV là điều tôi quan tâm? Tôi hỏi bởi vì bạn đã viết "thực sự về lỗi ước tính được đưa ra bởi thủ tục CV."
HelloWorld

Câu hỏi khác. Điều gì xảy ra nếu mô hình tốt nhất từ ​​CV không phải là mô hình tốt nhất khi được xây dựng cho toàn bộ tập dữ liệu?
HelloWorld

1
Bạn xây dựng mô hình trên 100% dữ liệu, điều này có nghĩa là 100% dữ liệu được sử dụng để xác thực chéo. Nếu trước đây bạn đã phân tách dữ liệu gốc trên 80% -20% để đào tạo và kiểm tra thêm, thì bạn thực hiện CV trên 80%, chọn mô hình và đào tạo lại toàn bộ 80%. Có một bộ kiểm tra trong trường hợp này (20%) chỉ cho phép bạn xem cách ứng xử với dữ liệu chưa xem mới (bạn có thể nghĩ đó là dữ liệu có sẵn trong tương lai), nhưng ước tính lỗi bạn sử dụng là từ CV . Hy vọng rằng nó sẽ tạo ra một lỗi tương tự với dữ liệu mới nếu đó là một mô hình tốt (20% hoặc dữ liệu thực sự mới). @ArmonSafai
Javierfdr

8

Không. Bạn không chọn bất kỳ trình phân loại k nào được tạo trong quá trình xác thực chéo k-Fold. Trước hết, mục đích của xác nhận chéo không phải là đưa ra một mô hình dự đoán, mà là để đánh giá chính xác một mô hình dự đoán sẽ thực hiện như thế nào trong thực tế. Thứ hai, để tranh luận, giả sử bạn đã sử dụng xác thực chéo k-gấp với k = 10 để tìm ra một trong ba thuật toán phân loại khác nhau sẽ phù hợp nhất để giải quyết vấn đề phân loại nhất định. Trong trường hợp đó, dữ liệu được chia ngẫu nhiên thành k phần có kích thước bằng nhau. Một trong những phần được dành riêng để thử nghiệm và phần còn lại k-1 sẽ được sử dụng để đào tạo. Quá trình xác nhận chéo được lặp lại k (lần) để mỗi lần lặp lại, phần khác nhau được sử dụng để kiểm tra. Sau khi chạy xác thực chéo, bạn nhìn vào kết quả từ mỗi lần và tự hỏi thuật toán phân loại nào (không phải bất kỳ mô hình được đào tạo nào!) Là phù hợp nhất. Bạn không muốn chọn thuật toán có độ chính xác kiểm tra cao nhất trên một trong 10 lần lặp, bởi vì có thể nó chỉ xảy ra ngẫu nhiên rằng dữ liệu kiểm tra trên lần lặp cụ thể đó chứa các ví dụ rất dễ, dẫn đến độ chính xác kiểm tra cao. Những gì bạn muốn làm là chọn thuật toán tạo ra độ chính xác tốt nhất từ đó dẫn đến độ chính xác kiểm tra cao. Những gì bạn muốn làm là chọn thuật toán tạo ra độ chính xác tốt nhất từ đó dẫn đến độ chính xác kiểm tra cao. Những gì bạn muốn làm là chọn thuật toán tạo ra độ chính xác tốt nhấttính trung bình trên tất cả các nếp gấp k . Bây giờ bạn đã chọn thuật toán, bạn có thể đào tạo nó bằng cách sử dụng toàn bộ dữ liệu đào tạo của mình và bắt đầu đưa ra dự đoán trong tự nhiên.

Điều này nằm ngoài phạm vi của câu hỏi này, nhưng bạn cũng nên tối ưu hóa siêu đường kính của mô hình (nếu có) để tận dụng tối đa thuật toán đã chọn. Mọi người thường thực hiện tối ưu hóa siêu tham số bằng cách sử dụng xác nhận chéo.


Tôi nghĩ rằng xác thực chéo k-Fold tạo ra k mô hình khác nhau vì có 10 bộ dữ liệu đào tạo khác nhau.
Armon Safai

Kiểm tra câu trả lời cập nhật của tôi. Tôi đã tinh chỉnh nó để giải quyết câu hỏi trực tiếp hơn và để giải thích rõ hơn với một ví dụ.
tuomastik

Tôi hiểu rồi, vì vậy cuối cùng khi bạn huấn luyện trình phân loại của mình, bạn có sử dụng TẤT CẢ dữ liệu của mình để huấn luyện trình phân loại sau khi bạn đã chọn thuật toán của mình từ xác thực chéo
Armon Safai

Có, nếu bạn không muốn thực hiện bất kỳ phân tích nào nữa, chẳng hạn như tối ưu hóa siêu tham số, yêu cầu xác thực chéo lồng nhau trong đó vòng CV bên trong đảm nhiệm điều chỉnh siêu tham số và vòng CV bên ngoài đánh giá hiệu suất mô hình trên một tập dữ liệu độc lập với tối ưu siêu âm.
tuomastik

1

Vì vậy, hãy giả sử bạn đã đào tạo trong đó bạn đang sử dụng 80% là đào tạo và 20% là dữ liệu xác nhận. Chúng tôi có thể đào tạo trên 80% và kiểm tra 20% còn lại nhưng có thể 20% chúng tôi đã thực hiện không giống với dữ liệu thử nghiệm thực tế và có thể thực hiện sai sau này. Vì vậy, để ngăn chặn điều này, chúng ta có thể sử dụng xác nhận chéo k-Fold.

Vì vậy, hãy để chúng tôi nói rằng bạn có các mô hình khác nhau và muốn biết cái nào hoạt động tốt hơn với tập dữ liệu của bạn, xác thực chéo k-Fold hoạt động rất tốt. Bạn có thể biết các lỗi xác thực trên các hiệu suất xác thực k và chọn mô hình tốt hơn dựa trên đó. Đây thường là mục đích để xác nhận chéo k-Fold.

Đến với chỉ một mô hình và nếu bạn đang kiểm tra xác thực chéo k-Fold, bạn có thể nhận được xấp xỉ các lỗi của dữ liệu thử nghiệm (nhưng when you are actually training it finally, you can use the complete training datavì ở đây giả định rằng toàn bộ dữ liệu sẽ cùng hoạt động tốt hơn một phần của nó Đôi khi nó có thể không phải là trường hợp, nhưng đây là giả định chung.)


Vì vậy, khi chúng tôi xác nhận chéo, chúng tôi chỉ chọn mô hình có độ chính xác kiểm tra cao nhất?
Armon Safai

Khi bạn nói kiểm tra, bạn có nghĩa là kiểm tra dữ liệu xác nhận phải không?
Hima Varsha

phải đó là những gì tôi muốn nói
Armon Safai

một khi chúng tôi đã sử dụng xác thực chéo để chọn mô hình hoạt động tốt hơn (ví dụ: bạn có 2 mô hình - hồi quy tuyến tính hoặc mạng thần kinh), chúng tôi huấn luyện mô hình đó (cho dù đó là hồi quy tuyến tính hay mạng thần kinh) trên tất cả dữ liệu
Hima Varsha

1
@HimaVarsha vậy nếu chúng ta quyết định lấy mức trung bình, chúng ta sẽ chọn "phân loại trung bình" như thế nào?
Armon Safai
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.