Bekletme doğrulama ve çapraz doğrulama


54

Bana göre, tutma onayının işe yaramaz olduğu görünüyor. Yani, orijinal veri setini iki bölüme ayırmak (eğitim ve test) ve test puanını genelleme ölçütü olarak kullanmak bir şekilde işe yaramaz.

K-fold cross-validation, genelleme için daha iyi yaklaşımlar veriyor gibi görünüyor (her noktada eğitiyor ve test ediyor). Öyleyse neden standart bekletme onayını kullanalım? Veya hatta bunun hakkında konuşmak?


10
neden yararsız olduğunu düşünüyorsun? Profesyonellerinin ve aleyhlerinin resmi bir analizi için İstatistiksel Öğrenme Teorisi Bölüm 7’yi okuyabilirsiniz. İstatistiksel olarak konuşursak, k-katlama daha iyidir, ancak bir test seti kullanmak mutlaka kötü değildir. Sezgisel olarak, bir test setinin (doğru kullanıldığında) gerçekten eğitimde hiç kullanılmamış bir veri seti olduğunu düşünmeniz gerekir . Yani bir modeli değerlendirmek için bir anlamda kesin olarak yararlı. Ayrıca, k-katlama süper pahalıdır, bu nedenle uzatma, k-katlamanın yaptığı bir tür "yaklaşımdır" (ancak düşük işlem gücüne sahip biri için).
Charlie Parker,

Elbette. Teorik bir bakış açısına göre, K-katlama daha hassastır ancak YÜKSEK HAZIRLAMA daha pahalıdır. Soru şuydu: neden her zaman K-katlı çapraz onaylama yapmıyorsunuz?

2
Anlıyorum. Sebebinin çoğunlukla her zaman hesaplamalı olduğunu savunuyorum. K-katlama genelleme hatasını daha iyi yaklaştırır; bu nedenle istatistiksel açıdan K-katlamanın, tercih ettiğim yöntem olduğunu düşünüyorum. Bekletme uygulaması çok basittir ve birçok model için eğitim gerektirmez. Uygulamada, bir modelin eğitimi oldukça pahalı olabilir.
Charlie Parker,

1
Doğru - ama "çok hesaplamalı pahalı" argümanının oldukça zayıf olduğunu düşünüyorum. Neredeyse her zaman en doğru modelleri geliştirmeyi hedefliyoruz. Yine de, literatürde yapılan deneylerin çoğunun yalnızca tek bir onaylama onaylama setine sahip olduğu bu paradoks vardır.

1
Soru - "K kat çapraz doğrulama" başlıklı 7.10.1 İstatistiksel öğrenme teorisi bölümlerinin unsurları, test verilerinin eğitim verilerinden tamamen ayrı tutulmasının (geçerli onaylamada olduğu gibi) ideal olduğunu ve katlama onaylamanın sadece bir uzlaşma olduğunu ortaya koymaktadır. Veriler çoğu zaman azdır. İstatistikler konusunda hala oldukça yeniyim, doğrulamanın ne kadar kesin olduğunu daha kesin söyleyebilir misiniz?
numX 24:16

Yanıtlar:


21

Tek tahminim, üç saatlik programlama deneyimiyle Bekletebilmeniz; diğeri prensipte bir hafta ve pratikte altı ay alır.

Prensip olarak basittir, ancak kod yazmak sıkıcı ve zaman alıcıdır. Linus Torvalds'ın ünlü bir şekilde söylediği gibi, “Kötü programcılar kod için endişeleniyorlar. İyi programcılar veri yapıları ve ilişkileri hakkında endişeleniyorlar.” İstatistik yapan insanların çoğu, kendi hatalarından dolayı kötü programcılar. K katlama çapraz doğrulamayı etkin bir şekilde yapmak (ve demek istediğim, yani, bir kereden fazla hata ayıklamak ve kullanmak için korkunç derecede sinir bozucu olmayan bir şekilde), R'de veri yapılarının belirsiz bir şekilde anlaşılmasını gerektirir, ancak veri yapıları genel olarak "giriş" içinde atlanır. istatistiksel programlama "dersleri". İnterneti ilk defa kullanan yaşlı kişi gibi. Bu gerçekten zor değil, ilk kez ortaya çıkarmak için sadece yarım saat kadar sürüyor, ama yepyeni ve kafa karıştırıcı yapıyor, bu yüzden görmezden gelmek kolay.

: Bu gibi sorular var Ar sürecinde bir gecikme dışarı doğrulama nasıl uygulanır . Askere hiçbir suçu amaçlanmadı. Ancak birçok insan sadece kod okuma yazma değildir. İnsanların çapraz onaylama yaptığı gerçeği beni mutlu etmek için yeterli.

Aptalca ve önemsiz geliyor, ancak bu kişisel deneyimlerden, o adam olmasından ve o adamla çalışan birçok insanla birlikte çalışmasından kaynaklanıyor.


18
Belki de CS’de uzmanlaşan biri olarak bu konuda biraz çarpık bir görüşüm var, ancak tutma onayını doğru şekilde uygulayabiliyorsanız (bu, veri setini 2 bölüme ayırmak ve birini eğitim için diğeri test etmek için kullanmak anlamına gelir), Değiştirmeniz gereken tek şey bölünmenin oranı ve her şeyi bir döngüye sokmak. Bunun büyük bir problem olacağına inanmak zor görünüyor.
Voo,

3
@Voo: ek olarak, burada programlayabilmek yeterli değil: bölme işleminiz sırasında hangi rahatsızlıkları hesaba katmanız gerektiğine karar verebilmek için sorunu yeterince iyi anlamalısınız. Bkz . Stats.stackexchange.com/questions/20010/… . Bu tür problemleri "saf" kodlama problemlerinden daha sık görüyorum (her ne kadar bilen olmasa da: veri matrisindeki satırların düz bir şekilde bölünmesini zorlukla kodlayabilen biri genellikle bölme yapmama hatası yapar) örneğin hasta düzeyinde)
cbeleites, Monica

Ayrıca uygun (örneğin hasta / ölçüm gün / ...) hiç ölçüm aleti üreten dosyaları ayırarak, herhangi bir programlama tutun aşımı bölme ... yapabileceği Not
cbeleites Monica destekler

5
Seçmenlere: mantığımı sorgulayan ayrı bir soru sorduğumu unutmayın. stats.stackexchange.com/q/108345/36229
shadowtalker

1
İki çapraz doğrulama yönteminin arasındaki farkı açıklayan cevabın, öğrenmek için insanca bir zaman olmalı, saçma sapan ve yardımcı
olmadıklarını sanmıyorum

40

Bekletme, bağımsız test setiyle doğrulama ile eşanlamlı olarak kullanılır, ancak verileri rastgele bölme ve bağımsız test için bir doğrulama denemesi tasarlama arasında çok önemli farklar vardır.

Yeniden örnekleme veya bekletme validasyonu ile ölçülemeyen genelleme performansını ölçmek için bağımsız test setleri kullanılabilir, örneğin bilinmeyen gelecekteki vakaların performansı (= eğitim bittikten sonra ölçülen durumlar). Bu, mevcut bir modelin yeni veriler için ne kadar süre kullanılabileceğini bilmek açısından önemlidir (örneğin, araç sapmasını düşünün). Daha genel olarak, bu uygulanabilirlik sınırlarını tanımlamak için ekstrapolasyon performansının ölçülmesi olarak tanımlanabilir.

Pivot aslında yararlı olabilir başka senaryodur: çok olduğunu kolay eğitim ve test verileri düzgün ayrılmasını temin etmek - doğrulama yeniden örnekleme için çok daha kolaydır: örn

  1. bölünmeye karar ver (örn. vakaların rastgele atanması)
  2. ölçmek, ölçü,,, tedbir, önlem
  3. Eğitim vakalarının ölçüm ve referans verileri => modelleme \ ne ölçümler ne de test durumlarının referansı model kişilere verilir.
  4. son model + yapılan vakaların ölçümleri => tahmin
  5. Bekletilen durumlar için öngörüleri referans ile karşılaştırır.

İhtiyacınız olan ayrılma seviyesine bağlı olarak, her adım bir başkası tarafından yapılabilir. İlk seviye olarak, test senaryosunun herhangi bir verisinin (ölçümlerin bile) modelleyiciye teslim edilmemesi, test verilerinin modelleme sürecine sızmayacağından emin olmalarını sağlar. İkinci seviyede, son model ve test durumu ölçümleri henüz başkasına devredilebilirdi, vb.

Evet, bunun yerine koyma tahminlerinin yeniden örnekleme onaylamasına kıyasla daha düşük verimliliği ile ödeme yaparsınız. Ancak, yeniden örnekleme onaylamasının vakaları doğru şekilde ayırmadığından şüphelendiğim pek çok makale gördüm (alanımda kümelenmiş / hiyerarşik / gruplanmış veriler var).

Gönderimden bir hafta sonra bir makaleyi geri çekerek yeniden bölme için veri sızıntısı dersini öğrendim, böylelikle bölme işlemimde (indeks hesaplamasında yazım hatası) daha önce tespit edilmemiş olduğum (yan yana permütasyon testlerini çalıştırarak) sızıntısı olduğunu öğrendim.

Bazen elde tutma, sonuçlar hakkında aynı kesinliği sağlamak için yeniden örnekleme kodunu (örneğin kümelenmiş veriler için) kontrol etmek için zaman ayırmaya istekli birini bulmaktan daha etkili olabilir. Bununla birlikte, IMHO bunu yapmak için genellikle verimli değildir; örneğin gelecekteki performansı (ilk nokta) (yani, zaten var olan modeli için bir doğrulama denemesi hazırlamanız gerektiğinde) ölçmeniz gereken aşamada bulunmadan önce.

OTOH, küçük örneklem büyüklüğü durumlarda, bekletme seçeneği yoktur: yeterli test vakası tutmanız gerekir, böylece test sonuçları gerekli sonuca izin verecek kadar kesindir (unutmayın: sınıflandırma için 3 test vakasından 3'ü doğru 50:50 tahminin çok altında değişen binom% 95 güven aralığı!) Frank Harrell en azından ca. [Doğru tahmin edilen vakaların kesri gibi] bir oranının yararlı bir hassasiyetle doğru bir şekilde ölçülmesi için 100 (test) vakaya ihtiyaç vardır.


Güncelleme: Doğru ayrılmanın özellikle zor olduğu durumlar arasında durumlar vardır ve çapraz onaylama yapılamaz hale gelir. Bir dizi kargaşayla ilgili bir problem düşünün. Kesin olarak iç içe geçmişse bölme kolaydır (örneğin, birkaç hastayla yapılan bir çalışma, her hastanın birkaç örneğine sahiptir ve her örneğin birkaç hücresini analiz eder): örnekleme hiyerarşisinin en üst seviyesine (hastaya göre) ayrılırsınız . Ancak iç içe geçmemiş bağımsız kargaşalara sahip olabilirsiniz, örneğin testi çalıştıran farklı denemelerin neden olduğu günlük değişimler veya varyanslar. Daha sonra bölünmenin herkes için bağımsız olduğundan emin olmalısınızEn üst düzeyde kafa karıştırıcılar (iç içe geçenler otomatik olarak bağımsız olacaktır). Bununla ilgilenmek, eğer bazı karıştırıcılar sadece çalışma sırasında tanımlanırsa ve bir onaylama deneyi tasarlamak ve gerçekleştirmek, ne eğitim ne de taşıyıcı modellerin sınanması için neredeyse hiç veri bırakmayan bölmelerle başa çıkmasından daha etkili olabilir.


6
Keşke bu çok kapsamlı cevap için + 1'den daha fazlasını verebilseydim. Özellikle, uzmanlar için bile bu tür sorunları ortadan kaldırmanın önemsiz olduğunu açıkça gösterdiği için, bir veri sızıntısı ile ilgili sorununuzu belirtmekten özellikle hoşlandım. Bu iyi bir gerçeklik kontrolü!
Marc Claesen

Soruya yalvarıyor musun? Evet, bölmek karışıklıktan dolayı zor, ancak tek bir onaylama onayı veya k-katlama çapraz doğrulama yapıp yapmadığınızdan bağımsız olarak zor değil mi? (Ne olursa olsun anlayışlı bir cevap için teşekkürler!)
Nils von Barth

1
@NilsvonBarth: Argümanlarımın nasıl dairesel olduğunu görmüyorum: OP “neden [bütünüyle bekletme geçerliliği kullandığını” soruyor ve bazı pratik nedenler veriyorum. Sınırlı sayıda vakanın istatistiki olarak en verimli kullanımı, çalışma tasarımının her zaman en önemli özelliği değildir. (Tecrübelerime rağmen, çoğu zaman sınırlı bir durum sayısından dolayı: Bekletme yerine tekrarlanan / tekrarlanan k-katlamalı CV için çok daha fazla öneriyorum. Bazı karışıklıklar için fiziksel bölünme mümkün ve kolaydır - ve gizli önizlemeleri engellemenin çok etkili bir yoludur. Bunu iki katına
çıkarmayacağımızı

Bir noktada çok fazla yanlış pozitif makaleye karşı kör istatistiksel veri analizi gerekebilir mi?
cbeleites, Monica

2
@NilsvonBarth: Bekletme bağımsızlığını garanti altına alma konusunda dikkatli olun: Tutucuyu bu şekilde uygulamak kolaydır (vakaların fiziksel olarak ele alınmasıyla , yani test numunesi alınmaz ve sadece model eğitimi tamamlandıktan sonra ölçülür), fakat Genellikle tutma terimi, verinin tek bir rastgele bölünmesi gibi gerçekten çok daha fazlası için kullanılan bir terimdir - ve böylelikle bölme işleminde hata yapma tüm olasılıkları bekletme ile de yapılabilir!
cbeleites,

8

knnkk

Yani soruları cevaplamak için:

  1. Neden bunun hakkında konuşuyorsun? Pedagojik. Bekletme geçerliliğini onaylamanın, çok, çok çeşitli varyasyonlarla aksi takdirde oldukça yararlı bir yöntem olan özel - ve sadece zaman zaman yararlı - bir durum olduğunu düşünmek faydalı olacaktır.

  2. nk

nknkn


13
Beklemenin 2 kat doğrulama ile aynı olduğunu sanmıyorum, çünkü 2 katlı doğrulamada iki modele uyacak ve ardından iki koparma setindeki hataları ortalayacaksınız.
Alex,

8

Model seçimi ve yerleştirme prosedürünüz kodlanamıyorsa, öznel veya kısmen öyle olduğundan kodlanamazsa, grafiklere ve benzerlerine bakmaya devam etmeden önce tutma onaylaması yapabileceğiniz en iyi şey olabilir. (Sanırım, her CV özetinde Mechanical Turk gibi bir şey kullanabilirsiniz, ancak bunun yapıldığını hiç duymamıştım.)


6

Sadece Andrew’un Stanford’daki CS 229 sınıfında çapraz onaylama konusunda bahsettiği bazı basit yönergeler eklemek istedim. Bunlar kendi çalışmalarında izlediği uygulamalardır.

mm20

20<m100km

100<m1,000,000(k=5)m>10,000

m1,000,000(k=5)


5

Kısa cevap:

k=5

  • karmaşık modeller
  • geçerlilik kısıtlarına uyması gereken kesin sonuçlar

Bunun için rahatlayabilirsiniz:

  • gerçekten büyük veri setleri eğitimi
  • basit modellerin eğitimi
  • prototip yapmak zaman meselesi olduğunda

Bazılarınız, bunu R'de programlamanın bir sorun olabileceğinden bahsetti. "Mlr" paketine bir göz atmanı tavsiye ederim . Farklı paketleri birleştirilmiş bir arayüzde sarar, aynı zamanda gerçekten gelişmiş yeniden örnekleme ve performans değerlendirme yöntemleri sunar.

Bir göz atın: http://mlr-org.github.io/mlr-tutorial/release/html/resample/ ve: http://mlr-org.github.io/mlr-tutorial/release/html/performance/ index.htm

Bazı daha fazla açıklama - CV'nin gerçekten yaptığı, önyargı sapma değişiminin kırılmasıdır:

Şimdi, her iki yaklaşımın da çözmeye çalıştığı sorun, bir modeli eğitmek için kullanılan verilere bağlı olan genelleme hatasını tahmin etmektir.

Holdout'ta önyargı ve sapma ile ilgili bir sorun var

Test ettiğimiz veri miktarını küçülterek, tahmin edilen genelleme hatamızda varyansı ortaya koyuyoruz, çünkü test verileri altta yatan dağılımı artık çok iyi göstermeyebilir. Beklenen tahmin edilen performansın doğru olacağı gibi, bunun kendisi de bir önyargı yaratmıyor.

Eğitim setini küçültmek, ancak kötümser bir önyargıya yol açıyor, çünkü yine de temel dağılım verilerde iyi temsil edilmiyor ve model de verilere uymuyor. Eğitim setinin çok küçük yapılması, varyansı da beraberinde getiriyor.

Eğitim ve test setinin büyüklüğü birbirini belirlediğinde, bu bizi bir sersemletmeyle bırakıyor: karamsar önyargıya karşı yüksek değişkenlik.

kk1k

Çapraz doğrulama, daha karmaşık (yüksek varyanslı) öğrenciler için özellikle önemlidir. Bunlar genellikle hesaplama açısından da daha pahalıdır, bu da tüm süreci oldukça zaman alıcı hale getirebilir.


3

Bütün bunlar faydalı yorumlar. Sadece bir tane daha dikkate al. Yeterli veriye sahipseniz, Bekletme modunu kullanmak belirli bir modeli (belirli bir SVM modeli, belirli bir CART modeli, vb.) Değerlendirmenin bir yoludur; oysa diğer çapraz doğrulama prosedürlerini kullanıyorsanız, metodolojileri değerlendiriyorsunuz (sorunlarınız altında ) modelden ziyade (SVM metodolojisi, CART metodolojisi, vb.)

Umarım bu yardımcı olur!


3

Zamanın ciddi verilerle modellenmesi benim için bir istisnadır. K katlama, bazı durumlarda önceki verilere dayanarak geleceği tahmin etmeniz gerektiğinde çalışamaz. Test setleri gelecekteki veriler olmak zorundadır ve eğitim aşamasında onlara asla dokunamazsınız. örneğin tahmini satış veya borsa. Uzaklaştırma, bu gibi durumlarda yararlıdır.


Zaman ciddi veri?
nbro

3

Basit ifadeyle; saati. Çapraz doğrulama, eğitim rutinini k kez yürütürsünüz (örneğin, her bir tutma için bir kez). Büyük verileriniz varsa, modeli yalnızca bir veri kümesi için eğitmek birkaç saat veya birkaç gün sürebilir, bu nedenle çapraz doğrulama kullanırken bunu k ile çarpın.

Bu nedenle, çapraz doğrulama en iyi yöntem olsa da, bazı durumlarda uygun değildir ve daha iyi bir model elde etmek için verileri farklı şekillerde modellemek veya farklı kayıp işlevlerini denemek için harcanan zaman daha iyi olabilirdi.

Kişisel tercihim, veri kümesinden doğrulama verileri almak, veri başından veya kuyruğundan tek bir% 10'luk bir parça almak yerine, veri kümesindeki 5 noktadan% 2 alırım. Bu doğrulama verilerini bir bütün olarak verileri biraz daha temsili kılar.


Her ne kadar eski bir soru ve yeni bir cevap olsa da, bunu oylamaya başladım, çünkü diğer cevapların çok çabuk görmezden gelip aldıkları "K-katlamanın daha kesin, ancak YÜKSEK hesaplamanın pahalı olduğu" yönündeki temelsiz iddiasına meydan okuyor.
Laconic

0

Çapraz doğrulama uygulamasının her zaman mümkün olmadığı unutulmamalıdır. Geleceğe yönelik davranış için yordayıcı bir model geliştirmek için geçmiş verileri kullanmak istediğiniz zamana bağlı veri kümelerini düşünün. Bu durumda, tutma doğrulaması uygulamanız gerekir.


2
Bu durumda, ileri doğrulamayı yapmanız gerekir.
Neil G
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.