Java PlatoBlockchain Veri Zekası ile yazılmış yeni açık kaynaklı Makine Öğrenimi Çerçevesi. Dikey Arama. Ai.

Java ile yazılmış yeni açık kaynaklı Makine Öğrenimi Çerçevesi

Datumbox Machine Learning Framework'ün artık GPL 3.0 altında açık kaynaklı olduğunu duyurmaktan mutluluk duyuyorum ve kodunu şu adresten indirebilirsiniz: Github!

Bu Çerçeve nedir?

The Datumbox Makine Öğrenimi Çerçevesi Java ile yazılmış, Makine Öğrenimi modellerinin ve İstatistik uygulamalarının hızlı bir şekilde geliştirilmesini sağlayan açık kaynaklı bir çerçevedir. Şu anda Datumbox API'sini çalıştıran koddur. Çerçevenin ana odak noktası, çok sayıda makine öğrenimi algoritması ve istatistiksel yöntemi içermek ve küçük-orta ölçekli veri kümelerini işleyebilmektir. Çerçeve, çeşitli alanlardan modellerin geliştirilmesine yardımcı olmayı hedeflese de, aynı zamanda Doğal Dil İşleme ve Metin Analizi uygulamalarında özellikle yararlı olan araçlar da sağlar.

Ne tür modeller / algoritmalar desteklenir?

Çerçeve, Makine Öğrenimi, İstatistik, Matematik, Algoritmalar ve Yardımcı Programlar gibi birkaç Katmana bölünmüştür. Her biri, makine öğrenimi modellerini eğitmek için kullanılan bir dizi sınıf sağlar. En önemli iki katman İstatistikler ve Makine Öğrenimi katmanıdır.

İstatistik katmanı, tanımlayıcı istatistiklerin hesaplanması, çeşitli örnekleme türlerinin gerçekleştirilmesi, yaygın olarak kullanılan olasılık dağılımlarından CDF'lerin ve PDF'lerin tahmin edilmesi ve 35'in üzerinde parametrik ve parametrik olmayan testin gerçekleştirilmesi için sınıflar sağlar. Bu tür sınıflar genellikle açıklayıcı veri analizi, örnekleme ve özellik seçimi yapılırken gereklidir.

Makine Öğrenimi katmanı, sınıfların Sınıflandırma, Regresyon, Küme Analizi, Konu Modelleme, Boyut Azaltma, Özellik Seçimi, Topluluk Öğrenme ve Önerici Sistemleri gibi çok sayıda problemde kullanılabilmesini sağlar. Desteklenen algoritmalardan bazıları şunlardır: LDA, Max Entropy, Naive Bayes, SVM, Bootstrap Aggregating, Adaboost, Kmeans, Hierarchical Clustering, Dirichlet Process Mixture Models, Softmax Regression, Ordinal Regression, Linear Regression, Stepwise Regression, PCA ve daha fazlası.

Datumbox Çerçevesi Mahout'a Karşı Scikit-Learn'e Karşı

Hem Mahout hem de Scikit-Learn harika projelerdir ve her ikisinin de tamamen farklı hedefleri vardır. Mahout, paralelleştirilebilen çok sınırlı sayıda algoritmayı destekler ve bu nedenle Büyük Verileri işlemek için Hadoop'un Map-Reduce çerçevesini kullanır. Öte yandan Scikit-Learn, çok sayıda algoritmayı destekler ancak büyük miktarda veriyi işleyemez. Dahası, prototipleme ve Bilimsel Hesaplama için harika bir dil olan ancak yazılım geliştirme konusunda kişisel favorim olmayan Python'da geliştirildi.

Datumbox Çerçevesi iki çözümün ortasında yer alır. Çok sayıda algoritmayı desteklemeye çalışır ve Java ile yazılmıştır. Bu, üretim koduna daha kolay dahil edilebileceği, bellek tüketimini azaltmak için daha kolay ayarlanabileceği ve gerçek zamanlı sistemlerde kullanılabileceği anlamına gelir. Son olarak, şu anda Datumbox Framework orta ölçekli veri kümelerini işleme kapasitesine sahip olsa da, büyük boyutlu veri kümelerini işlemek için genişletme planlarım dahilinde.

Ne kadar kararlı?

Framework'ün ilk sürümleri (0.3.x'e kadar) 2013'ün Ağustos ve Eylül aylarında geliştirildi ve PHP'de (evet!) Yazılmıştır. Mayıs ve Haziran 2014'te (0.4.x sürümleri), çerçeve Java'da yeniden yazıldı ve ek özelliklerle zenginleştirildi. Her iki şube de Datumbox API dahil ticari uygulamalarda yoğun bir şekilde test edildi. Mevcut sürüm 0.5.0 ve çerçevenin ilk genel alfa sürümü olarak piyasaya sürülecek kadar olgun görünüyor. Bunu söyledikten sonra, çerçevenin bazı işlevlerinin diğerlerinden daha kapsamlı bir şekilde test edildiğini belirtmek önemlidir. Üstelik bu sürüm alfa olduğundan, gelecekteki sürümlerde büyük değişiklikler beklemelisiniz.

Neden yazdım ve neden açık kaynaklıyım?

Makine Öğrenimi ve NLP ile ilişkim, WebSEOAnalytics.com'u kurduğum 2009 yılına dayanıyor. O zamandan beri çeşitli projeler ve uygulamalar için çeşitli makine öğrenimi algoritmalarının uygulamalarını geliştiriyorum. Maalesef orijinal uygulamaların çoğu probleme özeldi ve başka herhangi bir problemde pek kullanılamıyorlardı. Ağustos 2013'te Datumbox'ı kişisel bir proje olarak başlatmaya ve NLP ve Metin Sınıflandırma alanına odaklanan makine öğrenimi modelleri geliştirmek için araçlar sağlayan bir çerçeve geliştirmeye karar verdim. Hedefim, hızlı makine öğrenimi modelleri geliştirmek için gelecekte yeniden kullanılacak bir çerçeve oluşturmak, bunu makine öğrenimi bileşenleri gerektiren projelere dahil etmek veya bir hizmet olarak sunmaktı (Makine Öğrenimi).

Ve şimdi buradayım, birkaç satır kod sonra, projeyi açık kaynaklı hale getiriyorum. Neden? Dürüst cevap şu ki, bu noktada planlarımda "hadi yeni bir başlangıç ​​yapalım" yolculuğuna çıkmayacağım. Aynı zamanda gelecekte ihtiyacım olması ihtimaline karşı kodu sabit diskimde tutmanın bir anlam ifade etmediğini hissettim. Yani yapılacak tek mantıklı şey onu açık kaynaklı hale getirmekti. 🙂

Belgeler mi?

Önceki iki paragrafı okursanız, muhtemelen bunun olacağını görmelisiniz. Çerçeve, onu başkalarıyla paylaşacağım düşünülerek geliştirilmediğinden, dokümantasyon zayıf / yok. Sınıfların ve genel yöntemlerin çoğu düzgün bir şekilde yorumlanmamıştır ve kodun mimarisini açıklayan hiçbir belge yoktur. Neyse ki tüm sınıf adları kendi kendini açıklayıcıdır ve çerçeve her genel yöntem ve algoritma için JUnit testleri sağlar ve bunlar kodun nasıl kullanılacağına dair örnekler olarak kullanılabilir. Umarım topluluğun yardımıyla uygun bir dokümantasyon oluşturabiliriz, bu yüzden size güveniyorum!

Mevcut Sınırlamalar ve Gelecekteki Gelişmeler

Her yazılım parçasında (ve özellikle alfa sürümündeki açık kaynaklı projelerde) olduğu gibi, Datumbox Makine Öğrenimi Çerçevesi kendine özgü ve sevimli sınırlamalarıyla birlikte gelir. Bunları inceleyelim:

  1. Belgeler: Daha önce de belirtildiği gibi, belgeler zayıf.
  2. Çoklu Okuma Yok: Maalesef çerçeve şu anda Multithreading'i desteklemiyor. Elbette tüm makine öğrenimi algoritmalarının paralelleştirilemeyeceğini unutmamalıyız.
  3. Kod Örnekleri: Çerçeve yeni yayınlandığından, web'de çerçeve tarafından JUnit testleri şeklinde sağlananlar dışında herhangi bir kod örneği bulamazsınız.
  4. Kod Yapısı: Büyük ölçüde farklılık gösteren Makine Öğrenimi algoritmalarıyla (denetimli öğrenme, denetimsiz öğrenme, boyut azaltma algoritmaları vb.) Uğraşmanız gerektiğinde, herhangi bir büyük proje için sağlam bir mimari oluşturmak her zaman zordur.
  5. Model Kalıcılığı ve Büyük Veri Koleksiyonları: Şu anda modeller eğitilebilir ve diskteki dosyalarda veya MongoDB veritabanlarında saklanabilir. Büyük miktarda veriyi işleyebilmek için diğer çözümlerin araştırılması gerekir. Örneğin HaritaDB eğitim sırasında veri ve parametreleri depolamak için iyi bir aday gibi görünüyor. Ayrıca, herhangi 3 tanesini çıkarmak da önemlidir.rd Şu anda modellerin kalıcılığını ele alan ve daha iyi kuru ve modüler bir çözüm geliştiren parti kitaplıkları.
  6. Yeni algoritmalar /testler / modeller: Şu anda desteklenmeyen pek çok harika teknik var (özellikle zaman serileri analizi için).

Ne yazık ki yukarıdakilerin hepsi çok fazla iş ve çok az zaman var. Bu nedenle, projeyle ilgileniyorsanız, öne çıkın ve yukarıdakilerden herhangi birine yardım edin. Dahası, orta büyüklükteki projelerde açık kaynak kullanımı konusunda tecrübesi olan ve bunların nasıl yönetileceğine dair herhangi bir ipucu verebilecek kişilerden haber almayı çok isterim. Ek olarak, koda bakmaya ve bazı sınıfları veya genel yöntemleri belgelemeye cesaret eden her cesur ruha minnettar olurum. Son olarak, çerçeveyi ilginç bir şey için kullanıyorsanız, lütfen bana bir satır bırakın veya bir blog yazısıyla paylaşın.

Son olarak bu projeyi yazarken bana tolerans gösterdiği için aşkım Kyriaki'ye, arkadaşım ve süper ninja-Java geliştiricisine teşekkür etmek istiyorum. Elefterios Bampaletakis önemli Java sorunlarına yardım ettiğiniz ve projeye dahil olduğunuz için. Yorumlarınızı bekliyorum.

Zaman Damgası:

Den fazla Veri kutusu