Datumbox Machine Learning Framework version 0.8.0 a publié PlatoBlockchain Data Intelligence. Recherche verticale. Aï.

Sortie de la version 0.8.0 de Datumbox Machine Learning Framework

Datumbox Framework v0.8.0 est sorti et contient plusieurs fonctionnalités puissantes ! Cette version apporte de nouveaux algorithmes de prétraitement, de sélection de fonctionnalités et de sélection de modèle, de nouveaux moteurs de stockage puissants qui permettent un meilleur contrôle sur la façon dont les modèles et les dataframes sont enregistrés/chargés, plusieurs modèles d'apprentissage automatique pré-entraînés et de nombreuses améliorations de mémoire et de vitesse. Téléchargez-le maintenant depuis Github or Dépôt central de Maven.

L'un des principaux objectifs de la version 0.8.0 était d'améliorer les mécanismes de stockage du framework et de rendre la formation sur disque disponible pour tous les algorithmes pris en charge. Les nouveaux moteurs de stockage permettent de mieux contrôler comment et quand les modèles sont conservés. Un changement important est que les modèles ne sont pas stockés automatiquement une fois la méthode fit() terminée, mais qu'il faut à la place appeler explicitement la méthode save() fournissant le nom du modèle. Cela nous permet non seulement de supprimer des algorithmes temporaires plus simples sans passer par une phase de sérialisation, mais également de sauvegarder/charger les Dataframes :

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

Actuellement, nous prenons en charge deux moteurs de stockage : le moteur InMemory qui est très rapide car il charge tout en mémoire et le moteur MapDB qui est plus lent mais permet un entraînement sur disque. Vous pouvez contrôler le moteur que vous utilisez en modifiant votre datambox.configuration.properties ou vous pouvez modifier par programme les objets de configuration. Chaque moteur possède son propre fichier de configuration mais là encore vous pouvez tout modifier par programme :

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

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

Veuillez noter que dans les deux moteurs, il existe un paramètre de répertoire qui contrôle l'emplacement de stockage des modèles (inMemoryConfiguration.répertoire et les mapDBConfiguration.répertoire propriétés dans les fichiers de configuration). Assurez-vous de les modifier, sinon les modèles seront écrits dans le dossier temporaire de votre système. Pour plus d'informations sur la façon dont vous structurez les fichiers de configuration, consultez le Exemple de code .

Avec le nouveau mécanisme de stockage en place, il est désormais possible de partager publiquement modèles pré-entraînés qui couvrent les domaines de l'analyse des sentiments, de la détection du spam, de la détection de la langue, de la classification des sujets et de tous les autres modèles disponibles via l'API Datumbox. Tu peux maintenant download et utilisez tous les modèles pré-entraînés sur votre projet sans nécessiter d'appel à l'API et sans être limité par le nombre d'appels quotidiens. Actuellement, les modèles publiés sont formés à l'aide du moteur de stockage InMemory et ne prennent en charge que l'anglais. Dans les versions futures, je prévois de prendre en charge davantage de langues.

Dans le nouveau framework, il y a plusieurs changements sur les méthodes publiques de nombreuses classes (il n'est donc pas rétrocompatible). La différence la plus notable réside dans la manière dont les modèles sont initialisés. Comme nous l'avons vu dans l'exemple de code précédent, les modèles ne sont pas directement instanciés mais la classe MLBuilder est utilisée pour créer ou charger un modèle. Les paramètres de formation sont fournis directement au constructeur et ils ne peuvent pas être modifiés par un setter.

Une autre amélioration concerne la façon dont nous effectuons la sélection du modèle. La v0.8.0 introduit le nouveau package de sélection de modèles qui offre tous les outils nécessaires pour valider et mesurer les performances de nos modèles. Dans le sous-package de métriques, nous fournissons les métriques de validation les plus importantes pour la classification, le clustering, la régression et la recommandation. Notez que les ValidationMetrics sont supprimés de chaque algorithme individuel et qu'ils ne sont plus stockés avec le modèle. Le framework propose le nouveau sous-paquet splitters qui permet de diviser l'ensemble de données d'origine à l'aide de différents schémas. Actuellement, les divisions en K sont effectuées à l'aide de la classe KFoldSplitter, tandis que le partitionnement de l'ensemble de données en un ensemble d'entraînement et de test peut être réalisé avec ShuffleSplitter. Enfin pour valider rapidement un modèle, le framework propose la classe Validator. Voici comment effectuer une validation croisée K-fold en quelques lignes de code :

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

Le nouveau package de prétraitement remplace les anciens Data Transformers et offre un meilleur contrôle sur la façon dont nous mettons à l'échelle et codons les données avant les algorithmes d'apprentissage automatique. Les algorithmes suivants sont pris en charge pour la mise à l'échelle des variables numériques : MinMaxScaler, StandardScaler, MaxAbsScaler et BinaryScaler. Pour coder des variables catégorielles en booléens, vous pouvez utiliser les méthodes suivantes : OneHotEncoder et CornerConstraintsEncoder. Voici comment utiliser les nouveaux algorithmes :

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

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

Une autre mise à jour importante est le fait que le package Feature Selection a été réécrit. Actuellement, tous les algorithmes de sélection de fonctionnalités se concentrent sur des types de données spécifiques, ce qui permet d'enchaîner différentes méthodes. En conséquence, les classes TextClassifier et Modeler reçoivent une liste de paramètres de sélection de fonctionnalités plutôt qu'un seul.

Comme mentionné précédemment, tous les algorithmes prennent désormais en charge la formation sur disque, y compris ceux qui utilisent des matrices (la seule exception concerne les machines à vecteurs de support). Le nouveau mécanisme du moteur de stockage permet même de configurer certains algorithmes ou trames de données pour qu'ils soient stockés en mémoire tandis que d'autres sur disque. Plusieurs améliorations de vitesse ont été introduites principalement en raison du nouveau mécanisme du moteur de stockage, mais également en raison du réglage d'algorithmes individuels tels que ceux de la famille DPMM.

Enfin, la nouvelle version met à jour toutes les dépendances vers leurs dernières versions et supprime certaines d'entre elles, telles que commons-lang et lp_solve. Le langage commons-lang, qui était utilisé pour l'analyse HTML, est remplacé par une implémentation HTMLParser personnalisée plus rapide. Le lp_solve est remplacé par un solveur simplex Java pur, ce qui signifie que Datumbox ne nécessite plus de bibliothèques système spécifiques installées sur le système d'exploitation. De plus, lp_solve a dû disparaître car il utilise LGPLv2 qui n'est pas compatible avec la licence Apache 2.0.

La version 0.8.0 apporte plusieurs autres nouvelles fonctionnalités et améliorations sur le framework. Pour une vue détaillée des modifications, veuillez consulter le Changelog.

N'oubliez pas de cloner le code de Cadre Datumbox v0.8.0 depuis Github, découvrez le Exemples de code et téléchargez les modèles de Machine Learning pré-formés sur Zoo de Datumbox. J'attends vos commentaires et suggestions avec impatience.

Horodatage:

Plus de Boîte de données