Aslında NLP, dengesiz problemle ilgili birçok metin sınıflandırma görevi olduğu için (spam filtrelemesi, hakaret yorumu tespiti, makale sınıflandırması vb.) Verilerin yeniden örneklenmesinin gerektiği en yaygın alanlardan biridir. Ancak SMOTE burada bazı nedenlerden dolayı sorunlu görünüyor:
- SMOTE özellik alanında çalışır. SMOTE çıktısının, özellik alanı içindeki bir metnin gerçek bir temsilcisi olan sentetik bir veri olmadığı anlamına gelir.
- Bir tarafta SMOTE, KNN ile çalışır ve diğer yandan NLP problemi için özellik alanları büyük ölçüde büyüktür. KNN bu büyük boyutlarda kolayca başarısız olacaktır.
Size iki yaklaşım önerebilirim:
- İyi olması gerektiğini düşündüğüm yeni sentetik örneklerin gerçek metin temsilini önemsemeyin. Metin verilerinin bir okuyucusu için değil, sınıflandırıcınızın dağılımını dengelemeniz gerekir. Bu yüzden SMOTE'u geleneksel olarak uygulayın (ancak genellikle aşağıdaki 2 numaralı çözümü kullanıyorum, böylece sonucu garanti etmiyorum!) Bazı Boyutsallık Azaltma adımıyla.
1) Veri örneklerinizi 3-NN kullanarak küçük sınıftan iki katına çıkarmak istediğinizi varsayalım. Ana sınıf (lar) ı dikkate almayın ve yalnızca küçük sınıf örneklerini saklayın.
2) Özellik uzayındaki her bir numune noktası için en yakın 5 komşuyu seçin. Sonra 3 tanesini rastgele seçin (gereksiz karmaşık değil mi? Orijinal algoritmayı açıklamak istemiyorsam, sadece 3 komşu seç diyebilirim!)
3) Her boyut için numune ve komşular arasındaki mesafeyi hesaplayın ve 0-1 arasında rastgele bir sayı ile çarpın ve bu boyuttaki numunenin orijinal değerine ekleyin. (Bu karmaşık paragraf, her boyut için orijinal örnek ile o komşu arasında rastgele bir değer seçmeniz anlamına gelir!)
- Ama genellikle metinde (çok daha sezgisel) olan ve bir çeşit SMOTE olan başka bir aşırı örnekleme yapıyorum.
1) Ana sınıfı görmezden gelin. Gerçek belge uzunluğuna (kelime / kelime sayısı) göre yeni örnekler üretebilmemiz için küçük sınıftaki tüm belgelerin uzunluk dağılımını alın. Sınıfın boyutunu üç katına çıkarmak istediğimizi varsayıyoruz (bu nedenle orijinal belge başına sentetik belge üretmek )k = 2
2) Bu dağılıma göre rasgele tamsayı dizisi oluşturun . Yeni sentetik belgenin uzunluğunu belirlemek için kullanılır.n
3) Her belge için: Rastgele uzunluk dizisinden bir tamsayı ve uzunluğu tamsayıya yakın rastgele belge seçin. Tüm belgelerinin jetonlarını bir kümeye koyun ve rastgele olarak jeton kez seçin. bunlar senin olan yeni belgeler.mmnkk