Son modeli eğitmek için tüm veri setini kullanmak her zaman daha iyi olur mu?


24

Eğitim, doğrulama ve tercih Makine Öğrenme modeli test ettikten sonra ortak bir teknik yetiştirmek, test alt kümesi dahil tam bir veri kümesi kullanmaktır nihai modeli için dağıtmak örneğin bir ürünün onu.

Sorum şu: Bunu yapmak her zaman en iyisi midir? Ya performans gerçekten bozulursa?

Örneğin, test alt setini sınıflandırırken modelin% ​​65 civarında puan aldığı bir durumu varsayalım. Bu, her iki modelin de yetersiz şekilde eğitildiği VEYA test alt kümesinin aykırı değerlerden oluştuğu anlamına gelebilir. İkinci durumda, son modelin onlarla birlikte eğitilmesi performansını düşürür ve siz sadece onu yerleştirdikten sonra öğrenirsiniz.

İlk sorum yeniden ifade etme:

Eğer bir olsaydı bir modelin tek seferlik gösteri böyle yerleşik gömülü elektronik üzerine pahalı bir roket deneyini dağıtmadan gibi, sen yeniden olmadan son aşamadaki test alt kümesi ile yeniden eğitim almış bir model güveniyorum yeni performansı üzerinde test edildi?

Yanıtlar:


14

Modeliniz için optimum hipermetreler elde ettikten sonra, eğitim ve çapraz doğrulama vb. İşlemlerden sonra, teoride, üretime dağıtmak için modeli tüm veri seti üzerinde eğitmek tamamdır. Bu, teoride daha iyi genelleme yapacaktır.

Bununla birlikte, artık bir test veri setine sahip olmadığınız için, test verileri üzerinde artık istatistiksel / performans iddiaları yapamazsınız.

Tüm eğitim veri setini kullanarak üretime bir model dağıtıyorsanız ve yeni gelen verilerin hedef değişkeninin gerçek değerlerini biliyorsanız (yani, üretim modelinin tahminlerde bulunduğu veriler), o zaman gerçek zamanlı performans ölçümlerini hesaplayabilirsiniz. bu yeni veri test verileri gibidir (eğitim sırasında modele rastlanmamıştır). Bu işlemden daha iyi performans elde etmek için modeller hiperparametrelerini güncelleyebilirsiniz.

Ancak, yeni verilerin hedef değerlerini bilseydiniz, neden bir modeli eğitmeliydiniz?

Genel olarak, yeterli çeşitliliğe sahip yeterli veriye sahipseniz, veriyi karıştırıp bölmeyi söylerim: 80:20 eğitim: test, sağlam bir model yetiştirmek için yeterli olmalı ve genelleme sorunları hakkında endişelenmenize gerek yoktur (tabii ki, modeli).


+ 1'dü, cevap için teşekkürler! 80 /
20'ye

2
Düzenli test setinizdeki performansın, doğru bir şekilde yaptığınız sürece tüm popülasyona genelleştirilmesi beklenir. Metodunuzu veri setinin tamamına uyguladıktan sonra bir test setiniz olmasa da, orijinal çapraz onaylanmış tren / test setlerinizdeki performans egzersiz algoritmanızın performansının tarafsız bir tahmincisidir. CV'nin özü budur - bir modeli eğitmek veya parametreleştirmek için değil, model oluşturma sürecinin performansını tahmin etmek için. Tam veri modellenmesi öncesi herhangi bir test setlerinde performansınız olduğu tam verilerindeki performans tahmin.
Nükleer Wang,

13

İlginç soru. Şahsen bunu üretime giren ürünler için görmedim ama mantığı anlıyorum.

Teorik olarak, konuşlandırılmış modeliniz ne kadar çok veri görürse, o kadar iyi genellemelisiniz. Bu nedenle, modeli elinizdeki tüm veri kümesi üzerinde eğitmişseniz, sadece örneğin tam veri setindeki train / val setlerini (örn. ~% 90) görmüş olan bir modelden daha iyi genellemelidir.

Bununla ilgili sorun (ve ilk başta verileri tren / val / test setlerine bölmemizin nedeni!), Görünmeyen verilerin doğruluğu hakkında istatistiksel iddialarda bulunabilmeyi istememizdir. Tüm veriler üzerinde bir modeli tekrar eğittiğimizde , bu iddialarda bulunmak mümkün değildir.

[Düzenle]

Burada, onaylanan cevabın bana benzer puanlar verdiği ve başka şeyler yapmanın başka yollarından bahsettiği Çapraz Doğrulama ile ilgili bir soru var .


Dönüyoruz:

  1. manken yetiştir
  2. model değiştir
  3. 1. adıma gidin
  4. Test setindeki performansı değerlendirmek
  5. 5. adımda bulunan test hassasiyetine sahip mevcut model

Sonunda, test setinde mükemmel bir puan almayı başarırsanız, bunun genel olarak iyi olduğunu iddia edebilirsiniz. Bu nedenle, tam veri setinde yeniden eğitim yapmanın gelecekteki görünmeyen veriler üzerindeki performansı artıracağı sorusu, kesinlikle test edebileceğiniz bir şey değildir. İlgili diğer problem setlerinde daha iyi performansa dair ampirik kanıt, o zaman karar vermeniz gereken zamandaki tek kaynak veya rehber olacaktır.

Sağlıklı bir kontrol, nihai yeniden eğitilmiş modeli, orijinal test setinde tekrar test etmek olacaktır; Modelin sadece tren / val setini gördüğünde, şimdiye kadar olduğundan daha yüksek puan almasını beklemek, çünkü eğitim sırasında gerçekten test setini gördü. Bu, gelecekteki tüm vakalarda bu son modelin üstün olduğuna kendimi% 100 güvende hissetmemi sağlamaz, ancak en azından verilen verilerle olabileceği kadar iyi.

Belki de söylediklerinizi yapmayla ilgili daha katı argümanlar vardır (muhtemelen akademik olarak yönlendirilir), ancak pratik uygulamalar için çekici görünmektedir!


+ 1'dü, gösterdiğiniz çaba için ve bu yazıyı gösterdiğiniz için teşekkür ederim, kaçırdım! Sonunda tüm eğitim veri setindeki modeli test etme önerinize gelince, sonucuna göre değerli bir görüş alamadığınızı düşünüyorum. Basitçe, algoritma eğitimi genellikle maliyet fonksiyonlarının optimizasyonuna dayandığından, bu nedenle eğitimli model, eğitim verileri göz önüne alındığında optimaldir. Tren verilerindeki düşük doğruluk, optimum olmadığı anlamına gelmez, bu sadece o veri seti ve seçilen algoritma mimarisi göz önüne alındığında daha iyisini yapamayacağı anlamına gelir. Bunun geçerliliği için hiçbir şey çıkartamazsınız.
pcko1

1
Rica ederim! İfadenize tamamen katılıyorum (son eğitimli modeli, eğitim değil menşe testi verilerinde test etmek için söylesem de). Her durumda, sadece son modelin tamamen beklenmedik bir şey yapmadığını görmek isterdim. Teori ve pratik her zaman aynı hizada değil :)
n1k31t4

6

İstatistiksel makine öğrenmesi hakkında vurgulanması gereken bir nokta , hiçbir garantinin olmadığıdır . Bir uzatmayı kullanarak performansı tahmin ettiğinizde, bu sadece bir tahmindir . Tahminler yanlış olabilir.

Bu alışmak biraz zaman alır, ancak rahat etmeniz gereken bir şey. "Performans gerçekte bozulursa ne olur?" Dediğinizde, bunun kesin olabileceği kesindir. Gerçek performans tahmin ettiğiniz / tahmin ettiğinizden daha kötü olabilir. Aynı zamanda daha iyi olabilirdi. Her ikisi de mümkün. Bu kaçınılmaz. Bazı içsel, indirgenemez belirsizlik var.

Bir uzatılmış test seti kullanarak performansı değerlendirirken, gelecekteki performansı tahmin etmek için geçmişten gelen verileri kullanıyorsunuz. Dedikleri gibi, geçmiş performans gelecekteki sonuçların garantisi değildir . Bu, kabul etmek zorunda olduğumuz yaşam gerçeğidir.

Bunun seni hareketsizleştirmesine izin veremezsin. Tahmin ettiğinizden daha kötüsünü yapmanın mümkün olduğu gerçeği, veriler üzerinde eğitilmiş bir modelin üretime alınmasından kaçınmak için bir neden değildir. Özellikle, bunu yapmazsanız, kötü yapmak da mümkündür. Tüm veriler üzerinde eğitilmiş bir modelin (tren + doğrulama + testi) sadece tren + doğrulama bölümünde eğitilmiş bir modelden daha kötü olması olasıdır. Daha iyi olması da mümkün. Dolayısıyla, bir garanti aramak yerine kendimize sormamız gerekiyor: Bize en iyi başarı şansını veren nedir? En etkili olma olasılığı en yüksek olan nedir?

Ve bu durumda, üretime dağıtmak istediğinizde yapabileceğiniz en iyi şey, kullanabileceğiniz tüm verileri kullanmaktır. Beklenen performans açısından, tüm verileri kullanmak, verilerin bir kısmını kullanmaktan daha kötü değildir ve potansiyel olarak daha iyidir. Dolayısıyla, üretim modelini oluştururken modeli eğitmek için mevcut tüm verileri kullanabilirsiniz. Her şey yine de kötüye gidebilir - her ne zaman istatistiksel yöntemler kullanıyorsanız, her zaman şanssız olmak mümkündür - ancak bu, işlerin iyi gitmesi için mümkün olan en iyi şansı verir.

Özellikle, standart uygulama aşağıdaki gibidir:

  1. Verilerinizin bir kısmını bir deneme testine ayırın. Hangi fraksiyonun kullanılacağına ilişkin hızlı ve kesin bir kural yoktur, ancak örneğin, test seti için% 20 ayırtabilir ve geri kalan% 80'i eğitim ve doğrulama için saklayabilirsiniz. Normalde, tüm bölmeler rastgele olmalıdır.

  2. Ardından, yapabileceğiniz en iyi modeli bulmak için deney yaparak, birden fazla mimariyi ve hiperparametreyi denemek için eğitim ve doğrulama verilerini kullanın. Eğitim ve doğrulama için tutulan% 80'i alın ve bir eğitim seti ve doğrulama setine bölün ve eğitim setini kullanarak bir model eğitin ve ardından doğrulama setindeki doğruluğunu ölçün. Çapraz doğrulama kullanıyorsanız, bu bölünmeyi birçok kez yapacak ve doğrulama kümesindeki sonuçları ortalama olarak; değilseniz, tek bir bölme (örneğin,% 80'in% 70'i /% 30'u veya benzeri bir şey) yapacaksınız ve validasyon setindeki performansı değerlendireceksiniz. Denemek için çok fazla hipermetreniz varsa, bunu her aday hiperparametre ayarı için yapın. Denemek için birçok mimarınız varsa, bunu her aday mimarisi için yapın. Ne yaptığınızı kullanarak bu konuda yinelenebilirsiniz.

  3. Mutlu olduğunuzda, mimarlık, hiperparametreler vb. Seçimini dondurursunuz. Şimdi denemeniz tamamlandı. Bu noktaya tıkladığınızda, başka bir seçeneği bir daha asla deneyemezsiniz (yeni bir test seti almadan) - bu nedenle hazır olduğunuzdan emin olana kadar bu noktaya gelmeyin.

  4. Hazır olduğunuzda, daha önce seçtiğiniz mimariyi ve hiperparametreleri kullanarak tam eğitim + doğrulama setinde (bu% 80) bir model eğitirsiniz. Ardından, düzenlenen test setindeki doğruluğunu ölçün. Bu modelleme yaklaşımının ne kadar doğru olacağı konusundaki tahmininiz / tahmininiz budur. Burada tek bir numara alıyorsunuz. Bu sayı şudur: ondan memnun değilseniz, 1. ve 2. adımlara geri dönemez ve daha fazla deneme yapabilirsiniz; bu geçersiz olurdu.

  5. Son olarak, üretim kullanımı için tüm veri seti, eğitim + onaylama + test seti üzerinde bir model yetiştirebilir ve üretim kullanımına koyabilirsiniz. Bu üretim modelinin doğruluğunu asla ölçmeyeceğinizi unutmayın, çünkü bunu yapmak için kalan hiçbir veriye sahip değilsiniz; Zaten tüm verileri kullandınız. Ne kadar iyi performans göstereceğine dair bir tahmin yapmak istiyorsanız, 4. adımdaki tahmini doğruluğu, bunun üretimdeki performansının ne kadar iyi olacağına dair öngörüsü olarak kullanma hakkına sahip olacaksınız, çünkü gelecekteki performansının en iyi tahmini. Her zaman olduğu gibi, hiçbir garanti yoktur - bu, bize sunulan bilgiler göz önüne alındığında, mümkün olan en iyi tahmindir. Tahmin ettiğinden daha kötü, tahmin ettiğinden daha kötü bir şey yapması kesinlikle mümkün - bu her zaman doğrudur.


Tamamen hemfikir olmasam bile çaba için + 1'ledi :) örneğin “Beklenen performans açısından, tüm verileri kullanmak, bazı verileri kullanmaktan daha kötü ve potansiyel olarak daha iyi” derken. Arkasındaki nedeni göremiyorum. Öte yandan, bahsettiğiniz 2. nokta çok önemli görünüyor, çapraz doğrulama! Bu nedenle, esasen tüm örneklerle eğitir / onaylarsınız, bu nedenle muhtemelen seçilen nihai modelde aykırı değerleri reddedersiniz. Cevabınız için teşekkürler.
pcko1

@ pcko1, prensibi basittir. Verileriniz varsa hepsini mi yoksa bir kısmını mı kullanmalısınız? Niye ya? Belki veri aldığımızda, bir şey yapmadan önce, sadece% 10'unu alıp atmalı ve asla bakmamalıyız. Aslında, bazılarını atmak iyi ise, daha fazla atmak daha iyidir, bu yüzden belki de tüm verilerimizi atmalıyız. Bu çok saçma, değil mi? Niye ya? Nedenini anlayabiliyor musunuz bir bakın ve ardından bu duruma uygulamayı deneyin. Umarım bu seni düşündürür!
DW

3

Bir veri setine sahip olmanın sebeplerinden biri, fazla takmamaktır. Çapraz doğrulama kullanıyorsanız, esasen tüm veri setinin eğitim seti olarak hareket etmesine izin vermiş olursunuz ancak yeniden eğitim, fazla uydurma işareti olup olmadığını doğrulamanıza izin vermez. Her iki yöntemde de (çapraz doğrulama veya tüm veri setiyle yeniden deneme), sonucunuzu önemli ölçüde değiştirmemelisiniz (benim tahmin edilmemiş tahminimden), ancak hiperparametre ayarlaması yapamazsınız veya model performansınızı doğrulayamazsınız. bir test seti var. Daha iyi sonuçlanıp bitmediğini söylemek zor ama sanırım bilmenin tek yolu zaman içinde gerçek veriler üzerinden iki modelin A / B'sini yapmak.

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.