Özellik seçimi ve çapraz doğrulama


76

Son zamanlarda bu sitede (@Aniko, @Dikran Marsupial, @Erik) ve başka yerlerde çapraz onaylama ile ortaya çıkan aşırı teçhizat sorunu hakkında çok fazla şey okudum - (Smialowski ve diğerleri 2010 Bioinformatics, Hastie, istatistiksel öğrenmenin unsurları). Öneri, çapraz doğrulama (veya önyükleme gibi başka bir model tahmin metodu) kullanılarak yapılan model performans tahmininin dışında gerçekleştirilen herhangi bir denetimli özellik seçiminin (sınıf etiketleriyle korelasyon kullanarak) aşırı yüklenmeyle sonuçlanabileceğidir.

Bu benim için mantıklı görünmüyor - elbette bir özellik seti seçip modelinizi yalnızca çapraz onaylamayı kullanarak seçili özellikleri kullanarak değerlendirirseniz , o zaman bu özellikler üzerinde genelleştirilmiş model performansının tarafsız bir tahminini elde edersiniz (bu, çalışılan numunenin temsili olduğunu varsayar) nüfusun)?

Elbette bu prosedürle optimal bir özellik seti talep edilemez, ancak görünmeyen verilerde seçilen özelliklerin performansını geçerli olarak rapor edebilir mi?

Veri setinin tamamına göre özellik seçmenin test ve tren setleri arasında bazı veri sızıntılarına neden olabileceğini kabul ediyorum. Ancak, ilk seçimden sonra özellik seti statikse ve başka bir ayar yapılmıyorsa, çapraz onaylı performans ölçümlerini rapor etmek kesinlikle geçerli midir?

Benim durumumda 56 özellik ve 259 kasa var ve #cases> #features. Özellikler sensör verilerinden türetilmiştir.

Sorumu türev görünüyor, ancak bu netleştirmek için önemli bir nokta gibi görünüyor, özür dilerim.

Düzenleme: Yukarıda ayrıntılı olarak verilen veri setinde çapraz doğrulama dahilinde özellik seçimi yapıldığında (aşağıdaki cevaplar sayesinde), bu veri setinde çapraz doğrulama öncesi özelliklerin seçilmesinin önemliönyargı. Bu önyargı / aşırı uyum, 2 sınıflı formülasyona kıyasla 3 sınıflı bir formülasyon için bunu yaparken en iyisiydi. Özellik seçimi için kademeli regresyon kullandığım gerçeğinin bu fazla uydurma arttırdığını düşünüyorum; Karşılaştırma amacıyla, farklı ancak ilgili bir veri setinde, daha önce CV içinde özellik seçimiyle elde ettiğim sonuçlara karşı çapraz doğrulamadan önce gerçekleştirilen sıralı ileri özellik seçim rutini karşılaştırdım. Her iki yöntem arasındaki sonuçlar önemli ölçüde farklı değildi. Bu, kademeli regresyonun sıralı FS'den daha fazla uyuma yatkın olduğu veya bu veri setinin bir tutam olabileceği anlamına gelebilir.


7
Hastie ve diğerlerinin bunun tam olarak ne olduğunu sanmıyorum. savunuyorlar. Genel argüman, eğer özellik seçimi yanıtı kullanırsa CV prosedürünüzün bir parçası olarak dahil edilmesi daha iyi olur. Öngörücü taramasını yaparsanız, örneğin örnek değişkenlerine bakarak ve küçük değişkenli yordayıcıları hariç tutarsanız, bu tek seferlik bir işlem olarak tamamdır.
kardinal

3
+1 ancak bu durumda bile çapraz doğrulama, özellik seçimi sürecindeki varyansı temsil etmiyor, bu özellik seçimi kararsızsa sorun olabilir. Önce taramayı yaparsanız, her kattaki performanstaki değişkenlik gerçek değişkenliği temsil edemez. Her katlamada tarama yaparsanız, her katlamadaki performanstaki değişkenliği uygun şekilde artıracaktır. Hesaplama masrafını karşılayabilseydim, yine de her katlamada her zaman tarama yapardım.
Dikran Marsupial

1
Bence "Çapraz onaylama kullanılarak yapılan model performans tahmininden önce yapılan HİÇBİR özellik seçimi aşırı uyarmaya neden olabilir." Hastie ve diğerlerinin önerebileceği bir yanlış veya yanlış beyandır. Eğer "önceki" kelimesini "olmadan" değiştirirseniz daha mantıklı olur.Ayrıca cümle, çapraz onaylamanın, seçilen değişkenlerin uygunluğunu yasal olarak test etmenin tek yolu olduğunu ileri sürüyor gibi gözüküyor. .
Michael Chernick

@MichaelChernick - kabul etti. Anlamımı daha iyi yansıtabilmek için yukarıda düzenleme yaptım.
BGreene

1
@Bgreene: Bu konuda goo.gl/C8BUa adresinde okunabilecek yeni bir tartışma var .
Alekk,

Yanıtlar:


69

Tüm veriler üzerinde özellik seçimi yaparsanız ve ardından çapraz doğrularsanız, o zaman çapraz doğrulama prosedürünün her katındaki test verileri de özellikleri seçmek için kullanılmıştır ve performans analizini önyargılayan da budur.

Bu örneği düşünün. Bir madeni parayı 10 kez çevirerek ve yazı mı tura mı geldiğini kaydederek bir miktar hedef veri üretiyoruz. Daha sonra, her özellik için yazı turalarını 10 kez çevirerek 20 özellik üretiyoruz ve aldıklarımızı yazıyoruz. Ardından, hedef verilere uyan özelliği mümkün olduğunca yakından tespit ederek özellik seçimini gerçekleştirir ve bunu tahminimiz olarak kullanırız. Çapraz onaylama yaparsak, beklenen hata oranını 0.5'in biraz altına indiririz. Bunun nedeni, özelliği, hem eğitim setiyle hem de çapraz doğrulama prosedürünün her katındaki test setiyle ilgili bir korelasyon temelinde seçmiş olmamızdır. Ancak, gerçek hata oranı sadece hedef veri rasgele olduğu için 0,5 olacak. Çapraz onaylamanın her katında bağımsız olarak özellik seçimi yaparsanız, hata oranının beklenen değeri 0'dır.

Temel fikir, çapraz onaylamanın bir model oluşturmak için bir sürecin genelleştirme performansını tahmin etmenin bir yoludur , bu yüzden tüm süreci her bir katlamada tekrarlamanız gerekir. Aksi halde, önyargılı bir tahminle veya tahminin (veya her ikisinin) varyansının düşük bir tahminiyle sonuçlanırsınız.

HTH

Örnek olarak eşleştirmek için 56 özellik ve 259 kasa ile bu kurulumun Monte-Carlo simülasyonunu gerçekleştiren bazı MATLAB kodları şöyledir:

Önyargılı tahmin edici: erate = 0.429210 (0.397683 - 0.451737)

Taraflanmamış tahmin edici: erate = 0.499689 (0.397683 - 0.590734)

Önyargılı tahmin edici, çapraz doğrulama öncesinde özellik seçiminin gerçekleştirildiği, tarafsız doğrulama ise çapraz doğrulama işleminin her katında bağımsız olarak özellik seçiminin yapıldığı tahmin edicidir. Bu, öğrenme görevinin niteliğine bağlı olarak bu durumda önyargının oldukça şiddetli olabileceğini düşündürmektedir.

NF    = 56;
NC    = 259;
NFOLD = 10;
NMC   = 1e+4;

% perform Monte-Carlo simulation of biased estimator

erate = zeros(NMC,1);

for i=1:NMC

   y = randn(NC,1)  >= 0;
   x = randn(NC,NF) >= 0;

   % perform feature selection

   err       = mean(repmat(y,1,NF) ~= x);
   [err,idx] = min(err);

   % perform cross-validation

   partition = mod(1:NC, NFOLD)+1;
   y_xval    = zeros(size(y));

   for j=1:NFOLD

      y_xval(partition==j) = x(partition==j,idx(1));

   end

   erate(i) = mean(y_xval ~= y);

   plot(erate);
   drawnow;

end

erate = sort(erate);

fprintf(1, '  Biased estimator: erate = %f (%f - %f)\n', mean(erate), erate(ceil(0.025*end)), erate(floor(0.975*end)));

% perform Monte-Carlo simulation of unbiased estimator

erate = zeros(NMC,1);

for i=1:NMC

   y = randn(NC,1)  >= 0;
   x = randn(NC,NF) >= 0;

   % perform cross-validation

   partition = mod(1:NC, NFOLD)+1;
   y_xval    = zeros(size(y));

   for j=1:NFOLD

      % perform feature selection

      err       = mean(repmat(y(partition~=j),1,NF) ~= x(partition~=j,:));
      [err,idx] = min(err);

      y_xval(partition==j) = x(partition==j,idx(1));

   end

   erate(i) = mean(y_xval ~= y);

   plot(erate);
   drawnow;

end

erate = sort(erate);

fprintf(1, 'Unbiased estimator: erate = %f (%f - %f)\n', mean(erate), erate(ceil(0.025*end)), erate(floor(0.975*end)));

3
Teşekkürler - bu çok yardımcı olur. Önerilen yaklaşımı benimserseniz son modelinizi nasıl değerlendiriyorsunuz? Birden çok özellik kümesine sahip olacağınız için, son özellik kümesini nasıl seçersiniz? Tarihsel olarak, seçilen model parametreleri ve özelliklerle tek bir çapraz onaylamaya dayanan sonuçlar da rapor ettim.
BGreene

16
Çapraz doğrulamayı, modelin kendisinden ziyade bir modele uydurma prosedürünün performansını değerlendirmek olarak görmek en iyisidir. Yapılacak en iyi şey normal olarak yukarıdaki gibi çapraz doğrulama yapmak ve daha sonra çapraz doğrulama prosedürünün her katında kullanılan aynı prosedürü kullanarak tüm veri kümesini kullanarak son modelinizi oluşturmaktır.
Dikran Marsupial

2
Bu durumda, daha sonra çapraz doğrulamaya (potansiyel olarak birçok farklı özellik kümesi) dayalı sınıflandırma sonuçlarını raporluyoruz, ancak modeli bu özellik kümelerinden yalnızca birini içerdiğini rapor ediyoruz, yani çapraz onaylanmış sınıflandırma sonuçları mutlaka özellik grubuyla eşleşmiyor mu?
BGreene

10
Temel olarak evet, çapraz doğrulama, bir model oluşturma sürecinin beklenen performansını değil, modelin kendisini tahmin eder. Eğer özellik seti, çapraz onaylamanın bir katından diğerine büyük ölçüde değişiyorsa, özellik seçiminin dengesiz ve muhtemelen çok anlamlı olmadığı bir göstergedir. Özellikle seçim kararsız ise, özellik seçimi yerine düzenlileştirme (örneğin, sırt regresyonu) kullanmak en iyisidir.
Dikran Marsupial

3
Bu çok önemli bir yazı. Ne kadarının bunu uygulamadığı şaşırtıcı.
Chris A.

12

Sorunun biraz daha farklı ve daha genel bir tanımını eklemek için:

Herhangi bir tür veri odaklı ön işleme yaparsanız , örneğin

  1. çapraz doğrulama / önyükleme dışı bırakma tarafından yönlendirilen parametre optimizasyonu
  2. Model için girdi üretmek üzere PCA veya PLS gibi tekniklerle boyutsallığın azaltılması (örneğin, PLS-LDA, PCA-LDA)
  3. ...

ve nihai modelin performansını tahmin etmek için çapraz onaylama / önyükleme dışı (/ uzatma) onaylama kullanmak istemek için , veri güdümlü ön işleme işleminin taşıyıcı eğitim verileri üzerinde, yani her bir taşıyıcı model için ayrı ayrı yapılması gerekir.

Veriye dayalı ön işleme türü 1 ise, bu "çift" veya "iç içe" çapraz onaylamaya yol açar: parametre tahmini, yalnızca "dış" çapraz onaylama eğitim seti kullanılarak yapılan çapraz onaylamada yapılır. ElemStatLearn'ün bir açıklaması vardır ( https://web.stanford.edu/~hastie/Papers/ESLII.pdf 5 Sayfa 5).

Ön işlemin gerçekten model binasının bir parçası olduğunu söyleyebilirsiniz. sadece yapılan ön işlemler

  • her durum için bağımsız olarak veya
  • gerçek veri setinden bağımsız olarak

Hesaplamaları kaydetmek için doğrulama döngüsünden çıkarılabilir.

Öyleyse tam tersi: Modeliniz tamamen belirli bir veri setinin dışındaki bilgilerden oluşuyorsa (örneğin, uzman bilgilerinize göre 63 - 79 ölçüm kanallarının sorunu çözmede yardımcı olamayacağına karar verirseniz, elbette bu kanalları hariç tutabilirsiniz. , modeli oluşturun ve çapraz doğrulayın, aynı, eğer bir PLS regresyonu yaparsanız ve deneyimlerinize göre 3 gizli değişkenin makul bir seçim olduğuna karar verirseniz (ancak 2 veya 5 lv'nin daha iyi sonuçlar verip vermediğini oynamayın) normal bir önyükleme dışı / çapraz doğrulama ile devam edin.


Ne yazık ki ElemStatLearn kitabının 5. basımı için link çalışmıyor. Bahsettiğin illüstrasyonun hala aynı sayfada olup olmadığını merak ediyordum. Lütfen başlığı da belirtin.
rraadd88

Öyleyse, iki veri grubum varsa, bunlardan birisinde özellik seçimi / mühendisliği, diğerinde özgeçmişi sorun çıkarmaz mı?
Milos

1
@Milos: hayır, bu özellikler çapraz onaylama modelleri için sabit parametreler olduğu sürece, tamam olmalıdır. Bu, uygun bir hipotez oluşturma (= A veri setinde özellik geliştirme) / hipotez testi (= şimdiki sabit özelliklerin B veri seti ile ayarlanmış performansını ölçme) olacaktır.
cbeleites,

@cbeleites Evet, yapmak istediğim de buydu. A'daki özellikleri belirleyin, ardından bu özellikleri düzeltin ve B'deki modeller için çapraz doğrulama yapın. :)
Milos

@Milos: Bununla birlikte, modelinizi A üzerinde tam olarak eğitirseniz ve sonra sadece test için B'yi kullanırsanız, elde edilen performans için argümanınızın daha da iyi olduğunu unutmayın .
cbeleites

5

Biraz sezgisel hale getirmeye çalışalım. Bu örneği ele alalım: İkili bağımlı ve iki ikili tahminciniz var. Sadece bir prediktör ile bir model istiyorsun. Her iki tahmin edicinin de% 95'in bağımlıya eşit olma ve% 5'in bağımlıya katılmadığını söyleme şansı var.

Şimdi, verileriniz üzerindeki bir şans eseri bir tahminci, zamanın% 97'sinde tüm verilere bağımlı, diğeri ise zamanın% 93'ündedir. Tahminciyi% 97 ile seçip modellerinizi oluşturacaksınız. Çapraz doğrulama işleminin her katında model bağımlı = yordayıcısına sahip olacaksınız, çünkü neredeyse her zaman haklıdır. Bu nedenle% 97 oranında bir çapraz öngörülen performans elde edersiniz.

Şimdi diyebilirsiniz, tamam, bu sadece kötü şans. Fakat öngörücüler yukarıdaki gibi inşa edilirse, veri setinin tamamında>% 95 kesinliğe sahip olmalarından en az birinin% 75'ini elde etme şansınız olur ve bu sizin seçeceğinizdir. Bu yüzden performansı% 100 abartma şansınız var.

Uygulamada, bu etkiyi tahmin etmek hiç de önemsiz değildir. Özellik seçiminizin, tüm veri setinde yaptığınız gibi her bir katlamada aynı özellikleri seçmesi tamamen olasıdır ve daha sonra önyargı olmaz. Çok daha fazla numuneniz varsa ancak özellikleriniz varsa, efekt de küçülür. Verilerinizle her iki yolu da kullanmanız ve sonuçların nasıl farklılaştığını görmek öğretici olabilir.

Ayrıca, bir miktar veriyi (% 20) bir kenara koyabilir,% 80'i çapraz doğrulayarak performans tahminlerini almak için hem yolunuzu hem de doğru yolu kullanabilirsiniz ve modelinizi 20'ye aktarırken hangi performans tahmininin daha doğru olduğunu kanıtlayabilirsiniz. Ayrılan verilerin% 'si. Bunun çalışması için CV seçiminden önce özellik seçiminizin de çalışabilmesi için verilerin sadece% 80'ine yapılması gerektiğini unutmayın. Aksi halde, modelinizi numunenizin dışındaki verilere transfer etmeyi simüle etmez.


Sezgisel örneğinizle özellik seçimini yapmanın doğru yolu hakkında daha fazla bilgi verebilir misiniz? Teşekkür ederim.
uared1776
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.