Kerangka Pembelajaran Mesin sumber terbuka baru yang ditulis dalam Java PlatoBlockchain Data Intelligence. Pencarian Vertikal. Ai.

Kerangka Pembelajaran Mesin sumber terbuka baru yang ditulis dalam Java

Saya dengan senang hati mengumumkan bahwa Kerangka Pembelajaran Mesin Datumbox sekarang bersumber terbuka di bawah GPL 3.0 dan Anda dapat mengunduh kodenya dari Github!

Apa Kerangka Ini?

Grafik Framework Pembelajaran Mesin Datumbox adalah kerangka kerja sumber terbuka yang ditulis di Java yang memungkinkan pengembangan model Pembelajaran Mesin dan aplikasi Statistik dengan cepat. Ini adalah kode yang saat ini menjalankan API Datumbox. Fokus utama framework ini adalah untuk menyertakan sejumlah besar algoritma pembelajaran mesin & metode statistik dan mampu menangani kumpulan data berukuran kecil-menengah. Meskipun kerangka kerja menargetkan untuk membantu pengembangan model dari berbagai bidang, kerangka juga menyediakan alat yang sangat berguna dalam aplikasi Pemrosesan Bahasa Alami dan Analisis Teks.

Jenis model / algoritma apa yang didukung?

Framework ini terbagi dalam beberapa Layer seperti Machine Learning, Statistika, Matematika, Algoritma dan Utilitas. Masing-masing menyediakan serangkaian kelas yang digunakan untuk melatih model pembelajaran mesin. Dua lapisan terpenting adalah lapisan Statistik dan Pembelajaran Mesin.

Lapisan Statistik menyediakan kelas untuk menghitung statistik deskriptif, melakukan berbagai jenis pengambilan sampel, memperkirakan CDF dan PDF dari distribusi probabilitas yang umum digunakan dan melakukan lebih dari 35 uji parametrik dan non-parametrik. Jenis kelas seperti itu biasanya diperlukan saat melakukan analisis data penjelasan, pengambilan sampel, dan pemilihan fitur.

Lapisan Pembelajaran Mesin menyediakan kelas yang dapat digunakan dalam banyak masalah termasuk Klasifikasi, Regresi, Analisis Kluster, Pemodelan Topik, Pengurangan Dimensi, Pemilihan Fitur, Pembelajaran Ensemble, dan Sistem Rekomendasi. Berikut adalah beberapa algoritma yang didukung: LDA, Max Entropy, Naive Bayes, SVM, Bootstrap Aggregating, Adaboost, Kmeans, Hierarchical Clustering, Model Campuran Proses Dirichlet, Regresi Softmax, Regresi Ordinal, Regresi Linier, Regresi Bertahap, PCA dan banyak lagi.

Kerangka Datumbox VS Mahout VS Scikit-Learn

Baik Mahout dan Scikit-Learn adalah proyek hebat dan keduanya memiliki target yang sangat berbeda. Mahout hanya mendukung sejumlah kecil algoritme yang dapat diparalelkan dan karenanya menggunakan kerangka kerja Map-Reduce dari Hadoop untuk menangani Big Data. Di sisi lain, Scikit-Learn mendukung sejumlah besar algoritme tetapi tidak dapat menangani sejumlah besar data. Selain itu dikembangkan dengan Python, yang merupakan bahasa yang bagus untuk pembuatan prototipe dan Scientific Computing tetapi bukan favorit pribadi saya untuk pengembangan perangkat lunak.

Kerangka Datumbox berada di tengah-tengah dua solusi. Ia mencoba untuk mendukung sejumlah besar algoritma dan itu ditulis dalam Java. Ini berarti dapat lebih mudah dimasukkan ke dalam kode produksi, lebih mudah disesuaikan untuk mengurangi konsumsi memori dan dapat digunakan dalam sistem waktu nyata. Akhirnya meskipun saat ini Kerangka Datumbox mampu menangani kumpulan data berukuran sedang, ada dalam rencana saya untuk memperluasnya untuk menangani kumpulan data berukuran besar.

Seberapa stabil itu?

Versi awal kerangka kerja (hingga 0.3.x) dikembangkan pada Agustus dan September 2013 dan ditulis dalam PHP (yeap!). Selama Mei dan Juni 2014 (versi 0.4.x), kerangka kerja ditulis ulang di Java dan ditingkatkan dengan fitur tambahan. Kedua cabang telah diuji secara ketat dalam aplikasi komersial termasuk API Datumbox. Versi saat ini adalah 0.5.0 dan tampaknya cukup matang untuk dirilis sebagai framework versi alfa publik pertama. Karena itu, penting untuk dicatat bahwa beberapa fungsi framework diuji lebih teliti daripada yang lain. Selain itu, karena versi ini adalah alfa, Anda harus mengharapkan perubahan drastis pada rilis mendatang.

Mengapa saya menulisnya dan mengapa saya membuatnya menjadi open source?

Keterlibatan saya dengan Machine Learning dan NLP dimulai pada 2009 ketika saya mendirikan WebSEOAnalytics.com. Sejak itu saya telah mengembangkan implementasi berbagai algoritma pembelajaran mesin untuk berbagai proyek dan aplikasi. Sayangnya sebagian besar implementasi asli sangat spesifik pada masalah dan hampir tidak dapat digunakan dalam masalah lain. Pada Agustus 2013, saya memutuskan untuk memulai Datumbox sebagai proyek pribadi dan mengembangkan kerangka kerja yang menyediakan alat untuk mengembangkan model pembelajaran mesin yang berfokus pada bidang NLP dan Klasifikasi Teks. Target saya adalah membangun kerangka kerja yang akan digunakan kembali di masa depan untuk mengembangkan model pembelajaran mesin dengan cepat, menggabungkannya dalam proyek yang membutuhkan komponen pembelajaran mesin atau menawarkannya sebagai layanan (Pembelajaran Mesin sebagai Layanan).

Dan di sinilah saya sekarang, beberapa baris kode kemudian, proyek open-source. Mengapa? Jawaban yang jujur โ€‹โ€‹adalah bahwa pada titik ini, bukanlah rencana saya untuk menjalani perjalanan "mari kita bangun start-up baru". Pada saat yang sama saya merasa bahwa menyimpan kode pada hard disk saya jika saya membutuhkannya di masa mendatang tidak masuk akal. Jadi satu-satunya hal yang logis untuk dilakukan adalah dengan membuatnya menjadi sumber terbuka. ๐Ÿ™‚

Dokumentasi?

Jika Anda membaca dua paragraf sebelumnya, Anda mungkin akan melihat ini datang. Karena kerangka tidak dikembangkan dengan pemikiran bahwa saya akan membagikannya dengan orang lain, dokumentasinya buruk / tidak ada. Sebagian besar kelas dan metode publik tidak diberi komentar dengan benar dan tidak ada dokumen yang menjelaskan arsitektur kode. Untungnya semua nama kelas sudah cukup jelas dan framework menyediakan pengujian JUnit untuk setiap metode & algoritme publik dan ini dapat digunakan sebagai contoh cara menggunakan kode. Saya berharap dengan bantuan komunitas kami akan membangun dokumentasi yang tepat, jadi saya mengandalkan Anda!

Batasan Saat Ini dan Perkembangan Masa Depan

Seperti di setiap perangkat lunak (dan terutama proyek sumber terbuka dalam versi alfa), Kerangka Pembelajaran Mesin Datumbox hadir dengan batasan unik dan menggemaskan. Mari kita gali lebih dalam:

  1. Dokumentasi: Seperti disebutkan sebelumnya, dokumentasinya buruk.
  2. Tidak Ada Multithreading: Sayangnya kerangka kerja saat ini tidak mendukung Multithreading. Tentu kita harus mencatat bahwa tidak semua algoritma pembelajaran mesin dapat diparalelkan.
  3. Contoh Kode: Karena framework baru saja diterbitkan, Anda tidak dapat menemukan contoh kode apa pun di web selain yang disediakan oleh framework dalam bentuk pengujian JUnit.
  4. Struktur Kode: Membuat arsitektur yang kokoh untuk setiap proyek besar selalu menantang, apalagi ketika Anda harus berurusan dengan algoritma Pembelajaran Mesin yang berbeda secara signifikan (pembelajaran yang diawasi, pembelajaran tanpa pengawasan, algoritma pengurangan dimensi, dll).
  5. Persistensi Model dan Pengumpulan Data Besar: Saat ini model dapat dilatih dan disimpan baik pada file pada disk atau dalam database MongoDB. Untuk dapat menangani sejumlah besar data, solusi lain harus diselidiki. Sebagai contoh PetaDB sepertinya kandidat yang baik untuk menyimpan data dan parameter saat pelatihan. Selain itu, penting untuk menghapus 3rd perpustakaan pihak yang saat ini menangani model yang bertahan lama dan mengembangkan solusi kering dan modular yang lebih baik.
  6. Algoritme baru /tes / model: Ada begitu banyak teknik hebat yang saat ini tidak didukung (terutama untuk analisis deret waktu).

Sayangnya semua hal di atas terlalu banyak pekerjaan dan hanya ada sedikit waktu. Itulah sebabnya jika Anda tertarik dengan proyek ini, maju dan bantu saya dengan semua hal di atas. Selain itu, saya ingin sekali mendengar dari orang-orang yang memiliki pengalaman dalam proyek open-sourcing menengah-besar dan dapat memberikan tips tentang cara mengelolanya. Selain itu, saya akan berterima kasih kepada setiap jiwa pemberani yang berani melihat kode dan mendokumentasikan beberapa kelas atau metode publik. Last but not least jika Anda menggunakan kerangka kerja untuk sesuatu yang menarik, tolong kirimkan saya baris atau bagikan dengan posting blog.

Akhirnya saya ingin mengucapkan terima kasih kepada cinta saya Kyriaki karena telah mentolerir saya selama menulis proyek ini, teman saya dan super-ninja-Java-developer Eleftherios Bmpaletakis untuk membantu masalah Java yang penting dan Anda untuk terlibat dalam proyek. Saya menantikan komentar Anda.

Stempel Waktu:

Lebih dari kotak data