Dengesiz verilere karşı karar ağacı eğitimi


43

Veri madenciliğinde yeniyim ve dengesiz bir veri setine karşı bir karar ağacı yetiştirmeye çalışıyorum. Ancak, zayıf tahmin doğruluğu ile ilgili sorunlar yaşıyorum.

Veriler ders okuyan öğrencilerden oluşur ve sınıf değişkeni iki değeri olan ders durumudur - Çekilmiş veya Akım.

  • Yaş
  • Etnik köken
  • Cinsiyet
  • Elbette
    ...
  • Kurs Durumu

Veri setinde, Akım Çekilmiş olan birçok durum daha var. Çekilen örnekler sadece toplam örneklerin% 2'sini oluşturur.

Gelecekte bir kişinin geri çekilme ihtimalini tahmin edebilecek bir model oluşturabilmek istiyorum. Bununla birlikte, modeli eğitim verilerine göre test ederken, modelin doğruluğu korkunçtur.

Verilerin bir veya iki sınıfın egemen olduğu karar ağaçları ile benzer sorunlar yaşadım.

Bu sorunu çözmek ve daha doğru bir sınıflandırıcı oluşturmak için hangi yaklaşımı kullanabilirim?


4
Dikkate alınması gereken bir husus, farklı yanlış sınıflandırma türleri için ceza koşullarını değiştirmektir. Hangi yazılımı kullandığınızı söylemiyorsunuz, ancak tüm iyi ağaç yazılımlarının bunu yapmanın yollarını içermesi gerektiğine inanıyorum.
Peter Flom - Eski Monica

Yanıtlar:


61

Bu, sınıflandırmada ilginç ve çok sık görülen bir sorundur - sadece karar ağaçlarında değil, neredeyse tüm sınıflandırma algoritmalarında.

Ampirik olarak bulduğun gibi, her iki sınıftan farklı sayıdaki temsilcilerden oluşan bir eğitim seti, çoğunluk sınıfına karşı taraflı bir sınıflandırıcı ile sonuçlanabilir. Benzer şekilde dengesiz bir test setine uygulandığında, bu sınıflandırıcı bir iyimser doğruluk tahmini verir. Aşırı bir durumda, sınıflandırıcı her bir test senaryosunu çoğunluk sınıfına atayabilir, böylece çoğunluk sınıfına ait test vakalarının oranına eşit bir doğruluk elde edilir. Bu, ikili sınıflandırmada iyi bilinen bir fenomendir (ve doğal olarak çoklu sınıf ayarlarına kadar uzanır).

Bu önemli bir konudur, çünkü dengesiz bir veri seti şişirilmiş performans tahminlerine neden olabilir. Bu da, algoritmanın tesadüften daha iyi performans göstermesinin önemi hakkında yanlış sonuçlara yol açabilir.

Bu konudaki makine öğrenmesi literatürü temel olarak üç çözüm stratejisi geliştirmiştir.

  1. Önyargının ortaya çıkmasını önlemek için , büyük sınıfı örnekleyerek veya küçük sınıfı aşırı örnekleyerek , eğitim setinde dengeyi geri yükleyebilirsiniz .

  2. Alternatif olarak, yanlılığı önlemek için önceki yanıtlarda belirtildiği gibi yanlış sınıflandırma maliyetlerini değiştirebilirsiniz.

  3. Ek bir koruma, doğruluğu dengelenmiş doğrulukla değiştirmektir . Bu sınıfa özel bir doğruluk aritmetik ortalaması olarak tanımlanır, burada ve sırasıyla olumlu ve olumsuz örneklerden elde edilen doğruluğu temsil eder. Sınıflandırıcı her iki sınıfta da eşit derecede iyi performans gösterirse, bu terim geleneksel doğruluğa indirgenir (yani, toplam tahmin sayısına bölünen doğru tahminlerin sayısı). Buna karşılık, eğer geleneksel doğruluk sadece sınıflayıcı dengesiz bir test setinden yararlandığı için şansın üstünde ise , uygun şekilde dengeli doğruluk şansa düşecektir (aşağıdaki çizime bakınız).π+π-ϕ:=12(π++π),π+π

Doğruluk vs dengeli doğruluk

Yukarıdaki yaklaşımlardan en az ikisini birlikte ele almanızı tavsiye ederim. Örneğin, sınıflandırıcınızın çoğunluk sınıfının lehine bir önyargı almasını engellemek için azınlık sınıfınızı aşırı örnekleyebilirsiniz. Bundan sonra, sınıflandırıcınızın performansını değerlendirirken, doğruluğu dengeli bir doğrulukla değiştirebilirsiniz. İki yaklaşım tamamlayıcıdır. Birlikte uygulandığında, hem orijinal sorununuzu önlemenize hem de ondan sonraki yanlış sonuçlardan kaçınmanıza yardımcı olmalıdırlar.

Bu konuyu takip etmek isterseniz, literatüre ek referanslar göndermekten memnuniyet duyarım.


3
Broder - detaylı bilgi için teşekkürler. Bu gerçekten çok yardımcı oldu! Başlangıçta SQL Server'da veri madenciliği işlevini kullanmayı denedim, ancak tavsiyenizi takiben R'i kullanmaya başladım. Veri kümesini yeniden dengelemek için SMOTE algoritmasını kullandım ve hem karar ağaçları hem de SVM kullanarak denedim. DT'ler% 81 dengeli bir doğruluk ve hatta SVM ile daha iyi sonuç verir. Yine de bir soru - modeli aynı zamanda yeniden dengeleme verileri içeren bir veri kümesine karşı mı test etmeliyim? Yoksa orijinali gibi verilere karşı test edilmeli mi?
chrisb

2
Bunu duymak harika. Sorunuzu ilgili olarak: Eğer do not test verilerinizi dengelemek istiyoruz. Bu, bazı örnekleri iki kez test edeceğiniz (aşırı örnekleme durumunda) veya bazı örnekleri test etmeyeceğiniz (örnekleme durumunda) için performans değerlendirmenize ağırlık verir. Özet olarak, eğitim setinizi dengelemek istiyorsunuz (her bir çapraz onaylama katında ayrı olarak), ancak daha sonra değiştirilmemiş (potansiyel olarak dengesiz) test verilerini test etmek istiyorsunuz.
Kay Brodersen

Teşekkürler Broder. Bunu yapmak, olaylara farklı bir tablo çizer. Dengeli doğruluk yaklaşık% 56'ya düşer. Hassasiyet, en iyi modelimde% 17'ye düşüyor (daha iyi tahminler almam gereken sınıfa karşılık geliyor). Bunun mantıklı olduğunu düşünüyorum, çünkü örneklenen sınıf o sınıftır, bu yüzden bu örnekler birçok kez sayılır. Bunun bir fark yaratıp yaratmadığını görmek için eğitim verilerinin dengesini arttırmayı deneyeceğim.
chrisb

Şimdi farklı oranlarda dengeli veri ile test ettikten sonra elde edebileceğim en iyi doğruluk% 60 ile Ada Boost ile. Neyin "iyi" olduğunu belirlemekle mücadele ediyorum. Asıl amacım derslerinden çekilebilecek öğrencileri tahmin etmektir. Para Çekme pozitif sınıfım olduğu için, gerçek pozitif sayımı maksimize etmeye çalışıyorum (yani hassasiyeti arttırıyorum). Verileri yeniden dengelemek, bunu yanlış negatif sayısının zararına yapar. % 60'ı bana rastgele daha iyi görünmüyor - ama bu durumda "iyi" olan hiçbir temelim yok.
chrisb

2
@ chrisb, Bu biraz (!) geç yorumdur. Bir teğet üzerinde, öğrencilerin yaşamlarını modellemek için Cox Orantılı Tehlikeler regresyonunu ( cran.r-project.org/doc/contrib/Fox-Companion/… ) deneyebilirsiniz . Aşağıya veya aşırı örneklemeye ihtiyacınız olmayabilir.
Zhubarb

8

Aşağıdaki dört fikir bu sorunu çözmenize yardımcı olabilir.

  1. Uygun bir performans ölçüsü seçin ve ardından Çapraz Doğrulama veri kümesi üzerinde tatmin edici sonuçlar elde etmek için modelinizin hiperparametrelerine ince ayar yapın - örneğin düzenlileştirme - test veri setinde modelinizi test edin. Bu amaçlar için, verilerinizin% 15'ini çapraz onaylama için kullanılacak ve% 15'ini son test için kullanılacak şekilde ayırın. Andrews Ng tarafından savunulan Makine Öğrenmesi'nde oluşturulmuş bir ölçü, olarak tanımlanan F1 istatistikleridir . Çapraz Doğrulama veri setinde bu rakamı maksimize etmeye çalışın ve performansın test veri setinde de sabit olduğundan emin olun.2PrecisionRecallPrecision+Recall

  2. Veri kümesindeki sınıfların önceki sıklığının algoritmasını bildirmek için Karar Ağaçlarındaki 'prior' parametresini kullanın, yani 1.000,0000 veri kümesinde prior = c(0.001, 0.999)(R cinsinden) 1.000 pozitif varsa .

  3. Nadir pozitif vakaların yanlış sınıflandırılmasında algoritmayı ciddi şekilde cezalandırmak için kullandığınız sınıflandırma fonksiyonunda 'weights' argümanını kullanın

  4. Bazı sınıflandırma algoritmalarında 'maliyet' argümanını kullanın - örneğin rpart, gerçek pozitiflerin ve gerçek negatiflerin yanlış sınıflandırılmasının nispi maliyetlerini tanımlamak için R'de. Doğal olarak, nadir sınıfın yanlış sınıflandırılması için yüksek bir maliyet belirlemelisiniz.

Veri setine bağımlı gözlemler getirdiğinden ve bu hem İstatistik hem de Makine Öğrenimi'nde yapılan bağımsızlık varsayımlarını ihlal ettiğinden aşırı örnekleme lehine değilim.


2

Son konuya bir cevap verdim :

Yaptığımız, farklı oranlarda bir örnek almak. Yukarıda belirtilen örnekte, bu 1000 vaka "EVET" ve örneğin 9000 "NO" olayıdır. Bu yaklaşım daha kararlı modeller verir. Ancak, gerçek bir örnek üzerinde test edilmelidir (1.000.000 sıra ile).

Yalnızca daha istikrarlı bir yaklaşım sağlamakla kalmıyor, aynı zamanda modeller, asansörle ilgili tedbirler söz konusu olduğunda genellikle daha iyi.

"İstatistikte aşırı örnekleme" olarak arama yapabilirsiniz, ilk sonuç oldukça iyidir: http://www.statssa.gov.za/isi2009/ScientificProgramme/IPMS/1621.pdf


1

@Kay 'ın cevabına ekleme 1. çözüm stratejisi: Sentetik Azınlık Aşırı Örnekleme ( SMOTE ) genellikle benim deneyimlerimden daha az veya daha fazla örneklemeden daha iyidir, çünkü her ikisi arasında bir uzlaşma yaratır. Çok değişkenli yordayıcı alana çizilen veri noktalarını kullanarak azınlık sınıfının sentetik örneklerini yaratır ve az ya da çok az, yeni sentetik noktalar oluşturmak için o alandaki bitişik noktalar arasında orta noktaları alır ve böylece her iki sınıf boyutunu da dengeler. (emin değilim orta noktaların, algoritma ayrıntıları burada

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.