En az bellek kullanarak verileri eğitmenin en etkili yolu nedir?


10

Bu benim egzersiz verilerim: 200.000 Örnek x 10.000 Özellikler. Bu yüzden eğitim veri matrisim - 200.000 x 10.000.

Her örnek için özellikleri oluştururken, her veri kümesini tek tek (bir örnek sonra) kaydederek bellek sorunları olmadan bunu düz bir dosyaya kaydetmeyi başardım.

Ancak, şimdi Milk , SVM ışığı veya başka bir Makine Öğrenimi Algoritması kullandığımda, her şey tek tek eğitmek yerine tüm eğitim verilerini belleğe yüklemeye çalışıyor. Ancak sadece 8 GB RAM'im var, bu yüzden devam edemiyorum.

Zaten algoritma bir veri kümesi bir veri kümesi tarafından eğitmek olabilir biliyor musunuz? Yani, eğitim sırasında her an belleğe bir veri setim yüklenecek.


1
"Her veri kümesini tek tek kaydet" ile ne demek istiyorsun? Şunu mu demek istediniz: "verinin her satırı?" Tek tek kaydettiğiniz birden çok veri kümeniz varsa, neden bunları tek tek yüklemeyip algoritmayı her birine uymuyorsunuz?
Zach

1
"Bir veri kümesi tek bir veri kümesi" satır satır anlamına mı geliyor? Yani bir veri seti = 10000 özellik? Bu durumda, çevrimiçi algoritmalar aradığınız bir şey olabilir, bkz: en.wikipedia.org/wiki/Online_algorithm ve en.wikipedia.org/wiki/Online_machine_learning . SVM ve rastgele ormanlar gibi birçok makine eğilme algoritması için çevrimiçi versiyon mevcuttur.
Herra Huu

Teşekkürler .. Zach ve Herra. Soruyu birer birer daha net tanımlamak için düzenledim. Ve evet, Çevrimiçi Öğrenmeyi düşünüyordum, ancak çevrimiçi algoritmaları hiç düşünmedim, bunu okutayım ve deneyeyim.
madCode

Yanıtlar:


4

Bu tür öğrenme için terimin temel dışı öğrenme olduğuna inanıyorum . Bir öneri, uygun bir R kütüphanesine ve diğer birçok dil için kütüphanelere sahip olan vowpal wabbit'tir .


Yüklerken boost ile bağımlılık sorunları yaşıyorum. Bunu neden aldığım hakkında bir fikrin var mı? bit.ly/L939DO
madCode

@madCode Asla vowpal wabbit kullanmadım, bu yüzden yüklemenize yardımcı olamam. Posta listelerinin mükemmel olduğunu duydum ve kurulum için yardım bulabileceğinizden eminim.
Zach

Hey..Zach. İyi çalıştı. Yükledim ve hatta tahminler veriyorum. teşekkürler :-)
madCode

1

Ben yürekten ikinci önerim. vowpal wabbit mükemmel bir seçenektir ve hızı ile şaşırırsınız. 200k x 10k veri seti vowpal wabbit normları tarafından büyük kabul edilmez.

vowpal_wabbit (kaynak biçiminde https://github.com/JohnLangford/vowpal_wabbit , Ubuntu evreninde standart paket olarak daha eski bir sürüm mevcuttur) çok esnek girişe sahip hızlı bir çevrimiçi doğrusal + bilinear öğrenicidir. İkili ve sayısal değerli özellikleri karıştırabilirsiniz. Değişken adları "olduğu gibi" çalışacağı için özelliklerin numaralandırılmasına gerek yoktur. Bir ton seçenek, algoritma, azaltma, kayıp fonksiyonu ve hepsi bir arada büyük esnekliğe sahiptir. E-posta listesine katılabilir (github aracılığıyla bulabilirsiniz) ve herhangi bir soru sorabilirsiniz. Topluluk çok bilgili ve destekleyicidir.


1

Benzer soruyu burada yanıtladı . Önemli olan çoğu makine öğrenimi / veri madenciliği algoritması, tüm verileri belleğe yükleyen toplu öğrenicilerdir. Bu nedenle, çok büyük veri kümeleri için olduğu gibi farklı araçlara ihtiyacınız vardır. Bu soruların araçlarına da bakın.

Çevrimiçi Öğrenme algoritmaların bellek ayak izini azaltmanın bir yoludur.

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.