J'ai touché Tribuo publié par Oracle. Document Tribuo --Une bibliothèque de prédiction Java (v4.0)

Postscript 28/09/2020 Cet article est obsolète. Je l'ai réorganisé ici. https://qiita.com/jashika/items/d7c86dd8053379fd909f

Introduction Tribuo est une bibliothèque Java permettant de créer et de déployer des modèles d'apprentissage automatique. L'équipe de développement principale est le groupe de recherche Oracle Labs Machine Learning, qui publie cette bibliothèque sur Github sous une licence Apache 2.0.

· L'API est fortement typée, avec des paramètres pour les modèles, les prédicteurs, les ensembles de données et les exemples.

· L'API est de haut niveau, le modèle consomme des exemples et produit des valeurs prédictives, mais pas des tableaux flottants.

· Les API sont unifiées, tous les types de prédiction ont la même API (bien typée) et les classes Tribuo sont paramétrées par type de prédiction (par exemple, la classification utilise Label, la régression utilise Regressor). Je vais l'utiliser).

-L'API est réutilisable, modulaire et emballée en petits morceaux uniquement pour ce dont vous avez besoin, vous ne pouvez donc installer que ce dont vous avez besoin.

Tribuo propose une large gamme d'algorithmes et de fonctionnalités ML avec la même API.

・ Classification: modèle linéaire, SVM, arbre, ensemble, apprentissage en profondeur

・ Retour: modèle linéaire, régression linéaire avec pénalités, SVM, arbre, ensemble, apprentissage en profondeur

・ Regroupement: K-Means

・ Détection d'anomalies: SVM

Nous prévoyons d'augmenter les algorithmes disponibles au fil du temps.

Tribuo facilite le chargement de jeux de données, la formation de modèles et l'évaluation de modèles sur des données de test. Par exemple, ce code entraîne et évalue un modèle de régression logistique.

var trainSet = new MutableDataset<>(new LibSVMDataSource("train-data",new LabelFactory()));
var model    = new LogisticRegressionTrainer().train(trainSet);
var eval     = new LabelEvaluator().evaluate(new LibSVMDataSource("test-data",trainSet.getOutputFactory()));

Getting Started Afin de faire de Tribuo un projet, Maven définit comme suit.

<dependency>
    <groupId>org.tribuo</groupId>
    <artifactId>tribuo-all</artifactId>
    <version>4.0.0</version>
    <type>pom</type>
</dependency>

Le module tribuo-all capture tout Tribuo. Vous pouvez ensuite sélectionner un sous-ensemble de cas d'utilisation spécifiques. Voici un exemple simple qui montre comment créer et évaluer un système de classification. Il y a quatre étapes pour cela.

  1. Lisez l'ensemble de données pour classer les espèces d'iris à partir de CSV.
  2. Divisez l'ensemble de données en un ensemble de données d'entraînement et un ensemble de données de test.
  3. Apprenez deux types de modèles en utilisant différents formateurs.
  4. Prédisez l'ensemble de test à l'aide du modèle et évaluez les performances de l'ensemble de test.
//Iris étiqueté(Iris)Lire les données
var irisHeaders = new String[]{"sepalLength", "sepalWidth", "petalLength", "petalWidth", "species"};
DataSource<Label> irisData =
        new CSVLoader<>(new LabelFactory()).loadDataSource(Paths.get("bezdekIris.data"),
                                     /* Output column   */ irisHeaders[4],
                                     /* Column headers  */ irisHeaders);

//iris(Iris)Ensemble de données de formation(70%)Et ensemble de test(30%)Divisée en
var splitIrisData = new TrainTestSplitter<>(irisesSource,
                       /* Train fraction */ 0.7,
                             /* RNG seed */ 1L);
var trainData = new MutableDataset<>(splitIrisData.getTrain());
var testData = new MutableDataset<>(splitIrisData.getTest());

//Apprenez l'arbre de décision
var cartTrainer = new CARTClassificationTrainer();
Model<Label> tree = cartTrainer.train(trainData);

//Retour logistique
var linearTrainer = new LogisticRegressionTrainer();
Model<Label> linear = linearTrainer.train(trainData);

//En fin de compte, faites des prédictions à partir de données invisibles
//Chaque prédiction est notée à partir du nom de sortie (étiquette)/Mapper à la probabilité
Prediction<Label> prediction = linear.predict(testData.get(0));

//L'ensemble de données de test complet peut être évalué pour calculer la précision, F1, etc.
Evaluation<Label> evaluation = new LabelEvaluation().evaluate(linear,testData);

//Inspectez l'évaluation manuelle.
double acc = evaluation.accuracy();

//Affichez la chaîne d'évaluation formatée.
System.out.println(evaluation.toString());

La sortie d'évaluation formatée ressemble à ceci:

Class                           n          tp          fn          fp      recall        prec          f1
Iris-versicolor                16          16           0           1       1.000       0.941       0.970
Iris-virginica                 15          14           1           0       0.933       1.000       0.966
Iris-setosa                    14          14           0           0       1.000       1.000       1.000
Total                          45          44           1           1
Accuracy                                                                    0.978
Micro Average                                                               0.978       0.978       0.978
Macro Average                                                               0.978       0.980       0.978
Balanced Error Rate                                                         0.022

Pour plus d'informations sur cet exemple, consultez le didacticiel de classification utilisant le même jeu de données d'iris. ~~ Traduire plus tard. ~~ traduit.

Documentation Overview La liste des fonctionnalités fournit un aperçu de ce que Tribuo peut faire et des algorithmes qu'il prend en charge à la fois nativement et via des interfaces vers des bibliothèques tierces. La meilleure façon de comprendre Tribuo est de lire la documentation de l'architecture Tribuo. Décrit les définitions de base, les flux de données, les structures de bibliothèque, les paramètres (y compris les options et les réalisations), le chargement des données, les transformations, les exemples de détails et les fonctionnalités d'obscurcissement pouvant être utilisés pour masquer la fonctionnalité d'entrée. L'aperçu de la structure des packages décrit comment les packages Tribuo sont organisés autour des tâches d'apprentissage automatique qu'ils prennent en charge. Ces packages sont regroupés en modules afin que les utilisateurs de Tribuo ne puissent compter que sur ce qu'ils doivent implémenter. Assurez-vous de lire les précautions de sécurité pour l'utilisation de Tribuo et les attentes des utilisateurs. Pour d'autres problèmes et questions d'ordre général, veuillez vous référer à la FAQ. Pour plus d'informations sur toutes les classes et tous les packages, consultez le JavaDoc de Tribuo.

Tutorials Des notes didactiques sur les systèmes de classification, de clustering, de régression, de détection des anomalies et de configuration sont disponibles. Ils utilisent le noyau du notebook Java Jupyter et s'exécutent sur Java 10+. Il devrait être facile de récupérer le code du didacticiel dans le code Java 8 en remplaçant le mot-clé var par le type approprié.

Configuration and Provenance Les formateurs Tribuo peuvent être entièrement configurés via le système de configuration OLCUT. Cela vous permet de définir un entraîneur une fois dans un fichier XML (ou JSON ou EDN) et de créer un modèle itératif avec exactement les mêmes paramètres. Le dossier de configuration de chaque package contient un exemple des paramètres du formateur fournis. Les modèles peuvent être sérialisés à l'aide de la sérialisation Java ainsi que du jeu de données lui-même, et la configuration utilisée est stockée dans n'importe quel modèle. Pour tous les modèles et évaluations, quand le modèle ou l'évaluation a été créé, quelles données ont été utilisées, quelles transformations ont été appliquées aux données, quels sont les hyperparamètres du formateur et dans le cas de l'évaluation, quel modèle Contient un objet certificat sérialisable qui enregistre ce qui a été utilisé. Ces informations peuvent être extraites vers JSON ou directement sérialisées à l'aide de la sérialisation Java. Dans un environnement de production, ces informations de performances peuvent être remplacées par un hachage et modifiées pour fournir un suivi du modèle via un système externe. En savoir plus sur les paramètres, les options et les certificats.

Platform Support & Requirements Tribuo fonctionne sur Java 8+ et a été testé avec les versions LTS de Java et les dernières versions. Tribuo lui-même est une bibliothèque Java et est pris en charge sur toutes les plates-formes Java, mais certaines interfaces nécessitent du code natif et ne sont prises en charge que là où se trouve la bibliothèque native. Testé sur l'architecture x86_64 sous Windows 10, macOS, Linux (RHEL / OL / CentOS 7+). Si vous êtes intéressé par une autre plate-forme et que vous souhaitez utiliser l'une des interfaces de bibliothèque natives (ONNX runtime, TensorFlow, XGBoost), nous vous recommandons de contacter les développeurs de ces bibliothèques.

Recommended Posts

J'ai touché Tribuo publié par Oracle. Document Tribuo --Une bibliothèque de prédiction Java (v4.0)
J'ai essayé Tribuo édité par Oracle. Tribuo --Une bibliothèque de prédiction Java (v4.0)
Je me suis rappelé Tribuo publié par Oracle. Tribuo --Une bibliothèque de prédiction Java (v4.0)
J'ai touché Tribuo publié par Oracle. Document Tribuo - Introduction à la classification avec les iris
J'ai d'abord touché Java ②
J'ai d'abord touché Java ③
J'ai d'abord touché Java ④
J'ai d'abord touché Java
J'ai créé un Dockerfile pour démarrer Glassfish 5 en utilisant Oracle Java
Quand j'ai retrouvé mon esprit sur Tribuo publié par Oracle, la personne à l'intérieur était une personne sexy.
Java crée des documents Word
[Java] J'ai essayé de faire un labyrinthe par la méthode de creusage ♪