SVM cho dữ liệu không cân bằng


15

Tôi muốn thử sử dụng Support Vector Machines (SVM) trên tập dữ liệu của mình. Trước khi tôi thử vấn đề, tôi đã được cảnh báo rằng các SVM không hoạt động tốt trên dữ liệu cực kỳ mất cân bằng. Trong trường hợp của tôi, tôi có thể có tới 95-98% 0 và 2-5% 1.

Tôi đã cố gắng tìm các tài nguyên nói về việc sử dụng các SVM trên dữ liệu thưa thớt / không cân bằng, nhưng tất cả những gì tôi có thể tìm thấy là 'spzzySVM' (sử dụng một lượng nhỏ các vectơ hỗ trợ).

Tôi đã hy vọng ai đó có thể giải thích ngắn gọn:

  1. Làm thế nào tốt SVM sẽ được thực hiện với một bộ dữ liệu như vậy
  2. Mà, nếu có, phải sửa đổi thuật toán SVM
  3. Những tài nguyên / giấy tờ thảo luận về điều này

Câu trả lời:


15

Nhiều triển khai SVM giải quyết vấn đề này bằng cách gán các trọng số khác nhau cho các trường hợp tích cực và tiêu cực. Về cơ bản, bạn cân các mẫu sao cho tổng trọng số cho các giá trị dương sẽ bằng với các giá trị âm. Tất nhiên, trong đánh giá của bạn về SVM, bạn phải nhớ rằng nếu 95% dữ liệu là âm tính, việc lấy độ chính xác 95% bằng cách luôn dự đoán âm tính là chuyện nhỏ. Vì vậy, bạn phải chắc chắn rằng các số liệu đánh giá của bạn cũng có trọng số để chúng được cân bằng.

Cụ thể libsvm, trong đó bạn đã thêm dưới dạng thẻ, có một cờ cho phép bạn đặt trọng số lớp ( -wtôi tin, nhưng kiểm tra tài liệu ).

Cuối cùng, từ kinh nghiệm cá nhân tôi có thể nói với bạn rằng tôi thường thấy rằng một SVM sẽ mang lại kết quả rất giống nhau có hoặc không có sự điều chỉnh trọng lượng.


Đánh bại tôi với nó :-)
Marc Claesen

@Bitwise Tôi có cùng một vấn đề về dữ liệu mất cân bằng và tôi nhận được Độ chính xác 99%. Tôi đã sử dụng các trọng số trong libsvm. Bạn đã đề cập rằng các số liệu đánh giá cũng phải được cân nhắc. Tôi muốn biết làm thế nào chúng ta có thể cân nhắc các số liệu định giá.
Hani Goc

1
90/100=0.90.5(0/10+90/90)=0.5

7

Các SVM hoạt động tốt trên dữ liệu thưa thớt và không cân bằng. SVM có trọng số lớp được thiết kế để xử lý dữ liệu không cân bằng bằng cách gán các hình phạt phân loại sai cao hơn cho các trường hợp đào tạo của nhóm thiểu số.


5

Trong trường hợp dữ liệu thưa thớt như vậy thì SVM sẽ hoạt động tốt.

Như đã nêu bởi @Bitwise, bạn không nên sử dụng độ chính xác để đo hiệu suất của thuật toán.

Thay vào đó, bạn nên tính toán độ chính xác, thu hồiF-Score của thuật toán.


Bạn có thể vui lòng mở rộng về lý luận của bạn? Ngoài ra, bạn sẽ làm thế nào để đo điểm F sau khi phân loại (trên bộ kiểm tra) đã hoàn thành? Cảm ơn
Spacey

Để đo FScore trên bộ kiểm tra, bạn sẽ cần phân loại thủ công, sau đó tính toán thu hồi và độ chính xác bằng cách sử dụng dữ liệu thủ công so với dữ liệu dự đoán. Bạn muốn tôi mở rộng điều gì, tại sao SVM hoạt động tốt với dữ liệu thưa thớt?
alexandrekow

Vâng, tại sao SVM hoạt động trên dữ liệu thưa thớt cũng sẽ tốt đẹp. Cảm ơn
Spacey

"Đơn giản là có các tính năng thưa thớt không gây ra bất kỳ vấn đề nào cho SVM. Một cách để thấy điều này là bạn có thể thực hiện một vòng quay ngẫu nhiên của các trục tọa độ, điều này sẽ không thay đổi vấn đề và đưa ra giải pháp tương tự, nhưng sẽ làm cho dữ liệu hoàn toàn không thưa thớt (đây là một phần cách thức hoạt động của các phép chiếu ngẫu nhiên "( stats.stackexchange.com/questions/23470/ mẹo )
alexandrekow
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.