Trên thực tế, NLP là một trong những lĩnh vực phổ biến nhất trong đó việc lấy lại dữ liệu là cần thiết vì có nhiều tác vụ phân loại văn bản xử lý vấn đề mất cân bằng (nghĩ về lọc thư rác, xúc phạm phát hiện bình luận, phân loại bài viết, v.v.). Nhưng SMote dường như có vấn đề ở đây vì một số lý do:
- SMote hoạt động trong không gian tính năng. Điều đó có nghĩa là đầu ra của SMOTE không phải là dữ liệu tổng hợp mà là đại diện thực sự của văn bản bên trong không gian tính năng của nó.
- Một mặt SMOTE hoạt động với KNN và mặt khác, không gian tính năng cho vấn đề NLP là rất lớn. KNN sẽ dễ dàng thất bại trong những kích thước khổng lồ đó.
Vì vậy, tôi có thể đề xuất cho bạn hai cách tiếp cận:
- Đừng quan tâm đến việc thể hiện văn bản thực sự của các mẫu tổng hợp mới mà tôi cho là sẽ ổn. Bạn cần cân bằng phân phối cho trình phân loại của mình chứ không phải cho người đọc dữ liệu văn bản. Vì vậy, hãy áp dụng SMote như truyền thống (tuy nhiên tôi thường sử dụng giải pháp 2 dưới đây để tôi không nhận được kết quả!) Với một số bước Giảm kích thước.
1) Giả sử bạn muốn tạo các mẫu dữ liệu của mình từ lớp nhỏ gấp đôi bằng cách sử dụng 3-NN. Bỏ qua các lớp chính và chỉ giữ các mẫu lớp nhỏ.
2) Đối với mỗi điểm mẫu trong không gian đặc trưng, chọn 5 hàng xóm gần nhất. Sau đó chọn ngẫu nhiên 3 trong số chúng (không phức tạp không cần thiết? Nếu tôi không muốn giải thích thuật toán ban đầu, tôi sẽ nói chỉ cần chọn 3 hàng xóm!)
3) Với mỗi kích thước, hãy tính khoảng cách giữa mẫu và hàng xóm và nhân nó trong một số ngẫu nhiên trong khoảng từ 0-1 và thêm nó vào giá trị ban đầu của mẫu trong kích thước đó. (đoạn văn phức tạp này có nghĩa đơn giản là cho mỗi thứ nguyên chọn một giá trị ngẫu nhiên giữa mẫu ban đầu và mẫu lân cận đó!)
- Nhưng tôi thường thực hiện một lớp phủ ngoài khác trên văn bản (trực quan hơn) và là loại NHỎ.
k = 2
n
mmnkk