Neden tabakalı çapraz doğrulama kullanılır? Bu neden varyansa bağlı faydaya zarar vermez?


28

Bana, özellikle cevap sınıfları dengesiz olduğunda, tabakalı çapraz doğrulama kullanmanın faydalı olduğu söylendi. Çapraz onaylamanın bir amacı, orijinal eğitim verisi örneğimizin rastgelelik durumunun hesaba katılmasına yardımcı olmaksa, her bir katlamanın kesinlikle aynı sınıf dağılımına sahip olmasını sağlamak, orijinal eğitim setinizin temsili bir sınıf dağılımına sahip olduğundan emin olmadığınız sürece, buna karşı çalışacaktır.

Mantığım hatalı mı?

EDIT Bu yöntemin CV'nin yararına zarar verip vermediğiyle ilgileniyorum. Minör sınıfın tek bir temsilcisinin bir katlamada bulunmamasını önlemek için küçük bir örneklemeniz / dengesiz sınıflarınız / her ikiniz için neden gerekli olduğunu anlayabiliyorum.

Kağıt Elmalar-to-Apples Çapraz Doğrulama Çalışmaları: Tuzaklar Sınıflandırıcı performans ölçümünde her koyar iyi tabakalaşma için durum iletecek, ancak tüm argümanlar 'tabakalaşma bir teminat ve daha tutarlılığı sağlar' olarak miktarı gibi görünüyor ama hiçbir koruma verilen yeterince gerekecektir veri.

Cevap basitçe "Nadiren yeterli veriye sahip olduğumuz için gerekliliği kullanıyoruz." ?

Yanıtlar:


18

Önyükleme, popülasyondan yeni bir örnek çizmenin etkisini taklit etmeyi amaçlar ve farklı test kümeleri (N ile N örneklemeyle değiştirmeden sonra kalan artıklar) sağlamaya çalışmaz.

RxK-fold Cross-validation, K'nın farklı test kıvrımlarını sağlar, ancak daha sonra bağımsız rastgele varsayımların K-CV için geçerli olmasına izin vermek için farklı rasgele bölümlemeler için R kez tekrarlanır, ancak bu tekrarlama ile kaybolur.

Tabakalı Çapraz Doğrulama, test etiketlerinin istatistiklerin hesaplanmasından önce hiç görülmemesi gerektiği ilkesini ihlal ediyor, ancak tek etkisi katlamaları dengelemek olduğu için bu genellikle zararsız olduğu düşünülüyor, ancak çeşitlilik kaybına neden oluyor ( istenmeyen bir varyans kaybı). Boostrap, tüm nüfustan doğal olarak çizdiğinize benzer bir örnek oluşturma fikrinden daha da ileriye doğru hareket eder. Tartışmalı olarak, sınıflandırma algoritmasındaki kusurların ele alınması, sınıfların fazla veya az temsil edilmesiyle çok kolay önyargılı olduklarından tartışmasızdır. Dengeleme teknikleri kullanan (ya seçim ya da ağırlıklandırma yoluyla) ya da bir şans-doğru ölçüyü optimize eden bir algoritma (Kappa ya da tercihen Bilgilendirme), bundan daha az etkilenir, ancak bu tür algoritmalar bile

Her katlamanın her sınıfın en az m örneğine sahip olması, bazı küçük m'ler için zorlanması, hem Bootstrapping hem de CV için çalışan tabakalaşmaya bir alternatiftir. Yumuşatıcı bir önyargıya sahiptir, kıvrımların olması beklenenden daha dengeli olma eğilimindedir.

Montajlar ve çeşitlilik: Eğitim katlarında öğrenilen sınıflandırıcılar sadece genelleme hatasının tahmininde değil füzyon için kullanılırsa, CV'nin, sertleştirilmiş Bootstrap'in ve tabakalı CV'nin sertliği artan çeşitlilik kaybına ve Bootstrap'a göre zorlanmalara neden olabilir ve zorla CV.


Tabakalı önyükleme bandının "önyükleme kuvvetinin" daha iyi olduğu durumlarda "nasıl başarısız olduğu" hakkında bazı referans kağıtları sunmak mümkün olur mu?
usεr11852, Reinstate Monic’in

16

Belki bu şekilde düşünebilirsiniz. Diyelim ki 'A' sınıfında 90 ve 'B' sınıfında 100 olan 100 örnek içeren bir veri kümeniz var. Bu çok dengesiz tasarımda normal randomize gruplar yaparsanız, 'B' sınıfından az sayıda (veya EVEN NONE!) Model oluşturmaya başlayabilirsiniz. Diğer sınıfın çok az veya hatta hiç olmadığı yerlerde veri konusunda eğitilmiş bir model oluşturuyorsanız, daha nadir olan grubu etkili bir şekilde tahmin etmesini nasıl beklersiniz? Tabakalı çapraz doğrulama, randomizasyona izin verir, ancak aynı zamanda bu dengesiz veri setlerinin her iki sınıfın da birinden oluşmasını sağlar.

Tabakalı CV'yi daha 'dengeli' veri kümeleriyle kullanma hakkındaki endişelerinizi azaltmak için, R kodunu kullanan bir örneğe bakalım.

require(mlbench)
require(caret)
require(cvTools)

# using the Sonar dataset (208 samples)
data(Sonar)

# see the distribution of classes are very well balanced
prop.table(table(Sonar$Class))

> prop.table(table(Sonar$Class))

M         R 
0.5336538 0.4663462 

# stratified
# set seed for consistency
# caret::createFolds does stratified folds by default
set.seed(123)
strat <- createFolds(Sonar$Class, k=10)

# non-stratified using cvTools
set.seed(123)
folds <- cvFolds(nrow(Sonar), K=10, type="random")
df <- data.frame(fold = folds$which, index = folds$subsets)
non_strat <- lapply(split(df, df$fold), FUN=function(x) x$index)

# calculate the average class distribution of the folds
strat_dist <- colMeans(do.call("rbind", lapply(strat, FUN = function(x) prop.table(table(Sonar$Class[x])))))
    non_strat_dist <- colMeans(do.call("rbind", lapply(non_strat, FUN = function(x) prop.table(table(Sonar$Class[x])))))
strat_dist
> strat_dist
M         R 
0.5338312 0.4661688 
non_strat_dist
> non_strat_dist
M         R 
0.5328571 0.4671429 

Gördüğünüz gibi, dengeli bir veri setinde katlar rastgele tesadüflerle benzer bir dağılıma sahip olacaktır. Bu nedenle tabakalı CV bu koşullarda basit bir güvence önlemidir. Bununla birlikte, varyansı ele almak için her katlamanın dağılımlarına bakmanız gerekir. Bazı durumlarda (50-50'den başlayarak bile) 30-70'lik bölünmüş rastgele şanslara sahip olabilirsiniz (yukarıdaki kodu çalıştırabilir ve bunun gerçekten olduğunu görebilirsiniz!). Bu, daha kötü performans gösteren bir modele yol açabilir, çünkü onu doğru şekilde tahmin etmek için yeterli bir sınıfa sahip olmadığından, genel CV değişkenliğini arttırır. Bu, dağıtımda çok aşırı farklılıklara sahip olma ihtimalinizin yüksek olduğu 'sınırlı' örneklere sahip olduğunuzda açıkça daha önemlidir.

Şimdi çok büyük veri kümelerinde tabakalaşma gerekli olmayabilir, çünkü katlamalar hala en azından 'nadir' sınıfının iyi bir oranını içerecek kadar büyük olacaktır. Ancak, benim kişisel verilerim ne olursa olsun verileriniz ne olursa olsun , numuneleriniz dengesizse , gerçekten hiçbir hesaplama kaybı ve katmanlaşmadan çekilmek için gerçek bir sebep yoktur.


Evet, bu tamamen mantıklı. Ancak, bu çok özel bir durum ve veri eksikliğini hesaba katmak için yapıyorsunuz. 10.000 numunen olsaydı, yapar mıydın? Sorum şu: İdeal olarak ve yeterli veri verildiğinde, iyi bir fikir mi?
James Owers

1
@kungfujam, verilerinizin ne dengesiz olduğuna bağlıdır. Muazzam miktarda veriyle bile, diğer sınıfın çok azı ile (rastgele) bitebilirsiniz. Bununla ilgili bazı araştırmalar var. Biraz tarihli olmasına rağmen, Kohavi bunu bildirdi stratifcation is generally a better scheme, both in terms of bias and variance, when compared to regular cross-validation. Mükemmel örnekleme şeması yoktur, ancak dengesiz tasarımlarda tabakalaşma iyi bir yaklaşımdır.
cdeterman

Bunun için teşekkür ederim. Kohavi gazetesini yeni buldum. Eski ama altın. Genel olarak, sınıfların tamamen dengeli olmadığını ve verilerin sınırlı olduğunu görebiliyorum => sınıflandırma genel olarak daha iyidir ... ancak makul bir denge verildiğinde, bir ihlalmiş gibi hissediyorum!
James Owers

@kungfujam, bir ihlali ne düşünüyorsunuz? K-kıvrımları, özellikle farklı grupların belirli bir oranını gerektirmeleri dışında randomize edilir. Bunu, her bir gruptan katlarınızı rasgele oluşturmak ve bunları bir toplu kat için bir araya getirmek, böylece endişelendiğiniz randomizasyonu korumak olarak düşünebilirsiniz. Makul bir denge göz önüne alındığında (örn.% 60 -% 40), katlarınızın yine de tabakalaşma ile birlikte veya tabakalaşma olmadan (elbette bazı değişiklikler) benzer oranlara sahip olması muhtemeldir.
cdeterman

1
Anlaşmayı bozmuş gibi hissediyorum. Orijinal örneğiniz 'rastgele'. Bu nedenle, CV'nin bunu denemesi ve hesaba katması gerektiğini, farklı örnekler ürettiğini ve girdi verileri değiştikçe değişen modelleri cezalandırmak suretiyle sizi farklılaştırmak için daha sağlam bir model ürettiğini düşünmüştüm. Kıvrımlarınızı orijinal numunenin oranlarına uyacak şekilde kısıtlarsanız, bir anlamda bunu yapmayı durdurduğunuzu hissettim. Daha az önyargılı bir model üretebilirsiniz, ancak bunun daha yüksek bir varyansa sahip olacağını düşünüyorum.
James Owers
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.