Test doğruluğu eğitimden daha yüksek. Nasıl yorumlanır?


23

Birçok özelliğe sahip (1000'den yüksek) en fazla 150 örnek (eğitim ve teste bölünmüş) içeren bir veri setine sahibim. Sınıflayıcıları karşılaştırmalı ve veriler üzerinde iyi performans gösteren özellik seçme yöntemlerini kullanmalıyım. Bu nedenle, farklı sınıflandırma yöntemleri (Greedy, BestFirst) ile üç sınıflandırma yöntemi (J48, NB, SVM) ve 2 özellik seçim yöntemi (CFS, WrapperSubset) kullanıyorum.

Karşılaştırma yaparken, eğitim doğruluğuna (5 kat çapraz katlama) ve test doğruluğuna bakıyorum.

İşte J48 ve CFS-BestFirst sonuçlarından biri:

{"satisfactionTraining": 95.83, "satisfactionTest": 98.21}

Birçok sonuç bu şekildedir ve SVM'de test doğruluğunun eğitimden çok daha yüksek olduğunu gösteren birçok sonuç vardır (eğitim:% 60, test:% 98)

Bu tür sonuçları nasıl anlamlı bir şekilde yorumlayabilirim? Daha düşük olsaydı, çok uygun olduğunu söyleyebilirim. Tüm sonuçları inceleyerek bu durumda önyargı ve varyans hakkında söylenecek bir şey var mı? Eğitim ve test setlerini yeniden seçmek veya sadece tüm veriler üzerinde çapraz doğrulama kullanmak gibi bu sınıflandırmayı anlamlı hale getirmek için ne yapabilirim?

73 eğitim ve 58 test vakam var. Bazı cevaplar gönderildiklerinde bu bilgilere sahip değildi.

Yanıtlar:


20

Bence ilk adım, bildirilen eğitim ve test performansının gerçekten doğru olup olmadığını kontrol etmektir.

  • 5 katlı çapraz doğrulama sırasında bölme, istatistiksel olarak bağımsız cv tren / test setleri verecek şekilde yapıldı mı? Örneğin, verilerde tekrarlanan ölçümler varsa, bunlar her zaman aynı sette olur mu?
  • 150 örnek 5 kat cv'de% 95,83 doğruluk, 5 vekil model için 130 eğitim örneğinden 5 yanlış, 5 * 130 eğitim örnek için 25 yanlış durum ile aynı çizgidedir.
  • % 98,21 test doğruluğunun açıklanması daha zordur: cv'nin bir çalışması sırasında, her durum bir kez test edilmelidir. Bu nedenle, bildirilen muhtemel sayılar% 100 / 150'lik adımlar halinde olmalıdır. % 98.21 hatalı 2.68 yanlış vakasına karşılık geliyor (150 test vakasından 2 ve 3'ü sırasıyla% 98.67 ve% 98.00 doğruluk veriyor).

  • Modelinizi çıkarabilirseniz, bildirilen doğrulukları harici olarak hesaplayın.

  • Rasgele girdi için bildirilen doğruluklar nelerdir?
  • Harici bir çapraz doğrulama yapın: verilerinizi bölün ve yalnızca eğitim bölümünü programa verin. "Harici" test verilerini tahmin edin ve doğruluğunu hesaplayın. Bu programın çıktısına uygun mu?
  • Bildirilen "test doğruluğunun" bağımsız verilerden geldiğinden emin olun (çift / iç içe çapraz doğrulama): programınız veriye dayalı optimizasyon yapıyorsa (örneğin, birçok modeli karşılaştırarak "en iyi" özellikleri seçme), bu daha çok eğitim hatası gibi uygun) bir genelleme hatası gibi.

@Mbq ile, eğitim hatasının makine öğrenmede neredeyse hiç faydalı olmadığını kabul ediyorum. Ancak, gerçekte yararlı olduğu birkaç durumdan birinde olabilirsiniz: Program doğrulukları karşılaştırarak "en iyi" bir model seçerse, ancak seçim için sadece eğitim hataları varsa, eğitim hatasının gerçekten mantıklı olup olmadığını kontrol etmeniz gerekir. tercih.
@mbq, ayırt edilemez modeller için en iyi senaryoyu belirledi. Bununla birlikte, daha kötü senaryolar da ortaya çıkar: aynen test doğruluğu gibi, eğitim doğruluğu da değişime tabidir, ancak genellikle ilgilenilen genelleme doğruluğuna kıyasla iyimser bir önyargıya sahiptir. Bu, gerçekten farklı performans göstermelerine rağmen modellerin ayırt edilemeyeceği bir duruma yol açabilir. Ancak eğitim (veya dahili özgeçmiş) doğrulukları iyimser önyargıları nedeniyle onları ayırt etmek için çok yakın. Örneğin, yinelemeli özellik seçim yöntemleri, iç çapraz doğrulama doğruluğu için bile geçerli olabilecek bu sorunlara maruz kalabilir (bu çapraz doğrulama işleminin nasıl yapıldığına bağlı olarak).

Eğer böyle bir sorun ortaya çıkarsa, mantıklı bir seçimin programın karar için kullandığı doğruluklardan kaynaklanıp kaynaklanmadığını kontrol etmenin iyi bir fikir olduğunu düşünüyorum. Bu, (en iyi modelin seçilmesi için sözde kullanıldığı) dahili cv doğruluğunun, istatistiksel olarak bağımsız bölünmeye sahip harici olarak yapılan bir cv'ye göre iyimser bir şekilde önyargılı olmadığının kontrol edilmesi anlamına gelir. Yine, sentetik ve / veya rasgele veriler, programın gerçekte ne yaptığını bulmaya yardımcı olabilir.

İkinci adım, istatistik olarak bağımsız bölümler için gözlenen farklılıkların, @mbq'nin daha önce işaret ettiği gibi anlamlı olup olmadığına bakmaktır.

İstatistiki olarak anlamlı bir fark olması için verilen numune büyüklüğünüzle dikkat etmeniz gereken doğruluk farkını hesaplamanızı öneririm. Gözlemlenen varyasyonunuz daha azsa, verilen veri kümesinde hangi algoritmanın daha iyi olduğuna karar veremezsiniz: daha fazla optimizasyon mantıklı olmaz.


Burada sindirmek için harika bir bilgi var. Öncelikle, bu kadar detaylı rakamlar elde etmenizi beklemiyordum gibi kesin rakamları vermediğim için çok üzgünüm ve aynı zamanda sadece bir konuya odaklanmak istedim. Neyse, 73 eğitim ve 58 test verisine sahibim. bunlar istatistiksel olarak ayrılmaz, sadece farklı zamanlarda benim tarafımdan alındı. Eğitim örnekleri ilk önce özellik seçimi algoritmasına alınır (sarıcı fs yöntemi aynı zamanda dahili 5 kat cv'ye sahiptir) ve ardından 5 kat'a alınır ve en iyi doğruluk alınır ve model kaydedilir. ve sonra bu model test doğruluğunu hesaplamak için kullanılır.
ercu

16

Bir eğitim setindeki doğruluk, makine öğrenmede bir anlam ifade etmiyor. Boşver.


Teşekkürler! aynı en iyi test doğruluğuna sahip birçok sonucum var, bu yüzden şimdi sonuçları karşılaştıramıyorum (bunu söylemediyseniz karşılaştırmak için eğitim doğruluğuna da bakarım :). Bu yüzden teste ve eğitime bölmek yerine, tüm veri setindeki çoklu çapraz doğrulama çalışması davamın sonuçlarını karşılaştırması için daha uygun mudur? veya başka bir metriğe ihtiyacım var mı?
ercu

1
CV kesinlikle iyi bir fikirdir; Yine de, birkaç "en iyi" algoritma veya parametre seti olabileceğine dikkat edin (bir anlamda, en iyi durumdan aynı veya istatistiksel olarak ayırt edilemez bir doğruluk verir) - bu da sorun değil. Daha da iyisi, bu, istikrarlı sonuçlar elde ettiğiniz anlamına gelir - keskin bir optimum, modeli kiraz toplama parametreleriyle daha fazla uyarladığınız anlamına gelebilir.

8
Prediktif algoritmanızın yapmış olacağı fazlalık miktarını tahmin etmek için antrenman setindeki doğruluğu bilmek faydalıdır (antrenman ve test setleri arasındaki doğruluk farkını hesaplayarak).
Frank Harrell

Nedenini açıklayabilir misiniz?
inf

1
Tanımdan, ML yöntemleri görünmeyen veriler üzerinde performansla ilgilidir, bu nedenle bu sonuç hakkında hiçbir garanti vermezler (modelin istatistiksel modellemede olduğu gibi verilerin altında yatan mekanizmayı yeniden uygulaması beklenmez). Uygulamada birçok yöntem aşırı kesin tahminler verir, bu yüzden sadece aldatıcıdır.

6

Bununla ilgili bazı ciddi sorunlar var. Öncelikle, toplam numune büyüklüğü çok büyük olmadıkça veri bölme güvenilir değildir. Tekrar ayrılırsanız farklı sonuçlar alırsınız. Diğer şeylerin yanı sıra, doğruluk tahminleri konusunda güven aralıklarını düşünmüyorsunuz. İkincisi, 5 kat çapraz doğrulama yeterince kesin değildir. Yeterli hassasiyet elde etmek için 100 kez tekrar etmek gerekebilir. Üçüncüsü, kesinlik olarak süreksiz bir uygunsuz puanlama kuralı (doğru bir şekilde sınıflandırılan oran) puanı seçtiniz. Böyle uygunsuz bir puanlama kuralı yanlış modelin seçilmesine yol açacaktır.


3

Algoritmaların uygulanmasında bir aksaklık olmadığını varsayarsak, soruna bakalım.

Eğitim verilerinizden küçük bir altküme aldığınızı ve öğrenme algoritmanızı çalıştığını hayal edin. Belli ki çok iyi yapacak. % 98'e yakın doğruluk sağlayan bir alt kümeyi çıkarmak her zaman mümkündür.

Test verileriniz bu alt kümeye çok benziyor mu? Eğer evet ise, o zaman gidip daha fazla veri toplamalısınız, umarım biraz daha çeşitlidir. Sapma Varyansı açısından, varyansınızın yüksek olduğunu söyleyebilirim.


1

Sahip olduğunuz örnek sayısı (150) için çok fazla özelliğiniz (1000) var. Numunelerinizi arttırmanız veya özellik sayınızı azaltmanız gerekir.

Genellikle özellik sayısı ^ 2 = gerekli örnek sayısı derler. Yani en az milyon örneğe ihtiyacınız var.


0

Bu, herhangi bir ML algoritmasını ve hatta özel sınıflandırıcıları kullanarak olabilir. Farklı k-kat çapraz doğrulama şemaları deneyin, yani 2 veya 10 kat. Daha yüksek k ile test hatasının azaltılması beklenir.

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.