Kiểm tra độ chính xác cao hơn đào tạo. Làm thế nào để giải thích?


23

Tôi có một bộ dữ liệu chứa tối đa 150 ví dụ (được chia thành đào tạo & kiểm tra), với nhiều tính năng (cao hơn 1000). Tôi cần so sánh các phân loại và các phương pháp lựa chọn tính năng hoạt động tốt trên dữ liệu. Vì vậy, tôi đang sử dụng ba phương pháp phân loại (J48, NB, SVM) và 2 phương pháp lựa chọn tính năng (CFS, WrapperSubset) với các phương pháp tìm kiếm khác nhau (Greedy, BestFirst).

Trong khi so sánh, tôi đang xem xét độ chính xác đào tạo (gấp 5 lần) và kiểm tra độ chính xác.

Đây là một trong những kết quả của J48 và CFS-BestFirst:

{"precisionTraining": 95.83, "precisionTest": 98,21}

Nhiều kết quả như thế này và trên SVM có nhiều kết quả chỉ ra rằng độ chính xác của bài kiểm tra cao hơn nhiều so với đào tạo (đào tạo: 60%, kiểm tra: 98%)

Làm thế nào tôi có thể giải thích một cách có ý nghĩa các loại kết quả? Nếu nó thấp hơn, tôi sẽ nói nó quá mức. Có điều gì đó để nói về sự thiên vị và phương sai trong trường hợp này bằng cách xem tất cả các kết quả? Tôi có thể làm gì để phân loại này có ý nghĩa, chẳng hạn như chọn lại tập huấn luyện và kiểm tra hoặc chỉ sử dụng xác thực chéo trên tất cả dữ liệu?

Tôi có 73 trường hợp đào tạo & 58 bài kiểm tra. Một số câu trả lời không có thông tin này khi chúng được đăng.

Câu trả lời:


20

Tôi nghĩ rằng bước đầu tiên là kiểm tra xem hiệu suất đào tạo và kiểm tra được báo cáo có thực sự đúng hay không.

  • Việc chia tách trong quá trình xác nhận chéo 5 lần được thực hiện theo cách mang lại các bộ kiểm tra / huấn luyện cv độc lập thống kê? Ví dụ, nếu có các phép đo lặp lại trong dữ liệu, chúng có luôn kết thúc trong cùng một tập hợp không?
  • Độ chính xác 95,83% trong cv 5 lần gồm 150 mẫu phù hợp với 5 sai trong số 130 mẫu đào tạo cho 5 mẫu thay thế hoặc 25 trường hợp sai cho 5 * 130 mẫu đào tạo.
  • Độ chính xác kiểm tra 98,21% khó giải thích hơn: trong một lần chạy cv, mỗi trường hợp nên được kiểm tra một lần. Vì vậy, các con số có thể được báo cáo nên ở các bước 100% / 150. 98,21% tương ứng với 2,68 trường hợp sai (2 và 3 sai trong số 150 trường hợp kiểm tra cho độ chính xác tương ứng 98,67 và 98,00%).

  • Nếu bạn có thể trích xuất mô hình của mình, hãy tính toán độ chính xác được báo cáo bên ngoài.

  • Các độ chính xác được báo cáo cho đầu vào ngẫu nhiên là gì?
  • Thực hiện xác nhận chéo bên ngoài: phân tách dữ liệu của bạn và chỉ bàn giao phần đào tạo cho chương trình. Dự đoán dữ liệu thử nghiệm "bên ngoài" và tính chính xác. Điều này có phù hợp với đầu ra của chương trình không?
  • Đảm bảo "độ chính xác kiểm tra" được báo cáo xuất phát từ dữ liệu độc lập (xác thực chéo / lồng nhau): nếu chương trình của bạn thực hiện tối ưu hóa theo hướng dữ liệu (ví dụ: chọn các tính năng "tốt nhất" bằng cách so sánh nhiều mô hình), thì điều này giống như lỗi đào tạo (độ tốt phù hợp) hơn như một lỗi tổng quát hóa.

Tôi đồng ý với @mbq rằng lỗi đào tạo hầu như không hữu ích trong học máy. Nhưng bạn có thể gặp một trong số ít trường hợp thực sự hữu ích: Nếu chương trình chọn mô hình "tốt nhất" bằng cách so sánh độ chính xác, nhưng chỉ có lỗi đào tạo để chọn, bạn cần kiểm tra xem lỗi đào tạo có thực sự cho phép hay không sự lựa chọn
@mbq phác thảo kịch bản trường hợp tốt nhất cho các mô hình không thể phân biệt. Tuy nhiên, các kịch bản tồi tệ hơn cũng xảy ra: giống như độ chính xác của kiểm tra, độ chính xác đào tạo cũng có thể bị sai lệch nhưng có độ lệch lạc quan so với độ chính xác tổng quát thường được quan tâm. Điều này có thể dẫn đến một tình huống mà các mô hình không thể được phân biệt mặc dù chúng thực sự có hiệu suất khác nhau. Nhưng độ chính xác đào tạo (hoặc cv nội bộ) của họ quá gần để phân biệt chúng vì sự thiên vị lạc quan của họ. Ví dụ: các phương pháp lựa chọn tính năng lặp có thể gặp phải các vấn đề như vậy thậm chí có thể tồn tại đối với các độ chính xác xác thực chéo nội bộ (tùy thuộc vào cách thực hiện xác thực chéo đó).

Vì vậy, nếu một vấn đề như vậy có thể phát sinh, tôi nghĩ rằng đó là một ý tưởng tốt để kiểm tra xem một lựa chọn hợp lý có thể có thể xuất phát từ tính chính xác mà chương trình sử dụng cho quyết định hay không. Điều này có nghĩa là kiểm tra xem độ chính xác của cv bên trong (được cho là được sử dụng để lựa chọn mô hình tốt nhất) không hoặc không có quá nhiều sai lệch lạc quan đối với một cv được thực hiện bên ngoài với việc tách độc lập thống kê. Một lần nữa, dữ liệu tổng hợp và / hoặc ngẫu nhiên có thể giúp tìm ra những gì chương trình thực sự làm.

Bước thứ hai là xem xét sự khác biệt quan sát được đối với các phân tách độc lập thống kê có ý nghĩa hay không, như @mbq đã chỉ ra.

Tôi đề nghị bạn tính toán sự khác biệt về độ chính xác mà bạn cần quan sát với cỡ mẫu đã cho để có sự khác biệt có ý nghĩa thống kê. Nếu biến thể quan sát của bạn ít hơn, bạn không thể quyết định thuật toán nào tốt hơn với tập dữ liệu đã cho của mình: tối ưu hóa thêm không có ý nghĩa.


có thông tin tuyệt vời ở đây để tiêu hóa. Đầu tiên, tôi rất xin lỗi vì tôi đã không đưa ra những con số chính xác vì tôi không ngờ rằng bạn sẽ có được những con số chi tiết đến vậy và tôi cũng muốn tập trung vào chỉ một chủ đề. Dù sao, tôi có 73 đào tạo và 58 dữ liệu thử nghiệm. chúng không được phân tách theo thống kê, chúng chỉ được tôi chụp trong những thời điểm khác nhau. Các mẫu đào tạo trước tiên được đưa vào thuật toán lựa chọn tính năng (phương pháp bao bọc fs cũng có cv 5 lần bên trong) và sau đó 5 lần và độ chính xác tốt nhất được thực hiện và mô hình được lưu. và sau đó mô hình đó được sử dụng để tính toán độ chính xác kiểm tra.
ercu

16

Độ chính xác trên một tập huấn luyện không có ý nghĩa trong học máy. Đừng để ý đến nó.


cảm ơn! Tôi có nhiều kết quả với cùng độ chính xác kiểm tra tốt nhất, vì vậy tôi không thể so sánh kết quả bây giờ (tôi cũng sẽ xem xét độ chính xác đào tạo để so sánh nếu bạn chưa nói điều đó :). Vì vậy, thay vì chia tách để kiểm tra và đào tạo, nhiều lần xác thực chéo trên tất cả các tập dữ liệu có phù hợp hơn với trường hợp của tôi để so sánh kết quả không? hoặc tôi cần bất kỳ số liệu khác?
ercu

1
CV chắc chắn là một ý tưởng tốt; dù sao, lưu ý rằng có thể có một số thuật toán hoặc bộ tham số "tốt nhất" (theo nghĩa là chúng có cùng độ chính xác hoặc không thể phân biệt được về mặt thống kê với trường hợp tốt nhất) - đó cũng không phải là vấn đề. Thậm chí tốt hơn, điều đó có nghĩa là bạn đang nhận được kết quả ổn định - tối ưu sắc nét có thể gợi ý rằng bạn đã cung cấp quá mức cho mô hình bằng các tham số chọn anh đào.

8
Thật hữu ích khi biết độ chính xác trên tập huấn luyện để ước tính mức độ vượt quá thuật toán dự đoán của bạn đã thực hiện (bằng cách tính toán sự khác biệt về độ chính xác giữa tập huấn luyện & kiểm tra).
Frank Harrell

Bạn có thể giải thích tại sao?
inf

1
Từ định nghĩa, các phương thức ML là về hiệu suất trên dữ liệu chưa xem, do đó chúng không đảm bảo về kết quả này (mô hình dự kiến ​​sẽ không thực hiện lại cơ chế bên dưới dữ liệu như trong mô hình thống kê). Trong thực tế, nhiều phương pháp đưa ra dự đoán quá chính xác, do đó nó chỉ là lừa dối.

6

Có một vài vấn đề nghiêm trọng với cách bạn đã đi về vấn đề này. Trước hết, việc phân chia dữ liệu là không đáng tin cậy trừ khi tổng kích thước mẫu là rất lớn. Bạn sẽ nhận được kết quả khác nhau nếu bạn chia lại. Trong số những điều khác, bạn không xem xét khoảng tin cậy về ước tính chính xác. Thứ hai, xác nhận chéo 5 lần là không đủ chính xác. Có thể cần phải lặp lại 100 lần để đạt được độ chính xác đầy đủ. Thứ ba, bạn đã chọn làm điểm chính xác cho quy tắc chấm điểm không liên tục (tỷ lệ được phân loại chính xác). Một quy tắc chấm điểm không phù hợp như vậy sẽ dẫn đến việc lựa chọn mô hình sai.


3

Giả sử rằng không có trục trặc trong việc thực hiện các thuật toán, chúng ta hãy xem xét vấn đề.

Hãy tưởng tượng lấy một tập hợp con nhỏ từ dữ liệu đào tạo của bạn và chạy thuật toán học tập của bạn trên đó. Nó rõ ràng sẽ làm rất tốt. Luôn luôn có thể trích xuất một tập hợp con đạt được độ chính xác gần 98%.

Bây giờ dữ liệu thử nghiệm của bạn rất giống với tập hợp con này? Nếu có, thì bạn cần phải đi và thu thập thêm dữ liệu, hy vọng sẽ thay đổi một chút. Từ quan điểm Bias-Variance, tôi sẽ nói rằng phương sai của bạn là cao.


1

Bạn có quá nhiều tính năng (1000) cho số lượng mẫu mà bạn có (150). Bạn cần tăng mẫu hoặc giảm số lượng tính năng của bạn.

Họ nói thường số lượng tính năng ^ 2 = số lượng mẫu cần thiết. Vì vậy, bạn cần ít nhất triệu mẫu.


0

Điều đó có thể xảy ra bằng cách sử dụng bất kỳ thuật toán ML và thậm chí các phân loại tùy chỉnh. Hãy thử các sơ đồ xác thực chéo k-Fold khác nhau, tức là 2 hoặc 10 lần. Với k cao hơn, dự kiến ​​sẽ giảm lỗi kiểm tra.

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.