Büyük Verilerde Lojistik Regresyon


9

5000 civarında veri setim var. Bu veriler için ilk önce özellik seçimi için Chi Square testini kullandım; Bundan sonra, cevap değişkeni ile anlamlılık ilişkisi gösteren yaklaşık 1500 değişkenim oldu.

Şimdi bunun üzerine lojistik gerilemeye uymalıyım. R için glmulti paket kullanıyorum (glmulti paket vlm için verimli alt küme seçimi sağlar) ancak bir seferde sadece 30 özellik kullanabilir, aksi takdirde veri kümemdeki satır sayısı 20000 civarında olduğu için performansı düşer.

Yukarıdaki sorunları çözmek için başka yaklaşımlar veya teknikler var mı? Yukarıdaki yöntemle gidersem modele uymak çok fazla zaman alacaktır.


8
Veri
kümenizi

Ben kullanıyorum sklearn's LogisticRegressionve bu benim laptop yaklaşık bir dakika içinde 4000 özellikleri, 20.000 satır sorunu çözer.
Thomas Ahle

Yanıtlar:


13

Özellik taraması yapmak ve daha sonra hayatta kalan özellikleri daha önce ne kadar veri işkencesinin yapıldığını anlamayan bir yönteme beslemek uygun değildir. Tüm potansiyel özellikleri (ör. Elastik ağ) ele alabilecek bir yöntem kullanmak daha iyidir. Başkalarının veri azaltma konusundaki önerileri de mükemmel fikirlerdir.


Bunun kanıtı var mı? O / w özellik taraması kadar sezgisel görünmektedir.
Zubin

2
Cezalandırılmış maksimum olabilirlik kestirimi bağlamı dikkate alır, örneğin, kementte, seçilmemiş 1000 değişkeni düşündüğünüzden 100 seçilmemiş değişkeni düşündüğünüzden daha düşük olacaktır. Aksi takdirde, değişkenler önyargılı bir şekilde seçilir ve değişkeni ikinci adımda yeniden takmak bağlamı kaybeder.
Frank Harrell

Burada önyargılı olarak kastettiğiniz şeyi biraz daha açıklayabilir misiniz? Merak ediyorum, çünkü önemsiz bir anlamda kement her zaman önyargılıdır, bu yüzden ek bir önyargıya başvurmanız gerekir. Ayrıca, makul özelliklere sahip iki aşamalı yaklaşımlar vardır, örneğin pdfs.semanticscholar.org/d90a/…
jmb

2
Kement sıfıra doğru bilerek önyargıların katsayıları aşırı oturma önlemek için. Deneyimsiz parametreler çok aşırı tahmin edilen değerlere yol açar. "Seçilmemiş" değişkenlerin bir unpalize edilmemiş modele takılması, gerekli kement sapmasını geri alacak ve tahmin edilen değerlerin çok fazla takılmasını sağlayacaktır .
Frank Harrell

10

İlk yaklaşım, veri kümesinin boyutsallığını azaltmak için PCA kullanmaktır. Toplam varyansın ~% 97'sini tutmaya çalışın, bu biraz yardımcı olabilir.

Başka bir seçenek, stokastik gradyan inişi gibi bir şey kullanmaktır, bu çok daha hızlı bir algoritma olabilir ve R'nin belleğine sığabilir.

DÜZENLEME: R ile ilgili bir sorun, RAM'inizi yalnızca 8 GB belleğiniz varsa kullanabilmenizdir. Bu konuda birçok sorunla karşılaştım ve o zamandan beri daha büyük veri kümelerini daha iyi idare ettiği anlaşılan python'un scikit-öğrenmesini kullanmaya başladım.

Veri kümesi boyutunuza dayalı olarak başlayacak yerler hakkında fikir veren çok güzel bir grafik burada bulunabilir: http://3.bp.blogspot.com/-dofu6J0sZ8o/UrctKb69QdI/AAAAAAAADfg/79ewPecn5XU/s1600/scikit-learn-flow -chart.jpg

resim açıklamasını buraya girin


8
PCA'nın bu şekilde kullanılmasıyla ilgili büyük bir endişe , yanıt değişkeni ile bağımsız değişkenler arasındaki tüm ilişkinin ihmal ettiğiniz toplam varyansın% 3'ünde bulunabilmesidir. Kaç ana bileşenin kullanılacağını belirlemenin herhangi bir genel yolu yoktur, çünkü en küçük bileşen yanıtın kendisiyle orantılı olabilir ve bu nedenle dahil edilecek değişkenlerin en uygun seçimini oluşturur.
whuber

1
Aslında veri kümesini ana belleğe yükleyebiliyorsanız (ki açıkladığınız şeyi düşünüyor olursak), boyutsal küçültme tekniklerini denemeden önce atmanız gereken ilk adım stokastik degrade iniştir. Python'da Scikit-learn (veya R, ancak bu dilin bir kullanıcısı değilim) ile, bu iyi çalışır.
Bertrand R

Bunun yararlı bir cevap olduğunu düşünüyorum, ancak OP'nin özellik azaltımını değil, lojistik regresyonu sorduğunu düşünüyorum. Belki bir baskıda sorunun o kısmını ele alabilirsiniz?
logc

PCA'nın regresyon problemleri için ne kadar yararlı olduğundan emin değilim. Sorun şudur: PCA, giriş matrisinin en büyük tekil değerlerini tutar, ancak matrisin sahte tersi, tekil değerleri tersine çevirir, böylece orijinal değerlerin en küçüklerini korumak istersiniz . Sadece verileri çizmek daha iyi olabilir: arxiv.org/abs/1411.4357
Thomas Ahle

4

@Frank Harrell'in daha önce de belirtildiği gibi, 5000 özelliğin ( p ) tümüyle cezalandırılmış regresyon yapmak için elastik ağ veya LASSO kullanmak , özellik seçimi için iyi bir başlangıç ​​olacaktır (biri, 3500 değişkenleri basitçe kaldıramaz çünkü ilginin bağımlı değişkeni). Bu yöntemlerden her ikisi de R paketi kullanılarak gerçekleştirilebilir glmnet.

İlgilenilen potansiyel öngörücü değişkenler ( p = 5000) arasında paylaşılan ilişkileri dikkate almak için, paketi kullanarak rastgele bir orman çalıştırmayı randomForestve / veya potansiyel öngörücü değişkenlerin göreceli önemini değerlendirmek için paketi kullanarak gradyanı artırmayı öneriyorum. gbmikili sonuç açısından. Bu bilgilerle, daha cimri bir lojistik regresyon modeli oluşturmaya çok daha hazır olacaksınız.


3
Hayır, hangi parametrelerin modelden kaldırılacağına karar vermek için veri tarama yapmak doğru değildir. Rastgele ormanların değeri, elastik ağ gibi, doğru miktarda büzülmeyi içermesidir. maskelenmemiş bir şekilde bulunan değişkenlerin bir alt kümesiyle başlamak, yanlılığa neden olacaktır. Y
Frank Harrell

1

Sanırım R ile sınırlı değilsiniz, çünkü bu muhtemelen olmamalı büyük bir veri problemidir. Apache Spark'ın ölçeklenebilir makine öğrenme kütüphanesi olan MLlib'i deneyebilirsiniz .

Apache Spark , bellek içi büyük ölçekli veri işleme için hızlı ve genel bir motordur. Bunlar, basit programlama modelleri kullanarak büyük veri kümelerinin bilgisayar kümeleri arasında dağıtılmış işlenmesine olanak tanıyan bir Hadoop çerçevesi üzerinde çalışır. Her biri yerel hesaplama ve depolama sunan tek sunuculardan binlerce makineye ölçeklendirilmek üzere tasarlanmıştır.

'Binlerce makinenin' isteğe bağlı olduğunu (!) Unutmayın, yerel iş / ev masaüstünüzde de ayarlayabilirsiniz.

MLlib'e geri dönersek, kutunun dışında aşağıdaki algoritmalar bulunur:

  • K-K-araçları ile kümeleme anlamına gelir || başlatma.
  • L1 ve L2 düzenli doğrusal regresyon.
  • L1 ve L2 düzenli lojistik regresyonu.
  • Alternatif derecelendirme, açık derecelendirmeler veya örtülü geri bildirimlerle birlikte en küçük kareler ortak filtreleme.
  • Naif Bayes multinom sınıflaması.
  • Stokastik gradyan kökenli.

Düzenli olarak büyük verilerle çalışıyorsanız, bir Hadoop çözümü benimsemeniz gerekebilir.


0

Vowpal Wabbit: Vowpal Wabbit'i deneyebilirsiniz . Çok büyük veri kümeleri ve çok sayıda özellik ile iyi çalışır.

web sitesine göre:

Bu Yahoo! Hızlı, ölçeklenebilir, kullanışlı bir öğrenme algoritması tasarlamak için Microsoft Research'te araştırma yapın ve devam edin. VW, terafeature veri kümelerinden kolaylıkla öğrenebilen, makine öğreniminde hızın özüdür. Paralel öğrenme yoluyla, öğrenme algoritmaları arasında bir ilk olan doğrusal öğrenme yaparken herhangi bir tek ağ arayüzünün verimini aşabilir.

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.