Το Datumbox Machine Learning Framework έκδοση 0.8.0 κυκλοφόρησε το PlatoBlockchain Data Intelligence. Κάθετη αναζήτηση. Ολα συμπεριλαμβάνονται.

Κυκλοφόρησε το Datumbox Machine Learning Framework έκδοση 0.8.0

Το Datumbox Framework v0.8.0 είναι διαθέσιμο και περιλαμβάνει πολλές ισχυρές δυνατότητες! Αυτή η έκδοση φέρνει νέους αλγόριθμους Προεπεξεργασίας, Επιλογής Χαρακτηριστικών και Επιλογής Μοντέλων, νέους ισχυρούς Κινητήρες Αποθήκευσης που δίνουν καλύτερο έλεγχο σχετικά με τον τρόπο αποθήκευσης/φόρτωσης των Μοντέλων και των Δεδομένων Πλαίσιο, πολλά προ-εκπαιδευμένα μοντέλα μηχανικής εκμάθησης και πολλές βελτιώσεις μνήμης και ταχύτητας. Κατεβάστε το τώρα από Github or Κεντρικό αποθετήριο Maven.

Ένας από τους κύριους στόχους της έκδοσης 0.8.0 ήταν η βελτίωση των μηχανισμών αποθήκευσης του πλαισίου και η διάθεση της εκπαίδευσης βάσει δίσκου σε όλους τους υποστηριζόμενους αλγόριθμους. Οι νέες μηχανές αποθήκευσης δίνουν καλύτερο έλεγχο για το πώς και πότε επιμένουν τα μοντέλα. Μια σημαντική αλλαγή είναι ότι τα μοντέλα δεν αποθηκεύονται αυτόματα μετά την ολοκλήρωση της μεθόδου προσαρμογής () αλλά αντίθετα πρέπει να καλέσετε ρητά τη μέθοδο αποθήκευσης () παρέχοντας το όνομα του μοντέλου. Αυτό μας επιτρέπει όχι μόνο να απορρίψουμε ευκολότερους προσωρινούς αλγόριθμους χωρίς να περάσουμε από μια φάση σειριοποίησης αλλά και να αποθηκεύσουμε/φορτώσουμε τα πλαίσια δεδομένων:

Configuration configuration = Configuration.getConfiguration();
Dataframe data = ...; //load a dataframe here

MaximumEntropy.TrainingParameters params = new MaximumEntropy.TrainingParameters();
MaximumEntropy model = MLBuilder.create(params, getConfiguration());
model.fit(data);
model.save("MyModel"); //save the model using the specific name
model.close();

data.save("MyData"); //save the data using a specific name
data.close();

data = Dataframe.Builder.load("MyData", configuration); //load the data
model = MLBuilder.load(MaximumEntropy.class, "MyModel", configuration); //load the model
model.predict(data);
model.delete(); //delete the model

Επί του παρόντος υποστηρίζουμε δύο κινητήρες αποθήκευσης: τον κινητήρα InMemory που είναι πολύ γρήγορος καθώς φορτώνει τα πάντα στη μνήμη και τον κινητήρα MapDB που είναι πιο αργός αλλά επιτρέπει εκπαίδευση με δίσκο. Μπορείτε να ελέγξετε ποια μηχανή χρησιμοποιείτε αλλάζοντας τα δεδομένα datumbox.configuration.properties σας ή μπορείτε να τροποποιήσετε μέσω προγραμματισμού τα αντικείμενα διαμόρφωσης. Κάθε κινητήρας έχει το δικό του αρχείο διαμόρφωσης, αλλά και πάλι μπορείτε να τροποποιήσετε τα πάντα μέσω προγραμματισμού:

Configuration configuration = Configuration.getConfiguration(); //conf from properties file

configuration.setStorageConfiguration(new InMemoryConfiguration()); //use In-Memory engine
//configuration.setStorageConfiguration(new MapDBConfiguration()); //use MapDB engine

Λάβετε υπόψη ότι και στους δύο κινητήρες, υπάρχει μια ρύθμιση καταλόγου που ελέγχει πού αποθηκεύονται τα μοντέλα (στον κατάλογο MemoryConfiguration και mapDBConfiguration.directory ιδιότητες σε αρχεία διαμόρφωσης). Βεβαιωθείτε ότι τα αλλάζετε, διαφορετικά τα μοντέλα θα γραφτούν στον προσωρινό φάκελο του συστήματός σας. Για περισσότερες πληροφορίες σχετικά με τον τρόπο δομής των αρχείων διαμόρφωσης, ρίξτε μια ματιά στο Παράδειγμα κώδικα του έργου.

Με τον νέο μηχανισμό αποθήκευσης σε ισχύ, είναι πλέον εφικτό να κοινοποιηθεί δημόσια προ-εκπαιδευμένα μοντέλα που καλύπτουν τους τομείς της Ανάλυσης συναισθημάτων, της ανίχνευσης ανεπιθύμητων μηνυμάτων, της ανίχνευσης γλώσσας, της ταξινόμησης θεμάτων και όλων των άλλων μοντέλων που είναι διαθέσιμα μέσω του API Datumbox. Μπορείς τώρα κατεβάσετε και χρησιμοποιήστε όλα τα προ-εκπαιδευμένα μοντέλα στο έργο σας χωρίς να απαιτείται κλήση στο API και χωρίς να περιορίζεστε από τον αριθμό των ημερήσιων κλήσεων. Επί του παρόντος τα δημοσιευμένα μοντέλα εκπαιδεύονται χρησιμοποιώντας τη μηχανή αποθήκευσης InMemory και υποστηρίζουν μόνο αγγλικά. Σε μελλοντικές εκδόσεις, σκοπεύω να παρέχω υποστήριξη για περισσότερες γλώσσες.

Στο νέο πλαίσιο, υπάρχουν αρκετές αλλαγές στις δημόσιες μεθόδους πολλών από τις τάξεις (επομένως δεν είναι συμβατές προς τα πίσω). Η πιο αξιοσημείωτη διαφορά είναι στον τρόπο προετοιμασίας των μοντέλων. Όπως είδαμε στο προηγούμενο παράδειγμα κώδικα, τα μοντέλα δεν δημιουργούνται απευθείας, αλλά η κλάση MLBuilder χρησιμοποιείται είτε για τη δημιουργία είτε για τη φόρτωση ενός μοντέλου. Οι παράμετροι εκπαίδευσης παρέχονται απευθείας στον κατασκευαστή και δεν μπορούν να αλλάξουν με ένα setter.

Μια άλλη βελτίωση είναι ο τρόπος με τον οποίο εκτελούμε την επιλογή μοντέλου. Το v0.8.0 παρουσιάζει το νέο πακέτο επιλογής μοντέλου το οποίο προσφέρει όλα τα απαραίτητα εργαλεία για την επικύρωση και τη μέτρηση της απόδοσης των μοντέλων μας. Στην υποσυσκευασία μετρήσεων παρέχουμε τις πιο σημαντικές μετρήσεις επικύρωσης για ταξινόμηση, ομαδοποίηση, παλινδρόμηση και σύσταση. Σημειώστε ότι τα ValidationMetrics καταργούνται από κάθε μεμονωμένο αλγόριθμο και δεν αποθηκεύονται πλέον μαζί με το μοντέλο. Το πλαίσιο προσφέρει το νέο πακέτο διαχωριστών που επιτρέπει τη διάσπαση του αρχικού συνόλου δεδομένων χρησιμοποιώντας διαφορετικά σχήματα. Επί του παρόντος, οι διαχωρισμοί K-fold πραγματοποιούνται χρησιμοποιώντας την κλάση KFoldSplitter, ενώ η διαίρεση του συνόλου δεδομένων σε ένα σετ εκπαίδευσης και δοκιμής μπορεί να επιτευχθεί με το ShuffleSplitter. Τέλος, για να επικυρωθεί γρήγορα ένα μοντέλο, το πλαίσιο προσφέρει την κλάση Validator. Ακολουθεί ο τρόπος με τον οποίο μπορεί κανείς να πραγματοποιήσει πολλαπλή επικύρωση K-fold σε μερικές γραμμές κώδικα:

ClassificationMetrics vm = new Validator<>(ClassificationMetrics.class, configuration)
    .validate(new KFoldSplitter(k).split(data), new MaximumEntropy.TrainingParameters());

Το νέο πακέτο Preprocessing αντικαθιστά τους παλιούς μετασχηματιστές δεδομένων και δίνει καλύτερο έλεγχο για τον τρόπο με τον οποίο κλιμακώνουμε και κωδικοποιούμε τα δεδομένα πριν από τους αλγόριθμους μηχανικής μάθησης. Οι ακόλουθοι αλγόριθμοι υποστηρίζονται για την κλιμάκωση αριθμητικών μεταβλητών: MinMaxScaler, StandardScaler, MaxAbsScaler και BinaryScaler. Για την κωδικοποίηση κατηγοριών μεταβλητών σε booleans, μπορείτε να χρησιμοποιήσετε τις ακόλουθες μεθόδους: OneHotEncoder και CornerConstraintsEncoder. Δείτε πώς μπορείτε να χρησιμοποιήσετε τους νέους αλγόριθμους:

StandardScaler numericalScaler = MLBuilder.create(
    new StandardScaler.TrainingParameters(), 
    configuration
);
numericalScaler.fit_transform(trainingData);

CornerConstraintsEncoder categoricalEncoder = MLBuilder.create(
    new CornerConstraintsEncoder.TrainingParameters(), 
    configuration
);
categoricalEncoder.fit_transform(trainingData);

Μια άλλη σημαντική ενημέρωση είναι το γεγονός ότι το πακέτο επιλογής χαρακτηριστικών ξαναγράφηκε. Επί του παρόντος, όλοι οι αλγόριθμοι επιλογής χαρακτηριστικών εστιάζουν σε συγκεκριμένους τύπους δεδομένων, καθιστώντας δυνατή την αλυσίδα διαφορετικών μεθόδων μαζί. Ως αποτέλεσμα, οι κλάσεις TextClassifier και Modeler λαμβάνουν μια λίστα παραμέτρων επιλογής χαρακτηριστικών και όχι μία.

Όπως αναφέρθηκε προηγουμένως, όλοι οι αλγόριθμοι υποστηρίζουν τώρα εκπαίδευση που βασίζεται σε δίσκο, συμπεριλαμβανομένων εκείνων που χρησιμοποιούν μήτρες (μόνη εξαίρεση είναι οι μηχανές διάνυσμα υποστήριξης). Ο νέος μηχανισμός μηχανής αποθήκευσης καθιστά δυνατή τη διαμόρφωση ορισμένων αλγορίθμων ή πλαισίων δεδομένων που θα αποθηκεύονται στη μνήμη, ενώ άλλοι στο δίσκο. Αρκετές βελτιώσεις στην ταχύτητα εισήχθησαν κυρίως λόγω του νέου μηχανισμού αποθήκευσης του κινητήρα αλλά και λόγω του συντονισμού μεμονωμένων αλγορίθμων όπως αυτοί της οικογένειας DPMM.

Τελευταίο αλλά όχι λιγότερο σημαντικό, η νέα έκδοση ενημερώνει όλες τις εξαρτήσεις από τις πιο πρόσφατες εκδόσεις τους και καταργεί ορισμένες από αυτές, όπως το commons-lang και το lp_solve. Το Commons-lang, το οποίο χρησιμοποιήθηκε για την ανάλυση HTML, αντικαθίσταται με μια ταχύτερη προσαρμοσμένη εφαρμογή HTMLParser. Το lp_solve αντικαθίσταται με έναν καθαρό λύτη Java simplex, πράγμα που σημαίνει ότι το Datumbox δεν απαιτεί πλέον συγκεκριμένες βιβλιοθήκες συστήματος εγκατεστημένες στο λειτουργικό σύστημα. Επιπλέον, το lp_solve έπρεπε να πάει επειδή χρησιμοποιεί LGPLv2 που δεν είναι συμβατό με την άδεια Apache 2.0.

Η έκδοση 0.8.0 φέρνει πολλές ακόμη νέες δυνατότητες και βελτιώσεις στο πλαίσιο. Για λεπτομερή προβολή των αλλαγών, ελέγξτε το changelog.

Μην ξεχάσετε να κλωνοποιήσετε τον κώδικα Πλαίσιο Datumbox v0.8.0 από το Github, ελέγξτε το Παραδείγματα κώδικα και κατεβάστε τα προ-εκπαιδευμένα μοντέλα Machine Learning από Ζωολογικός κήπος DatumboxΤο Περιμένω τα σχόλια και τις προτάσεις σας.

Σφραγίδα ώρας:

Περισσότερα από Databox