Bahasa pemrograman apa yang Anda rekomendasikan untuk membuat prototipe masalah pembelajaran mesin?

12

Saat ini bekerja di oktaf, tetapi karena kemajuan dokumentasi yang buruk sangat lambat.

Bahasa apa yang mudah dipelajari dan digunakan, dan didokumentasikan dengan baik untuk memecahkan masalah pembelajaran mesin? Saya mencari prototipe pada dataset kecil (ribuan contoh), jadi kecepatan tidak penting.

EDIT: Saya sedang mengembangkan mesin rekomendasi. Jadi, saya tertarik menggunakan Reguler Linear Regression, Neural Nets, SVN atau Collaborative Filtering.

B Tujuh
sumber
1
Saya juga pernah memulai dengan Octave, karena prof saya suka matlab (ya ini asyik selama kuliah menggunakan library prof, karena matlab dan oktaf tidak memiliki sintaks yang persis sama), tapi kemudian saya beralih ke R dan hanya terpesona oleh itu dokumentasi yang unggul dan berbagai perpustakaan.
steffen
9
Python tentu saja sangat mudah dipelajari dan dibaca, jadi saya rasa ini masalah selera. Saya sarankan tautan ini: python-stat-workbench , apa-pemrograman-bahasa-untuk-statistik-inferensi , pembelajaran menggunakan mesin python , clojure
steffen
1
Saya akan merekomendasikan R, Python, atau Matlab. Untuk alasan yang terlalu luas untuk diatasi, saya akan menjatuhkan Matlab. Untuk orang statistik, saya akan menggunakan R, untuk seorang programmer, saya akan menggunakan Python. Untuk loop dalam, saya akan menggunakan C / C ++. Pada skala yang memadai, biaya Matlab melebihi manfaat apa pun.
Iterator
1
atau, lihat di julia ...
kjetil b halvorsen

Jawaban:

7

Jika Anda ingin menggunakan sesuatu di luar kotak, Weka bisa menjadi titik awal yang bagus. Tidak perlu memprogram apa pun. Anda mengimpor data Anda, memvisualisasikannya dan bermain-main dengan berbagai model.

Selanjutnya dalam rantai akan menjadi R. Ada beberapa kurva belajar yang terkait - terutama dengan munging data Anda agar sesuai dengan struktur data R tetapi setelah Anda menyelesaikannya, Anda memiliki banyak perpustakaan yang menawarkan semua kemampuan pembelajaran mesin tanpa banyak usaha.

Selanjutnya adalah pemrograman tangan algoritma pembelajaran mesin. Karena Anda sudah menggunakan Octave dan mencari alternatif, mungkin yang Anda inginkan adalah tidak menggunakan algoritma kode di beberapa sistem lain, tetapi hanya menggunakan perpustakaan yang ditulis oleh orang lain.

Jika Anda menyusuri jalan R, Anda mungkin menemukan buku karya Luis Torgo (Penggalian Data dengan R: Belajar dengan Studi Kasus) sangat berguna (pengungkapan: tidak ada afiliasi). Ini menjelaskan dalam studi kasus mendalam yang dapat Anda beradaptasi dengan masalah Anda.

Araroot
sumber
15

Anda mungkin mendapatkan jawaban yang lebih baik jika Anda menentukan algoritma spesifik yang Anda minati. Saya menggunakan R untuk hal-hal semacam ini (saya melakukan ekonometrik seri waktu, meskipun, bukan pembelajaran mesin); Anda dapat melihat fungsionalitas yang ada di sini:

http://cran.r-project.org/web/views/MachineLearning.html

dan ada kode R untuk menerapkan analisis dalam elemen pembelajaran statistik Hastie, Tibshirani dan Friedman :

http://www-stat.stanford.edu/~tibs/ElemStatLearn/

Sistem pengemasan R cukup bagus dan mendorong orang ke arah mendokumentasikan kode mereka, dan ini merupakan sumber terbuka sehingga Anda selalu dapat melihat implementasinya. Saya belum pernah menggunakan Matlab dalam beberapa tahun dan tidak menggunakannya untuk banyak pembelajaran mesin - kotak alat mereka biasanya didokumentasikan dengan baik tetapi bisa mahal, tetapi kode kontribusi pengguna akan didokumentasikan dengan buruk seperti yang lainnya.

Abu-abu
sumber
11

Dalam kursus online pembelajaran mesinnya, Andrew Ng menyarankan untuk menggunakan Octave / Matlab.

Saya sarankan Anda mendaftar di edisi berikutnya dari kursus ini: ini sangat berguna dan Anda akan belajar banyak hal tentang Oktaf dan tentang algoritma pembelajaran mesin yang berbeda.

EDIT 1 : Saya setuju dengan orang lain yang lebih suka bekerja di R. Namun, dalam menyelesaikan masalah pembelajaran mesin, sebagian besar perhitungan Anda akan dalam bentuk matriks, dan seperti yang ditunjukkan oleh @Wayne, bahasa Matlab atau Octave sangat populer karena kekuatan mereka. Anda mungkin ingin melihat solusi untuk latihan kursus pembelajaran mesin yang diusulkan oleh siswa lain; pasti Anda dapat belajar beberapa hal dari mereka:

Gkokaisel Github

Merwan Github

Manuel Ramón
sumber
1
Saya terdaftar dalam edisi kursus ini! Masalahnya adalah melakukan hal-hal paling sederhana di luar kursus tidak akan berhasil! Dokumentasi tidak berguna.
B Seven
3
Saya harus mengatakan bahwa Matlab (dengan demikian oktaf) adalah bahasa pemrograman yang mengerikan. Ini sangat populer di bidang teknik dan pembelajaran mesin, tapi itu karena kekuatannya, dan digunakan di sekolah, bukan karena itu adalah bahasa pemrograman modern. Yang mengatakan, Anda akan lebih mungkin menemukan teks pembelajaran mesin yang menggunakannya daripada Anda yang menggunakan R atau Python.
Wayne
1
Saya melakukan semua pekerjaan saya di MATLAB, itu bukan bahasa pemrograman terbaik di dunia (saya akan mengatakan R bahkan lebih buruk; o), tetapi layak untuk dipertahankan karena sangat baik untuk penelitian pembelajaran mesin. Untuk jaringan saraf, cari pustaka NETLAB, dan juga selidiki Proses Gaussian dengan pustaka GPML, keduanya merupakan bit kit yang sangat baik, dan IIRC keduanya bekerja dengan oktaf. Untuk regresi linier yang diatur, ini hanya satu baris MATLAB, untuk model non-linear, ada kotak alat GKM, theoval.cmp.uea.ac.uk/projects/gkm (maaf belum mnual belum).
Dikran Marsupial
1
Perhitungan matriks dapat dilakukan dalam R juga, meskipun notasi, misalnya, t(A) %*% Bkurang intuitif daripada di Matlab.
Itamar
1
Apakah tidak ada perpustakaan matriks yang baik untuk setiap bahasa tingkat tinggi seperti C #, Java, Python dan Perl?
B Seven
10

The scikit-belajar (sekarang sklearn) harus memenuhi beberapa kriteria yang dijelaskan (kecepatan, kelas yang dirancang untuk menangani data, model, dan hasil), termasuk aplikasi yang ditargetkan (L1 / L2 dihukum regresi, SVM, dll). Muncul dengan set dokumentasi yang kaya dan banyak contoh . Lihat juga deskripsinya dalam makalah yang diterbitkan dalam JMLR.

Kerangka kerja alternatif dalam Python adalah Oranye , yang dapat digunakan melalui GUI yang lembut atau pada baris perintah secara langsung. Untuk pemfilteran kolaboratif, pyrsvd mungkin menarik tetapi saya belum pernah mencobanya. Namun, Apache Mahout mungkin dapat digunakan untuk penyaringan kolaboratif .

chl
sumber
1

Jika Anda merujuk pada prototipe industri (yaitu sesuatu yang dilakukan untuk digunakan oleh orang-orang nyata dan bukan untuk penelitian murni) python adalah saat ini satu-satunya cara untuk pergi.

Jika Anda menggunakan Matlab, Octave atau R Anda mendapatkan lingkungan yang mudah digunakan untuk penelitian ML tetapi itu akan menjadi mimpi buruk untuk menempatkan model di tempat kerja dengan antarmuka pengguna atau dengan layanan web.

Dalam python, kita beruntung memiliki ekosistem ilmiah yang luas ( sklearn untuk ML, panda untuk data wragling, matplotlib / seaborn untuk visualisasi) dan ekosistem aplikasi (pikirkan tentang Django dan kerangka sisanya ).

Python adalah bahasa yang mudah dipelajari. Di masa depan saya berharap ekosistem Javascript akan menjadi suara ilmiah sebagai python, tetapi meskipun beberapa proyek besar saya tidak melihat itu segera hadir.

Jangan membungkus diri Anda dalam sebuah kotak, gunakan bahasa umum!

Pieroit
sumber