5

Sử dụng trường hợp:Cách tính xác suất (độ tin cậy) của phân loại SVM cho tập dữ liệu nhỏ?

Tôi có một tập dữ liệu nhỏ với khoảng 3-10 mẫu trong mỗi lớp. Tôi đang sử dụng sklearn SVC để phân loại những người có hạt nhân rbf. I cần sự tự tin của dự đoán cùng với lớp được dự đoán. Tôi đã sử dụng phương pháp predict_proba của SVC. Tôi đã nhận được kết quả lạ với điều đó. Tôi đã tìm kiếm một chút và phát hiện ra rằng nó chỉ có ý nghĩa đối với các tập dữ liệu lớn hơn.

Tìm thấy câu hỏi này trên ngăn xếp Scikit-learn predict_proba gives wrong answers.

Tác giả của câu hỏi đã xác minh điều này bằng cách nhân bộ dữ liệu, do đó sao chép tập dữ liệu.

Câu hỏi của tôi:

1) Nếu tôi nhân bộ dữ liệu của mình bằng cách cho phép nói 100, có mỗi mẫu 100 lần, nó làm tăng "đúng đắn" của "predict_proba". Nó sẽ có tác dụng phụ nào? Overfitting?

2) Có cách nào khác để tôi có thể tính toán độ tin cậy của trình phân loại không? Giống như khoảng cách từ các hyperplanes?

3) Đối với kích thước mẫu nhỏ này, SVM có phải là thuật toán được đề xuất hay tôi nên chọn thứ gì khác không?

+1

Ý bạn là gì?"Dù sao, chỉ với 3 mẫu, không có nhiều hy vọng cho bất cứ điều gì bạn chọn. –

+3

@ juanpa.arrivillaga Tự tin là phân loại mà mẫu này thuộc về lớp này. Platt mở rộng hoặc khoảng cách từ siêu phẳng? –

+0

Như @juanpa nói với 3 mẫu không có gì hợp lý để làm, thực sự.Trong SVM cụ thể không có ý nghĩa (và 99% các phương pháp thống kê khác) Bạn có thể sử dụng 1-NN, mà chỉ đơn giản là một quy tắc "đính kèm một nhãn gần nhất điểm ", nhưng một lần nữa - 3 mẫu cho mỗi lớp là quá nhỏ cho bất kỳ phân tích phong nha. Trừ khi bạn có hàng chục ngàn lớp học, và có một cấu trúc ở giữa chúng. – lejlot

Trả lời

0

Trước hết: Tập dữ liệu của bạn có vẻ rất nhỏ cho bất kỳ mục đích thực tế nào. Điều đó đang được nói, chúng ta hãy xem những gì chúng ta có thể làm.

SVM chủ yếu phổ biến trong cài đặt chiều cao. Hiện tại không rõ liệu điều đó có áp dụng cho dự án của bạn hay không. Họ xây dựng các máy bay trên một số ít các trường hợp hỗ trợ (hoặc thậm chí là duy nhất), và thường hoạt động tốt hơn trong tình huống với các trainings lớn bằng Neural Nets. Một ưu tiên họ có thể không phải là lựa chọn tồi tệ của bạn.

Lấy mẫu quá nhiều dữ liệu của bạn sẽ ít khi sử dụng SVM. SVM dựa trên khái niệm về các vectơ hỗ trợ, về cơ bản là các ngoại lệ của một lớp xác định cái gì trong lớp và cái gì không. Oversampling sẽ không xây dựng vectơ hỗ trợ mới (Tôi giả định rằng bạn đang sử dụng tập huấn luyện làm bộ kiểm tra).

oversampling Plain trong kịch bản này cũng sẽ không cung cấp cho bạn bất kỳ thông tin mới về sự tự tin, trừ artififacts xây dựng bởi oversampling không cân bằng, vì các trường hợp sẽ là bản sao chính xác và không có thay đổi distibution sẽ xảy ra. Bạn có thể tìm thấy một số thông tin bằng cách sử dụng SMOTE (Kỹ thuật oversampling tổng hợp thiểu số). Về cơ bản, bạn sẽ tạo ra các cá thể tổng hợp dựa trên các cá thể bạn có. Về lý thuyết, điều này sẽ cung cấp cho bạn các trường hợp mới, đó sẽ không phải là bản sao chính xác của những người bạn có, và do đó có thể giảm một chút so với phân loại bình thường. Lưu ý: Theo định nghĩa, tất cả các ví dụ này sẽ nằm giữa các ví dụ ban đầu trong không gian mẫu của bạn. Điều này sẽ không có nghĩa là chúng sẽ nằm giữa không gian SVM dự kiến ​​của bạn, có thể là các hiệu ứng học tập không thực sự đúng.

Cuối cùng, bạn có thể ước tính sự tin cậy với khoảng cách đến siêu kết nối. Vui lòng xem: https://stats.stackexchange.com/questions/55072/svm-confidence-according-to-distance-from-hyperline

Các vấn đề liên quan