Sınıflandırma problemi için sınıf değişkeninin eşit olmayan dağılımı varsa hangi tekniği kullanmalıyız?


10

örneğin. iyi ve kötü iki sınıf ile bir sınıf değişken kredi puanlama varsa, # (iyi) = 700 ve # (kötü) = 300. Verilerimi kısaltmak istemiyorum. hangi tekniği kullanmalıyım? SVM kullanıyordum ama tahminlerde tüm kötüleri iyi veriyor.


Bu asimetri o kadar da kötü görünmüyor ; başka bir yerde hata olmadığından emin misin? Ayrıca veriler hakkında daha fazla bilgi verebilir misiniz? Bunun genel bir çözümü yok.

veri kümemde 17 öngörücü (3 sürekli ve 14 kategorik), açıkçası 1 sınıf değişkeni ve toplam 1000 saplantı var. Sıklık dağılımı sınıf var. tren ve test ile tren (kötü) = 197, test (kötü) = 103, trian (iyi) = 446, test (iyi) = 254
asad.taj

Yanıtlar:


6

Azınlık sınıfınızda gözlemlerin% 30'una sahip olduğunuz için sınıf örnek boyutlarınız dengesiz görünmüyor. Sizin durumunuzda lojistik regresyon iyi performans göstermelidir. Modelinize giren yordayıcıların sayısına bağlı olarak, sırt (L2) veya kement (L1) gibi parametre tahmini için bir tür cezalandırma düşünebilirsiniz. Çok dengesiz sınıfla ilgili sorunlara genel bakış için bkz. Cramer (1999), The Statistician, 48: 85-94 ( PDF ).

Kredi puanlama tekniklerine aşina değilim, ancak SVM'yi ağırlıklı sınıflarla kullanabileceğinizi gösteren bazı makaleler buldum, örneğin Kredi Puanlama için Destek Vektör Makineleri: Standart Olmayan Durumlara Uzatma . Alternatif olarak, CART veya Rastgele Ormanlar ile artırma yöntemlerine bakabilirsiniz (ikinci durumda, örnekleme stratejisini, sınıflandırma ağaçlarını oluştururken her sınıfın temsil edileceği şekilde uyarlamak mümkündür). Novak ve LaDue'nin makalesi, GLM ve Recursive partitioning'in artılarını ve eksilerini tartışıyor . Bu makalede, Hand ve Vinciotti tarafından dengesiz sınıf boyutlarına sahip Scorecard yapımı da buldum .


Cramer (1999) için bağlantı paper.tinbergen.nl/98085.pdf olarak
germcd

10

Sınıf dengesizliği problemlerini çözmeye yönelik popüler bir yaklaşım, sınıflandırıcıyı olumlu örneklere daha fazla dikkat etmesi için yanlı tutmaktır. Bu, örneğin, pozitif sınıfı negatif sınıfa göre yanlış sınıflandırma ile ilişkili cezayı artırarak yapılabilir. Başka bir yaklaşım, dengeli bir veri kümesi oluşturmak için çoğunluk sınıfını aşırı örnekleyerek veya azınlık sınıfını örnekleyerek veriyi önceden işlemektir.

Ancak, sizin durumunuzda, sınıf dengesizliğinin bir sorun olduğu görülmemektedir. Bir SVM sınıflandırıcısı için en uygun parametreleri bulmak oldukça sıkıcı bir süreç olabileceğinden, belki de bir parametre ayarı meselesidir. Örneğin RBF çekirdeğinde iki parametre vardır:C ve γ. Hangisi önceden bilinmemektedirC ve γverilen bir sorun için en iyisidir; sonuç olarak bir çeşit model seçimi (parametre arama) yapılmalıdır.

Veri önişleme aşamasında, SVM'nin her veri örneğinin gerçek sayıların bir vektörü olarak temsil edilmesini gerektirdiğini unutmayın. Bu nedenle, kategorik öznitelikler varsa, bunları bir m kategorisi özniteliğini temsil etmek için m sayıları kullanarak (veya m yeni ikili değişkenlerle değiştirerek) sayısal verilere dönüştürmeniz önerilir.

Ayrıca, daha küçük sayısal aralıklardakilere hükmedilen daha büyük sayısal aralıklardaki özniteliklerden kaçınmak için SVM uygulamadan önce değişkenlerin ölçeklendirilmesi çok önemlidir.

Bu makaleye göz atın .

R'de çalışıyorsanız, sağlanan parametre aralıkları üzerinden bir ızgara araması kullanarak hiperparametreleri ayarlamak için ayar fonksiyonuna (paket e1071) bakın. Ardından, plot.tune komutunu kullanarak , hangi değer kümesinin daha küçük hata oranı verdiğini görsel olarak görebilirsiniz.

Zaman alan parametre araması etrafında bir kısayol vardır. Bir seferde 2 sınıf SVM sınıflandırıcısının tüm düzenleme yolunu hesaplayan "svmpath" adlı bir R paketi vardır. İşte ne yaptığını açıklayan makaleye bir bağlantı .

PS Bu kağıdı da ilginç bulabilirsiniz: Kalibre edilmiş olasılık tahminlerinin elde edilmesi


2
+ 1; hala kernlab'dan ksvm tercih edilen R SVM uygulaması gibi görünüyor. Örneğin, değişkenleri kendi başına ölçeklendirir ve iyi seçmek için güzel (= çok iyi çalışır) sezgisel bir prosedürü vardırγRBF için.

1

Pozitif sınıf örnekleri ve negatif sınıf örnekleri için normalleştirme parametresi C'nin farklı bir değerini kullanmanızı tavsiye ederim (birçok SVM paketi bunu destekler ve her durumda kolayca uygulanır). Ardından, iki regülasyon parametresinin iyi değerlerini bulmak için örneğin çapraz doğrulamayı kullanın.

Bunun, verilerin C + ve C- tarafından belirlenen bir oranda asimptotik olarak eşdeğer yeniden örneklenmesi olduğu gösterilebilir (bu nedenle yeniden ağırlıklandırma yerine yeniden örneklemede avantaj yoktur, sonunda ve ağırlıklarda aynı şeye gelirler. Kesikli yerine sürekli olabilir, bu yüzden daha iyi kontrol sağlar).

Olumlu ve olumsuz kalıplara 50-50 ağırlık vermek için sadece C + ve C- 'yi seçmeyin, çünkü "dengesizlik sınıfları" probleminin etkisinin veri kümesi veri kümesinden veri kümesine değişecektir. - ağırlıklandırma a-priori olarak belirlenemez.

Ayrıca yanlış pozitif ve yanlış negatif maliyetlerin farklı olabileceğini ve C + ve C- belirlemeye dahil edilirlerse sorunun kendiliğinden çözülebileceğini unutmayın.

Ayrıca, bazı problemler için Bayes optimal karar kuralının tüm desenleri tek bir sınıfa atayacağını ve diğerini görmezden geleceğini akılda tutmak gerekir, bu yüzden mutlaka kötü bir şey değildir - bu sadece desen yoğunluğunun bir sınıf, diğer sınıfın kalıp yoğunluğunun her yerdedir.

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.