Mô hình phân loại nhị phân cho dữ liệu không cân bằng


14

Tôi có một bộ dữ liệu với các thông số kỹ thuật sau:

  • Tập dữ liệu đào tạo với 193.176 mẫu với 2.821 dương
  • Kiểm tra bộ dữ liệu với 82.887 mẫu với 673 kết quả dương tính
  • Có 10 tính năng.

Tôi muốn thực hiện phân loại nhị phân (0 hoặc 1). Vấn đề tôi gặp phải là dữ liệu rất mất cân đối. Sau khi chuẩn hóa và nhân rộng dữ liệu cùng với một số kỹ thuật tính năng và sử dụng một vài thuật toán khác nhau, đây là những kết quả tốt nhất tôi có thể đạt được:

mean square error : 0.00804710026904
Confusion matrix : [[82214   667]
                   [    0     6]]

tức là chỉ có 6 lượt truy cập tích cực đúng. Đây là sử dụng hồi quy logistic. Dưới đây là những điều tôi đã thử với điều này:

  • Các thuật toán khác nhau như RandomForest, ReasonTree, SVM
  • Thay đổi giá trị tham số để gọi hàm
  • Một số kỹ thuật tính năng dựa trên trực giác để bao gồm các tính năng gộp

Bây giờ, câu hỏi của tôi là:

  1. Tôi có thể làm gì để cải thiện số lượt truy cập tích cực?
  2. Làm thế nào người ta có thể xác định nếu có một overfit trong trường hợp như vậy? (Tôi đã thử vẽ, v.v.)
  3. Tại thời điểm nào người ta có thể kết luận nếu có thể đây là phù hợp nhất có thể tôi có thể có? (có vẻ buồn khi chỉ xem 6 hit trong số 673)
  4. Có cách nào để tôi có thể làm cho các trường hợp mẫu dương tính nặng hơn để nhận dạng mẫu được cải thiện dẫn đến nhiều lần truy cập hơn không?
  5. Những sơ đồ đồ họa nào có thể giúp phát hiện các ngoại lệ hoặc một số trực giác về mẫu nào sẽ phù hợp nhất?

Tôi đang sử dụng thư viện scikit-learn với Python và tất cả các cài đặt là các hàm thư viện.

biên tập:

Dưới đây là kết quả với một vài thuật toán khác:

Phân loại rừng ngẫu nhiên (n_estimators = 100)

[[82211   667]
[    3     6]]

Cây quyết định:

[[78611   635]
[ 3603    38]]

Câu trả lời:


11
  1. Vì bạn đang thực hiện phân loại nhị phân, bạn đã thử điều chỉnh ngưỡng phân loại chưa? Vì thuật toán của bạn có vẻ không nhạy cảm, tôi sẽ thử hạ nó xuống và kiểm tra xem có cải tiến không.

  2. Bạn luôn có thể sử dụng Đường cong học tập hoặc biểu đồ của một tham số mô hình so với lỗi Đào tạo và Xác thực để xác định xem mô hình của bạn có bị quá mức hay không. Có vẻ như nó phù hợp trong trường hợp của bạn, nhưng đó chỉ là trực giác.

  3. Chà, cuối cùng thì nó phụ thuộc vào tập dữ liệu của bạn và các mô hình khác nhau mà bạn đã thử. Tại thời điểm này, và không có thử nghiệm thêm, không thể có câu trả lời chắc chắn.

  4. Không tự nhận là một chuyên gia về chủ đề này, có một số kỹ thuật khác nhau mà bạn có thể làm theo (gợi ý: liên kết đầu tiên trên google ), nhưng theo tôi, trước tiên bạn nên đảm bảo rằng bạn chọn chức năng chi phí của mình một cách cẩn thận, để nó đại diện cho những gì bạn đang thực sự tìm kiếm

  5. Không chắc chắn những gì bạn có nghĩa là bằng trực giác mẫu, bạn có thể giải thích?

Nhân tiện, kết quả của bạn với các thuật toán khác nhau mà bạn đã thử là gì? Họ có khác nhau không?


1
Điều chỉnh ngưỡng cho hồi quy logistic đã thực hiện thủ thuật. Cảm ơn danh sách các nguồn.
tejaskhot

Ai đó có thể dán một đoạn mã về cách bạn điều chỉnh ngưỡng hồi quy logistic không?
Blenz

0

Vì dữ liệu rất sai lệch, trong trường hợp như vậy, chúng ta cũng có thể thử đào tạo mô hình sau khi lấy mẫu quá nhiều dữ liệu.

SMOTE và ADASYN là một số kỹ thuật mà chúng ta có thể sử dụng để lấy mẫu dữ liệu.

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.