Çapraz doğrulama sonrasında tüm veri seti ile eğitim mi yapıyorsunuz?


139

Çapraz doğrulama işleminden sonra tam veri setiyle çalışmak her zaman iyi bir fikir midir? Başka bir yol tut, çok ile tren ok tüm benim veri kümesindeki örnekleri ve değil bu özel uydurma olmadığını kontrol edememek overfits ?


Sorun hakkında bazı bilgiler:

Diyelim ki parametreleştirilmiş bir model ailesi var . Ayrıca, bir veri noktalarım olduğunu ve verileri en iyi şekilde genelleştiren modeli seçmek için k-kat çapraz doğrulama ile model seçimi yaptığımı söyleyin . NαN

Model seçimi için, örneğin, her aday için k-kat çapraz onaylama yaparak üzerinde bir arama yapabilir (örneğin bir ızgara araması) . Çapraz doğrulamadaki kıvrımların her birinde, öğrenilen model .α βα

Çapraz onaylama noktası, bu kıvrımların her biri için, öğrenilen modelin "görünmeyen veriler" üzerinde test ederek aşırı yüklenip giyilmediğini kontrol edebilmemdir. Sonuçlara bağlı olarak , ızgara aramada çapraz doğrulama sırasında en iyi şekilde genelleştirilen parametreleri için öğrenilen modelini seçebilirim .α en iyiβbestαbest

Şimdi, bu demek modeli seçiminden sonra , ben kullanmak istiyorum tüm daha iyi bir modeli öğrenmek umarım benim veri kümesindeki noktaları ve. Bunun için , model seçimi sırasında seçtiğim modele karşılık gelen parametrelerini kullanabilirim ve ardından tam veri setinde eğitimden sonra, yeni öğrenilen bir model . Sorun şu ki, veri tüm noktaları eğitim için kullanırsam, bu yeni öğrenilen modelin herhangi bir görünmeyen verinin üzerinde olup olmadığını kontrol edemem . Bu sorunu düşünmenin doğru yolu nedir?a b , e s t β f u l l β f u l lNαbestβfull βfull


2
Neredeyse kesin bir kopyası: Çok sayıda değerli cevap içeren istatistik.stackexchange.com/questions/52274 . Belki de bu iplikler birleştirilmeli ama hangi yöne doğru emin değilim. Her ikisi de çok iyi cevapları kabul etti.
amip

Yanıtlar:


111

Çapraz doğrulama düşünmenin yolu, bir modelin performansını tahmin etmek yerine, bir model oluşturmak için bir yöntem kullanarak elde edilen performansı tahmin etmektir.

Bir modelin hiperparametrelerini tahmin etmek için çapraz doğrulama kullanıyorsanız ( s) ve daha sonra bu veri parametrelerini kullanarak tüm veri kümesine bir model uydurursanız, çapraz onaylama tahmininin farkında olmanız şartıyla Performansın (muhtemelen büyük ölçüde) iyimser önyargılı olması muhtemeldir. Bunun nedeni, çapraz doğrulama performansını en aza indirmek için modelin bir kısmının (hiper parametrelerinin) seçilmesidir, bu nedenle çapraz doğrulama istatistiği sıfır olmayan bir varyansa sahipse (ve olacaktır) aşırı uydurma olasılığı vardır. model seçim kriteri.α

Hiper parametrelerini seçmek ve sonuçta ortaya çıkan modelin performansını tahmin etmek istiyorsanız, modelin performansını değerlendirmek için dış çapraz onaylamanın kullanıldığı ve her katlama çaprazında, iç içe çapraz doğrulama yapmanız gerekir. validasyon, her parametrede hiper parametrelerini ayrı ayrı belirlemek için kullanılır. Son modeli, hiper parametrelerini seçmek için tüm set üzerinde çapraz doğrulama kullanarak ve ardından optimize edilmiş hiper parametrelerini kullanarak tüm veri kümesinde sınıflandırıcıyı oluşturursunuz.

Bu elbette hesaplama açısından pahalıdır, ancak uygunsuz performans tahmininin getirdiği önyargı büyük olabileceğinden buna değer. Makaleme bakın

GC Cawley ve NLC Talbot, Model seçiminde aşırı uydurma ve performans değerlendirmesinde sonraki seçim önyargısı, Makine Öğrenimi Araştırma Dergisi, 2010. Research, vol. 11, sayfa 2079-2107, Temmuz 2010. ( www , pdf )

Bununla birlikte, model seçiminde fazla uydurma hala mümkündür (iç içe çapraz doğrulama sadece bunun için test etmenize izin verir). Yararlı bulduğum bir yöntem, aşırı karmaşık modellerde ortaya çıkması muhtemel olan hiper-parametre değerlerini cezalandıran çapraz doğrulama hatasına bir düzenlileştirme terimi eklemektir, bakınız

GC Cawley ve NLC Talbot, Hiper parametrelerin Bayesian düzenlenmesi yoluyla model seçiminde aşırı uyumu önleme, Makine Öğrenimi Araştırma Dergisi, cilt 8, sayfa 841-861, Nisan 2007. ( www , pdf )

Bu nedenle, sorunuzun cevapları (i) evet, son modelinizi üretmek için tam veri setini kullanmalısınız, çünkü ne kadar çok veri kullanırsanız, genelleme olasılığı da o kadar yüksek olur, ancak (ii) üzerinden tarafsız bir performans tahmini elde ettiğinizden emin olun. iç içe çapraz doğrulama ve potansiyel olarak model seçiminde fazla uymamak için çapraz doğrulama istatistiklerini ceza almayı düşünün.


3
+1: Şu soruyu yanıtlıyor: "Bir modelin (α'ların) hiperparametrelerini tahmin etmek için çapraz doğrulama kullanıyorsanız ve sonra bir hiper parametrelerini modelin tüm veri kümesine sığdırmak için kullanırsanız, o zaman sorun değil ..."
Neil G

4
@soufanom, hayır, modele ilişkin seçimler yapmak için "ilk deneylerin" kullanılmasının aşırı uydurma ile sonuçlanması muhtemeldir ve neredeyse kesinlikle performans analizine iyimser bir önyargı getirecektir. Performans analizi için kullanılan çapraz doğrulama, modelin her katlamaya bağımsız olarak takılmasında kullanılan HER adımı tekrar etmelidir. Makalemdeki deneyler, çekirdek modellerinin bu tür önyargılara karşı çok hassas olabileceğini göstermektedir, bu nedenle model seçimini ve performans değerlendirmesini mümkün olan tüm titizlikle yapmak hayati önem taşımaktadır.
Dikran Marsupial

3
SVM gibi çekirdek yöntemleri için, neredeyse hiç bir hesaplama maliyeti olmadan bir kez dışarıda bırakma çapraz doğrulama yapmak çoğu kez mümkündür (cevabımda listelenen makalelere bakın). Bu "sanal" bir kez dışarıda bırakılan çapraz doğrulama işlemini, performans değerlendirme için k-katlamalı çapraz doğrulama içine yerleştirilmiş hiper parametrelerini ayarlamak için kullanıyorum. Maliyet sonra oldukça makul. Kanımca, performans değerlendirmesinin hiper parametrelerinin ayarlanması ile herhangi bir şekilde önyargılı olduğu herhangi bir prosedürün kullanılması kabul edilemez. Güvenilir bir tahmin elde etmek için hesaplanan masrafa değer.
Dikran Marsupial

2
@DikranMarsupial. Cevabınızdaki üçüncü paragrafı pek anlamadım. İç içe çapraz doğrulama yaparsam, dış CV'nin her bir katlaması için farklı bir hiperparametre seti alırım (yani, CV'yi bir parametre ızgarası üzerinde çalıştırmasından bir hiperparametre seti alıyorum ). En iyi hiperparametre setini nasıl seçerim?
Amelio Vazquez-Reina,

1
çapraz doğrulama, esasen , yöntemin kendisinden ziyade, bir modele uyan bir yöntemin performansını tahmin etmenin bir yoludur . Dolayısıyla, performans tahminini elde etmek için iç içe çapraz doğrulama yaptıktan sonra, çapraz doğrulama yaptığınız prosedürü (hiper parametrelerinin seçimini de içeren) kullanarak tüm veri kümesini kullanarak son modeli yeniden oluşturun.
Dikran Marsupial

23

Sadece @ mark999 tarafından verilen cevabı eklemek için, Max Kuhn'un caretpaketi (Sınıflandırma ve Regresyon Eğitimi), önyüklemeli çapraz onaylama veya N-katlama CV ve diğer bazı şemalara dayanan model seçimi için R'deki en kapsamlı kaynaktır.

rmsPaketin büyüklüğünü göz ardı etmemekle birlikte, caretR'de mevcut olan her öğrenme yöntemine hemen hemen uymanıza izin verirken, validateyalnızca rmsyöntemlerle çalışır (sanırım).

caretPaket uyum süreci verileri, önceden herhangi bir popüler modeli değerlendirmek için tek bir altyapı olduğunu, dolayısıyla tüm yöntemler için kullanımı kolay ve birçok performans önlemlerinin grafiksel değerlendirme (sonraki overfit sorununa gibi model seçimi önemli ölçüde etki edebilecek bir şey sağlar peki) şebekenizin üzerinde ve değişken önemi.

Başlamak için paket vinyetlerine bakın (kullanımı çok basittir) Şapka ile
Veri Ön İşleme
Değişken Seçimi Şapka ile
Model Hazırlama
Değişken Önemi

Ayrıca, paket hakkında daha fazla bilgi ve özel uygulama örnekleri için şapka web sitesini görüntüleyebilirsiniz :
Resmi web sitesi


Teşekkürler. Model seçiminden sonra (ki bu arama yaparak yapılır train), tam veri setiyle birlikte eğitim almanın bir yolu olup olmadığını biliyor musunuz ?
Amelio Vazquez-Reina,

Bunun iyi bir fikir olup olmadığından ya da neden bunu isteyeceğinden emin değilsiniz, ancak trenle gelen son modeli tam veri setine sığdırabilirsiniz.
Momo

16

Frank Harrell'in çapraz doğrulamadan ziyade önyükleme doğrulaması önereceğine inanıyorum. Önyükleme doğrulaması, tam veri setinde bulunan modeli doğrulamanıza izin verir ve çapraz doğrulamadan daha kararlıdır. validateHarrell'in rmspaketini kullanarak R'de yapabilirsiniz .

Daha fazla bilgi için Harrell ve / veya "Bootstrap'a Giriş" adlı Harrell'ın "Regresyon Modelleme Stratejileri" kitabına ve daha fazla bilgi için bkz.


9
"Kötü CV" ile ilgili bir sonraki efsaneyi atlamak için, bu bir terminoloji problemidir - Harrell'in "çapraz doğrulama", N-katlama CV anlamına gelir ve "önyükleme doğrulama" CV yeniden örnekleme anlamına gelir. Açıkçası, bu ikinci lezzetin daha kararlı ve genel olarak daha iyi olduğu konusunda hemfikirim, ama bu aynı zamanda bir çapraz onaylama türü.

1
mark999 veya @mbq, bootstrap'ın tam veri setine yerleştirilmiş bir modeli doğrulamasına nasıl izin vereceğini açıklar mısınız?
Amelio Vazquez-Reina

1
@ user27915816 Peki, prensipte nohow; Çapraz onaylamanın arkasındaki fikir, verilen eğitim yönteminin , sonuncusuna çok benzeyen setler üzerinde iyi modeller üretip üretmediğini güvenilir bir şekilde test edip etmediğinizi test etmektir ve eğer öyleyse, bu gözlemi garip hiçbir şeyin gerçekleşmeyeceği sessiz bir varsayımla tam sete genellendirir. Ve kullandığınız CV yöntemi bir şekilde önyargılı değil. Bu elbette neredeyse her zaman yeterince iyidir, yine de sahip olduğunuz tüm verilere dayanan modelin fazladan donatılmadığından asla emin olamazsınız.

14

Burada bir sürü farklı sorunuz olduğunu düşünüyorum:

Sorun şu ki, eğer veri setimdeki tüm noktaları eğitim için kullanırsam, bu yeni öğrenilen modelin tamamen yerine getirilip getirilmediğini kontrol edemem!

Önemli olan, (bir) doğrulama adımını yalnızca bir şey için kullanabilirsiniz: parametre optimizasyonu, (x) veya genelleme performansını tahmin etmek için.

Bu nedenle, çapraz doğrulama (veya başka herhangi bir veri odaklı parametre belirleme) yöntemiyle parametre optimizasyonu yaparsanız, bu eğitim ve optimizasyon örneklerinden bağımsız test örneklerine ihtiyacınız vardır. Dikran buna iç içe çapraz doğrulama diyor, başka bir isim çift çapraz doğrulama. Veya elbette bağımsız bir test seti.

İşte bu yazı için soru şudur: k-kat çapraz onaylama sonrasında tam veri seti ile çalışmak iyi bir fikir midir? Yoksa αbest için çapraz geçerlilik bölümlerinden birinde öğrenilen modellerden birine bağlı kalmak daha mı iyi?

Çapraz doğrulama modellerinden birini kullanmak genellikle tam sette eğitimden daha kötüdür (en azından öğrenme eğrisi performansınız = f (nsamples) hala artıyorsa. Uygulamada, öyle: eğer olmasaydı, muhtemelen ayarlamış olursunuz) bağımsız bir test seti hariç.)

Çapraz doğrulama modelleri arasında (aynı parametrelerle) büyük bir farklılık gözlemlerseniz, modelleriniz kararsız olur. Bu durumda, modelleri bir araya getirmek , tüm veriler üzerinde eğitilmiş bir modeli kullanmaktan daha yardımcı olabilir ve aslında daha iyi olabilir .

Güncelleme: Bu toplama, değiştirme ile yeniden örnekleme yerine (önyükleme / önyükleme dışı doğrulama) yerine yeniden örneklemeye uygulanan (çapraz doğrulama) torbalama arkasındaki fikirdir .

İşte bu tekniği kullandığımız bir makale:
Beleites, C. & Salzer, R. .: Küçük örneklem büyüklüklerinde kimyasal modellerin stabilitesinin değerlendirilmesi ve iyileştirilmesi, Anal Bioanal Chem, 390, 1261-1271 (2008).
DOI: 10.1007 / s00216-007-1818-6

Belki de en önemlisi, veri setimdeki tüm noktaları nasıl eğitebilirim ve hala fazla güçlendirme ile savaşabilirim?

"En iyi" model için izin verilen özgürlük dereceleri ile çok muhafazakârlık yaparak, yani optimizasyon çapraz doğrulama sonuçlarındaki (rastgele) belirsizliği dikkate alarak. Eğer df çapraz onaylama modelleri için gerçekten uygunsa, daha büyük bir eğitim seti için çok fazla olmama ihtimalleri iyidir . Pitfall, parametre optimizasyonunun aslında çoklu test olduğudur. Yanlışlıkla iyi görünümlü parametre setlerine karşı korunmanız gerekir.


...If you observe a large variation between the cross validation models (with the same parameters), then your models are unstable. In that case, aggregating the models can help...Bunu biraz daha açıklayabilir misiniz? Örneğin, 10 k çapraz onaylanmış bir kurulumda lojistik regresyon çalıştırıyorsam ve 10 kat katsayıya sahipsem, son bir model oluşturmak için katsayı tahminlerinin toplanmasını tavsiye eder misiniz? Eğer öyleyse, bu nasıl yapılabilir, sadece araçları alarak?
Zhubarb,

@cbeleites üzerinde çalışabilir misiniz If the d.f. are actually appropriate for the cross validation models. Anladığım kadarıyla, tren / validasyon setlerinin tüm veri setiyle karşılaştırıldığında çok büyük olmadığını savunuyorsunuz, değil mi?
jpcgandre

1
@jpcgandre: Daha fazla kullanım için taşıyıcı modellerden birini seçmek, aslında veri odaklı bir model seçimidir; bu, dış bağımsız bir doğrulama seviyesine ihtiyacınız olduğu anlamına gelir. Ve genel olarak, yeterli vakanız olmadığı sürece , toplam örneklem büyüklüğünün testini temel alarak istatistiksel olarak anlamlı model karşılaştırmalar yapabilirsiniz , IMHO seçmemelisiniz. 1k
14'te cbeleites

1
Daha da önemlisi: yinelenen çapraz doğrulama vekil modelleri aynı hiperparametreleri paylaşır. Diğer bir deyişle, önemli olduğunu düşündüğünüz her şeyde eşdeğerdirler ancak keyfi eğitim ve test durumları seçerler. Aslında böylece "iyi" modelini seçme öncelikle iyi bir test / eğitim seti kombinasyonu seçmelidir - biz genellikle ne temelde olduğunu değil istiyorum: Biz de genelleme ve böylece sadece olumlu durumlar için çalışmayan bir seçim istiyoruz. Bu açıdan, "normal" bir çapraz onaylamadan bir taşıyıcı model seçmek bana bir anlam ifade etmiyor.
14'te cbeleites

1
@jpcgandre: (df) Veri kümesinin sında eğitim almak için uygun bir model karmaşıklığı seçmenin (bu tartışmanın neredeyse tüm veri kümesi kadar büyük olduğunu) iddia ediyorum. tüm veri seti üzerinde eğitim için biraz kısıtlayıcı modellere karşı önyargıya varmak. Bununla birlikte, bunun pratikte önemli olması gerektiğini düşünmüyorum, benim alanımdaki izlenimim ne kadar fazlaysa, çok karmaşık modellere yönelme eğilimindeyiz. 11k
14'te cbeleites

6

Yaptığınız şey, bir onaylama değil, bir çeşit stokastik optimizasyon değil.

Özgeçmiş fikri, bir nesne alt kümesinde modelin birkaç turunu gerçekleştirerek ve kalanlar üzerinde test ederek görünmeyen veriler üzerinde bir performansı simüle etmektir. Tüm turların bir miktar ortalama sonuçları , tüm sette eğitilmiş bir modelin performansının yaklaşıklığıdır .

Model seçimi durumunda, her parametre seti için tam bir CV gerçekleştirmeli ve böylece her kurulum için tam bir performans yaklaşımı elde etmelisiniz, öyle görünmek istediğiniz gibi.

Bununla birlikte, en iyi yaklaşık doğruluğa sahip modelin aslında en iyisi olacağının hiçbir şekilde garanti edilmediğine dikkat edin - farklılıklar arasındaki parametre alanında bir aralık olduğunu görmek için tüm model seçim prosedürünü çapraz doğrulayabilirsiniz. model doğrulukları önemli değildir.


2
Thanks @ mbq, ama takip ettiğimden emin değilim. I yapmak hyperparameter uzaydaki ızgara arama her nokta değeri, N-katlı çapraz doğrulama. N-kıvrımların ortalama sonucu, modelleri karşılaştırmak için kullandığım ve doğrulama setine en uygun modeli seçerek model seçimi yaptığım, bahsettiğiniz yaklaşımı verir. Benim sorum tam veri setiyle birlikte çalıştığımda ne olacağı ile ilgili. Öğrenilen modelin değiştiğini (öğrenilen modelin parametreleri) düşünüyorum ve ilke olarak fazla abartmamdan muzdarip olup olmadığımı bilmem mümkün değil. β
Amelio Vazquez-Reina

@AmV Öyleyse, tamam - yazdığım gibi, CV zaten tam set senaryosunu test ediyor, yeni veriler olmadan daha fazlasını söyleyemezsiniz. Yine, model seçiminin kendisinin uyguladığı fazladan bir donanım olup olmadığını görmek için iç içe bir CV yapabilirsiniz (seçim çok iyi bir gelişme sağlarsa veya veriler gürültülü ise bunun riski oldukça büyüktür).
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.