Hiper-parametre ayarlama esası test verisi ve model seçimi esası doğrulama verisi yaptıktan sonra son modeli tüm veriler üzerinde eğitmiyoruz?


9

Tüm verilerle demek istediğim tren + test + onaylama

Hiperparametremi doğrulama verilerini kullanarak düzelttikten ve test verilerini kullanarak modeli seçtikten sonra, parametrelerin modelin eğitilmesi yerine daha iyi eğitilmesi için tüm veriler üzerinde eğitilmiş bir modelin olması daha iyi olmaz mı? tren verileri


2
Test verilerinizi kullanarak ASLA hiperparametrelerinizi sabitlememelisiniz. Sadece kör kontrol grubunuzu (test seti) kaldırarak tüm denemenizi bozdunuz.
JahKnows

@JahKnows Bir modelin hiper parametrelerini ayarlamayı bitirdikten sonra, farklı bir veri kümesi üzerinde ne kadar iyi genelleştiğini bilmem dışında zararı anlamıyorum. Denememi nasıl bozdum? bir şey mi kaçırıyorum?
Apoorva Abhishekh

Yanıtlar:


8

Soru yanlış bir varsayım altında. Birçok insan "yapamayacağını" söylediklerini yapar.

Aslında, yaygın olarak kullanılan sklearn paketindeki ızgara arama uygulaması tam da bunu yapar. Aksi takdirde refit=False, tüm verileri kullanarak son modeli yeniden eğitecektir.

Bazı hiperparametreler için bu çok arzu edilmeyebilir, çünkü veri hacmine göre. Örneğin, min_samples_leafbir karar ağacı için budama öncesi taktiği düşünün . Daha fazla veriye sahipseniz, budama işlemi istediğiniz gibi çalışmayabilir.

Fakat yine de, çoğu insan çapraz doğrulamadan sonra tüm verileri kullanarak yeniden eğitiyorlar, böylece mümkün olan en iyi modelle sonuçlanıyorlar.

Zeyilname: @NeilSlater, aşağıda bazı kişilerin CV üzerinde bekletme yaptığını söylüyor. Başka bir deyişle, bir tren-test ayrımı vardır ve daha sonra eğitim üzerinde model seçimi yaparlar. Ona göre, orijinal eğitim seti bölünmesini kullanarak yeniden antrenman yapıyorlar, ancak test setini değil. Daha sonra test seti, nihai bir model tahmini gerçekleştirmek için kullanılır. Şahsen, bu konuda üç kusur görüyorum: (a) bahsettiğim problemi çözmüyor, çünkü yine de tekrar antrenman yaptığınız için bazı hiperparametrelerin eğitim hacmine bağlı olması, (b) birçok modeli test ederken, daha sofistike olmayı tercih ederim hiçbir verinin boşa gitmemesi için iç içe çapraz doğrulama gibi yöntemler ve (c) uzatma, bir modelin çok az veriniz olduğunda nasıl genelleştirileceğini belirlemek için korkunç bir yöntemdir.


Bu özellik çapraz doğrulamanın yeniden kullanılmasıyla ilgilidir, test verilerinin tekrar kullanılması önerilmez, çünkü yalnızca çapraz doğrulamanın varsayımları vardır ve performans ölçüsü yoktur. Herhangi bir hata veya sorun parametresi (verdiğiniz örnek gibi), aksi takdirde modeli tespit edilemez şekilde kötüleştirebilir.
Neil Slater

@NeilSlater Burada söylediklerinizi anlamıyorum: "Özellik çapraz doğrulamayı yeniden kullanmakla ilgilidir"
Ricardo Cruz

"özellik" -> refitGridSearchCV işlevi seçeneği. Bekletilen test verilerini dahil etmek için uygun değildir (bu verileri bile göremez).
Neil Slater

@NeilSlater, bana inanmıyorsanız kodu kendiniz kolayca kontrol edebilirsiniz (burada) . Refit = True ise, "tüm veri kümesini kullanarak en iyi tahmin ediciyi sığdırın".
Ricardo Cruz

1
@NeilSlater, bu benim deneyimim değil, ancak deneyimimi yorumuma ekledim, böylece diğerleri bundan faydalanabilsin. Teşekkür ederim.
Ricardo Cruz

1

Evet yapabilirsin.

Test verilerinin veriyi eğitmek için benzer dağıtımdan gelmesi gerektiği için modelinizi bozmazsınız. Modeli uygun şekilde eğitmişseniz, önemli bir değişiklik fark etmeyeceksiniz (önceki test / doğrulama verilerinde daha iyi doğruluk ölçümü hariç).

Ancak, test verilerinin tren verileriyle tam olarak aynı dağıtımdan geldiği çok doğrudur, bu nedenle gerçek uygulama senaryosunda modelinizin daha iyi genelleştirilebilirliğini elde edebilirsiniz.


1
Bu öneriye göre test verilerinin dahil edilmesiyle ilgili sorun, şimdi modelin ne kadar iyi genelleştiğine dair bir ölçümünüz olmamasıdır. Evet, daha iyi genelleme yapmasını bekleyebilirsiniz. Ancak, bilmiyorsunuz , çünkü ölçme yeteneğinizi kaldırdınız. Bu uyarıyı eklemenizi ve bazen neden hala iyi olduğunu açıklamanızı öneririm (örneğin, yeni veri alırken, bunu yeni bir test seti olarak ele alabilir ve zamanla yeni bir ölçüm oluşturabilir, umarım daha iyi modelden yararlanabilirsiniz. - bu bir risk olsa da)
Neil Slater

@NeilSlater: Farklı bir veri kümesinde genellemenin ne kadar iyi olacağını ölçme yeteneğimi kaldırdığımı anlıyorum. Ama hem test hem de bekletme varsa, hiper parametre ayarından sonra bile, modelimi tekrar tren + testinde eğitebilirim, modelimin nasıl genelleşip genelleşmediğini kontrol etmek için hala beklemeye bırakılacağım. Bunun istediğimden farklı olduğunu biliyorum. Ama sadece görüşünü bilmek istiyorum.
Apoorva Abhishekh

1
@ApoorvaAbhishekh: Başka bir veri tutma kümeniz daha varsa, evet bunu new_train = {old train, old cv, old test} konusunda eğitilmiş yeni modele karşı yeni test seti olarak kullanabilirsiniz. O zaman bir genelleme ölçüsü elde edersiniz. Aşırı kullanmamaya dikkat etmenize rağmen - yeni birleşik sette bir sorun varsa (örn. Erken durma daha fazla veri nedeniyle değişmelidir) o zaman yeni cv seti olarak da kullanamazsınız. . . rezerve edilmiş başka bir yayın yoksa . . .
Neil Slater

@NeilSlater Teoride performansı bilmek için yeni veri kümesine ihtiyacınız var. Pratikte, modelinizle iyi performans gösterdiğinden emin olabilirsiniz, bununla uzun süre çalıştıkça ve ne bekleyeceğinizi biliyorsunuzdur. Ancak genellikle bir modelin performansını kontrol etmek için başka veriler de vardır, örneğin, bilgisayarla görme - etiketlenmemiş veriler. Doğru değil, ama aynı zamanda çalışıyor. Elbette aşırı bir durum, ama işe yarayacağını söylemek istiyorum. Kendim her zaman eğitime katılmadığım test setim var.
Il'ya Zhenin

1

Bu sorunun cevabı kullandığınız eğitim algoritmasına (teknolojiye) bağlıdır. Örneğin, topluluk sınıflamasında eğitim ve validasyon (ancak test değil) setlerinin bir araya getirildiği bazı yaklaşımlar gördüm. Doğrulamanın bile esas olarak hiper parametrelere karar vermek için kullanıldığını bilmek çok önemlidir, bu hiper parametrelerin bazıları eğitim için kullanılan verilerin bir işlevi olabilir. Örneğin, ne zaman duracağını bilmek için kullanılan DNN doğrulamasında, ağın parametrelerini (ağırlıkları) ayarlamanın bir sonucu olarak aşırı sığdırma meydana gelebileceğinden, ne zaman duracağımızı bilmenin bir yoluna ihtiyacımız var. Doğrulama seti olmadan eğitim sürecinde körü körüne yürüyeceksiniz. Öte yandan, daha önce belirtilenle aynı sayıda yineleme kullanırsanız, bu ek örneklerden kazanamayacağınız yüksek bir prob vardır. Test setine hiç dokunulmamalıdır, yukarıda belirtildiği gibi test seti olmadan modelinizi değerlendirmek için bir yönteminiz olmayacaktır. Bu kumar oynamaktır, gerçek veri dağıtımındaki (test verileriyle temsil edilen) doğruluğunu tahmin etmeden herhangi bir modeli veya çözümü teslim edemezsiniz.


Tren verileri üzerine eğitim, doğrulama verileri üzerinde hiper parametre ayarlama ve test verilerini model bazında seçtikten sonra, model bazında tüm verileri eğitebilir miyim. Ya da, hiperparametre ayarlaması yapıldıktan sonra eğitim verilerini ve doğrulama verilerini birleştirebilir ve test verilerini kullanarak doğruluğu tahmin edebilir miyim. Yanlış yazdığınız için özür dileriz. Şimdi düzelttim.
Apoorva Abhishekh
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.