Mất cân bằng lớp học trong máy học giám sát


47

Đây là một câu hỏi nói chung, không cụ thể cho bất kỳ phương pháp hoặc tập dữ liệu. Làm thế nào để chúng ta giải quyết vấn đề mất cân bằng lớp học trong Supervised Machine learning trong đó số 0 là khoảng 90% và số 1 là khoảng 10% trong tập dữ liệu của bạn. Làm thế nào để chúng ta đào tạo tối ưu trình phân loại.

Một trong những cách tôi làm theo là lấy mẫu để làm cho tập dữ liệu cân bằng và sau đó huấn luyện bộ phân loại và lặp lại điều này cho nhiều mẫu.

Tôi cảm thấy điều này là ngẫu nhiên, Có khuôn khổ nào để tiếp cận những vấn đề này không.

Câu trả lời:


45

Có nhiều khuôn khổ và cách tiếp cận. Đây là một vấn đề thường xuyên.

Ví dụ:

  • Lấy mẫu . Chọn một mẫu con của các số không sao cho kích thước của nó khớp với bộ số không. Có một sự mất mát thông tin rõ ràng, trừ khi bạn sử dụng một khung phức tạp hơn (ví dụ, tôi sẽ chia bộ đầu tiên trên 9 tập con nhỏ hơn, loại trừ lẫn nhau, huấn luyện một mô hình trên mỗi một trong số chúng và tập hợp các mô hình).
  • Quá khổ . Sản xuất những cái nhân tạo cho đến khi tỷ lệ là 50% / 50%. Chủ nhân trước đây của tôi đã sử dụng điều này theo mặc định. Có nhiều khung cho việc này (tôi nghĩ SMOTE là phổ biến nhất, nhưng tôi thích các thủ thuật đơn giản hơn như Noisy PCA ).
  • Học một lớp . Chỉ cần giả sử dữ liệu của bạn có một vài điểm thực (điểm) và rất nhiều nhiễu ngẫu nhiên không tồn tại về mặt vật lý bị rò rỉ vào tập dữ liệu (bất cứ điều gì không phải là tiếng ồn). Sử dụng một thuật toán để khử dữ liệu thay vì thuật toán phân loại.
  • Đào tạo nhạy cảm với chi phí . Sử dụng hàm chi phí bất đối xứng để cân bằng giả tạo quá trình đào tạo.

Một số đánh giá sáng, theo thứ tự tăng độ phức tạp kỹ thuật \ mức độ chi tiết:

Ồ, và nhân tiện, 90% / 10% không phải là không cân bằng. Các bộ dữ liệu gian lận giao dịch thẻ thường được chia 99,97% / 0,03%. Điều này là không cân bằng.


Chỉ cần lưu ý rằng PCA ồn ào mà tôi đã trích dẫn có thể được xem là Quá khổ, Chính quy hóa hoặc Jitter, tùy thuộc vào chi tiết triển khai.
Lucas Gallindo

Cảm ơn Lucas cho các tài nguyên. Giúp rất nhiều. Tôi có một vấn đề đặc biệt trong tay khi tất cả các mẫu của tôi được dán nhãn là '1'. Tuy nhiên, trong thực tế, các mẫu này có tạp chất tối thiểu, tức là có một số hồ sơ thực sự được coi là '0' nhưng được dán nhãn là '1'. Tôi tin rằng loại vấn đề này thuộc về một phân loại lớp. Tôi hiểu thế có đúng không. Có một khung chung được sử dụng để xác định chúng không, ban đầu tôi đã thử phân cụm nhưng điều đó không hiệu quả.
NG_21

1
Tất cả các thuật toán này cần một số dữ liệu được dán nhãn là 0 và một số là một dữ liệu có độ chính xác 100% về tính chính xác của nhãn (hoặc một cái gì đó rất gần với 100%). Bạn có tất cả những cái, nhưng bạn biết rằng một tỷ lệ nhỏ dữ liệu này bị đánh giá sai, một tình huống khác. Nếu không có bất kỳ kiến ​​thức nào về miền ứng dụng, tôi sẽ tấn công nó bằng cách sử dụng Phát hiện bất thường, sau đó gắn nhãn dị thường là 0. Sau đó thử một số thuật toán phân loại (Có thể học một lớp). Với kiến ​​thức về miền ứng dụng, tôi sẽ tìm kiếm sự giúp đỡ từ một chuyên gia tên miền trước mọi thứ.
Lucas Gallindo

13

Điều này phụ thuộc rất nhiều vào phương pháp học tập. Hầu hết các cách tiếp cận mục đích chung có một (hoặc một vài) cách để đối phó với điều này. Một cách khắc phục phổ biến là gán một hình phạt phân loại sai cao hơn cho lớp thiểu số, buộc bộ phân loại phải nhận ra chúng (SVM, hồi quy logistic, mạng lưới thần kinh, ...).

Thay đổi lấy mẫu cũng là một khả năng như bạn đề cập. Trong trường hợp này, overampling lớp thiểu số thường là một giải pháp tốt hơn so với việc nhấn mạnh lớp đa số.

Một số phương pháp, như rừng ngẫu nhiên, không cần bất kỳ sửa đổi nào.


Cảm ơn. Bạn có thể chỉ ra bất kỳ tài nguyên nơi nó được giải thích với một số ví dụ. Có cách nào để đạt được điều này trong R / Python mà không cần dùng đến mã hóa thuật toán từ đầu.
NG_21

1
Kiểm tra chức năng đầu tiên trên gói R này: cran.r-project.org/web/packages/unbalified/unbal cân.pdf
Lucas Gallindo

7
Tại sao rừng ngẫu nhiên không cần bất kỳ sửa đổi? Tôi nghĩ bạn vẫn có thể chỉ định trọng lượng lớp học
mac

4

Vấn đề thường không phải là tần suất mà là số lượng trường hợp tuyệt đối trong nhóm thiểu số. Nếu bạn không có đủ biến thể trong mục tiêu khi so sánh với biến thể trong các tính năng, thì điều đó có nghĩa là thuật toán không thể phân loại mọi thứ rất chính xác.

Một điều là hình phạt phân loại sai có thể được sử dụng ở bước phân loại và không phải trong bước ước tính tham số nếu có. Một số phương thức không có khái niệm về tham số, chúng chỉ tạo ra các nhãn lớp hoàn toàn hoặc xác suất của lớp.

Khi bạn có công cụ ước tính xác suất thì bạn có thể đưa ra quyết định phân loại dựa trên cơ sở lý thuyết thông tin hoặc kết hợp giá trị kinh doanh.


1

Thêm hai mẹo: 1. sử dụng CDF, đếm tần số trong dữ liệu đào tạo của bạn hoặc sử dụng xác thực rất lớn (nếu bộ kiểm tra của bạn sẽ không thay đổi, nhưng bộ xác thực phải có cùng phân phối với tập huấn luyện), sau đó sắp xếp dự đoán của bạn và nhận X% đầu tiên (đếm tần số của bạn trước) cho một lớp và các lớp khác là / 2. mẫu có trọng số, mô hình sẽ có xu hướng cho lớp mẫu có trọng số, bạn có thể sử dụng phương sai mẫu v. vd. weighti = 1/2 (1- (vmax - vi) / vmax)

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.