Cách tốt nhất để xử lý tập dữ liệu đa lớp không cân bằng với SVM


9

Tôi đang cố gắng xây dựng một mô hình dự đoán với các SVM trên dữ liệu khá mất cân bằng. Nhãn / đầu ra của tôi có ba lớp, tích cực, trung tính và tiêu cực. Tôi muốn nói rằng ví dụ tích cực tạo ra khoảng 10 - 20% dữ liệu của tôi, trung tính khoảng 50 - 60% và âm khoảng 30 - 40%. Tôi đang cố gắng cân bằng các lớp vì chi phí liên quan đến dự đoán không chính xác giữa các lớp không giống nhau. Một phương pháp là lấy lại dữ liệu huấn luyện và tạo ra một bộ dữ liệu cân bằng như nhau, lớn hơn so với ban đầu. Thật thú vị, khi tôi làm điều đó, tôi có xu hướng nhận được các dự đoán tốt hơn cho lớp khác (ví dụ: khi tôi cân bằng dữ liệu, tôi đã tăng số lượng ví dụ cho lớp tích cực, nhưng trong các dự đoán mẫu, lớp phủ định đã làm tốt hơn). Bất cứ ai cũng có thể giải thích chung tại sao điều này xảy ra? Nếu tôi tăng số lượng ví dụ cho lớp phủ định, tôi sẽ nhận được một cái gì đó tương tự cho lớp tích cực trong các dự đoán mẫu (ví dụ: dự đoán tốt hơn)?

Cũng rất cởi mở với những suy nghĩ khác về cách tôi có thể giải quyết dữ liệu không cân bằng thông qua việc áp đặt các chi phí khác nhau khi phân loại sai hoặc sử dụng trọng số lớp trong LibSVM (không chắc chắn làm thế nào để chọn / điều chỉnh các dữ liệu đó đúng cách).

Câu trả lời:


6

Có các hình phạt khác nhau cho các biến chùng lề cho các mẫu của mỗi lớp là một cách tiếp cận tốt hơn so với việc lấy lại dữ liệu. Dù sao nó cũng tương đương với việc lấy mẫu lại, nhưng thực tế hơn và liên tục hơn là rời rạc, do đó bạn có nhiều quyền kiểm soát hơn.

Tuy nhiên, việc chọn trọng lượng không đơn giản. Về nguyên tắc, bạn có thể tính ra trọng số lý thuyết có tính đến chi phí phân loại sai và sự khác biệt giữa đào tạo đặt ra xác suất hoạt động của lớp trước, nhưng nó sẽ không mang lại hiệu quả tối ưu. Điều tốt nhất để làm là chọn các hình phạt / trọng số cho mỗi lớp thông qua việc giảm thiểu tổn thất (có tính đến chi phí phân loại sai) bằng cách xác nhận chéo.


Có một cách tự động về cách làm điều đó, hoặc có tồn tại những người học có chức năng này được kết hợp không?
Vam

Tôi thường chỉ viết một hàm MATLAB để đánh giá tổn thất cho một tập hợp hình phạt cụ thể và sau đó giảm thiểu nó bằng thuật toán đơn giản Nelder-Mead. Tôi không biết bất kỳ thư viện nào được tích hợp sẵn.
Dikran Marsupial

@DikranMarsupial Liệu tìm kiếm lưới của hai biến chùng lề trong bài toán hai lớp có tương đương với những gì bạn đang làm với thuật toán đơn giản không?
Spacey

@Tarantula có, phương pháp tối ưu hóa chính xác tương đối không quan trọng, điểm quan trọng là đảm bảo rằng bạn đang tối ưu hóa thống kê xác thực chéo mà bạn thực sự quan tâm cho các mục đích của ứng dụng của mình (nghĩa là cùng tần số lớp gặp phải khi sử dụng hoạt động và có tính đến chi phí phân loại sai nếu biết).
Dikran Marsupial
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.