Dac non-over sampling so với over sampling như thế nào năm 2024

Chắc hẳn đối với ai làm việc với dữ liệu đều sẽ gặp ít nhất một vài lần với vấn đề mất cân bằng dữ liệu. Đây cũng là một vấn đề rất quan trọng đối với các bài toán học máy. Vậy mất cân bằng dữ liệu là gì?

Mất cân bằng dữ liệu [Imbalanced dataset] là tập dữ liệu có tỷ lệ categories khác nhau, thường là chênh nhau khá xa. Ví dụ dữ liệu y tế, chắc hẳn dữ liệu về một số bệnh sẽ có nhiều mẫu âm tính nhiều hơn nhiều so với mẫu dương tính, có thể lên tới tỷ lệ 98%-2%. Điều này ảnh hưởng rất lớn tới mô hình dự đoán, khi mà sự mất cân bằng như vậy sẽ khiến mô hình dự báo kém chính xác trên nhóm thiểu số, bởi đa phần kết quả dự báo thường thiên về 1 nhóm là nhóm đa số

Vậy đứng trước vấn đề mất cân bằng dữ liệu, chúng ta phải xử lý thế nào. Khi mình google search thì ra khá là nhiều giải pháp, kết quả, có cả code ví dụ luôn

. Tuy nhiên mình bắt gặp một bài viết thiên về kiểu lý giải nhiều hơn, của nước ngoài và đọc khá là dễ hiểu. Vậy để mình chia sẻ kiến thức mình đọc được nhé.

8 chiến thuật cho mất cân bằng dữ liệu

1. Thu thập thêm dữ liệu

Đây có thể là điều mà ai cũng nghỉ tới đầu tiến, có thể nghe khá là điên rồ bởi nếu bạn có thể thu thập được thêm thì đã chẳng google search.

Bình tĩnh lại nào, việc thu thập dữ liệu ở đây phần lớn thường bị bỏ qua vì cho rằng không thể. Tuy nhiên, có thể có nhiều cách, thử suy ngẫm xem liệu bạn có thể thu thập thêm dữ liệu không?

2. Thử thay đổi Metric đánh giá

Nếu các bạn chưa hiểu hay chưa nắm rõ về các metric đánh giá thì có thể đọc thêm ở đây [Cũng là một bài viết của mình

]

Trong các độ đo, chắc hẳn các bạn từng nghe đến độ đo Accuracy, khá là phổ biến trong các bài toán học máy. Hiểu đơn giản là độ đo này sẽ tính tỷ lệ số mẫu được dự đoán đúng trên toàn bộ số mẫu cần dự đoán.

Hmm, Với một bài toán cho dữ liệu là 10000 mẫu là A, 100 mẫu là B, coi như ta chia ra 2 tập train và test với tỷ lệ 7-3, vậy ta sẽ đánh giá trên tập dữ liệu gồm 3000 mẫu A và 30 mẫu B. Tất nhiên khi mô hình học với dữ liệu mất cân bằng thế kia sẽ nghiêng về dự đoán là A nhiều hơn rồi. Vậy giả sự mô hình dự đoán tất cả đều là A, lúc này Accuracy sẽ đạt được là 3000/3030 ~ 99%. Vâng các bạn không nghe nhầm đâu, mô hình dự đoán tệ kinh khủng mà độ chính xác đạt 99% =]]

Ở bài viết này, mình khuyên bạn nên sử dụng một vài thước đo hiệu suất mô hình khác mà có thể đánh giá đúng mô hình dù có mất cân bằng dữ liệu đi chăng nữa. Có thể kể tới 1 số metrics đánh giá mô hình sau:

  • Confusion Matrix
  • Precision
  • Recall
  • F1 Score

Bên cạnh đó bạn cũng có thể sử dụng một số thước đo sau

  • Kappa [//en.wikipedia.org/wiki/Cohen's_kappa ]
  • Đường cong ROC

3. Thử lấy lại mẫu trong tập dữ liệu

Bạn có thể thay đổi dataset mà bạn sử dụng để xây dựng mô hình dự đoán để dữ liệu cân bằng hơn

Thay đổi này được gọi là lấy mẫu tập dữ liệu, có 2 phương pháp chính có thể sử dụng để tang đều các lớp

  • Thêm bản sao của các mẫu từ lớp ít được đại diện, gọi là over sampling
  • Xóa các cá thể khỏi lớp được đại diện quá mức, gọi là under-sampling

Những cách tiếp cận này thường dễ thực hiện và chạy nhanh. Có rất nhiều công cụ hỗ trợ việc này, bạn đọc có thể tham khảo thêm tại đây

Trên thực tế bạn nên thử đồng thời cả 2 cách tiếp cận, vừa thêm vừa bớt, nghe có vẻ công bằng và hợp lý hơn , xem độ chính xác có tốt hơn không

Về Over-sampling và Under-sampling, các bạn có thể đọc thêm bài viết của Wikipedia ở đây

Một vài nguyên tắc chú ý:

  • Cân nhắc thử nghiệm Under-sampling khi bạn có rất nhiều dữ liệu [~ 10 – 100k bản ghi hoặc hơn]
  • Cân nhắc thử nghiệm Over-sampling khi bạn không có nhiều dữ liệu [

Chủ Đề