Tren ve teste ayrılmadan önce veya sonra itimat?


18

En az bir önemli değişken üzerinde N ~ 5000 ve yaklaşık 1/2 eksik olan bir veri setim var. Ana analitik yöntem Cox orantılı tehlikeler olacaktır.

Birden fazla dürtü kullanmayı planlıyorum. Ayrıca bir tren ve test setine ayrılacağım.

Verileri bölmeli ve sonra ayrı ayrı mı, yoksa impute edip sonra mı bölmeliyim?

Bu konularda, ben kullanarak olacaktır PROC MIiçinde SAS.


2
Önemli bir değişken için% 50 eksik değerler? Ugh. Impute yerine, neden değişken için bir 'Eksik' kategori oluşturmuyorsunuz?
RobertF

Hiç bir değişkenin% 50'si eksik değildir, ancak en az birinde% 50'si eksiktir. Ayrıca, sürekli, bu yüzden "eksik" şeyleri berbat olur.
Peter Flom - Monica'yı eski durumuna döndürün

Ah. Öfke kullanarak sinirleniyorum. Ben sürekli% 50 değerleri ile sürekli değişken değişken devam dönüştürmek vs dönüştürme merak. değişken bir 'Eksik' kategorisi ile artı eksik değerleri davranışı yakalamak için yeterli kutuları ile kategorik?
RobertF

Ben sürekli değişken binning sevmiyorum.
Peter Flom - Monica'yı eski durumuna getirin

Yanıtlar:


20

Ön işleme veya imputing işleminden önce bölmelisiniz.

Eğitim ve test seti arasındaki ayrım, geçmiş bilgilerinizin olduğu ve gelecekteki henüz bilinmeyen bilgiler üzerinde test edeceğiniz bir model oluşturduğunuz durumu çoğaltma girişimidir: eğitim seti geçmişin yerini alır ve test seti alır geleceğin yeri, böylece eğitimli modelinizi sadece bir kez test edebilirsiniz.

Geçmiş / gelecekteki benzetmeyi akılda tutmak, bu, verilerinizi önceden işlemek veya işlemek için, eksik değerleri ima etmek gibi yaptığınız her şeyin, tek başına ayarlanan eğitimde yapmanız gerektiği anlamına gelir. Daha sonra test setinizin de ön işleme veya imaya ihtiyacı varsa eğitim setinize ne yaptığınızı hatırlayabilirsiniz, böylece her iki sette de aynı şekilde yapabilirsiniz.

Yorumlardan eklendi: Eğitim verilerini etkilemek için test verilerini kullanıyorsanız, modelinizi oluşturmak için test verileri kullanılır, bu nedenle test verisi olmaktan çıkar ve modelinizin adil bir testini sağlamaz. Aşırı takılma riskiniz var ve bunu test verilerini ilk etapta ayırmanızın cesaretini kırmaktı.


"Her iki kümede de aynı şekilde yapıyorsunuz" derken, "test kümesindeki eksik verileri tanımak için aynı yöntemi kullanın, ancak aynı verileri DEĞİL" demek istiyor musunuz?
timwiz

@colorlace Geçmiş / gelecek benzetmesini kullanın. Geçmişte kullanılan eğitim setini kullandınız ve bazı değerler verdiniz. Şimdi, gelecekte test setini alıyorsunuz ve bazı değerlerini tanımlamak istiyorsunuz; muhtemelen test verilerine uygulanmadan önce aynı yöntemi kullanacaksınız (eğitim verilerinden öğrendiklerinizi dahil etmekte özgür olsanız da)
Henry

Eğer "Eğer eğitim verilerinden öğrendiklerimizi dahil etmek serbesttir", o zaman ne kadar sadece pek farklı değildir değil imputing almadan önce ayrılmaya.
timwiz

1
@colorlace: bu son nokta tam olarak söylediğim şey: eğitim verileriyle yaptığınız hiçbir şey test verileriyle bilgilendirilmemelidir (benzetme geleceğin geçmişi etkilememesi gerektiğidir), ancak test verileriyle ne yaptığınız eğitim verileriyle bilgilendirilebilir (benzetme, geleceği tahmin etmek için geçmişi kullanabilmenizdir)
Henry

1
@colorlace - eğitim verilerini etkilemek için test verilerini kullanırsanız, test verileri modelinizi oluşturmak için kullanılır, bu nedenle test verisi olmaktan çıkar ve modelinizin adil bir testini sağlamaz. Aşırı takılma riskiniz var ve bunu ilk başta test verilerini ayırmanızın cesaretini kırmak oldu
Henry

1

Bence itham etmeden önce ayrılsan iyi olur. Örnekler için, eksik değerleri sütun ortalaması ile çarpıştırmak isteyebilirsiniz. Bu durumda, önce tren + geçerli veri kümesi ile çarpıştırır ve sonra bölünürseniz, modelinizi oluşturmadan önce doğrulama veri kümesini kullandınız, bu da veri sızıntısı sorununun nasıl ortaya çıktığıdır.

Ancak şunu sorabilirsiniz, eğer ayrıldıktan sonra emir edersem, çapraz doğrulama yapmam gerektiğinde çok sıkıcı olabilir. Bunun için önerim sklearn boru hattı kullanmak. Kodunuzu gerçekten basitleştirir ve hata yapma şansını azaltır. Bkz Boru Hattı


0

Sadece yukarıdakileri eklemek için, ben de ima etmeden veya herhangi bir ön işlemden önce ayırmayı tercih ederim. Eğitim verileriyle yaptığınız hiçbir şey test verileriyle bilgilendirilmemelidir (analoji, geleceğin geçmişi etkilememesi gerektiğidir). Daha sonra test setinizin de ön işleme veya imaya ihtiyacı varsa, eğitim setinize ne yaptığınızı hatırlayabilirsiniz, böylece her iki sette de aynı şekilde yapabilirsiniz (benzetme, geleceği tahmin etmek için geçmişi kullanabilmenizdir) .

Test verilerini egzersiz verilerini herhangi bir şekilde etkilemek için kullanırsanız, test verileri modelinizi oluşturmak için kullanılır, bu nedenle test verileri olmaktan çıkar ve modelinizin adil bir testini sağlamaz. Takma riskiniz var ve bunu test verilerini ilk etapta ayırmanız cesaretini kırmaktı!

Ben r ayarında caret paketi bu ortamda çok yararlı olduğunu düşünüyorum. Özellikle bu yayının son derece yararlı olduğunu gördüm https://topepo.github.io/caret/model-training-and-tuning.html

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.