Çapraz doğrulamadan sonra sınıflandırıcı nasıl seçilir?


13

K-kat çapraz doğrulaması yaptığımızda, sadece en yüksek test doğruluğuna sahip sınıflandırıcıyı mı kullanmalıyız? Çapraz sınıflandırmadan sınıflandırıcı elde etmede genellikle en iyi yaklaşım nedir?


Bence bu soru büyük ölçüde "en iyi yaklaşımı" belirlemek için kullanılan metriğe bağlıdır. Sayısal olarak birçok kişi doğruluk kullanır, ancak veri kümesine bağlı olarak, F1 Puanı gibi Harmonik bir ortalama gibi diğer metrikler kullanılabilir. Dolayısıyla metrik seçim de aynı derecede önemli olabilir.
Nathan McCoy

@NathanMcCoy iyi doğruluk seçtiğinizi varsayarsak, en yüksek test doğruluğuna sahip sınıflandırıcıyı seçer miyiz?
Armon Safai

Elbette! Düşünmek için başka bir şeyden bahsetmeye çalışıyorum :)
Nathan McCoy

Yanıtlar:


15

Bu iki şeyden herhangi birini yapmak istediğinizde çapraz doğrulama yaparsınız:

  • Model Seçimi
  • Bir Modelin Hata Tahmini

Model seçimi farklı senaryolarda olabilir:

  • Belirli bir sorun / veri kümesi için bir algoritmanın diğerine karşı seçilmesi
  • Belirli bir problem / veri kümesi için belirli bir algoritmanın hiper parametrelerini seçme

(hem bir algoritma seçtiyseniz - model olarak adlandırmak daha iyi - hem de hiper parametre araması yapıyorsanız, İç İçe Çapraz Doğrulama yapmanız gerektiğini unutmayın. İç İçe Özgeçmiş gerçekten gerekli mi? )

Çapraz doğrulama, bir dereceye kadar hata tahmininin o model için genelleme hatası olarak mümkün olan en yakın olmasını sağlar (bu yaklaşık olarak çok zor olsa da). Kıvrımlar arasındaki ortalama hatayı gözlemlerken, tam veri kümesine dayanan bir model için beklenen hatayı iyi bir şekilde yansıtabilirsiniz. Ayrıca tahminin varyansını gözlemlemek de önemlidir, bu, hatanın kattan katına ne kadar değiştiğidir. Varyasyon çok yüksekse (oldukça farklı değerler), model kararsız olma eğilimindedir. Önyükleme bu anlamda iyi bir yaklaşım sağlayan diğer yöntemdir. "İstatistiksel Öğrenmenin Unsurları" Kitabı ile ilgili 7. bölümü ücretsiz olarak okumanızı tavsiye ederim: ELS-Standford

Daha önce de belirtildiği gibi, inşa edilen modeli kıvrımların hiçbirine almamalısınız. Bunun yerine, modeli tam veri kümesiyle (katlara bölünmüş olan) yeniden oluşturmanız gerekir. Ayrılmış bir test setiniz varsa, CV tarafından elde edilene benzer bir (ve kesinlikle daha yüksek) bir hata elde ederek bu son modeli denemek için kullanabilirsiniz. Bununla birlikte, CV prosedürü tarafından verilen tahmini hataya güvenmelisiniz.

Farklı modellerle (algoritma kombinasyonu vb.) CV yaptıktan sonra, hata ve kıvrımlar arasındaki varyans konusunda daha iyi performans göstereni seçin. Modeli tüm veri kümesiyle yeniden oluşturmanız gerekir. İşte terimlerle ortak bir karışıklık geliyor: modelin, modelin verilere dayalı tahmin etmeye hazır bir model olduğunu düşünerek, model seçimine atıfta bulunuyoruz, ancak bu durumda, uyguladığınız algoritma + ön işleme prosedürlerinin kombinasyonunu ifade eder. Bu nedenle, tahminler / sınıflandırma yapmak için ihtiyacınız olan gerçek modeli elde etmek için, tüm veri kümesinde kazanan kombinasyonu kullanarak oluşturmanız gerekir.

Dikkat edilmesi gereken son şey, sınıf bilgisini (özellik seçimi, LDA boyutsallık azaltma, vb.) Kullanan herhangi bir önişleme uygularsanız, bunun daha önce verilerde değil, her katta gerçekleştirilmesi gerektiğidir. Bu kritik bir husustur. Verilerin doğrudan bilgisini (PCA, normalleştirme, standardizasyon, vb.) İçeren ön işleme yöntemleri uyguluyorsanız da aynı işlemi yapmalısınız. Bununla birlikte, verilere bağlı olmayan önişlemleri uygulayabilirsiniz (uzman görüşünden sonra bir değişkeni silmek, ancak bu çok açıktır). Bu video size şu yönde yardımcı olabilir: Doğru ve yanlış CV'ye sahip olun

Burada konuyla ilgili son güzel bir açıklama: CV ve model seçimi


Görüyorum ki, gerçekten ayrı bir test verisine mi ihtiyacınız var, yoksa sadece çapraz doğrulama yaptığımız ve model için yaklaşık test hatasını aldığımızdan, sınıflandırıcıyı sahip olduğunuz tüm verilerin% 100'ü üzerinde eğitebilir misiniz?
Armon Safai

+1, "hata ve kıvrımlar arasındaki fark konusunda daha iyi performans göstereni seçti ". Model seçerken herkes kıvrımlar arasındaki farkı görmezden geliyor gibi görünüyor.
stmax

Eğer önem verdiğim sadece CV hatasıysa neden test hatasını önemsemeliyim? "Gerçekten CV prosedürü tarafından verilen tahmini hata hakkında" yazdığınızı sordum.
HelloWorld

Başka bir soru. CV'nin en iyi modeli, tüm veri kümesi için oluşturulduğunda en iyi model değilse ne olur?
HelloWorld

1
Modeli verilerin% 100'ü üzerine, yani çapraz doğrulama için kullanılan verilerin% 100'ü üzerine inşa edersiniz. Daha önce eğitim ve ileri testler için orijinal verileri% 80-20 arasında bölerseniz,% 80'de CV yaparsınız, modeli seçin ve% 80'in tamamında yeniden eğitin. Bu durumda bir test seti (% 20) yeni görünmeyen verilerle nasıl davrandığını görmenizi sağlar (gelecekte kullanıma sunulacak veriler olarak düşünebilirsiniz), ancak kullandığınız hata tahmini CV'den . Umarım iyi bir modelse (% 20 veya aslında yeni veriler) yeni verilerle benzer bir hata üretir. @ArmonSafai
Javierfdr

8

Hayır. K katı çapraz doğrulama sırasında oluşturulan k sınıflandırıcılarından hiçbirini seçmezsiniz. Her şeyden önce, çapraz validasyonun amacı bir öngörücü model bulmak değil, bir öngörücü modelin pratikte ne kadar doğru performans göstereceğini değerlendirmektir. İkincisi, argüman uğruna, diyelim ki belirli bir sınıflandırma problemini çözmek için üç farklı sınıflandırma algoritmasından hangisinin en uygun olacağını bulmak için k = 10 ile k-kat çapraz doğrulamayı kullanacaksınız. Bu durumda, veriler rastgele olarak eşit büyüklükteki k bölümlerine ayrılır. Parçalardan biri test için ayrılmıştır ve geri kalan k-1 parçaları eğitim için kullanılacaktır. Çapraz doğrulama işlemi k (katlama) kez tekrarlanır, böylece her yinelemede test için farklı kısım kullanılır. Çapraz doğrulamayı çalıştırdıktan sonra, her bir katlamanın sonuçlarına bakarsınız ve hangi sınıflandırma algoritmasının (eğitilmiş modellerden herhangi biri değil!) En uygun olduğunu merak edersiniz. 10 yinelemeden birinde en yüksek test doğruluğuna sahip olan algoritmayı seçmek istemezsiniz, çünkü belki de sadece belirli bir yinelemedeki test verilerinin çok kolay örnekler içerdiğini ve bunun sonucunda yüksek test doğruluğuna yol açtığını rastgele meydana getirdi. Yapmak istediğiniz, en iyi doğruluğu üreten algoritmayı seçmek bu da yüksek test doğruluğuna yol açar. Yapmak istediğiniz, en iyi doğruluğu üreten algoritmayı seçmek bu da yüksek test doğruluğuna yol açar. Yapmak istediğiniz, en iyi doğruluğu üreten algoritmayı seçmektüm k kıvrımları ortalaması alınmıştır . Şimdi algoritmayı seçtiğinize göre, tüm egzersiz verilerinizi kullanarak onu eğitebilir ve vahşi doğada tahminler yapmaya başlayabilirsiniz.

Bu, bu sorunun kapsamı dışındadır, ancak seçilen algoritmadan en iyi şekilde yararlanmak için modelin hiper parametrelerini (varsa) da optimize etmelisiniz. İnsanlar genellikle çapraz doğrulama kullanarak hiperparametre optimizasyonu yapar.


10 kat eğitim verisi olduğu için k-kat çapraz doğrulamanın k farklı modeller yarattığını düşündüm.
Armon Safai

Güncellenmiş cevabımı kontrol et. Soruyu daha doğrudan ele almayı ve bir örnekle daha iyi açıklamayı anlattım.
tuomastik

görüyorum, bu yüzden sonunda sınıflandırıcıyı eğittiğinizde, çapraz doğrulamadan algoritmanızı seçtikten sonra sınıflandırıcıyı eğitmek için TÜM verilerinizi kullanıyor musunuz
Armon Safai

Evet, iç CV döngüsünün hiperparametre ayarlamasıyla ve dış CV döngüsünün bağımsız bir veri kümesindeki model performansını en iyi şekilde değerlendirdiği iç içe çapraz doğrulama gerektiren başka bir hiperparametre optimizasyonu gibi başka bir analiz yapmak istemiyorsanız hyperparameters.
tuomastik

1

Bu nedenle,% 80'ini eğitim olarak kullandığınız ve% 20'sini doğrulama verileri olarak kullandığınız eğitiminiz olduğunu varsayalım. % 80'i eğitebilir ve kalan% 20'yi test edebiliriz, ancak aldığımız% 20'nin gerçek test verilerine benzememesi ve kötü sonuç vermesi mümkündür. Bu nedenle, bunu önlemek için k-kat çapraz doğrulamayı kullanabiliriz.

Farklı modellere sahip olduğunuzu ve veri kümenizle hangisinin daha iyi performans gösterdiğini bilmek istediğinizi varsayalım, k katlı çapraz doğrulama harika çalışıyor. K-validasyon performanslarındaki validasyon hatalarını bilebilir ve buna göre daha iyi bir model seçebilirsiniz. Bu genellikle k-kat çapraz doğrulamanın amacıdır.

Sadece bir modele geliyor ve k katlama çapraz doğrulaması ile kontrol ediyorsanız, yaklaşık test verisi hatası alabilirsiniz, ancak when you are actually training it finally, you can use the complete training data. (Çünkü burada tüm verilerin birlikte bir kısmından daha iyi performans göstereceği varsayılmaktadır. Bazen durum böyle olmayabilir, ancak genel varsayım budur.)


Sooo çapraz doğrulamayı yaptığımızda, sadece en yüksek test doğruluğuna sahip modeli seçiyoruz?
Armon Safai

test derken, doğrulama veri setinin testi demek istiyorsun değil mi?
Hima Varsha

demek istediğim şu
Armon Safai

daha iyi performans gösteren modeli (örneğin, 2 model doğrusal regresyon veya sinir ağınız varsa) seçmek için çapraz doğrulamayı kullandığımızda, bu modeli (doğrusal regresyon veya sinir ağı olsun) tüm verilerde eğitiyoruz
Hima Varsha

1
@HimaVarsha yani ortalamayı almaya karar verirsek, "ortalama sınıflandırıcı" yı nasıl seçeriz?
Armon Safai
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.