'Dengeli' bir veri seti mi yoksa 'temsilci' bir veri seti mi kullanmalıyım?


48

'Makine öğrenmesi' görevim, iyi huylu Internet trafiğini kötü amaçlı trafiğe ayırmak. Gerçek dünya senaryosunda, İnternet trafiğinin çoğu (% 90 veya daha fazla) iyi huyludur. Bu yüzden, modelleriimi de eğitmek için benzer bir veri kurulumu seçmem gerektiğini hissettim. Ancak, modelleri eğitmek için eşit miktarda iyi huylu ve kötü niyetli trafik durumlarını ima eden bir "sınıf dengeleme" veri yaklaşımı kullanan bir araştırma makalesine ya da ikiine (çalışma alanımda) rastladım.

Genel olarak, makine öğrenimi modelleri kuruyorsam, gerçek dünya sorununu temsil eden bir veri setine mi gitmeliyim, yoksa modelleri oluşturmak için daha uygun olan dengeli bir veri kümesi mi kullanmalıyım (çünkü bazı sınıflandırıcılar sınıf dengesizliği ile iyi davranmıyorlarsa, veya bana bilinmeyen diğer nedenlerden dolayı)?

Birisi hem seçimlerin hem de hangisinin seçileceğine karar vermenin lehte ve aleyhinde daha fazla ışık tutabilir mi?

Yanıtlar:


38

Cevabın sizin kullanım durumunuza bağlı olduğunu söyleyebilirim. Tecrübelerime dayanarak:

  • Temsili bir model oluşturmaya çalışıyorsanız - tahmin etmek yerine verileri açıklayan bir model - o zaman verilerinizin temsili bir örneğini kullanmanızı öneririm.
  • Öngörülü bir model oluşturmak istiyorsanız, özellikle AUC veya rütbe sırasına göre iyi performans gösteren ve temel bir ML çerçevesi (yani Karar Ağacı, SVM, Naive Bayes, vb.) Kullanmayı planlayan bir model oluşturmak istiyorsanız, dengeli bir veri seti çerçevesinde. Sınıf dengesizliği ile ilgili literatürün çoğu, rastgele örneklemenin (çoğunluk sınıfını azınlık sınıfının boyutuna indirerek) performans kazanımlarını artırabileceğini bulmaktadır.
  • Prediktif bir model oluşturuyorsanız, ancak daha gelişmiş bir çerçeve kullanıyorsanız (yani, sarıcı yoluyla örnekleme parametrelerini belirleyen bir şey veya sınıf eşdeğerliğine örnek alan bir torbalama çerçevesinin bir modifikasyonunu kullanıyorsanız), tekrar temsili örneği beslemenizi ve izin vermenizi öneririm. algoritma eğitim için verilerin dengelenmesine özen gösterir.

2
Temsili bir model oluşturmaya çalışıyorsanız - tahmin etmekten ziyade verileri açıklayan bir model ... kim önceden karar vermeyen bir model inşa eder? Sizi oraya
götürmedim

8
Denetimsiz öğrenme, tahmin etmeye zorunlu olmayan bir model oluşturduğunuz bir örnek olabilir. Bazı durumlarda verilerinizi araştırmak veya özetlemek isteyebilirsiniz.
DSea

1
Örneğinizi dengelemenin daha güvenli olduğunu söyleyebilirim, ancak örnekleme ağırlıkları da toplayın, böylece daha sonra gerekirse verilerinizi temsili olması için yeniden ağırlıklandırabilirsiniz. Çok sayıda sosyal bilimci, örneğin teorileri doğrulamak için kestirici olmayan modeller oluşturur.
shadowtalker

Dengeli bir model, dengeli bir modeli taklit etmek için ağırlıklı gözlemler kullanan temsili bir modelle nasıl karşılaştırılır?
JenSCDC

1
AUC, sınıf dengesizliğinden etkilenmez, modelinizin rastgele seçilen bir negatif sınıftan daha yüksek, rastgele seçilen bir pozitif sınıfı sıralama olasılığı. Buradaki tavsiyene genel amaçlarla katılmıyorum. Temsili bir örneğiniz varsa, örneğin basit bir rasgele örneklem varsa, temsili bırakılmalıdır.
Matthew Drury

8

Ben her zaman senaryoya bağlı olduğunu düşünüyorum. Temsili bir veri seti kullanmak her zaman çözüm değildir. Eğitim setinizin 1000 negatif örnek ve 20 olumlu örnek olduğunu varsayalım. Sınıflandırıcıda herhangi bir değişiklik yapılmadan, algoritmanız tüm yeni örnekleri negatif olarak sınıflandırma eğiliminde olacaktır. Bazı senaryolarda bu sorun değil Fakat birçok durumda eksik olan pozitif örneklerin maliyeti yüksektir, bu nedenle bunun için bir çözüm bulmanız gerekir.

Bu gibi durumlarda, maliyete duyarlı bir makine öğrenme algoritması kullanabilirsiniz. Örneğin tıbbi teşhis durumunda veri analizi.

Özetle: Sınıflandırma hataları aynı maliyete sahip değil!


7

Her iki yaklaşımı da denemek ve beklenen performansı en üst düzeye çıkarmak olanı tutmak için her zaman bir çözüm vardır.

Sizin durumunuzda, bazı yanlış pozitiflerin maliyeti karşılığında yanlış negatifleri en aza indirmeyi tercih ettiğinizi varsayarım, bu nedenle sınıflandırıcınızı güçlü negatif negatiflere karşı önyargılı tutmak ve eğitim setinizdeki olumsuz örneklerin sayısını azaltarak dengesizliği ele almak istiyorsunuz.

Daha sonra, kesin veriler / hatırlama veya duyarlılık / özgüllük ya da modeli, indirgenmiş veriler üzerinde oluştururken gerçek verilerde bulunan önemli bir deseni göz ardı etmediğinizden emin olmak için tam, dengesiz, veri setinde size uygun ne olursa olsun hesaplayın.


4

Operasyonel ve eğitim senaryolarını ayırın.

Operasyonel senaryo, sınıflandırıcınızın ölçüleceği senaryodur. İyi performans göstermen gereken yer burası. Kullanım, bu senaryonun temsilcisi olan bir veri setine sahip olmalıdır.

Eğitim senaryosu, operasyon senaryosunda iyi performans gösterecek bir sınıflandırıcı oluşturmak için ne yapıyorsanız onu yapar.

Çoğu zaman her iki senaryoda da bulunan veri kümeleri aynı niteliktedir, bu nedenle onları ayırmaya gerek yoktur. Örneğin, bazı çevrimiçi mağazalarınız vardır, bu nedenle ileride kullanımda iyi bir performans sergilemek için geçmiş kullanım eğitimi için kullanın. Ancak, eğitim sırasında operasyonel senaryoyu temsil edenden farklı bir veri seti kullanabilirsiniz. Aslında, eğer uyursanız, bir sınıflandırıcıyı hayal ediyorsanız, operasyonel senaryonuzda doğrulayın (bu adım uyandıktan sonra yapılması gerekir), normal makine öğrenim yoluna gittikten sonra da aynısınız.

Operasyonel ve eğitim senaryoları arasındaki ayrım veri kümesi dengesiz olduğunda önem kazanmaktadır. Çoğu algoritma böyle bir veri setinde iyi performans göstermez.

Bu nedenle, iki veri kümesi kullanmaktan çekinmeyin - Eğitim için dengeli bir veri seti kullanabilirsiniz. Tamamladığınızda, işlemsel veri kümesi sınıflandırıcınızı doğrulayın.


3

Göz önünde bulundurulması gereken iki konu olduğunu düşünüyorum: Eğitim süresi ve tahmin doğruluğu.

Basit bir örnek verin: Çok değişkenli normal dağılıma sahip iki sınıfınız olduğunu düşünün. Temel olarak, ilgili sınıf araçlarını ve sınıf kovaryanslarını tahmin etmeniz gerekir. Şimdi umursadığınız ilk şey, sınıf anlamındaki farkın tahminidir: ancak performansınız, en kötü tahmini ortalamanın doğruluğu ile sınırlıdır: birinin 100'inci ondalık basamak için bir ortalama tahmin etmesi iyi değildir - eğer diğer ortalama ise 1 ondalık basamak olarak tahmin edildi. Bu yüzden tüm verileri kullanmak bilgi işlem kaynaklarının israfıdır - bunun yerine daha yaygın olan sınıfı örnekleyebilir ve sınıfları uygun şekilde yeniden değerlendirebilirsiniz. (bu bilgi işlem kaynakları daha sonra farklı girdi değişkenlerini araştırmak için kullanılabilir.)

Şimdi ikinci mesele tahmine dayalı doğruluktur: farklı algoritmalar, kendi hedeflerinizle aynı fikirde olabilecek veya olmayabilir, farklı hata ölçümleri kullanır. Örneğin, lojistik regresyon genel olasılık hatasını cezalandırır, bu nedenle verilerinizin çoğu bir sınıftan geliyorsa, o zaman tanımlamaya çalışmak yerine o sınıfın doğru olasılık tahminlerini (örneğin,% 90 - 95% olasılık) geliştirme eğiliminde olacaktır. Nadir bir sınıf Bu durumda, kesinlikle nadir sınıfı vurgulamak için yeniden denemek istersiniz (ve ardından olasılık tahminlerini yeniden düzenlemek için tahmini [önyargı terimini ayarlayarak] ayarlayın)

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.