Gradyanı Arttırmaya Karşı Derin Öğrenme: Ne zaman kullanılır


30

Büyük bir veri setiyle ilgili büyük bir veri sorunum var (örneğin 50 milyon satır ve 200 sütun). Veri kümesi, yaklaşık 100 sayısal sütun ve 100 kategorik sütun ve ikili sınıf problemini temsil eden bir yanıt sütunundan oluşur. Kategorik sütunların her birinin önem derecesi 50'den az.

Derin öğrenme yöntemlerine mi yoksa topluluk tabanlı yöntemlere mi (örneğin gradyan artırma, adaboost veya rastgele ormanlar) gitmeli miyim bir priori bilmek istiyorum. Bir keşif veri analizi veya bir yöntemden diğerine karar vermeme yardımcı olabilecek başka teknikler var mı?


2
Veri özellikleriyle ilgili iyi bir sezginiz yoksa, her iki seçeneği de keşfedebilirsiniz (belki sadece 500.000 satırda) ve çapraz doğrulama. Fakat belki de, bu sezgiyi edinmenize yardımcı olabilecek görselleştirmeler veya başka analizler var.
Neil Slater

1
Aslında bu hafta gerçek verilerle ilgili kendi araştırmam için büyük bir model karşılaştırma yapmayı planlıyorum. Sonuçları biraz temizleyeceğim ve buraya göndereceğim. Ayrıca en az bir CS öğrencisi şu soruyu inceledi: academia.edu/3526056/…
shadowtalker

1
Gibi @NeilSlater Kimliği adresleme bir cevap görmek ne anlama sezgi kudreti / / olmalıdır olabilir
shadowtalker

1
Asıl sorunuz hakkında kısa bir yorum yapmak için hala yeterli bir üne sahip değilim ve bu gerçekten bir cevap değil. Her durumda, bu yazının bu konuyla oldukça ilgili olduğunu düşündüğümü söylemek istedim: Fernández-Delgado, M., Cernadas, E., Barro, S., & Amorim, D. (2014). Gerçek dünya sınıflandırma problemlerini çözmek için yüzlerce sınıflandırıcıya ihtiyacımız var mı? Makine Öğrenimi Araştırmaları Dergisi, 15, 3133-3181. Dl.acm.org/citation.cfm?id=2697065
José María Mateos 19

Bir keşif veri analizi veya bir yöntemden diğerine karar vermeme yardımcı olabilecek başka teknikler var mı? Genel vakada hayır, 'bedava öğle yemeği teoremi yok' bunu ispatlıyor. Ama mesela doğru yönde size rehberlik edebilir sezgisel vardır scikit-learn.org/stable/tutorial/machine_learning_map/...
Simon

Yanıtlar:


32

Neden bu iki yaklaşımla kendini kısıtlıyorsun? Çünkü onlar havalı mı? Ben her zaman basit bir doğrusal sınıflandırıcı \ regresör ile başlardım. Dolayısıyla bu durumda, Doğrusal bir SVM veya Lojistik Regresyon, tercihen verilerin büyüklüğü nedeniyle seyreklikten yararlanabilecek bir algoritma uygulaması ile. Bu veri kümesi üzerinde bir DL algoritması çalıştırmak uzun zaman alacaktır ve yalnızca normalde veriler veya metin gibi verilerde hiyerarşik bir yapı bulunan uzman problemler üzerinde derin öğrenmeyi deneyeceğim. Daha basit öğrenme problemleri için aşırı önemlidir ve öğrenmek için çok zaman ve uzmanlık gerektirir ve ayrıca DL algoritmalarının eğitilmesi çok yavaştır. Ek olarak, 50M satırınız olması, iyi sonuçlar almak için tüm veri kümesini kullanmanız gerektiği anlamına gelmez. Verilere bağlı olarak, Birkaç 100.000 satır veya birkaç milyon numune ile iyi sonuçlar alabilirsiniz. Basit, küçük bir örnek ve doğrusal bir sınıflandırıcı ile başlar ve eğer sonuçlar tatmin edici değilse, oradan daha karmaşık hale gelirdim. En azından bu şekilde bir temel kazanacaksın. Çoğu görevde daha sofistike modeller gerçekleştirmek için genellikle basit doğrusal modeller bulduk, bu nedenle daima oradan başlamak istiyorsunuz.


4
Basit bir model ve alt örneklemeyle başlamak için +1
Matt

Seyrek veriler için svm kullanmakla aynı fikirdeyim ama svm'nin bu kadar büyük boyutlu veri setlerini eğitmek için çok fazla zaman alacağını düşünmüyor musunuz!
blitu12345

Hayır, özellikle seyrekse ve doğrusal bir çekirdek kullanıyorsa. Ancak çok sayıda satırla ilgili sorunları olabilir. Her iki şekilde de bir DL modelinden çok daha hızlı bir cehennem olacak. Ancak, lojistik regresyon da önerdiğimi unutmayın.
Simon,

Benim asıl amacım basit bir doğrusal modelle başlamak ve tam veri setini bile kullanmamak, çünkü iyi performans elde etmek için tüm veri setine ihtiyaç duymanız olası değil. Say 100k satırları ve birkaç milyon kullanmak arasında doğruluk açısından çok fark olduğundan şüpheliyim.
Simon,


4

Diğer cevaplara ek olarak (ve yorumlarda bazı bağlantılar vardır), sorunun ne olduğuna veya ne tür soruları cevaplamak istediğinize bağlıdır. Yalnızca kendi tecrübelerime dayanarak önerebileceğim gibi, bir sınıflandırma görevi olması durumunda, veri kümesindeki sınıf dengesine bağlı olarak olası yöntemler ciddi şekilde sınırlandırılabilir.

Yaklaşık 1:10 sınıf dengesizliğinden daha büyük bir seviyeye gittikten sonra çoğu sınıflandırma yöntemi çalışmayı bırakıyor. Rasgele orman ve belki sinir ağlarına dayanan yöntemlerle kalacaksınız (henüz denemedim). Sınıf dengesi ile 1: 500 ila 1: 1000 aralığında çalışıyorum ve ne aşağı veya yukarı örneklemenin işe yaradığını buldum. Neyse ki veri setim "değişken" 6 milyon 200 değişkenle gözlem yapıyor ve tüm sette yükseltilmiş ağaçları makul bir zamanda çalıştırabiliyorum.

Yani doğrudan sorunuzu cevaplamak için:

  • Cevaplamak isteyeceğiniz bir sürü soru bulmalı ve sınıflandırma durumunda hedef değişkenlerin sınıf dengelerini kontrol etmelisiniz.

  • Tüm verilerinizde eksik değerlerin dağılımını (matematiksel anlamda değil) kontrol etmeli ve bulduklarınızı belgelemelisiniz. Bazı ML yöntemleri eksik değerlerle iyidir, bazıları ise değildir ve kendi veri kurallarına bakmanız gerekir (kendi kuralları ve kılavuzları ve problemleri vardır).


1
Sklearn'den SGD sınıflandırıcısını class_weight = “balanced” ile deneyin
Diego

4

Benim bakış açıma göre, 5 milyon örnek için, iyi bir genelleme sınırlaması elde etmek için çok sayıda ağaç gerekir (meslekten olmayan dönemde iyi bir model). Eğer bu bir problem değilse, o zaman buna devam edin, kesin cevap bile sizin probleminizin niteliğine dayanıyor. GBT, özellikle kategorik, sayısal ve benzeri karma özellik türleriniz varsa iyi bir yöntemdir. Ek olarak, Sinir Ağları ile karşılaştırıldığında, ayarlanacak daha az sayıda hiperparametre vardır. Bu nedenle, en iyi ayar modeline sahip olmak daha hızlıdır. Bir şey daha, paralel eğitimin alternatifidir. İyi bir CPU ile aynı anda birden fazla ağacı çalıştırabilirsin. Sonuçlardan memnun değilseniz, Sinir Ağları için gidin, çünkü bu modelinizin daha kapsamlı olması ve verileriniz üzerinden daha yüksek dereceli bilgiler öğrenmesi gerektiği anlamına gelir. Diğer öğrenme algoritmalarına göre NN'lerin nedeni budur.


4

@Simon'un söylediklerinin satırında:

  1. Derin öğrenme yaklaşımları, özellikle özellik mühendisliğinin zor olduğu ve çok çaba harcadığı vizyon, konuşma ve dil modelleme problemlerini çözmede özellikle faydalı olmuştur.
  2. Uygulamanız için durum iyi görünmüyor çünkü iyi tanımlanmış özelliklere sahip ve yalnızca özellik etkileşimleri vb. Gerekli.
  3. Derin öğrenme modelleri şu anda çok fazla bilgi işlem kaynağına ihtiyaç duyduğunu ve kodlamada bilim adamının zamana ihtiyacı olduğunu düşünürsek, derinlemesine olmayan bir öğrenme yaklaşımı seçmeyi öneririm.

Sorununuz için, eforla mücadele çabası - tradeoff, derin öğrenmenin lehine görünmüyor. DL bir overkill olurdu


1

Böyle büyük bir veri kümesine sahip olduğunuzda, istatistiksel ve makine öğrenimi modelleme tekniklerinden herhangi biriyle oynayabilirsiniz ve bu oldukça teşvik edilmektedir. Diğerlerinin önerdiği gibi, verilerden birkaç milyon rastgele örnek almanızı ve bununla oynamanızı tavsiye ederim. Bu bir sınıflandırma problemi olduğu için önce basit sınıflandırma tekniklerini takip eder, daha sonra daha karmaşık olanlarla devam ederdim. Lojistik regresyon ile başlamak harika.

Üretken modellerin de denenmesi gerektiğini eklemek istedim . Naive Bayes sınıflandırıcı , en basit olasılıklı sınıflandırıcılardan biridir ve birçok görevde destek vektör makineleri gibi birçok karmaşık yöntemden daha iyi performans gösterir. NB'nin bu basit uygulamasına ve NB'nin lojistik regresyon ile karşılaştırılması için bu linke bakabilirsiniz .

Bir temel model olarak bir Naive bayes (NB) sınıflandırıcısı oluşturabilir ve ardından Destek vektör makineleri (SVM) veya çok katmanlı algılayıcılar (MLP) gibi herhangi bir makine öğrenme tekniğine gidebilir. Burada bir takas, NB'nin hesaplamalı olarak MLP'den daha ucuz olmasıdır, bu nedenle MLP'den daha iyi performans istenmektedir.

Tam sorgunuza geliyorsanız: Derin öğrenme ve gradyan ağacı yükseltme, verilerdeki her türlü ilişkiyi modelleyebilen çok güçlü tekniklerdir. Peki ya sizin durumunuzda basit bir lojistik regresyon ya da NB istenen doğruluğu veriyorsa. Bu nedenle, önce basit teknikleri denemek ve temel performansa sahip olmak her zaman daha iyidir. Sonra bir karmaşık modeller için gidip taban çizgisi ile karşılaştırabilirsiniz.

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.