SMOTE'u metin sınıflandırmasına nasıl uygularsınız?


15

Sentetik Azınlık Aşırı Örnekleme Tekniği (SMOTE), dengesiz veri kümesi probleminde kullanılan bir aşırı örnekleme tekniğidir. Şimdiye kadar genel, yapılandırılmış verilere nasıl uygulanacağı hakkında bir fikrim var. Ancak metin sınıflandırma problemine uygulamak mümkün müdür? Verinin hangi kısmını fazla örneklemeniz gerekiyor? Bununla ilgili başka bir soru daha var, ancak bir cevabı yok. Bununla başlamayı nereden öğrenebilirim?

Yanıtlar:


11

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:

  1. İ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!)

  1. 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


Cevabınız için teşekkürler, ancak tek sıcak kodlama ile temsil edildiyse numuneler için SMOTE uygulanabilir mi? yoksa başka bir şekilde mi temsil edilmeli?
adnanmuttaleb

Merhaba Kasra, bahsettiğiniz adımlarla ilgili bazı uygulamaları paylaşabilirsiniz
Payal Bhatia

2

Daha fazla metin / cümle eğitim verisi eklemek istiyorsanız, önceden eğitilmiş kelime düğünlerini kullanabilirsiniz. Pretrained modelleri gibi her sözlük kelimenin kelime vektörü temsilini sağlar. Ayrıca 'most_smiliar' kelimeleri de sağlar.

Her TOP ve en TOP_N benzer kelimesi ile her bir kelimenin permütasyonlarını yaparak örnek cümleyi kullanabilir ve yeni örnekler oluşturabilirsiniz.

cümlenizde 3 kelime varsa ve her kelime için en çok 3 kelime seçerseniz, 27 kez örnekleyebilirsiniz.


Merhaba Yashodhan, etki alanına özgü ise bu işlemi nasıl kullanabiliriz? Teşekkürler
Payal Bhatia
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.