Test verilerinin eğitim verisine sızmadığından nasıl emin olabilirim?


60

Tahmin edici bir model inşa eden birisine sahip olduğumuzu varsayalım, ancak birinin uygun istatistiksel ya da makine öğrenmesi ilkeleri konusunda tam olarak bilgili olmadığını varsayalım. Belki o kişiye öğrenirken yardımcı oluyoruz veya belki de bu kişi kullanımı en az bilgiyi gerektiren bir çeşit yazılım paketi kullanıyor.

Şimdi bu kişi, gerçek testin, örneklem dışı verilerdeki doğruluktan (veya başka bir ölçümden) geldiğini çok iyi anlayabilir . Ancak benim endişem, endişelenecek çok fazla incelik var. Basit durumda, modellerini oluşturuyorlar ve eğitim verileri üzerinde değerlendiriyorlar ve kalıcı test verileri üzerinde değerlendiriyorlar. Ne yazık ki, bazen geri dönmek ve bazı modelleme parametrelerini ince ayar yapmak ve aynı "test" verilerindeki sonuçları kontrol etmek bu kadar kolay olabilir. Bu noktada, veriler artık örneklem dışı veriler olmaktan çıkmış durumdadır ve fazla takma bir sorun olabilir.

Bu sorunu çözmenin olası bir yolu, her test veri setinin kullanımdan sonra atılıp tekrar kullanılmayacağı şekilde pek çok örneklem dışı veri kümesi oluşturmayı önermek olacaktır. Bu, çok fazla veri yönetimi gerektirir, özellikle de bölmenin analizden önce yapılması gerekir (bu nedenle önceden kaç tane bölmeyi bilmeniz gerekir).

Belki de daha geleneksel bir yaklaşım, k kat çapraz doğrulamadır. Ancak, bir anlamda, özellikle hala öğrenenlere faydalı olabileceğini düşündüğüm bir "eğitim" ile "test" veri seti arasındaki farkı kaybeder. Ayrıca bunun tüm tahmin modellerine uygun olduğuna ikna olmadım.

Deneyimsiz bir kullanıcı için bir miktar net kalmaya devam ederken sızıntıyı fazlaarlama ve test etme sorununun üstesinden gelmek için göz ardı ettiğim bir yol var mı?


Michael, ML sitesinden kopyalanan bir konu açtım ve cevapları burada birleştirdim. Lütfen yapmak istediğiniz değişiklikleri yansıtmak için bu soruyu düzenlemek için çekinmeyin - anlamınızı değiştirmeden değiştirme korkusu yüzünden bunu yapmak istemiyorum.
whuber

Bu soru eski ve kabul edilmiş bir cevabı var, ancak ilk öncülün çelişkili göründüğünü kafamdan çıkaramıyorum. Bu, öğrenme alıştırmaları ile ilgiliyse, yaklaşmanın en iyi yolu, başarısız olmalarını sağlamak ve daha sonra iyi tahmin etmeyen bir kıyafet modeli yapmaktır. (Belki de onlara yollarının hatalarını göstereceğiniz gizli bir bilgi tutma veri seti saklayın.) Ama aynı zamanda, birisinin ciddiye alacağı ve harekete geçeceği modeller yapan ve zararı en aza indirmeye çalıştığınız modeller yapan niteliksiz insanlara sahip olduğunuz gibi görünüyor. kolların uzunluğunda. Dediğiniz gibi bir sürü incelik var.
Wayne,

Yanıtlar:


50

Haklısın, bu makine öğrenmesinde / istatistiksel modellemede önemli bir sorundur. Temel olarak, bu sorunu gerçekten çözmenin tek yolu bağımsız bir test setini korumak ve çalışma tamamlanıncaya kadar devam ettirmek ve son doğrulama için kullanmaktır.

Bununla birlikte, kaçınılmaz olarak insanlar test setindeki sonuçlara bakacak ve ardından modellerini buna göre değiştirecektir; bununla birlikte, genelleme performansında bir gelişme ile sonuçlanmayacaktır, çünkü farklı modellerin performansındaki fark büyük ölçüde sahip olduğumuz test verilerinin örnekleminden kaynaklanıyor olabilir. Bu durumda, bir seçim yaparken test hatasını etkili bir şekilde yerine getiriyoruz.

Bunu sınırlamanın yolu, test hatasının varyansını olabildiğince küçük kılmaktır (yani, test hatalarındaki değişkenlik, aynı temel dağılımdan alınan test seti olarak farklı veri örnekleri kullanıp kullanmadığımızı göreceğiz). Bu, eğer mümkünse büyük bir test seti veya örneğin, fazla veri yoksa önyükleme veya çapraz doğrulama kullanılarak kolayca elde edilebilir.

Model seçiminde bu tür bir aşırı uyuşmanın, genellikle performans tahminine gelince, genel olarak takdir edilenden çok daha sıkıntılı olduğunu buldum.

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)

Bu tür bir sorun, özellikle birçok çalışmada kullanılmış olan kıyaslama veri setlerinin kullanımını etkiler ve her yeni çalışma önceki çalışmaların sonuçlarından dolaylı olarak etkilenir; bu nedenle, gözlenen performansın gerçek durumun aşırı iyimser bir tahmini olması muhtemeldir. yöntemin performansı. Bunun üstesinden gelmeye çalıştığım yöntem, birçok veri kümesine bakmaktır (bu nedenle yöntem belirli bir veri kümesine ayarlanmamış) ve ayrıca performans tahmini için (tahminin varyansını azaltmak için) birden çok rastgele test / eğitim bölmesi kullanmaktır. Bununla birlikte, sonuçların hala bu kriterlerin fazlaca uyduğunu belirtmesi gerekiyor.

Bunun gerçekleştiği bir başka örnek, bir doğrulama setine dayanan bir lider kurulu ile yapılan makine öğrenme yarışmalarındadır. Kaçınılmaz olarak, bazı yarışmacılar lider yönetim kurulunu daha da geliştirmek için modelleriyle uğraşmaya devam ediyor, ancak daha sonra final sıralamasının sonuna doğru çıkıyor. Bunun nedeni, çoklu seçimlerinin validasyon setine fazlaca uyum sağlamasıdır (küçük validasyon setindeki rastgele varyasyonları etkili bir şekilde öğrenme).

İstatistiksel olarak saf bir test setini tutamazsanız, korkarım ki en iyi iki seçenek (i) yeni bir istatistiksel olarak saf test seti yapmak için bazı yeni veriler toplamak ya da (ii) yeni modelin temel aldığı uyarıyı yapmaktır. Test seti hatasını gözlemledikten sonra yapılan bir seçimde, performans tahmininin iyimser bir önyargıya sahip olması muhtemeldir.


1
+1 Bu cevabın tecrübe ile ne kadar iyi bilgilendirildiği ve soruyu ne kadar etkili bir şekilde ele aldığından etkilendim.
whuber

3
şerefe tezahürat, bu birkaç yıldır benim ana araştırma konumdu ve makine öğreniminde yaygın olarak kullanılan birçok model seçim prosedürünün çok kırılgan olduğunu ve ne kadar iyice değerlendirildiklerinde, o kadar iyi çalıştıklarını gördüklerini gördüm. Makine öğreniminde kullanılan pek çok yöntemin, performans değerlendirmesi sırasında kullanılan önyargılı model seçim prosedürleri nedeniyle, eski basit yöntemlerden daha iyi çalışmadığı beni şaşırtmaz. Soru gerçekten iyi bir soru, model seçim prosedürünün bir parçası olmamak için kendinize bir göz atmamak önemlidir!
Dikran Marsupial

Çok ilginç. (Ayrıca sorunun cevabını aştım, çünkü cevabınız daha iyi değerlendirmemi sağladı.)
whuber

2
(+1) Güzel tepki. Optimal sınıflandırıcı seçiminde ve hata oranı tahmininde olumsuz önyargıya sahip olan, aynı veri setinde, aşırı iyimser test doğruluğu ölçümü yapan birkaç sınıflandırıcı kullanımı tartışılmıştır : BMC MRM 2009, 9:85 ( burada bazı PDF slaytlarda ), Sınıflandırma kurallarının karşılaştırılmasında Çoklu kural önyargılı diğer tartışmada (Yousefi ve diğerleri, Bioinformatics 2011, 27 (12): 1675).
chl

Makalelere bağlantı için teşekkürler, ilginç görünüyorlar.
Dikran Marsupial

15

Bunu sağlamak için bir yolu, yukarı kodlu var emin olmaktır hepsi hatta "müdahalesi", modeli sığacak şekilde yapmak şeylerden. Bu şekilde, işlemi tekrar tekrar çalıştırdığınızda, çapraz doğrulama yoluyla, işleri koşular arasında tutarlı tuttuğunuzu söyleyin. Bu, tüm potansiyel varyasyon kaynaklarının çapraz doğrulama işlemi tarafından yakalanmasını sağlar.

Hayati açıdan önemli olan bir diğer şey, her iki veri setinde de temsili bir örneğinizin olmasını sağlamaktır. Veri kümeniz, tahmin etmek için kullanmayı umduğunuz veri türünü temsil etmiyorsa, yapabileceğiniz pek bir şey yoktur. Tüm modelleme, "indüksiyon" un işe yaradığı varsayımına dayanır - gözlemlememiş olduğumuz şeyler gözlemlediklerimiz gibi davranır.

Genel bir kural olarak, (i) ne yaptığınızı bilmiyorsanız ve (ii) daha basit yöntemleri denemeden ve çalışmadıklarını ve karmaşık yöntemin nasıl düzelttiklerini tespit etmeden karmaşık model uygulama prosedürlerinden uzak durun. basit yöntemle problemler. "Basit" ve "karmaşık", fitting yapan kişiye "basit" veya "karmaşık" anlamına gelir. Bunun bu kadar önemli olmasının nedeni, sonuçlara "koklama testi" olarak adlandırdığım şeyi uygulamanıza izin vermesidir. Sonuç doğru görünüyor mu? Anlamadığınız bir prosedürden elde edilen sonuçları "koklayamazsınız".

NOT: Benim cevabın yanında oldukça uzun bir parçası olduğunu deneyimlerime dayanmaktadır ile, alana p olasılıkla büyük. Aşağıdakilerin N p veya N < p durumları için geçerli olmayacağından neredeyse eminimN->>p p N-p N-<p

Büyük bir örneğiniz varsa, belirli bir gözlemi kullanıp kullanmama arasındaki fark, modellemenizin "yerel" olmaması koşuluyla çok küçüktür. Bunun nedeni, belirli bir veri noktasının etkisinin genellikle . Bu yüzden, büyük veri setlerinde, test veri setini "uzatma" işleminden elde ettiğiniz artıklar temel olarak eğitim veri setinde kullanmaktan kalanlar ile aynıdır. Bunu sıradan en küçük kareleri kullanarak gösterebilirsiniz. Kalıntı Eğer hariç eldeigözlem inci (yani ne deney kümesinde gözlem koymak test seti hata olacaktır) olan, e t e s t i =(1-hii)-1, e t r bir i n ı ,e t r bir i n i1N-benebentest=(1-hbenben)-1ebentrbirbennebentrbirbennEğitim kalıntı ve kaldıraç olan i veri noktası inci. Şimdi buna sahip Σ i h i i = p , p regresyon değişkenlerin sayısıdır. Şimdi eğer N > > p , o zaman herhangi açısından son derece zordur h i i testi kurmak ve eğitim seti hataları arasındaki kayda değer fark yaratmak için yeterince büyük olması. Basitleştirilmiş bir örnek alabiliriz, varsayalım ki p = 2 (kesişme ve 1 değişken), N × phbenbenbenΣbenhbenben=ppN->>phbenbenp=21N-xptasarım matrisi (hem eğitim hem de test setleri) ve kaldıraçX

hbenben=xbenT(XTX)-1xben=1N-sx2(1xben)(x2¯-x¯-x¯1)(1xben)=1+x~ben2N-

Burada , ¯ x 2 = N - 1 Σ i x 2 ı ve s 2 x = ¯ x 2 - ¯ x 2 . Son olarak, ˜ x i = x i - ¯ xx¯=N--1Σbenxbenx2¯=N--1Σbenxben2sx2=x2¯-x¯2 standartlaştırılmış yordayıcı değişkenidir vexiortalamadankaç standart sapma olduğunu ölçer. Bu nedenle, başlangıçtan itibaren test setinin "setin" yanında bulunan gözlemler için yapılan set setinden çok daha büyük olacağını biliyoruz. Ancak bu temelde yine temsili meseledir - “kenarda” gözlemler “ortada gözlemlerden daha az temsil edicidir”. Ayrıca, bu sipariş1x~ben=xben-x¯sxxben . Eğer var ise100gözlemler bile ~ x i=5(çoğu tanımlamalar tarafından x-uzayda bir aykırı değer), bunun anlamıhii=261N-100x~ben=5 , ve test hatası sadece1-26faktörü ilebelirsizhbenben=26100 . Büyük bir verikümeniz varsa,10000 deyince, daha küçüktür,1-261-26100=7410010000 az olan,1%. Aslında,10000gözlemiçin, eğitim seti hatasını kullanarak test seti hatasını%25eksik tahminetmek için ˜ x =50gözlemine ihtiyacınız olacaktır.1-26100001%10000x~=5025%

Büyük veri kümeleri için bir test seti kullanılarak sadece verimsizdir Yani, bu kadar uzun olarak da gereksizdir . Bu, OLS için geçerlidir ve ayrıca yaklaşık GLM'ler için de geçerlidir (detaylar GLM için farklıdır, ancak genel sonuç aynıdır). 2'den fazla boyutta "aykırı değerler", büyük "temel bileşen" puanlarına sahip gözlemlerle tanımlanır. Bu yazı ile gösterilebilir h i i = x T ı e E , T ( X , T x ) - 1 e D , T x i Burada EN->>p2hbenben=xbenTEET(XTX)-1EETxbenEiçin (dik) özvektörler matrisi olan özdeğer matris ile, X . Biz h i i = z T i Λ - 1 z i = p j = 1 z 2 j iXTXΛ zi=D, Txiiçin temel skorlar olanxi.hbenben=zbenTΛ-1zben=Σj=1pzjben2Λjjzben=ETxbenxben

Test setinizde gözlem varsa, bir matris sürümü alırsınız e t e s t { k } =k , H { k } = X { k } ( X , T x ) - 1 x T { k } ve X,e{k}test=(benk-'H{k})-1e{k}trbirbenn'H{k}=X{k}(XTX)-1X{k}T , test setindeki tasarım matrisinin satırlarıdır. Dolayısıyla, OLS regresyonu için, verilerin test ve eğitim setlerine girmesi için "test seti" hatalarının ne olacağını zaten biliyorsunuz. Bu durumda (N>>p), tüm veri bölme için bir ihtiyaç vardır. Verileri bölmek zorunda kalmadan hemen hemen her boyuttaki "en iyi durum" ve "en kötü durum" test seti hatalarını bildirebilirsiniz. Bu, çok fazla zaman ve kaynak tasarrufu sağlar.X{k}N->>p

Temel olarak, tüm bunlar BIC veya AIC gibi eğitim ve test hataları arasındaki farkı hesaba katmak için bir ceza terimi kullanımına indirgenmiştir. Bu, bir test setini kullanmakla aynı sonucu verir, ancak potansiyel olarak yararlı bilgileri atmak zorunda kalmazsınız. BIC ile, matematiksel olarak benzeyen modelin kanıtlarına yaklaşıyorsunuz:

p(D|Mbenben)=p(y1y2...yN-|Mbenben)

Her modeli - Bu prosedürde, biz herhangi bir iç parametrelerini tahmin unutmayın tamamen belirtilmelidir veya onun iç parametreler göz entegre var. Bununla birlikte, bunu ürün kuralını tekrar tekrar kullanarak ve ardından sonucun günlüğünü alarak çapraz doğrulama (belirli bir kayıp işlevini kullanarak) gibi gösterebiliriz:Mben

= p ( y 1 | M i I ) p ( y 2 | y 1 M I I ) p ( y 3 ... y K |

p(D|Mbenben)=p(y1|Mbenben)p(y2...yN-|y1Mbenben)
= = N i = 1 p ( y i | y 1y i - 1 M i I )
=p(y1|Mbenben)p(y2|y1Mbenben)p(y3...yN-|y1y2Mbenben)
==Πben=1N-p(yben|y1...yben-1Mbenben)
kütük[p(D|Mbenben)]=Σben=1N-kütük[p(yben|y1...yben-1Mbenben)]

Bu, bir çapraz onaylama biçimi önermektedir, ancak eğitim setinin sürekli güncellendiği yerlerde, test setinden bir seferde bir gözlem - Kalman Filtresi'ne benzer. Mevcut eğitim setini kullanarak test setinden bir sonraki gözlemi tahmin ediyoruz, koşullu log olasılığını kullanarak gözlemlenen değerden sapmayı ölçüyoruz ve ardından yeni gözlemi içerecek şekilde eğitim setini güncelliyoruz. Ancak, bu prosedürün mevcut tüm verileri tamamen sindirdiğini ve aynı zamanda her gözlemin "örnek dışı" bir durum olarak test edildiğinden emin olduğunu unutmayın. Aynı zamanda “gözlem 1” veya “gözlem 10” dediğiniz şeyin önemi yoktur; sonuç aynıdır (bazı permütasyonlar için hesaplamalar diğerlerinden daha kolay olabilir). Kayıp fonksiyonu ayrıca "uyarlanabilir" , daha sonra netlik L i bağlıdır i kayıp fonksiyonu sürekli yeni verilerle güncellenmekte olduğundan,.Lben=kütük[p(yben|y1...yben-1Mbenben)]Lbenben

Tahminli modellerin bu şekilde değerlendirilmesinin oldukça işe yarayacağını düşünüyorum.


4
+1 - iyi tavsiye ve kaldıraç konusunda ilginç tartışmalar (büyük veri setleri için). Küçük olan, aşırı uydurma ihtimalinin yüksek olduğu veri kümelerini kullanma eğilimindeyim ve bu gibi durumlarda, marjinal olasılığa ("kanıt") uymak genellikle çok kolaydır ve en baştan daha kötü bir modelle sonuçlanır. AIC ve BIC'nin de aynı şekilde "kırılgan" olduğundan şüpheleniyorum. Temel olarak optimizasyon, istatistiklerde tüm kötülüklerin köküdür, çünkü yaptığınız herhangi bir seçim veya sonlu bir örneğe göre ayarladığınız parametreler, aşırı uydurma olasılığını ortaya koymaktadır. Marjinalleştirme çok daha güvenlidir, ancak genellikle hesaplama açısından pahalıdır.
Dikran Marsupial

2
+1 - özellikle üçüncü paragrafta (önce basit yöntemleri kullanın). İyi ol 'Pareto-Kural'ı hatırlatıyor. Eğer makine öğrenenleri, yeni yetiştirilmiş algoritmalarının üstünlüğünü kanıtlamak için yetersiz girişimlerini yayınlamadan önce bunu aklında tutarlarsa ...
steffen

8

Sanırım bunu garanti etmenin tek yolu, başkasının test verisine sahip olmasıdır . Bir müşteri-danışman ilişkisinde bu oldukça kolay bir şekilde yönetilebilir: müşteri, danışmana, modelleri kurması için gerekli eğitim setini verir ve bu eğitim seti içinde danışman, fazladan takma işleminin yapılmamasını sağlamak için gerekli olan her şekilde verileri bölebilir meydana gelmek; daha sonra, modeller test verilerinde kullanmak için müşteriye geri verilir.

Bireysel bir araştırmacı için, bu nedenle en iyi uygulamanın bu düzeni taklit etmek olacağı aklına gelir. Bu, tüm model seçimi yapıldıktan sonra test edilecek verilerin bir kısmından kurtulmak anlamına gelir. Maalesef dediğiniz gibi, bu pek çok kişi tarafından uygulanmıyor ve daha iyisini bilmesi gereken insanlara bile oluyor !

Ancak nihayetinde modelin ne için kullanıldığına bağlı. Eğer sadece o veri setindeki tahminde bulunma ile ilgileniyorsanız, belki de istediğiniz gibi giydirebilirsiniz? Ancak, modelinizi iyi genelleyen bir model olarak tanıtmaya çalışıyorsanız veya modeli bazı gerçek dünya uygulamalarında kullanıyorsanız, o zaman elbette bu çok önemlidir.

Söylemem gerektiğini düşündüğüm bir yan sorun var; bu, tüm prosedürleri doğru izleseniz bile, gerçekte bulunmayan veriler nedeniyle, fazladan modellere sahip olabilirsiniz . Örneğin, verilerde geçici korelasyonlar varsa, o zaman 1-3 arasındaki tüm egzersiz verilerinizi alırsanız ve 4. zamanında test ederseniz, tahmin hatasının beklenenden daha büyük olduğunu görebilirsiniz. Alternatif olarak, kullanılan ölçüm cihazı gibi deneye özgü artefaktlar veya insan deneylerindeki denek havuzları, modellerin genelleştirilmesinin beklenenden daha kötü olmasına neden olabilir.


Evet, örneklem dışı bir veri seti oluşturmanın şaşırtıcı derecede zor olduğunu biliyorum; çünkü geçici olarak geçici bir ilişki kurup kazara bırakmak kolaydır.
Michael McGowan

1
Bazı şirketler bunu, örneğin viewbazı ekiplerin test verisi-özel ve diğerlerinin de test verisi-kör olduğu yerlerde buna göre ayarlanmış veritabanı izinleri alarak uyguladığı politika olarak yaparlar .
ijoseph

6

Bu çok iyi bir soru ve çok ince bir sorundur. Tabii ki sizi aldatmaya çalışan birinden kaynaklanan kötü niyetli hatalar var. Ancak, yanlışlıkla sızıntı yapmamak ve dürüst hatalardan kaçınmak konusunda daha derin bir soru var.

Operasyonel iyi uygulamaları listeleyim. Hepsi bir noktada yaptığım dürüst hatalardan kaynaklanıyor:

  • Verilerinizi üç gruba ayırın: eğitin, onaylayın ve test edin.
  • Neyin mantıklı olduğunu ve neyin olmadığını tartışmak için problem kurulumunu anlayın. Sorunu anlayın, çoğu zaman verilerin temsil ettiği şeyin sızıntılara yol açabileceği konusundaki yanlış anlaşılması. Örneğin, hiç kimse bir videonun aynı karesinde eğitim yapmaz ve test edemezken, aynı videonun iki karesi farklı katlara düştüğünde daha ince olur, aynı videonun iki karesi muhtemelen aynı bireyleri aynı ışıklandırmayı paylaşır. .
  • Önceden yazılmış çapraz onay prosedürleri konusunda son derece dikkatli olun. Dahası, sizin tarafınızdan yazılmayanlarla (LIBSVM burada büyük bir suçludur).
  • Ofis arkadaşınıza rapor veriyor olsanız bile, herhangi bir şeyi bildirmeden önce her deneyi en az iki kez tekrarlayın. Sürüm kontrolü arkadaşınızdır, bir deneme yapmadan önce bir deneme yapıp, kodun hangi sürümünü çalıştırdığınızı not edin.
  • Verilerinizi normalleştirirken çok dikkatli olun. Çoğu zaman bu, aynı anda test etmek istediğiniz tam veri setine sahip olacağınıza ve çoğu zaman gerçekçi olmadığı düşüncesine neden olur.

Eğitim / değerlendirme setleri ile ilgili bir soru vardı ve makineli öğrenim.stackexchange.com /a/ 196/114 adresinde teorik bir genel bakış sundum . Eğitimsiz zihnime göre, bu yöntemler yukarıdaki soruyu tamamen ele alıyor ve gerisi sadece “öğretmenin sorunu”. Ayrıca, listenizdeki tüm uygulamalar "basit ve özensiz, kabul edilemez hataları" düzeltiyor gibi görünüyor ve orada herhangi bir incelik görmüyorum. Neyi kaçırdığımı anlamaya çok hevesliyim - yorum yapabilir misiniz?
andreister

Hepsinin özensizlikten geldiğine katılıyorum. Ayrıca teorik olmadıklarından (işlemsel olduklarını söyleyerek) bahsetmiştim. Yayınlarımı biraz değiştirdim.
carlosdc

5

Halen verilen mükemmel cevaplarda birçok önemli husus ele alınmıştır.

Son zamanlarda, test verilerinin istatistiksel bağımsızlığı için bu kişisel kontrol listesini geliştirdim:

  • Verileri en yüksek düzeyde veri hiyerarşisinde bölme (örn. Hasta yönünden bölme)
  • Aletlerdeki günlük değişiklikler gibi bilinen veya şüphelenilen karmakarışık durumlar için bağımsız olarak bölün.
  • (DoE, rastgele ölçümler dizisine bakmalıdır **)
  • Birden fazla hasta * içeren birinci (genellikle ön işleme) adımla başlayan tüm hesaplama adımlarının, yeniden örnekleme validasyonundaki her bir vekil model için yeniden yapılması gerekir. Bekletme / bağımsız test seti geçerliliği için test hastalarının bu adımdan önce ayrılması gerekir .
    • Bu, hesaplamanın ön işleme olarak adlandırılmasından veya gerçek modelin bir parçası olarak kabul edilmesinden bağımsızdır.
    • Tipik suçlular: ortalama merkezleme, varyans ölçeklendirme (genellikle sadece hafif etki), PCA veya PLS gibi boyutsallık azaltma (ağır önyargıya neden olabilir, örneğin, büyüklük sırasına göre hiçbir hatayı hafife almaz)
  • Her türlü veriye dayalı optimizasyon veya model seçimi, nihai modeli bağımsız olarak doğrulamak için başka bir (dış) test gerektirir.
  • Sadece belirli bağımsız test setleriyle ölçülebilen bazı genelleme performansı türleri vardır, örneğin gelecekte ölçülen vakalar için öngörücü performansın nasıl kötüleştiği (zaman aralığı tahmini ile, sadece cihaz sapmasıyla ilgilenmiyorum). Ancak bunun için uygun şekilde tasarlanmış bir onaylama çalışması gerekir.
  • Alanımda başka bir tuhaf veri sızıntısı var: biyolojik dokuların uzamsal olarak çözülmüş spektroskopisini yapıyoruz. Test spektrumunun referans etiketlemesi, bir küme analizi kullanmak için cazip olsa ve sonra sadece her kümenin hangi sınıfa ait olduğunu bulsun (bu, yarı denetimli olmayan test verisi olacaktır) bulmak için, spektroskopik bilgiye karşı kör olmalıdır. hiç bağımsız değil).

  • Son fakat kesinlikle en az olmayan şey: Örnekleme doğrulama kodlamasını kodlarken, hesaplanan endekslerin verilere girip girmediğini, test hastalarının eğitim hastalarından, günlerden vb.

"Bağımsızlık sağlamak için yapılmayan bölme" ve "birden fazla vakayı içeren herhangi bir hesaplama yapılmadan önce bölme" nin, bağımsız bir test seti kullandığını iddia eden testlerde de olabileceğini ve veri analisti olsa bile ikincisinin olabileceğini unutmayın. Test durumlarının referansına kör edildi. Son veriler verilene kadar test verileri saklanırsa bu hatalar olamaz.

* Hastaları sadece açıklama kolaylığı için verilerde en üst sıradüzeni olarak kullanıyorum.
** Ben analitik kimyacıyım: Alet sapması bilinen bir problemdir. Aslında, kimyasal analiz yöntemlerinin geçerliliğinin bir kısmı, kalibrasyon numunelerinin onaylama numunelerine karşı ne sıklıkta kontrol edilmesi gerektiğini ve kalibrasyonun ne sıklıkla yapılması gerektiğini belirlemektir.


FWIW: Pratikte nerede uygulamalarla ilgilenirim

  • 10 2 - 10 3 büyüklüğündedir.p102-103 ,
  • genellikle p den büyüknrÖwsp , ancak
  • nbbenÖl.replbencbirtesnpbirtbenents«p100-101102 )
  • Spektroskopik ölçüm yöntemine bağlı olarak, bir hastanın tüm sıraları, hastanın çok benzer ya da oldukça farklı olabilir, çünkü farklı spektrum tipleri, büyüklük sırasına göre değişen sinyal-gürültü oranına (alet hatası) sahiptir;

Şahsen, sınıflandırıcı gelişimi için uygun bir bağımsız test setini bir kenara koymaya izin verecek kadar bağımsız vakalar aldığım uygulamayı henüz karşılamadım. Bu nedenle, usulün hala geliştirilme aşamasında olduğu halde, uygun şekilde yapılan yeniden örnekleme geçerliliğinin daha iyi bir alternatif olduğu sonucuna vardım. Doğru doğrulama çalışmalarının sonunda yapılması gerekecek, ancak yöntem geliştirme hala bir şeylerin değiştiği bir aşamadayken bunu yapmak çok büyük bir kaynak israfıdır (veya sonuçlar değişkenlik nedeniyle faydalı bir bilgi içermez).


2

Doğru hatırlıyorsam, tahmin yarışmalarının bazıları (Netflix veya Kaggle'dakiler gibi) bu planı kullanır:

"Cevapları" olan bir eğitim seti var. Araştırmacının cevaplar verdiği test seti # 1 var. Araştırmacı puanlarını öğrendi. Araştırmacının cevap verdiği test seti # 2 var, ancak araştırmacı puanlarını bulamıyor. Araştırmacı, hangi tahmin durumlarının 1. ve 2. sırada olduğunu bilmiyor.

Bir noktada, set # 2 görünür hale gelmek zorunda, ancak en azından kirlenmeyi sınırlandırdın.


2

Biyolojik sekansa dayalı öngörücüler gibi bazı durumlarda, vakaların birden fazla kümede görünmemesini sağlamak yeterli değildir. Setler arasındaki bağımlılık konusunda hala endişelenmen gerekiyor.

Örneğin, sekansa dayalı öngörücüler için, farklı kümelerdeki (farklı çapraz doğrulama kümeleri dahil) sekansların yüksek bir sekans benzerliği seviyesi paylaşmamasını sağlayarak fazlalığı kaldırmanız gerekir.


2

K-fold cross validation'in teorik bakış açısına göre doğru cevap olduğunu söyleyebilirim, ancak sorunuz daha örgütsel ve öğretici şeyler gibi görünüyor, bu yüzden farklı cevap vereceğim.


İnsanlar “hala öğreniyorken” genellikle “hızlı ve kirli” bir şekilde nasıl uygulanacaklarını öğreniyor gibi düşünülür. algoritmaları ve tüm "ekstra" bilgileri (problem motivasyonu, veri seti hazırlama, doğrulama, hata analizi, pratik yaklaşımlar vb.) . ) "daha hazırlıklı" olduklarında "sonra" öğrenilirler.

Bu tamamen yanlıştır.

  1. Bir öğrenci veya bir test seti ile eğitim seti arasındaki farkı anlayabilen birini istersek, en kötüsü iki seti iki farklı adama vermek, sanki "bu aşamada" "ekstra bilginin" olduğunu düşünüyoruz. zararlı. Bu, yazılım geliştirmedeki şelale yaklaşımı gibidir - birkaç ay saf tasarım, sonra birkaç ay saf kodlama, sonra birkaç ay saf test ve üzücü bir sonuç.

  2. Öğrenme şelale gibi gitmemelidir. Öğrenmenin tüm bölümleri - problem motivasyonu, algoritma, pratik yaklaşımlar, sonuç değerlendirmesi - küçük adımlarla bir araya gelmelidir. (Yazılım geliştirmede çevik yaklaşım gibi).

Belki de buradaki herkes Andrew Ng'in ml-class.org adresinden geçmiştir - Kursunu sağlam bir "çevik" örneği olarak koyardım , eğer istersen, öğrenme tarzı - asla "nasıl yapılır" sorusunu vermeyecek olanı Test verilerinin eğitim verisine sızmadığından emin olun ".


Sorunuzu tamamen yanlış anladığımı unutmayın, özür dilerim! :)


İçin öğrenme insanın (yani ne kadar genel olarak modellemek için öğrenme edilir) şelale olarak gitmemeli ama için öğrenme modelinin olmalıdır. Aksi halde, test verilerinin bitleri, eğitim verisine gizlice girer ve modeliniz aşırı yüklenmeye daha yatkındır.
Michael McGowan,

Ve yazılımın sonundan daha fazlasını düşünüyordum. Bir kullanıcı, eğitimde% 90 doğruluk ve testte% 75 doğruluk elde eden bir model oluşturur. Daha sonra yazılımdaki bazı düğmeler ve ayarları ayarladılar ve "test" konusunda% 80 doğruluk elde ettiler. Tekrar geri dönüyorlar ve daha fazla tweaks yapıyorlar ve "test" konusunda% 85 doğruluk elde ediyorlar. Ancak bu "test" olarak adlandırılan veri seti artık örneklem değildir ve model buna uygun olmuştur.
Michael McGowan

Kesinlikle. Bu bir insan öğrenme problemidir (eğer yapacaksanız öğretmen problemi). “X'in Y'ye
sızmamasını

Daha iyisini bilmesi gereken insanlar yine de bu hatayı yapacaktır. Bu etkiyi, iyi uygulamaları dolaylı ya da açıkça teşvik eden ve kötü uygulamaları engelleyen bir iş akışına sahip bir yazılım paketinde bir dereceye kadar azaltabilirsiniz. İnsanın daha iyi bilmesi, sorunu görmezden gelmek için bir sebep değildir.
Michael McGowan

@MichaelMcGowan - sızıntı yapmanın faydalarını da görmezden geliyorsunuz - algoritma test setini kullanarak potansiyel olarak geliştirildi (yani, train + testi sadece train'den daha fazla veridir). Gerçekten de sadece farklı bir takas, gelişmiş doğruluk ve gelişmiş doğruluk ölçümü. Benim için eski daha önemlidir.
Olasılık
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.