Her zaman CV yapmalı mıyız?


9

Sorum: Nispeten büyük bir veri kümesi için bile CV yapmalı mıyım?

Nispeten büyük bir veri setim var ve veri setine bir makine öğrenme algoritması uygulayacağım.

Bilgisayarım hızlı olmadığından, CV (ve şebeke araması) bazen çok uzun zaman alıyor. Özellikle SVM, birçok ayar parametresi nedeniyle asla bitmez. Eğer bir CV yaparsam, nispeten küçük bir veri seçmem gerekir.

Öte yandan, doğrulama seti de büyük olmalıdır, bu yüzden eğitim seti ile aynı (veya daha büyük) boyuta sahip bir doğrulama seti kullanmak iyi bir fikirdir. (Yani CV yerine parametre ayarlama için büyük bir doğrulama seti kullanıyorum.)

Şimdi en az iki seçeneğim var.

  1. küçük bir veri kümesinde CV yapın.
  2. CV olmadan nispeten büyük eğitim seti ve doğrulama seti kullanın.
  3. başka bir fikir.

En iyi fikir nedir? Teorik veya pratik görüşlere açıktır.


1
Bu soru açıkça bir CW olmalıdır.
H. Shindoh

1
Büyük olan nedir? Kaç gözlem? Kaç özellik / değişken / regresör?
Jim

1
Bir PC'ye bağlıdır. Yani birkaç bilgisayar gerektiren “büyük veri” yi düşünmüyorum.
H. Shindoh

Yanıtlar:


3

Genel olarak, her zaman çapraz doğrulamayı kullanmak zorunda değilsiniz. Özgeçmiş noktası, sınıflandırıcınızın genel olarak tek bir test seti kullanarak elde edebileceğiniz genelleştirilebilirliğine ilişkin daha kararlı bir tahmin elde etmektir. Veri kümeniz çok büyükse CV kullanmak zorunda değilsiniz, bu nedenle eğitim setinize veri eklemek modelinizi çok geliştirmez ve test setinizde rastgele şans eseri birkaç yanlış sınıflandırma, performans metriğinizi gerçekten değiştirmez .

Küçük bir eğitim seti ve büyük bir test seti alarak, tahmininiz önyargılı olacaktır. Bu nedenle, daha fazla eğitim verisi ve daha büyük veri kümesi için farklı olabileceğini düşündüğünüz optimal hiperparametreleri kullanarak elde edebileceğinizden daha kötü olacaktır, çünkü daha fazla veri daha az düzenlileştirme gerektirecektir.

Bununla birlikte, optimal hiperparamerler elde etmek zaten önemli bir parça değildir ve performansı önemli ölçüde iyileştirmeyecektir. Sorunu anlamak, iyi özellikler oluşturmak ve verileri iyi şekle sokmak için enerjinizi odaklamalısınız.

İşleri hızlandırmak için düşünebileceğiniz birkaç şey:

  1. Daha az özellik ile eğitin. Sorununuzun boyutunu azaltmak için özellik seçimini ve / veya boyut küçültmeyi kullanın
  2. SVM için önceden hazırlanmış çekirdek kullanın
  3. Bir ızgaradaki hiper parametreleri seçmesi gerekmeyen algoritmalar kullanın. Özellikle sırt / kement / elastik net ceza ile lojistik regresyon veya hatta doğrusal SVM gibi doğrusal olanlar. Uygulamaya bağlı olarak, bu sınıflandırıcılar seçilen yoldaki tüm hiperparametreler için sadece bir tane takma maliyeti için modeller sığdırabilir
  4. sorun türünüz için daha hızlı uygulama kullanın (Google'a başvurmanız gerekir)

ve daha yavaş bilgisayarla bile şunları yapabilirsiniz:

  1. Daha fazla çekirdek kullanın
  2. GPU kullan

2

Çapraz doğrulama, verilerdeki rasgele (ve belki de belirleyici değilse öğrenme algoritmasında) nedeniyle performans metriğinizin varyansını tahmin etmek için bir araçtır.

Bu nedenle, yalnızca bir bölme kullanırsanız, örneğin% 80 tren +% 20 test ve performans metriğinizi bu tek deneyden bildirirseniz, denemenizi tam olarak aynı parametreleri kullanarak yeniden oluşturmaya çalışan herkesin farklı bir performans rakamı (bazen çok farklı). Tabii ki aynı kesin ayrımı sağlamadığınız sürece, anlamsızdır.

Sorunuza geri dönmek için, performansınızı bildirmek için kesinlikle CV kullanmanız gerektiğini düşünüyorum (örneğin 10 kat CV yapın ve performans metriğinin ortalama ve standart sapmasını rapor edin). Şimdi algoritmanızı ayarlamak için eğitim setinden örneklenmiş çok daha küçük bir doğrulama seti kullanabilirsiniz (test setine dahil olmadığından emin olun).

Küçük bir küme kullanarak en iyi hiperparametreleri bulamayacağınızdan korkuyorsanız, algoritmanızı muhtemelen veri kümesinin özelliklerine göre aşırı uyarlıyorsunuz demektir. Tüm kıvrımlar arasında makul bir performans sağlayan küçük bir örnek kullanarak bir yapılandırma bulamazsanız , algoritma muhtemelen pratikte çok yararlı değildir.

Ayrıca, bazı algoritmaların çok yavaş olduğunu / bazı yapılandırmalarda iyi ölçeklenmediğini unutmayın. Bu aynı zamanda pratik model seçiminin bir parçasıdır.

SVM'lerden bahsettiğinizden, elbette, ızgara aramasıyla doğrusal olmayan çekirdekler için parametreler bulmaya çalışırken çoğu uygulama yavaş olacaktır. Izgara aramanın üstel karmaşıklığı vardır, bu yüzden çok az parametre ile kullanın. Ayrıca, çoğu kütüphanenin mantıklı varsayılan parametreler sağladığını (veya en azından bir parametre ayarladığınızı ve diğerlerini ayarlamak için sezgisel yöntemler olduğunu) unutmayın.

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.