Denetimli Makine Öğreniminde Sınıf Dengesizliği


47

Bu genel olarak bir sorudur, herhangi bir yönteme veya veri kümesine özgü değildir. Veri setinde 0 sayısının% 90 civarında, 1 sayısının% 10 civarında olduğu Denetimli Makine öğreniminde sınıf dengesizliği problemiyle nasıl başa çıkacağız. Sınıflandırıcıyı nasıl optimum şekilde eğitiyoruz?

İzlediğim yollardan biri, veri setini dengelemek ve ardından sınıflandırıcıyı eğitmek ve bunu çoklu örnekler için tekrarlamak için örneklemektir.

Bunun rastgele olduğunu hissediyorum, bu tür sorunlara yaklaşmak için herhangi bir çerçeve var mı.

Yanıtlar:


45

Pek çok çerçeve ve yaklaşım var. Bu tekrarlayan bir konudur.

Örnekler:

  • Undersampling . Sıfır kümelerinin bir alt örneğini seçin, öyle ki boyutu kümelerle eşleşir. Daha karmaşık bir çerçeve kullanmazsanız, bariz bir bilgi kaybı vardır (örneğin, ilk seti 9 küçük, birbirini dışlayan alt kümeye böler, her biri için bir model eğitir ve modelleri birleştiririm).
  • Aşırı örnekleme . Oranı% 50 /% 50 olana kadar yapay olanları üretin. Önceki işverenim bunu varsayılan olarak kullandı. Bunun için pek çok çerçeve var (Bence SMOTE en popüler, ancak Noisy PCA gibi basit püf noktaları tercih ediyorum ).
  • Bir Sınıf Öğrenmesi . Verilerinizin birkaç gerçek noktaya (olanlar) ve fiziksel olarak veri kümesine sızmayan rastgele bir gürültüye sahip olduğunu (bir tanesi olmayan bir şey gürültü olduğunu) kabul edin. Sınıflandırma algoritması yerine verileri göstermek için bir algoritma kullanın.
  • Maliyete Duyarlı Eğitim . Eğitim sürecini yapay olarak dengelemek için asimetrik bir maliyet işlevi kullanın.

Artan teknik karmaşıklık sırasına göre bazı gözden geçirmeler \ ayrıntı düzeyi:

Oh, ve bu arada,% 90 /% 10 dengesiz değil. Kart işlem hilesi veri kümeleri genellikle% 99,97 /% 0,03 oranında bölünmüştür. Bu dengesiz.


Az önce bahsettiğim Gürültülü PCA'nın, uygulama detaylarına bağlı olarak Örnekleme, Düzenleme veya Jitter olarak görülebileceğini fark ettim.
Lucas Gallindo

Kaynaklar için teşekkürler Lucas. Çok yardımcı olur. Bütün numunelerimin '1' olarak etiketlendiği ellerde tuhaf bir sorunum var. Ancak gerçekte bu örneklerin minimum kirliliği vardır, yani aslında '0' olması gereken, ancak '1' olarak etiketlenen bazı kayıtlar vardır. Bu tür bir sorunun bir sınıflamaya ait olduğuna inanıyorum. Benim anlayışım doğru mu? Onları tanımlamak için kullanılan ortak bir çerçeve var mı, başlangıçta kümeleme yapmaya çalışıyordum ama bu işe yaramadı.
NG_21

1
Bu algoritmaların tümü, etiketin doğruluğu hakkında (veya% 100'e çok yakın bir şey) sıfır olarak etiketlenmiş, bazıları da% 100 kesinliğe sahip bir veriye ihtiyaç duyar. Hepsine sahipsiniz, ancak bu verilerin küçük bir yüzdesinin yanlış etiketlendiğini, farklı bir durum olduğunu biliyorsunuz. Uygulama alanı hakkında herhangi bir bilgim olmadan, Anomaly Detection kullanarak ona saldırır, sonra anomalileri sıfır olarak etiketlerdim. Sonra bir sınıflandırma algoritması deneyin (belki de One Class Learning). Uygulama alanı hakkında bilgi sahibi olduğumda, her şeyden önce bir etki alanı uzmanından yardım isteyeceğim.
Lucas Gallindo

13

Bu büyük ölçüde öğrenme yöntemine bağlıdır. Çoğu genel amaçlı yaklaşım, bununla başa çıkmanın bir (veya birkaç) yoluna sahiptir. Yaygın bir düzeltme, azınlık sınıfına daha yüksek bir yanlış sınıflandırma cezası atamak, sınıflandırıcıyı onları tanımaya zorlamaktır (SVM, lojistik regresyon, sinir ağları, ...).

Örneklemeyi değiştirmek de bahsettiğiniz gibi bir olasılık. Bu durumda, azınlık sınıfını aşmak genellikle çoğunluk sınıfını örneklemekten daha iyi bir çözümdür.

Rastgele ormanlar gibi bazı yöntemlerde herhangi bir değişiklik yapılması gerekmez.


Teşekkürler. Bazı örneklerle açıklandığı herhangi bir kaynağa işaret edebilir misiniz? Bu algoritmayı sıfırdan kodlamaya başvurmadan R / Python'da bunu başarmanın bir yolu var mı?
NG_21

1
Bu R paketindeki ilk işlevi kontrol edin: cran.r-project.org/web/packages/unbalanced/unbalanced.pdf
Lucas Gallindo

7
Rastgele orman neden herhangi bir değişikliğe ihtiyaç duymaz? Bence hala sınıf ağırlığını atayabiliyorsun
mac

4

Sıklıkla sorun, azınlık sınıfındaki vakaların sıklığı değil, mutlak miktarlardır. Eğer özelliklerdeki farklılaşma ile karşılaştırıldığında hedefte bir farklılığa sahip değilseniz, o zaman algoritmanın işleri doğru bir şekilde sınıflandıramayacağı anlamına gelebilir.

Bir şey, sınıflandırma aşamasında yanlış sınıflandırma cezasının kullanılabileceği ve eğer varsa parametre kestirim aşamasında kullanılamadığıdır. Bazı yöntemler parametre kavramına sahip değildir, sadece doğrudan sınıf etiketleri veya sınıf olasılıkları üretirler.

Olasılık tahmincisine sahipseniz, bilgi teorik gerekçelerine veya işletme değerinin kombinasyonuna dayanarak sınıflandırma kararı verebilirsiniz.


1

İki numara ekleyin: 1. CDF kullanın, egzersiz verilerinizdeki sıklığı sayın veya çok büyük doğrulama kullanın (test kümeniz değişmeyecekse ancak doğrulama kümesinin eğitim seti ile aynı dağılıma sahip olması gerekir), tahmininizi sıralayın ve birinci sınıf% X (önceki sıklık sayınız) bir sınıf ve diğerleri için başka / 2. ağırlıklı örnek, model ağırlıklı örnek sınıfına eğilimindedir, örnek varyansı v. weighti = 1/2 (1- (vmax - vi) / vmax)

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.