Aşağıdakilerin tanımlanıp tanımlanmadığını ve (her iki şekilde) çok dengesiz bir hedef değişkeni olan öngörülü bir modeli öğrenmek için makul bir yöntem gibi geldiğini bilen var mı?
Genellikle veri madenciliğinin CRM uygulamalarında, olumlu olayın (başarı) çoğunluğa (negatif sınıf) göre çok nadir olduğu bir model ararız. Örneğin, yalnızca% 0,1'inin pozitif ilgi sınıfında olduğu 500.000 örneğim olabilir (örneğin, satın alınan müşteri). Öngörülü bir model oluşturmak için bir yöntem, tüm pozitif sınıf örneklerini ve yalnızca negatif sınıf örneklerinin bir örneğini koruduğunuz verileri örneklemektir, böylece pozitif sınıfın negatif sınıfa oranı 1'e yakın olabilir (belki% 25) % 75 pozitif - negatif). Aşırı örnekleme, yetersiz örnekleme, SMOTE vb. Literatürdeki yöntemlerdir.
Merak ettiğim şey, yukarıdaki temel örnekleme stratejisini ancak negatif sınıfın torbalanması ile birleştirmektir.
- Tüm pozitif sınıf örneklerini saklayın (örneğin 1.000)
- Dengeli bir örnek oluşturmak için negatif classe örneklerini örnekleyin (örn. 1.000).
- Modele uyun
- Tekrar et
Bunu daha önce duyan var mı? Torbalama olmadan ortaya çıkan sorun, 500.000 olduğunda negatif sınıfın sadece 1.000 örneğini örneklemenin, yordayıcı alanının seyrek olacağı ve olası yordayıcı değerleri / kalıplarının bir temsiline sahip olamayacağınızdır. Torbalama buna yardımcı görünüyor.
Ben rpart baktım ve hiçbir örnek "bir" bir yordayıcı için tüm değerlere sahip olmadığında hiçbir şey "kırmak (daha sonra bu tahmin değerleri ile örnekleri tahmin ederken kırılmaz:
library(rpart)
tree<-rpart(skips ~ PadType,data=solder[solder$PadType !='D6',], method="anova")
predict(tree,newdata=subset(solder,PadType =='D6'))
Düşüncesi olan var mı?
GÜNCELLEME: Gerçek bir dünya veri seti aldım (doğrudan posta yanıt verilerinin pazarlanması) ve rastgele eğitim ve validasyona böldüm. 618 öngörücü ve 1 ikili hedef vardır (çok nadir).
Training:
Total Cases: 167,923
Cases with Y=1: 521
Validation:
Total Cases: 141,755
Cases with Y=1: 410
Tüm pozitif örnekleri (521) eğitim setinden ve dengeli bir örnek için aynı büyüklükte negatif örneklerin rastgele bir örneğini aldım. Bir rpart ağacına uyuyorum:
models[[length(models)+1]]<-rpart(Y~.,data=trainSample,method="class")
Bu işlemi 100 kez tekrarladım. Daha sonra bu 100 modelin her biri için validasyon örneği vakalarında Y = 1 olasılığı tahmin edildi. Son tahmin için 100 olasılık ortalamasını aldım. Doğrulama setindeki olasılıkları belirledim ve her ondalıklıkta Y = 1 (modelin sıralama yeteneğini tahmin etmek için geleneksel yöntem) olan vakaların yüzdesini hesapladım.
Result$decile<-as.numeric(cut(Result[,"Score"],breaks=10,labels=1:10))
İşte performans:
Bunun torbalanmaya kıyasla nasıl olduğunu görmek için, doğrulama örneğini sadece ilk örnekle (tüm pozitif vakalar ve aynı boyutta rastgele bir örnek) tahmin ettim. Açıkça, örneklenen veriler, ayırma validasyonu örneği üzerinde etkili olamayacak kadar seyrek veya fazla kullanıldı.
Nadir bir olay ve büyük n ve p olduğunda torbalama rutininin etkinliğinin önerilmesi.