Login to your account

Username *
Password *
Remember Me

Create an account

Fields marked with an asterisk (*) are required.
Name *
Username *
Password *
Verify password *
Email *
Verify email *
Captcha *
Reload Captcha

Machine Learning

Machine Learning

Vote utilisateur: 0 / 5

Etoiles inactivesEtoiles inactivesEtoiles inactivesEtoiles inactivesEtoiles inactives

Jusqu'à tout récemment, la plupart des entreprises avaient constaté deux flux de travail distincts, qui ne se chevauchaient pas, lors de la création d'une application compatible avec l'IA: un chemin de développement et un chemin data sciences.

Souvent, les deux groupes construisent en fait des solutions fonctionnelles avec des scripts similaires en utilisant quelque chose comme Python ou C / F #. En outre, une fois qu'un data scientiste termine l'étape d'évaluation et de sélection du modèle du processus de sciences de données, il existait un «vide de confusion» en ce qui concerne les meilleures pratiques concernant l'intégration dans de nouveaux processus métier existants ou en augmentation, chaque partie ne comprend pas très bien comment soutenir l'autre / quand à s'engager. À mon avis, une grande partie de la convergence a été alimentée par la popularité et l'utilisation croissantes des services de conteneur comme  Docker et Kubernetes, en particulier dans le monde des DevOps.

Alors, comment ces couloirs convergent, demandez-vous ?

Vous pouvez planifier et créer un pipeline d'intégration continue pour une application d'IA pour les débutants. Le pipeline démarre à chaque nouvelle validation effectuée par le data scientiste, ce qui déclenche les cycles de tests. Si le test réussit, il utilise la dernière version, le regroupe dans un conteneur Docker, ainsi que tous les packages nécessaires et les dépendances / versions des packages pour une modélisation réussie.

Le conteneur est ensuite déployé à l'aide d'un service de conteneur hébergé dans le cloud, comme @Azure Container Service (ACS) et les images suivantes sont stockées de manière sécurisée dans le registre de conteneur associé (ACR). Ceci est très utile pour le développement à petite échelle, mais lorsque vous voulez opérationnaliser ou déployer en production, il faut s’orienter vers un service comme Kubernetes pour la gestion / orchestration des clusters de conteneurs (les autres alternatives de service sont  Docker-Swarm / Mesos). .

L’application extrait en toute sécurité le dernier modèle pré-entraîné ML  à partir d’un compte de stockage de blob basé sur le cloud et le regroupe dans l’application. L’application déployée contient le code de l’application et le modèle ML dans un conteneur unique et les actifs et sorties deviennent une partie du code d’archivage qui est renvoyé dans le référentiel de codes d’entreprise pour contrôle de version, etc.

Cela sépare les développeurs d'applications et data scientistes, afin de s'assurer que leur application de production exécutent toujours le dernier code avec le dernier modèle ML. 


 

Machine Learning

Vote utilisateur: 0 / 5

Etoiles inactivesEtoiles inactivesEtoiles inactivesEtoiles inactivesEtoiles inactives

 

Dans l'univers de la data science, les problèmes d'apprentissage avec des données étiquetées (pour lesquelles nous connaissons déjà la variable cible) sont facilement disponibles et accessibles. Leur résolution dépend souvent de leur niveau de difficulté et de la façon avec laquelle nous traitons les données. Dans ce cadre, l'algorithme enseigne à lui-même, pour apprendre à partir des données étiquetées fournies, afin de proposer des solutions pertinentes. Par exemple, la prédiction des clics et la classification des e-mails sont de bons cas de figure, car ils ont une distribution stable et des étiquettes collectées presque chaque jour. Cependant, chaque domaine a ses propres défis d'exploration et d'analyse de données. L'un de ces défis est lorsque nous ne possédons pas de données réelles sur la variable cible, et que malgré cela nous avons une problématique à résoudre. Ces cas sont les problèmes d'apprentissage non supervisés.

Ces problèmes d'apprentissage machine se classent parmi les big problèmes du ML où les données étiquetées sont rares ou même indisponibles. Néanmoins, nous procédons à la création de données personnalisées afin de résoudre les algorithmes de ce type, mais cela reste inefficace. Ce qui nous conduit à des erreurs embarrassantes résultant d’un surentraînement des algorithmes. Les processus actuels de création de ces systèmes d'apprentissage nécessitent un grand effort et des praticiens ayant une connaissance approfondie de l'apprentissage automatique. Cela limite considérablement le nombre de systèmes d'apprentissage automatique pouvant être créés et conduit à une inadéquation entre la demande de systèmes d'apprentissage automatique et la capacité des organisations à les créer. Aujourd’hui, au sein de notre direction au sein d'AXA France et de manière générale, nous pensons que pour répondre à cette demande croissante de systèmes d’apprentissage automatique, nous devons augmenter de manière significative le nombre de personnes capables d’enseigner des machines. Nous estimons que pour atteindre cet objectif, nous devrions rendre le processus d’enseignement des machines facile, rapide et surtout accessible à tous. Étant donné que l'apprentissage automatique repose sur la création des algorithmes et sur l'amélioration de la précision des « enseignants », l'enseignement des machines se concentre précisément sur l'efficacité des « enseignants ». De ce fait, nous considérons que l’enseignement des machines en tant que discipline est un changement de paradigme qui suit et étend les principes du génie logiciel et des langages de programmation. Nous mettons l'accent sur l'interaction de l'enseignant et de l'enseignant avec les données pour proposer des solutions adéquates au besoin et limiter le temps de traitement.

Auteur: 

 

Namaa GHASSAN

PhD condidat At Faculty of science Ben M'Sik Casablanca.

Machine Learning

Vote utilisateur: 5 / 5

Etoiles activesEtoiles activesEtoiles activesEtoiles activesEtoiles actives

 

Ben LAHMAR El Habib

 Introduction

Machine à Vecteurs de Support (SVM) est lui aussi un algorithme de classification binaire. Tout comme la régression logistique. 

Les Support Vector Machines souvent traduit par l’appellation de Séparateur à Vaste Marge (SVM) sont une classe d’algorithmes d’apprentissage initialement définis pour la discrimination c’est-à-dire la prévision d’une variable qualitative binaire. Ils ont été ensuite généralisés à la prévision d’une variable quantitative. Dans le cas de la discrimination d’une variable dichotomique, ils sont basés sur la recherche de l’hyperplan de marge optimale qui, lorsque c’est possible, classe ou sépare correctement les données tout en étant le plus éloigné possible de toutes les observations. Le principe est donc de trouver un classifieur, ou une fonction de discrimination, dont la capacité de généralisation (qualité de prévision) est la plus grande possible.

Avant de commencer essayons de comprendre c'est quoi un hyperplan?

Dans un espace de dimension 2 un hyperplan est une ligne

B0+B1X1+B2X2=0

Tant que dans un espace de dimension N l'équation devient

B0+B1X1+B2X2+…+BmXm=0

un hyperplan devise l'espace en deux parties

B0+B1X1+B2X2+…+BmXm< 0, and

B0+B1X1+B2X2+…+BmXm> 0

 

 

 

Par contre comme vous pouvez remarqué il existe plusieurs alternatives pour deviser cet espace en deux parties

Il est évident donc qu’il existe une multitude d’hyperplan valide mais la propriété remarquable des SVM est que cet hyperplan doit être optimal.  l'idée donc est  de chercher parmi les hyperplans valides, celui qui passe « au milieu » des points des deux classes d’exemples.

le but de SVM est donc de trouver un classificateur qui va séparer les données et maximiser la distance entre ces deux classes. Avec SVM, ce classificateur est un classificateur linéaire appelé hyperplan.

 

 

 

 Formellement, cela revient à chercher un hyperplan dont la distance minimale aux exemples d’apprentissage est maximale.  

il est claire que la frontière la plus éloignée de tous les points d’entraînement qui est optimale, on dit qu’elle a la meilleure capacité de généralisation. Ainsi, le but d’un SVM est de trouver cette frontière optimale, en maximisant la distance entre les points d’entraînement et la frontière.

On appelle cette distance « marge » entre l’hyperplan et les exemples. L’hyperplan séparateur optimal est celui qui maximise la marge. Comme on cherche à maximiser cette marge, on parlera de séparateurs à vaste marge. Les points les plus proches, qui seuls sont utilisés pour la détermination de l’hyperplan, sont appelés vecteurs de support.

maximiser la marge! mais pourquoi ?

le fait d'avoir une marge plus large procure plus de garantie lorsque l'on classe un nouvel exemple. De plus, si l’on trouve le classificateur qui se comporte le mieux vis-à-vis des données d'apprentissage, il est clair qu’il sera aussi celui qui permettra au mieux de classer les nouveaux exemples. Dans le schéma qui suit, la partie droite nous montre qu'avec un hyperplan optimal, un nouvel exemple reste bien classé alors qu'il tombe dans la marge. On constate sur la partie gauche qu'avec une plus petite marge, l'exemple se voit mal classé.

 

les modèles linéairement séparable et non linéairement séparable.

Parmi les modèles des SVM, on constate les cas linéairement séparable et les cas non linéairement séparable. Les premiers sont les plus simple de SVM car ils permettent  de trouver facilement le classificateur linéaire. Dans la plupart des problèmes réels il n’y a pas de séparation linéaire possible entre les données, le classificateur de marge maximale ne peut pas être utilisé car il fonctionne seulement si les classes de données d’apprentissage sont linéairement séparables.

 

 

 

 

Puisque les ronds sont entourés des étoiles de toute part, il est impossible de trouver de ligne droite qui soit une frontière : on dit que les données d’entraînement ne sont pas linéairement séparables. Cependant, imaginez qu’on arrive à trouver une transformation qui fasse en sorte que notre problème ressemble à ça :

A partir de là, il est facile de trouver une séparation linéaire. Il suffit donc de trouver une transformation qui va bien pour pouvoir classer les objets. Cette méthode est appelée kernel trick, (astuce du noyau). et donc  toute la difficulté est de trouver la bonne transformation.

Pour surmonter les inconvénients des cas non linéairement séparable, l’idée des SVM est de changer l’espace des données. La transformation non linéaire des données peut permettre une séparation linéaire des exemples dans un nouvel espace. On va donc avoir un changement de dimension. Cette nouvelle dimension est appelé « espace de re-description ». En effet, plus la dimension de l’espace de re-description est grande, plus la probabilité de pouvoir trouver un hyperplan séparateur entre les exemples est élevée. Ceci est illustré par le schéma suivant :

 

 

On a donc une transformation d’un problème de séparation non linéaire dans l’espace de représentation en un problème de séparation linéaire dans un espace de re-description de plus grande dimension. Cette transformation non linéaire est réalisée via une fonction noyau. En pratique, quelques familles de fonctions noyau paramétrables sont connues et il revient à l’utilisateur de SVM d’effectuer des test pour déterminer celle qui convient le mieux pour son application. On peut citer les exemples de noyaux suivants : polynomiale, gaussien, sigmoïde et laplacien.

Par exemple la passage de 1 vers 2 est fait via la transformation: z=x2+y2

 

 

 Formalise des SVM

De façon plus générale que dans les exemples donnés précédemment, les SVM ne se bornent pas à séparer des points dans le plan. Ils peuvent en fait séparer des points dans un espace de dimension quelconque.  Ils peuvent en fait séparer des points dans un espace de dimension quelconque. Par exemple, si on cherche à classer des employés parleurs  rendement, alors que l'on connait leur date d'embauche, le nombre de projets ou ils contribuent , le nombre des jours de par projets et le délai du projets, on travaillera en dimension 4. un autre exemple:  si on cherche à classer des fleurs par espèce, alors que l’on connaît leur taille, leur nombre de pétales et le diamètre de leur tige, on travaillera en dimension 3.  un autre exemple est celui de la reconnaissance d’image : une image en noir et blanc de 28*28 pixels contient 784 pixels, et est donc un objet de dimension 784. Il est ainsi courant de travailler dans des espaces de plusieurs milliers de dimensions.

Dans un espace vectoriel de dimension finie n, un hyperplan est un sous-espace vectoriel de dimension n-1. Ainsi, dans un espace de dimension 2 un hyperplan sera une droite, dans un espace de dimension 3 un hyperplan sera un plan, etc.

Soit l’espace vectoriel E de dimension n, doté de la base (e1,…,en). L’équation caractéristique d’un hyperplan est de la forme w1e1+w2e2+...+wnen=0

en dimension 2, munie la base usuelle (x,y), ax+by=0 est bien l’équation caractéristique d’une droite vectorielle (qui passe par l’origine).

un hyperplan vectoriel passe toujours par 0. C’est pour cette raison qu’on utilisera un hyperplan affine, qui n’a pas quant à lui obligation de passer par l’origine.

Ainsi, si l’on se place dans Rn muni de la base (e1,…,en), pendant son entraînement le SVM calculera un hyperplan vectoriel d’équation w1e1+w2e2++wnen, ainsi qu’un scalaire (un nombre réel) b. C’est ce scalaire b qui va nous permettre de travailler avec un hyperplan affine, comme nous allons le voir.

Le vecteur w= est appelé vecteur de poids, le scalaire b est appelé biais.

Une fois l’entraînement terminé, pour classer une nouvelle entrée x de Rn, le SVM regardera le signe de :

h(x)=w1a1+…+wnan+b=∑ wiai+b=wx+b

Si h(x) est positif ou nul, alors xx est d’un côté de l’hyperplan affine et appartient à la première catégorie, sinon xx est de l’autre côté de l’hyperplan, et donc appartient à la seconde catégorie.

En résumé, on souhaite savoir, pour un point x, s’il se trouve d’un côté ou de l’autre de l’hyperplan. La fonction h nous permet de répondre à cette question, grâce à la classification suivante :

                           {

                                  h(x)≥0x classe 1

                                  h(x)<0 x classe 2

                           }

 

A suivre…