Seyrek öngörücüler ve yanıtlar kullanan CART benzeri yöntemler için kullanılabilir kitaplık var mı?


11

R'deki gbm paketini kullanarak bazı büyük veri kümeleri ile çalışıyorum. Hem yordayıcı matrisim hem de yanıt vektörüm oldukça seyrek (yani çoğu giriş sıfır). Burada yapıldığı gibi, bu seyreklikten yararlanan bir algoritma kullanarak karar ağaçları oluşturmayı umuyordum ). Bu makalede, benim durumumda olduğu gibi, çoğu öğe birçok olası özellikten sadece birkaçına sahiptir, bu nedenle veriler açıkça aksi belirtilmedikçe, öğelerinin belirli bir özellikten yoksun olduğunu varsayarak çok fazla boşa hesaplamadan kaçınabildiler. Umarım bu tür bir algoritma kullanarak benzer bir hızlanma elde edebilirim (ve sonra tahminsel doğruluğumu geliştirmek için etrafına bir yükseltme algoritması sararak).

Kodlarını yayınlamadıkları için, bu durum için optimize edilmiş açık kaynaklı paketler veya kütüphaneler (herhangi bir dilde) olup olmadığını merak ediyordum. İdeal olarak, doğrudan R'nin Matrixpaketinden seyrek bir matris alabilecek bir şey istiyorum , ancak alabileceğimi alacağım.

Etrafa baktım ve bu tür şeyler orada olmalı:

  • Kimyagerler bu konuya çok fazla giriyor gibi görünüyor (yukarıda bağlantılı olduğum makale yeni ilaç bileşikleri bulmayı öğrenmekle ilgiliydi), ancak bulabildiğim uygulamalar ya kimyasal analiz için özel ya da son derece uzmanlaşmıştı. Yine de bunlardan birinin yeniden tasarlanması mümkündür.

  • Belge sınıflandırması, seyrek özellik alanlarından öğrenmenin yararlı olduğu bir alan gibi görünmektedir (belgelerin çoğu kelime içermez). Örneğin, bu makalede C4.5'in (CART benzeri bir algoritma) seyrek uygulanmasına eğik bir referans var , ancak kod yok.

  • Göre posta listesine WEKA seyrek veri kabul edebilir, ancak yukarıda bağlantılı gazetede metodunun aksine, WEKA aslında boşa CPU döngülerini kaçınarak açısından yararlanmak üzere optimize edilmemiştir.

Şimdiden teşekkürler!


2
R değil, Python scikits.learn , seyrek matrisler için büyüyen bir desteğe sahiptir.
chl

@ ch1 teşekkürler. Henüz ağaç yöntemi eklememiş gibi görünüyorlar. Birisi bir uygulama üzerinde çalışıyor , ancak seyrek verileri kullanıp kullanamayacağından emin değilim. Yine de, seyrek SVM yöntemlerini kesinlikle aklımızda tutacağım!
David J. Harris

"CART benzeri" derken özellikle karar ağaçları veya herhangi bir tahmine dayalı model ister misiniz?
Michael McGowan

@Michael - Ağaçları rica ediyorum, çünkü onları güçlendirici bir prosedürle besleyeceğim ve yüksek varyansları var.
David J. Harris

2
Bir ağaç modellerinin biliyorum, ama yok glmnetve e1071::svmher iki support seyrek Matrixnesneler. GAMboostve GLMboost(paketten GAMboost) de olabilir.
Zach

Yanıtlar:


2

Rf'lerde kullanılan modern bir CART uygulamalarına karşı seyrek uygulamalarının bir ölçütünü görmek istiyorum. Bu makale bu alandaki ilerlemeler açısından oldukça eskidir ve hala önemli bir hızlanma sağladığında şaşırırdım.

Bunun nedeni, bölünmüş aramada Quicksort gibi akıllı bir sıralama algoritmasının kullanılması, neredeyse sabit özellikler (seyrek olanlar dahil) için O (n) 'ye yakın performans sağlayabilmesidir. Hızlı uygulamalar ayrıca bir özelliğin bir ağaç dalı içinde sabit hale geldiğini ve artık incelenmemesi gerektiğini de izler. Yoğun özellik gösterimleri, cpu önbellek dostu bir şekilde hızlı görünüm sağlar, böylece cpu döngülerinde kazanmak için gerçekten akıllı bir seyrek temsile ihtiyacınız olacaktır.

Bu, burada , burada , burada tartışılmaktadır .

Aslında benim rf paket CloudForest bir noktada veri seyrek veri temsili uyguladım ama veri yavaş bir temsil sonra yavaş olduğunu bulundu ve bazı bellek avantajları sağlasa da terk etti.

Benim tavsiyem scikit öğrenmeyi ya da cloudforest'i bir şeyleri arttırmak için inşa etmek ve yeterince hızlı olup olmadığını görmek olacaktır. Standart olmayan bir şey yapmak istiyorsanız her ikisi de özel yükseltme ölçütleriyle genişletilebilir. (Aslında aslında bulut ormanını, tanımladığınız şeye çok benzeyen büyük, oldukça boyutlu genetik veri kümeleriyle çalışmak için yazdım).


1

Muhtemelen bundan faydalanacak herhangi bir kod için küçük bir şans var - kendi başınıza bir şeyler yazmayı tercih edersiniz.
Bununla birlikte, diğer seçenek, gereksiz bilgileri kaldırarak verilerinizin boyutunu azaltmak için verilerinizi dönüştürmektir. Verileriniz hakkında bilgi olmadan nasıl olduğunu söylemek zordur, ancak belki örtüşmediğini, PCA bölümlerini veya bazı tanımlayıcıların temsilini değiştirmediğini bildiğiniz bazı özellikleri birleştirebilirsiniz? Ayrıca, yanıtınızın da seyrek olduğunu söylüyorsanız, yanıt olarak 0 olan nesnelere örnek almanız makul olabilir?


Yanıtınız için teşekkürler. Aşağı örnekleme kulağa ilginç bir fikir gibi geliyor. Şu anda, verilerin bazı yönlerini başka nedenlerle ağırlıklandırıyorum , ancak bu da iyi bir fikir olabilir. Peki, bunun için kodun neden mümkün olmadığını söylüyorsunuz? 12 yıl önce aynı sorunu ele almış gibi görünen bir makaleyle bağlantı kurdum.
David J. Harris

@David Kısacası, bunun mantıklı olmadığını hissediyorum - bu bir "yanlış soru" problemidir. Seyreklik, verilerin son derece yetersiz olduğunu ve çok daha etkili bir yaklaşımın onu dönüştürmeye çalışmak olduğunu göstermektedir. Bağladığınız kağıt biraz başka bir problem.

Korkarım ne dediğini anlamıyorum. Verilerin biçimini dönüştürmek tam olarak yapmak istediğim şeydir ve anlayabildiğim kadarıyla, bu makalenin yaptığı da tam olarak budur. Her kimyasalın eksik olduğu tüm özellikleri listelemek istemediler, sadece sahip oldukları özellikleri listelemek istediler. Bu, durumlarında mantıklıydı çünkü çoğu kimyasal, benim durumumda olduğu gibi çoğu özellikten yoksundur. Böylece özelliklerini seyrek bir matrise ve daha sonra doğrudan bu seyrek matristeki özyinelemeli bölümleme algoritmasına dönüştürdüler. Verilerimle aynı şeyi yapmanın açık kaynaklı yollarını arıyorum. Neyi kaçırıyorum? Teşekkürler
David J. Harris

@David, bence mbq'ın amacı, büyük bir 1-n-kodlama (örneğin, web sitesi / müşteri vb. Tanımlayıcı) veya mevcut kimyasallar listesinin genellikle öğrenme için çok kötü bir temsil olmasıdır. Örneğin, bir web sitesi için kategorizasyon olabilir: dükkan / haber / blog spor / teknoloji vb
seanv507

1

R'deki caretpakete baktınız mı ? rpart, ctreeVe gibi özyinelemeli bölümleme için bazıları da dahil olmak üzere çeşitli modellerin kullanımını kolaylaştıran bir arayüz sağlar ctree2.


Bu paketlere / işlevlere aşinayım ve hiçbiri, anlayabildiğim kadarıyla seyrek veriler üzerinde çalışmıyor.
David J. Harris

1
Matrixnesneler için düzeltme desteği harika olurdu, ancak şu anda mevcut değil. Her şey bir data.frame'e zorlanır.
Zach

Geliştiriciye e-posta göndermeyi ve ona bunu sormayı deneyebilirsiniz. Onu başka bir şeye e-postayla gönderdim ve yardımcı bir cevap verdi - max.kuhn [at] pfizer.com
paul
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.