Tahmin hatasını tahmin etmek için çapraz doğrulama ve önyükleme arasındaki farklar


102

Tahmini hatayı tahmin etmek için çapraz doğrulama ve bootstrapping arasındaki farklar hakkındaki düşüncelerinizi istiyorum.

Biri küçük veri kümesi boyutları veya büyük veri setleri için daha iyi çalışıyor mu?

Yanıtlar:


88

Sapma ve yanlılığa (her zamanki gibi) gelir. CV daha az önyargılı olma eğilimindedir, ancak K-katlı CV'nin oldukça büyük farklılıkları vardır. Öte yandan, ön yükleme, varyansı büyük ölçüde azaltma eğilimindedir, ancak daha fazla taraflı sonuçlar verir (karamsar olma eğilimindedirler). Diğer önyükleme yöntemleri, önyükleme önyargısı (632 ve 632+ kuralları gibi) ile başa çıkmak için uyarlanmıştır.

Diğer iki yaklaşım, verinin pek çok rasgele bölünmesini ("mini eğitim ve test benzerleri gibi") yapan "Monte Carlo CV" aka "grup dışı bırakma CV" olacaktır. Varyans bu yöntem için çok düşüktür ve tutma alanındaki veri yüzdesi düşükse önyargı çok kötü değildir. Ayrıca, tekrarlanan CV birkaç kez K-kat yapar ve sonuçları normal K-katla benzer şekilde ortalaması alır. Ben buna kısmi olarak katlanıyorum çünkü düşük önyargıyı koruyor ve varyansı azaltıyor.

Düzenle

Büyük örneklem büyüklükleri için, varyans sorunları daha az önemli hale gelir ve hesaplama kısmı bir sorun daha fazladır. Hala küçük ve büyük örneklem büyüklükleri için tekrarlanan CV'ye bağlı kaldım.

Bazı ilgili araştırmalar aşağıdadır (esp Kim ve Molinaro).

Referanslar

Bengio, Y., ve Grandvalet, Y. (2005). K-kat çapraz-doğrulamanın varyansını tahmin etmede önyargı. Karmaşık veri problemleri için istatistiksel modelleme ve analiz, 75–95.

Braga-Neto, UM (2004). Küçük örneklemli mikroarray sınıflandırması için çapraz doğrulama geçerli midir Bioinformatics, 20 (3), 374-380. doi: 10,1093 / biyoinformatik / btg419

Efron, B. (1983). Bir tahmin kuralının hata oranını tahmin etme: Çapraz doğrulamadaki gelişme. Amerikan İstatistik Kurumu Dergisi, 316–331.

Efron, B. ve Tibshirani, R. (1997). Çapraz doğrulama konusunda iyileştirmeler:. 632+ önyükleme yöntemi. Amerikan İstatistik Kurumu Dergisi, 548-560.

Furlanello, C., Merler, S., Chemini, C. ve Rizzoli, A. (1997). Bootstrap 632+ kuralının ekolojik verilere uygulanması. WIRN 97.

Jiang, W. ve Simon, R. (2007). Mikrodizi sınıflandırmada öngörü hatasını tahmin etmek için önyükleme yöntemlerinin ve düzeltilmiş önyükleme yaklaşımının karşılaştırılması. Tıpta İstatistik, 26 (29), 5320–5334.

Jonathan, P., Krzanowski, W. ve McCarthy, W. (2000). Çok değişkenli tahminlerde performansı değerlendirmek için çapraz doğrulama kullanımı. İstatistik ve Bilişim, 10 (3), 209–229.

Kim, J.-H. (2009). Sınıflandırma hata oranını tahmin etme: Tekrarlanan çapraz doğrulama, tekrarlanan tutma ve önyükleme. Hesaplamalı İstatistik ve Veri Analizi, 53 (11), 3735-3745. doi: 10.1016 / j.csda.2009.04.009

Kohavi, R. (1995). Doğruluk kestirimi ve model seçimi için çapraz doğrulama ve önyükleme çalışması. Uluslararası Yapay Zeka Konferansı, 14, 1137-1145.

Martin, J. ve Hirschberg, D. (1996). Sınıflandırma hata oranları için küçük örnek istatistikler I: Hata oranı ölçümleri.

Molinaro, AM (2005). Tahmin hatası tahmini: yeniden örnekleme yöntemlerinin karşılaştırılması. Biyoinformatik, 21 (15), 3301-3307. doi: 10,1093 / biyoinformatik / bti499

Sauerbrei, W. ve Schumacher 1, M. (2000). Veriye Dayalı Regresyon Modellerinin Karmaşıklığını Değerlendirmek için Önyükleme ve Çapraz Doğrulama. Tıbbi Veri Analizi, 26-28.

Tibshirani, RJ ve Tibshirani, R. (2009). Çapraz doğrulama işleminde minimum hata oranı için önyargı düzeltmesi. Arxiv ön baskı arXiv: 0908.2904.


2
Önyükleme önyargısı kötümser değildir, iyimserdir (Basit Önyükleme değil .0632). Bunun nedeni, Bootstrap'ın örnek hatada çok ağırlığa yol açan modeli test etmek için çok sayıda eğitim elemanı kullanmasıdır.
D1X

33

@ Frank Harrell bu soru üzerine çok çalışma yaptı. Belirli referansları bilmiyorum.

Ancak iki tekniği farklı amaçlar için görmeyi tercih ederim. Çapraz doğrulama, modele karar verirken iyi bir araçtır - gerçekte fazla uyurken iyi bir modeliniz olduğunu düşünmenize kendinizi kandırmamak için size yardımcı olur.

Modeliniz sabit olduğunda, bootstrap kullanmak daha mantıklıdır (en azından bana).

Http://www.burns-stat.com/pages/Tutor/bootstrap_resampling.html adresinde R kullanarak bu kavramlara giriş (artı permütasyon testleri) vardır


2
Bir model seçmek için önce CV'yi kullanmak, sonra tahminlerinizin hatalarını değerlendirmek için aynı verileri önyükleme yapmak mantıklı mı? Özellikle, bilinmeyen Gauss gürültüsü olmayan verilerde ML kullanarak doğrusal regresyon yapmak istiyorum.
sebhofer 10:16

9

Anladığım kadarıyla önyükleme işleminin modelinizdeki belirsizliği ölçmek için bir yöntem olduğu, model seçimi ve tahmin doğruluğunu ölçmek için çapraz onaylama kullanıldığı yönünde.


cevaplar için teşekkürler. Küçük veri kümeniz olduğunda önyüklemenin daha iyi olacağını düşündüm (<30 obs). Hayır?
hibe

Ben öyle düşünürdüm. Küçük bir örneklem büyüklüğünüz olduğunda çapraz onaylama uygun olmayabilir. Birini çapraz onaylama dışında bırakabilirsin, ancak bu aşırı zaman aşımına uğramak eğilimindedir.
Glen

Ayrıca, küçük bir örnekle önyükleme yapmanın Efron'un orijinal makalesinde belirtildiği gibi bazı taraflı tahminlere yol açacağını unutmayın.
Glen

Tahmini doğruluğu ölçmek belirsizliği ölçmenin bir yolu değil mi? CV'nin model seçimi için daha yaygın olduğunu biliyorum, ancak diyelim ki bir LASSO için AUC'yi tahmin etmek istiyorum, CV veya önyükleme daha mı iyi?
Max Ghenis

9

Aradaki fark, jackknife gibi çapraz doğrulama işleminin tüm veri noktalarınızı kullanmasıdır; oysa verilerinizi rastgele yeniden örnekleyen ön yükleme işleminin tüm noktalara ulaşamayacağına dikkat edin.

İstediğiniz kadar önyükleme yapabilirsiniz, bu daha küçük örneklerde yardımcı olması gereken daha büyük bir örnek anlamına gelir.

Çapraz doğrulama veya jackknife ortalaması, örnek ortala aynı olacaktır, oysa önyükleme ortağı, örnek ortalamanın aynı olması muhtemel değildir.

Çapraz doğrulama ve jackknife ağırlığı tüm örneklerin aynı olduğunu gösterdiğinden, önyüklemeden daha küçük (muhtemelen yanlış olsa da) bir güven aralığı olmalıdır.


2
Neil, ifadelerin yanlış 4’ten en az 2 tanesi görünüyor. 1. Her bir özel boostrap numunesi orijinal veri noktalarının ~% 63'ünü kaplasa da, genellikle yaptığımız gibi birçok (örneğin 10k) önyükleme örneğini örneklesek, her bir noktanın bunlardan en az birinde kapsanması olasılığı esasen% 100'dür. 2. Sadece hızlı bir sayısal kontrol yaptım - bootstrap ve bootstrap dışı örneklerin ortalaması tüm veri ortalamasına çok yakın. Kendinizi kontrol edebilirsiniz
Kochede

İşte bir kod (biçimlendirilmiş görmek için "Düzenle" ye tıklayın): np olarak numpy, pd olarak pandalar içe aktar n = 1000 B = 1000 y = np.random.randn (n) araçlar için b, meansoob = [], [] aralık (B): ib = np.random.choice (n, n, yerine = Gerçek) meanb = y [ib] .mean () meanb.append (meanb) indoob = np.ones (n, dtype = bool) indoob [ib] = Yanlış meanoob = y [indoob] .mean () meanoob.append (meanoob) pd.Series (meansb) .hist (histtype = 'adım') pd.Series (meansoob) .hist (histtype = 'step' ) yazdır np.mean (meansb), np.mean (meansoob), pd.Series (y) .mean ()
Kochede

@Kochede "esasen% 100"% 100 değildir. "Ortalamaya çok yakın", aynı olan ortalama ile aynı değildir. Gelincik kelimeleri kullanıyorsun. Yanlış değilim
Neil McGuigan

Yani sadece yanlış cevaplar vermekle kalmıyor, aynı zamanda demagojiyle ısrar ediyorsunuz, tamam. Önyükleme örnekleri tarafından beklenen veri kapsamı, artan örnek sayısıyla birlikte% 100'e hızlı bir şekilde yaklaşır. Yukarıdaki deneyde 10'dan az önyükleme örneğinden sonra tüm veri noktaları önyükleme çizgisine çarptı. Benzer şekilde, önyükleme örneklerinin ortalama beklentisi, örnek ortalamasına eşittir . Ve yukarıdaki önyükleme deneyinden sonra yukarıdaki deneyde fark% 0.1'den azdır (randn yerine np.random.rand kullanın, çünkü randn ortalaması 0'dır)
Kochede

İşte referansınız için güncellenmiş kod: ithalat numpy np, pandalar pd; Mn = 1000; B = 1000; y = np.random.rand (n); meansb = []; kapalı = np.zeros (n, dtype = bool); kapsama = []; (b) aralığında b için #begin döngüsü: ib = np.random.choice (n, n, replace = True); kaplı [ib] = Doğru; kapsama.append (örtülü.sum () * 1,0 / n); meanb = y [ib] .mean (); anlamına gelir, apend (meanb); #end döngü baskı kapsamı [: 10]; yazdır np.mean (meansb), pd.Series (y) .mean (); print (np.mean (meansb) - pd.Series (y) .mean ()) / pd.Series (y) .mean ();
Kochede

2

Bunlar iki örnekleme tekniğidir:

Çapraz doğrulamada, verileri rastgele bir şekilde kfold'a bölüyoruz ve fazla uydurma konusunda yardımcı oluyoruz, ancak bu yaklaşımın dezavantajı var. Rastgele örnekler kullandığından bazı örnekler büyük hatalar üretir. CV'yi en aza indirmek için teknikleri vardır ancak sınıflandırma problemlerinde çok güçlü değildir. Bootstrap bu konuda yardımcı olur, kendi örnek kontrolünden hatayı düzeltir.

https://lagunita.stanford.edu/c4x/HumanitiesScience/StatLearning/asset/cv_boot.pdf

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.