Lớp không cân bằng: class_ weight cho thuật toán ML trong Spark MLLib


8

Trong python sklearn, có nhiều thuật toán (ví dụ hồi quy, rừng ngẫu nhiên ... vv) có tham số class_ weight để xử lý dữ liệu không cân bằng.

Tuy nhiên, tôi không tìm thấy tham số như vậy cho các thuật toán MLLib. Có kế hoạch triển khai class_ weight cho một số thuật toán MLLib không? Hoặc có bất kỳ cách tiếp cận nào trong MLLib cho dữ liệu không cân bằng? Hoặc chúng ta thực sự phải tự xử lý tất cả các up / downsampling trong MLLib?

Cảm ơn!


Có, các thuật toán trong MLLib của Spark được chuẩn bị để xử lý các vấn đề phức tạp. Ngoài ra, theo hiểu biết của tôi, không có cách nào để thực hiện phân chia phân tầng. Do đó, bất kỳ số liệu hiệu suất nào bạn có được sẽ không được trình bày một cách thích hợp.
Samuel Sherman

Dưới đây là một thử nghiệm về hồi quy logistic có trọng số trong MLlib từ tài liệu 2.2.
Emre

Câu trả lời:


1

Các thuật toán trong MLLib luôn được sử dụng làm cơ sở trong kịch bản sản xuất và chúng thực sự không thể xử lý một số vấn đề công nghiệp, như mất cân bằng nhãn. Vì vậy, nếu bạn muốn sử dụng chúng, bạn phải cân bằng các trường hợp của mình.

Ngoài ra, cơ chế của BSP trong Spark, bạn có thể xem đơn giản là dữ liệu song song , có thể là lý do chính khiến Spark không giải quyết vấn đề đó. Spark có thể khó gửi các phiên bản tới tất cả các nút trong cụm, trong khi các phiên bản một phần của mỗi nút có chung phân phối nhãn như toàn bộ.

Cuối cùng, bạn chỉ phải cân nhắc giá trị tổn thất cho mỗi trường hợp được dán nhãn nhỏ trong quá trình lặp nếu bạn muốn thực hiện nó.

Hy vọng điều này sẽ giúp bạn, chúc may mắn -)


1

Một trong những cách tôi đã xử lý các lớp mất cân bằng trong quá khứ là xây dựng một trình phân loại dựa trên các mẫu dữ liệu để có sự phân chia mẫu 50/50. Điều này có nghĩa là sử dụng tất cả các điểm dữ liệu được liên kết với lớp thiểu số của bạn và lấy mẫu ngẫu nhiên cùng một số điểm dữ liệu từ lớp đa số của bạn.

Việc này có hoạt động hay không phụ thuộc vào số lượng dữ liệu bạn thực sự có trong lớp thiểu số của bạn - nếu bạn có sự mất cân bằng lớp cực đoan (<5% trường hợp lớp thiểu số), thì bạn có thể muốn xem xét quá mức tổng hợp.

Bạn có thể nhìn vào pydf.rdd.takeSample() tia lửa, hoặc df.sampletrong gấu trúc.


0

Cách tôi xử lý sự mất cân bằng lớp là bằng các phương pháp sau: 1. Hợp nhất lớp xuất hiện ít thường xuyên nhất với các lớp khác. Rõ ràng bạn nên sử dụng một số loại kiến ​​thức tên miền thay vì hợp nhất chúng một cách ngẫu nhiên 2. Sử dụng các kỹ thuật lấy mẫu lại như oversampling, undersampling, SMOTE, ADASYN. Tôi không khuyên bạn nên sử dụng các kỹ thuật này vì chúng không thực sự đại diện cho dữ liệu thực tế. Nhưng trong mọi trường hợp, bạn chắc chắn có thể xem chúng


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.