Moteur de

Afin de d’assurer son indépendance technologique Inceptive développe son propre Moteur de Machine Learning.

Le Moteur est principalement développé en Java et repose uniquement sur l’implémentation de certains algorithmes classiques. Le parcours des données à travers le moteur lors d’une exécution est maîtrisé totalement par l’utilisateur.

Le moteur de Machine Learning Inceptive permet :

 

Le chargement des données

Les données utilisateurs peuvent être sous plusieurs formes : fichiers images, documents PDF, données brutes (CSV, XML…). Elles peuvent aussi être localisées à des endroits différents (File System, Database, …) Nous avons développé pour cela une abstraction du chargement des données qui permet de charger les données venant de tout ces médiums.

Nous avons actuellement des connecteurs fonctionnels pour les bases MongoDB et ElasticSearch ainsi que les fichiers sur disque dur.

Les connecteurs nécessaires pour importer des données brutes depuis les formats de type CSV sont également disponibles.

Notre moteur de Machine Learning intègre aussi un module d’OCR qui permet de lire le contenu d’une image de texte. L’intégration avec ce module permet de faire cette opération parfois coûteuse de façon transparente et efficace. L’utilisateur peut aussi importer ses propres résultats d’OCR s’il en a.

f

L'analyse automatique des données

Le moteur de Machine Learning Inceptive intègre un analyseur de données brutes. Il peut être utilisé directement sur le contenu d’un CSV pour déterminer le type des colonnes. Il est capable d’identifier les types de données suivants :

  • Identifiant (colonne permettant d’identifier la ligne de façon unique)
  • Texte dans un langage connu (Français, Anglais, Espagnol)
  • Texte ayant un vocabulaire spécifique (e.g. description de vins)
  • Données catégoriques (e.g. pays, niveau d’étude)
  • Données binaires (e.g. sexe, variables 0 ou 1)
  • Données numériques entières (e.g. age, nombre de passager)
  • Données numériques réelles (e.g. prix, distance, probabilité)
  • Cette analyse automatique permet de définir une méthode de vectorisation de chaque colonne adaptée.

La représentation vectorielle des données

Suite au chargement des données, le moteur a besoin de les convertir en valeurs numériques, pour cela, plusieurs cas sont possibles.

Pour des données brutes numériques, elle peuvent être utilisées directement. Les données catégoriques peuvent être traitées numériquement ou avec un encodage de type “one-hot”.

Pour des documents images, nous avons développé plusieurs méthodes qui permettent d’extraire des caractéristiques permettant la prédiction. Ces méthodes incluent notamment l’utilisation des CNNs, ainsi que des descripteurs de type SIFT.

Pour des données textuelles, nous avons actuellement des méthodes basiques comme le comptage des mots. Des méthodes plus poussées basées sur la détection d’intention sont envisagées. Dans le cas de résultats d’OCR, nous pouvons, en plus, exploiter l’information de position du texte dans le document.

Le traitements des données

Une fois les données numériques obtenues, le moteur permet l’application en série de post-traitements sur les données. Ces traitements peuvent être appliqués sur l’ensemble des données ou seulement sur une partie, cela permet une grande souplesse car chaque donnée doit être traitée différemment. Les post-traitements se distinguent en deux catégories, ceux qui ont besoin d’entraînement (e.g. TF-IDF, normalisation) et ceux qui peuvent être appliqués directement (e.g. transformation affine).

Les traitements sans entraînement que nous avons actuellement sont :

  • Transformation affine
  • Transformation logarithmique
  • Transformation quadratique
  • Normalisation de la norme

Ceux-ci sont souvent utilisés pour changer l’espace des données en fonction de l’algorithme de prédiction.

Les traitements avec entraînement incluent notamment les méthodes de réduction de dimensionnalité comme :

  • PCA
  • Random Projection

Sélection de prédicteurs basées sur :

  • FValue
  • Information mutuelle
  • Importance (mesurée par Random Forest)

Ainsi que des méthodes classiques comme :

  • Normalisation par prédicteur
  • TF-IDF (qui peut être appliqué sur les données représentants un nombre d’apparition)
  • OkapiBM25 (comme TF-IDF)

Des méthodes en cours de développement/test se basent aussi sur le clustering des données afin de réduire la dimensionnalité.

L’entraînement des modèles

Les données finales vont ensuite être utilisées pour l’entraînement d’un modèle de prédiction. La prédiction peut se faire de 2 manières : régression ou classification. La régression permet de prévoir une variable à valeur quelconque (e.g. prix d’un objet, quantité de stock nécessaire) alors que la classification permet de classer des objets (e.g.tri de documents).

Pour la classification, les modèles concrets que nous avons développés incluent :

  • Random Forest
  • Artificial Neural Networks
  • XGBoost
  • SVM
  • AdaBoost
  • Naive Bayes
  • K Nearest Neighbors

Les algorithmes de régressions peuvent aussi être appliqués pour de la classification. Nous avons aussi à notre disposition des méthodes ensemblistes comme :

  • Bagging
  • Stacking
  • One Vs All

Pour la régression, récemment intégrée au moteur, nous avons :

  • Random Forest
  • Régression linéaire

Il est également possible lors de l’utilisation de modèles de régression de prédire des transformations de la cible afin d’optimiser différentes métriques. Par exemple, comme la plupart des modèles optimisent la métrique du MSE, prédire le log de la valeur permet de façon transparent l’optimisation du RMSLE.

U

L’analyse des résultats

Pour permettre l’analyse des performances du modèle, nous pouvons séparer les données d’entrées en lots apprentissage/test. Pour cela, des méthodes basiques comme la séparation 70/30 sont disponibles ainsi que des méthodes plus complexes comme le KFolding hiérarchique.

Les résultats peuvent être visualisés sous la forme de données brutes (précision, rappel, score F1) globales et par catégories, ou graphiquement sous forme de matrice de confusion grâce à notre client lourd. Les statistiques ainsi que les données résultats peuvent également être exportées sur différents médiums Plusieurs métriques classiques sont implémentées pour la classification et la régression comme :

  • ROC AUC (seulement pour la classification binaire)
  • LogLoss
  • Normalized Gini Coefficient (extension de l’AUC)
  • Mean Squared error
  • RMSLE (Root Mean Square Log Error)
  • Pourcentage de la variance expliqué

L’optimisation d’hyper paramètres

Le Moteur de Machine Learning Inceptive inclut également un module d’optimisation non linéaire. Celui-ci peut-être utilisé facilement pour optimiser les multiples paramètres des méthodes de traitement des données ou du modèle de prédiction.

Les algorithmes d’optimisation disponibles sont actuellement basiques (Grid Search et Random Search) mais le développement d’un algorithme de descente du gradient est actuellement en cours. La recherche d’hyper paramètres est disponible en régression et classification et permet d’optimiser n’importe quelle métrique.

Vous souhaitez évaluer le moteur Machine Learning Inceptive