Bir veri kümesinin eğitim ve doğrulama kümelerine nasıl bölüneceği konusunda genel bir kural var mı?


194

Verilerin eğitim ve doğrulama kümelerine en iyi şekilde nasıl bölüneceği konusunda temel bir kural var mı? 50/50'lik bir bölünme bile tavsiye edilebilir mi? Veya doğrulama verilerine göre daha fazla eğitim verisine sahip olmanın (veya tam tersi) belirgin avantajları var mı? Yoksa bu seçim neredeyse uygulamaya bağlı mı?

Çoğunlukla sırasıyla% 80 /% 20 eğitim ve doğrulama verisi kullanıyorum, ancak bu bölümü ilkeli bir sebep olmadan seçtim. Makine öğrenimi konusunda daha deneyimli biri bana tavsiyede bulunabilir mi?


Çok fazla
veriniz

Yanıtlar:


221

Rakip iki endişe vardır: daha az eğitim verisi ile parametre tahminleriniz daha fazla varyansa sahiptir. Daha az test verisi ile performans istatistiğiniz daha büyük varyansa sahip olacaktır. Genel olarak, her iki varyansın da çok yüksek olmaması için verileri bölmekten endişe etmelisiniz, bu da yüzde yerine her kategorideki mutlak örnek sayısı ile ilgilidir.

Toplam 100 örneğiniz varsa, muhtemelen tek bir bölünme size tahminlerinizde tatmin edici bir fark vermeyeceğinden çapraz doğrulama ile sıkışmış olursunuz. 100.000 örneğiniz varsa, 80:20 bölme mi yoksa 90:10 bölme mi seçmeniz önemli değildir (yönteminiz özellikle hesaplama açısından yoğun ise, daha az eğitim verisi kullanmayı seçebilirsiniz).

Doğrulanmış test verilerini (çapraz doğrulama yerine) yapmak için yeterli veriye sahip olduğunuzu varsayarsak, aşağıdakiler varyansları ele almanın öğretici bir yoludur:

  1. Verilerinizi eğitim ve teste ayırın (80/20 gerçekten iyi bir başlangıç ​​noktasıdır)
  2. Bölünmüş eğitim eğitim ve onay verileri (yine 80/20 adil bölünmüş olan).
  3. Egzersiz verilerinizin rastgele seçimlerini örnekleyin, sınıflandırıcıyı bununla eğitin ve performansı doğrulama kümesine kaydedin
  4. Farklı miktarlarda egzersiz verisi içeren bir dizi koşuyu deneyin: Rastgele% 20'sini, örneğin 10 kez örnekleyin ve doğrulama verilerindeki performansı gözlemleyin, ardından% 40,% 60,% 80 ile aynısını yapın. Daha fazla veriyle hem daha yüksek performans hem de farklı rasgele örnekler arasında daha düşük sapma
  5. Test verilerinin boyutu nedeniyle varyans üzerinde işlem yapmak için, aynı prosedürü tersten uygulayın. Tüm egzersiz verileriniz üzerinde eğitim alın, ardından doğrulama verilerinizin bir yüzdesini birkaç kez rastgele örnekleyin ve performansı gözlemleyin. Artık doğrulama verilerinizin küçük örneklerindeki ortalama performansın, tüm doğrulama verilerindeki performansla kabaca aynı olduğunu bulmalısınız, ancak daha az sayıda test örneğiyle varyans çok daha yüksek

Teşekkürler, bu da çok yardımcı! Bir deneyeceğim. Bilginize, yaklaşık 6000 eğitim verisi örneği var. SVM kullanıyorum, bu yüzden performans bir sorun.
robguinness

1
FWIW, performanstaki varyans, tüm örnekleri bir kez sınıflandırarak, doğru olup olmadıklarına dair kararları puanlayarak ve daha sonra farklı test seti boyutları kullanmanın etkilerini üretmek için test örnekleri yerine bu kararları örnekleyerek hesaplanabilir
Ben Allison

Ve 6000 örnek, test için% 10 veya% 20 kullanma arasındaki farkların o kadar büyük olmayacağı kadar yeterli olmalıdır (tarif ettiğim yöntemi kullanarak bunu onaylayabilirsiniz)
Ben Allison

1
Tekrar merhaba. 5. maddede biraz kafam karıştı. "Daha sonra doğrulama verilerinizin bir yüzdesini birkaç kez rastgele örnekleyin" dediniz . Bunun yerine test verilerini görmek mi istediniz ? Doğru anlıyorsam, önce verilerimi eğitim ve test veri kümelerine ayırmalıyım, daha sonra eğitim veri kümemin bir kısmını daha sonra bir doğrulama veri kümesine ayırmalıyım. 5. adımda, test verilerimdeki varyansı ölçüyorsam, test verilerimdeki popülasyonları rastgele örneklememeliyim? Yoksa bir şey mi kaçırıyorum?
robguinness

2
Mesele şu ki, parametrelerle oynarken, değişen şeylerin etkilerini gözlemlerken, test etmek için doğrulama verilerinizi kullanmalısınız. Test verilerinize bakmaya ve size en yüksek puanı veren stratejileri seçmeye başlarsanız, yönteminizin performansı hakkında geniş bir fikir edinirsiniz. Tüm parametreler set ve kararlar yapıldığında, o zaman test verileri üzerinde çalışır. Bu, gerçekten yeni, gözlemlenmemiş verilerde ne tür bir performans elde edeceğinizi bilmenizi sağlar (muhtemelen ilginizi çeken şey budur)
Ben Allison

54

80/20'nin genellikle Pareto prensibi olarak adlandırılan oldukça yaygın bir oran olduğunu bulmak sizi şaşırttı . Bu oranı kullanırsanız genellikle güvenli bir bahistir.

Ancak, kullandığınız eğitim / doğrulama yöntemine bağlı olarak, oran değişebilir. Örneğin: 10 kat çapraz doğrulama kullanırsanız, her katta% 10'luk bir doğrulama kümesi elde edersiniz.

Eğitim seti ile doğrulama seti arasında doğru oranın ne olduğu konusunda bazı araştırmalar yapılmıştır :

Doğrulama seti için ayrılan kalıpların oranı, serbest ayarlanabilir parametre sayısının karekökü ile ters orantılı olmalıdır.

Sonuçlarında bir formül belirtirler:

Doğrulama seti (v) ile eğitim seti (t) büyüklük oranı, v / t, ln (N / h-max) gibi ölçekler; burada N, tanıyıcı ailesinin sayısıdır ve h-max bu ailelerin en büyük karmaşıklığıdır.

Karmaşıklık ile ne demek istedikleri:

Her tanıyıcı ailesi, VC boyutu , açıklama uzunluğu, ayarlanabilir parametre sayısı veya diğer karmaşıklık ölçüleri ile ilişkili olabilen veya olmayabilen karmaşıklığı ile karakterize edilir .

Başparmak kuralını alarak (doğrulama seti, serbest ayarlanabilir parametre sayısının karekökü ile ters orantılı olmalıdır), 32 ayarlanabilir parametreniz varsa, 32'nin kare kökü ~ 5.65'tir, kesirin 1 / 5.65 veya 0.177 (v / t). Kabaca% 17.7'si eğitim ve% 82.3'ü eğitim için ayrılmalıdır.


2
Kendim gibi yükleme konusunda sorun yaşayabilecek olanlar için (neden olduğundan emin değilim): "Doğrulama seti eğitim seti oran boyutu için bir ölçeklendirme kanunu" (I. Guyon, 1996, Yayımlanmamış Teknik Rapor, AT&T Bell Laboratuvarları) ).
theforestecologist

3
Temel kural mantıklı mı? İki ayarlanabilir parametreniz varsa, oran 0,77'dir, yani doğrulama için% 77 kullanırsınız. Sorun ücretsiz parametre tanımıdır. Doğrusal bir SVM için, bir parametre olan hata terimi için ceza parametresini C ayarlayabilirsiniz, ancak karmaşıklık bir SVM için daha yüksek Boyut + 1'dir.
Reed Richards

4
Sinir ağım varsa test boyutum 1 olmalı mı?
YellowPillow

51

Geçen yıl Prof: Andrew Ng'in çevrimiçi makine öğrenimi kursuna katıldım. Onun tavsiyesi:

Eğitim :% 60

Çapraz doğrulama :% 20

Test :% 20


20
coursera.org/learn/deep-neural-network/lecture/cxG1s/… in the modern big data era, where, for example, you might have a million examples in total, then the trend is that your dev (cross validation) and test sets have been becoming a much smaller percentage of the total. 99.5: 0.25: 0.25 olabileceğini öne sürüyor.
Nobu

9

Bir şey daha düşünmelisin.

1.000.000 örnek gibi gerçekten büyük bir veri kümeniz varsa, bölünmüş 80/10/10 gereksiz olabilir, çünkü modelin iyi çalıştığını söylemek için% 10 = 100.000 örnek gerekli değildir.

Belki 99 / 0.5 / 0.5 yeterlidir, çünkü 5.000 örnek verilerdeki varyansın çoğunu temsil edebilir ve test ve geliştirmedeki bu 5.000 örneğe dayanarak modelin iyi çalıştığını kolayca söyleyebilirsiniz.


Doğrulama setinde% 0,5 yeterli olabilir, ancak yeterli olup olmadığını bilmediğiniz için büyük ve gereksiz bir risk aldığınızı iddia ediyorum. Çok küçük bir doğrulama seti kullanıyorsanız, eğitiminiz kolayca yanlış olabilir, ancak büyük bir doğrulama seti kullanarak yanlış gitmesi neredeyse imkansızdır.
Björn Lindqvist

2

Daha az veriye sahip olduğunuzu varsayalım,% 70,% 80 ve% 90'ı denemenizi ve daha iyi sonuç veren testi yapmanızı öneririm. % 90 olması durumunda,% 10 test için düşük doğruluk elde etme şansı vardır.


1

Belki% 63.2 /% 36.8 makul bir seçimdir. Nedeni total örnek sayısı olsaydı olurdu n ve (istatistiksel bootstrap olduğu gibi yeniden numunenin aka) değiştirilmesi ile rastgele numune istedik n ilk olgunun n , bireysel bir durumda olasılığı seçilen ediliyor yeniden örnekleme , burada açıklandığı gibi n çok küçük olmaması koşuluyla yaklaşık 0.632 olacaktır : https://stats.stackexchange.com/a/88993/16263

N = 250'lik bir örnek için, tek bir örneğin 4 basamağa kadar yeniden örnekleme için seçilme olasılığı 0.6329'dur. N = 20000 örneği için olasılık 0.6321'dir.


1

Her şey eldeki verilere bağlıdır. Önemli miktarda veriye sahipseniz, 80/20 yukarıda belirtildiği gibi iyi bir seçimdir. Ancak 50/50 bölünmüş bir Çapraz Doğrulama yapmazsanız çok daha fazla yardımcı olabilir ve egzersiz verilerinize uygun bir model oluşturmanızı engelleyebilirsiniz.

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.