Apa cara paling efisien untuk melatih data menggunakan sedikit memori?

10

Ini adalah data pelatihan saya: 200.000 Contoh x 10.000 Fitur. Jadi matriks data pelatihan saya adalah - 200.000 x 10.000.

Saya berhasil menyimpan ini dalam file datar tanpa memiliki masalah memori dengan menyimpan setiap dataset satu per satu (satu contoh demi satu) karena saya menghasilkan fitur untuk setiap contoh.

Tapi, sekarang ketika saya menggunakan Milk , SVM light , atau Algoritma Pembelajaran Mesin lainnya, semuanya mencoba memuat seluruh data pelatihan ke dalam memori alih-alih melatihnya satu per satu. Namun saya hanya memiliki 8 GB RAM, jadi saya tidak dapat melanjutkan dengan cara ini.

Tahukah Anda bahwa saya bisa melatih algoritma satu set data dengan satu set data? Yaitu, sehingga setiap saat saya hanya memiliki satu dataset dimuat ke dalam memori, saat pelatihan.

madCode
sumber
1
Apa yang Anda maksud dengan "simpan setiap dataset satu per satu?" Apakah maksud Anda "setiap baris data?" Jika Anda memiliki beberapa kumpulan data, yang Anda simpan satu per satu, mengapa tidak memuatnya satu per satu dan sesuaikan algoritme dengan masing-masing?
Zach
1
Apakah "satu set data dengan satu set data" berarti baris demi baris? Yaitu satu dataset = 10.000 fitur? Jika itu yang terjadi, maka algoritma online mungkin sesuatu yang Anda cari, lihat: en.wikipedia.org/wiki/Online_algorithm dan en.wikipedia.org/wiki/Online_machine_learning . Ada versi online untuk banyak algoritma condong mesin, misalnya SVM dan hutan acak.
Herra Huu
Terima kasih .. Zach dan Herra. Saya mengedit pertanyaan untuk mendefinisikan satu per satu dengan lebih jelas. Dan ya, saya memikirkan Pembelajaran Online tetapi tidak pernah memikirkan algoritma online, izinkan saya membaca tentang itu dan mencobanya.
madCode

Jawaban:

4

Saya percaya istilah untuk jenis pembelajaran ini adalah pembelajaran di luar inti . Salah satu saran adalah vowpal wabbit , yang memiliki perpustakaan R yang mudah digunakan , serta perpustakaan untuk banyak bahasa lainnya.

Zach
sumber
Saya mengalami masalah dependensi dengan peningkatan saat menginstalnya. apakah Anda tahu mengapa saya mendapatkan ini? bit.ly/L939DO
madCode
@madCode Saya sebenarnya tidak pernah menggunakan vowpal wabbit, jadi saya tidak dapat membantu Anda menginstalnya. Saya pernah mendengar milis mereka sangat bagus, dan saya yakin Anda dapat menemukan bantuan di sana untuk menyiapkannya.
Zach
Hei..Zach. Itu bekerja dengan baik. Saya menginstalnya dan bahkan memberi saya prediksi. terima kasih :-)
madCode
1

Saya sungguh-sungguh mendukung saran Zach. vowpal wabbit adalah pilihan yang sangat baik, dan Anda akan terkejut oleh kecepatannya. Set data 200k x 10k tidak dianggap besar menurut norma vowpal wabbit.

vowpal_wabbit (tersedia dalam bentuk sumber melalui https://github.com/JohnLangford/vowpal_wabbit , versi yang lebih lama tersedia sebagai paket standar di alam semesta Ubuntu) adalah pembelajar linear + bilinear yang cepat, dengan input yang sangat fleksibel. Anda dapat mencampur fitur biner dan nilai numerik. Tidak perlu memberi nomor fitur karena nama variabel akan berfungsi "apa adanya". Ia memiliki banyak pilihan, algoritme, reduksi, fungsi kerugian, dan fleksibilitas luar biasa. Anda dapat bergabung dengan milis (temukan melalui github) dan ajukan pertanyaan. Masyarakat sangat berpengetahuan dan mendukung.

diri sendiri
sumber
1

Saya menjawab pertanyaan serupa di sini . Poinnya adalah kebanyakan pembelajaran mesin / algoritma penambangan data adalah pemelajar batch yang memuat semua data ke memori. Oleh karena itu Anda memerlukan alat yang berbeda untuk kumpulan data yang sangat besar seperti yang Anda miliki. Lihat alat pertanyaan itu juga.

Pembelajaran Online adalah cara untuk mengurangi jejak memori dari algoritma.

Atilla Ozgur
sumber