Çok büyük bir veri kümesinden önemli değişkenler nasıl hızlı bir şekilde seçilir?


9

Yaklaşık 2.000 ikili değişken / 200.000 satır içeren bir veri kümesi var ve tek bir ikili bağımlı değişken tahmin etmeye çalışıyorum. Bu aşamadaki ana amacım tahmin doğruluğu elde etmek değil, bu değişkenlerden hangisinin önemli yordayıcılar olduğunu tanımlamaktır. Son modelimdeki değişken sayısını yaklaşık 100'e düşürmek istiyorum.

En önemli değişkenleri elde etmenin nispeten hızlı bir yolu var mı? randomForest uzun sürüyor gibi görünüyor.

200.000 gözlemin hepsini kullanmak zorunda değilim, bu yüzden örnekleme masada bir seçenektir.


"Doğru" öngörücülerden ziyade "önemli" ile, sonucu açıklamak ve bir teori oluşturmanıza yardımcı olmak için en iyi adayları bulmak ister misiniz? Öyleyse, 100 açıklayıcı değişken çok büyük bir sayıdır - yasak olarak büyük. Teori oluşturma ve gerçek açıklama (sadece tahmin yerine) muhtemelen X sayısını 10 veya 15'e düşürmenizi gerektirir.
rolando2

2
@ rolando2 Bazı uygulamalarda 100 hiç büyük değildir. Örneğin, yüksek hızlı genişbant erişilebilirliğine ilişkin literatür yaklaşık 150 değişkeni (analiz edilen yüzlerce) işaret etmektedir ve bunların hepsi makuldür: mühendislik kolaylığıyla (arazi, kaya türü, iklim vb.), Ekonomiyle ilgilidir. (SES, vb.), Demografiye, yerel ulaşım altyapısının geometrisine, siyasete (vergi ve iş ortamı) vb. Birçok ekonomik modelin benzer şekilde yüzlerce teorik olarak önemli değişken içerebileceğine inanıyorum.
whuber

@whuber - Ben sizin açınızdan düşünüyorum ... Bu kadar çok değişkenin oynadığı nedensel (sadece öngörücü olmaktan ziyade) rolleri sıralamanın sıra dışı adanmış, yetenekli ve tecrübeli bir analist gerektirdiğini kabul eder misiniz?
rolando2

@rolando Tabii. 2000 değişken çok iş!
whuber

Yanıtlar:


6

Basit bir Tek Değişkenli filtreyle başlayabilir ve hangi değişkenlerin tutulacağına karar vermek için çapraz doğrulamayı kullanabilirsiniz. sbfİşlev caretR paketin gerçekten yararlıdır. Bu konuda daha fazla bilgi bulabilirsiniz burada sayfa 19 başlayarak.


Teşekkürler. Makaleyi yeni okudum ve sağlam bir yaklaşım gibi görünüyor. Ancak 64bit 4MB Bellek sistemimde bazı bellek sorunları yaşıyorum.
DevX

1
@DevX: Çok fazla veriniz varsa, bir örnek alıp örneğe dayalı değişkenler seçmeyi deneyebilirsiniz?
Zach

13

Bu, büzülme ve değişken seçim yapan kement ve arkadaşlar için uygun bir sorun gibi görünüyor. İstatistiksel Öğrenmenin Unsurları regresyon için kement ve elastik ağ ve bu problemle daha alakalı olan lojistik regresyonu tarif eder.

Kitabın yazarları, Kement ve elastik ağın verimli bir şekilde uygulanmasını glmnet adı verilen bir R paketi olarak hazırladılar . Bu paketi daha önce yaklaşık 250.000 satırlık veri matrisleri ile ikili veri analizi için kullandım, ancak daha az sütun olsa da, aslında tüm sütunların diğer tüm sütunlara karşı regresyonlarını çalıştırıyorum. Veri matrisi de seyrek ise, uygulama da bundan yararlanabilir ve yöntemin aslında OP tam veri kümesi için çalışabileceğine inanıyorum. İşte kement hakkında bazı yorumlar:

  • Kement, pürüzsüz olmayan bir ceza işlevi kullanarak değişken seçim yapar ( 1-norm) parametresiyle sonuçlanır, bu da bazı parametrelerin tam olarak 0'a eşit olduğu parametre tahminleriyle sonuçlanır. Sıfır olmayan parametrelerin kaç tanesi ve sıfır olmayan parametrelerin ne kadar büzüştüğü bir ayar parametresi ile belirlenir. Glmnet'teki uygulamanın etkinliği, büyük bir ceza için sadece birkaç parametrenin 0'dan farklı olmasına bağlıdır.
  • Ayar parametresinin seçimi genellikle çapraz-validasyon ile yapılır, ancak çapraz-validasyon adımı olmasa bile, yöntem ceza parametresi tarafından endekslenen seçili değişkenlerin iyi bir sekansını verebilir.
  • Dezavantajı, değişken seçimi için, kementin değişkenlerin seçiminde kararsız olabilmesidir, özellikle de biraz korelasyonluysa. Daha genel elastik net ceza bu istikrarsızlığı iyileştirmek için icat edildi, ancak sorunu tamamen çözmüyor. Adaptif kement , kement için değişken seçimini iyileştirmek için başka bir fikirdir.
  • Kararlılık Seçimi , Meinshausen ve Bühlmann tarafından seçilen değişkenlerin kement gibi yöntemlerle daha fazla kararlılığa ulaşması için önerilen genel bir yöntemdir. Veri kümesinin alt örneklerine bir dizi sığdırmayı gerektirir ve bu nedenle, çok daha fazla hesaplama gerektirir.
  • Kementin makul bir şekilde düşünülmesi, ceza parametresi tarafından parametrelenen, tek değişkenli bir modelden daha karmaşık bir modele (mutlaka tüm değişkenleri içermeyen) kadar değişen tek boyutlu bir "iyi" model seti oluşturmak için bir yöntemdir. Aksine, tek değişkenli filtreler yalnızca iyi tek değişkenli modeller arasından seçim yapar veya sipariş verir.

Python için kement ve elastik ağ gibi yöntemlerin scikit-öğrenmesinde bir uygulama vardır .


Ek bir kavram olarak, GWAS'ta olduğu gibi potansiyel öngörücülerin sayısı arttığında, ön seçim yapmak için bu makalede olduğu gibi bir şey yapabilirsiniz: Kement cezalandırmalı lojistik regresyon ile genom çapında ilişki analizi
Nick Sabbe

@NickSabbe, bu referans için teşekkürler. Bu çok kullanışlı. GWAS bağlamında ve muhtemelen çok sayıda ilişkili öngörücüye sahip diğer bağlamlarda, Sylvia Richardson'ın örneğin kararlılık seçimi ile bazı karşılaştırmalar temelinde Bayesian model seçimi önerdiğini duydum . MCMC hesaplamaları gerçekten zorluydu.
NRH

Adaptive kementi uygulamak daha kolay olduğu için vurgulamaya değer olduğunu düşünüyorum ( glmnetR yerine bir yerine neredeyse iki çağrı ). Başka bir seçenek de uygulanması oldukça basit olan Kement Eşiği'dir. Bkz. Springer.com/gp/book/9783642201912 bölüm 2.9 .
Benjamin Christoffersen

2

Her değişken için lojistik regresyon / ki-kare ilişkilendirme testi yapabilir ve yalnızca p değeri bir değerden düşük olanları koruyabilirsiniz, örneğin .2.


4
Bu tavsiyenin nasıl yürüdüğünü anlamak için, 100 (örneğin) önemli öngörücünün (bağımlı değişkenle yüksek derecede korelasyonlu) olduğu ve geri kalanının bağımlı değişkenle ve birbiriyle tamamen ilgisiz olduğu bir durumu düşünün. P değeri 0.2'den düşük olanları tutmak, 380'i değersiz olan yaklaşık 100 + 0.2 * (2000-100) = 480 değişkenle sonuçlanmanızı sağlar. İçin küçük veri kümeleri bu yaklaşım bazen hızlı bir başlangıç ekranı olarak kullanılır, ama gerçekten ciddiye burada kabul edilemez.
whuber

İyi nokta @whuber. Alfa düzeyinizi 100 civarında tutmak için çok daha düşük bir değere ayarlamanız gerekir, ancak daha sonra yalnızca diğerleri için etki ayarlaması yapabilecek değişkenleri kaçırabilirsiniz. Bununla birlikte, 2000'den 480'e geçmek, rastgele ormanlar gibi bir şeyi yönetmede daha yönetilebilir olabilir.
Glen

Haklısın, böyle bir taramada hak var - eğer düzgün çalışıyorsa. 480 bir azalmadır, ancak 2000 orijinal değişkenin tümü arasında yüksek korelasyon olasılığından ek problemler vardır. Bu, ilgili bir sorunun yanıtlarının bazılarında gösterildiği gibi, 100 doğru değişkenin herhangi birinin veya tamamının korunmamasına neden olabilir .
whuber
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.