Utilisateur:INFO EB04 2016/Brouillon

En intelligence artificielle, la classification guidée par des contraintes par paires (en anglais Pairwise Constrained clustering) est un ensemble de méthodes d'apprentissage semi-supervisé et un sous-ensemble des algorithmes de classification sous contraintes.

Définition

modifier

La classification guidée par des contraintes par paires est une classification utilisant une série de contraintes de liaisons (en anglais Must-Link ou ML[1]), une série de contraintes de non-liaisons (en anglais Cannot-Link ou CL[1]) ou les deux en même temps lors du déroulement de l’algorithme de classification sur un jeu de données  .

 
Représentation de contraintes par paires

Une paire est un couple de données     définissant 2 ensembles tels que:

  •  ,   et   ne pouvant appartenir au même cluster
  •  ,   et   devant appartenir au même cluster


Les contraintes de liaisons permettent d'associer deux données à une même classe alors que les contraintes de non-liaisons interdisent à deux données d'appartenir à une même classe.

Le respect de ces contraintes est plus ou moins suivi par les algorithmes de classification. Certains algorithmes cherchent une classe permettant de respecter toutes les contraintes, tandis que d'autres vont minimiser les violations de contraintes s'il n'existe aucune classe pouvant les respecter.

Algorithme de classification par paires

modifier

L'algorithme utilisé pour la classification par paires est le partitionnement K-moyennes, auquel on inclut les contraintes de liaisons et de non-liaisons. Pour cela, il existe plusieurs moyens de les introduire.

Algorithme K-Moyennes contraint par les centres

modifier

Afin d'implémenter ces contraintes, l'une des méthodes est la mise en place de centres forcés respectant ces contraintes. Ces centres forcés ne pourront changer au cours de l'algorithme, même en cas d'aberration. Cette étape n'intervient dans l'algorithme K-moyennes que lors de l'assignation d'un point à un centre.

Le pseudo-code présenté ci-dessous permet d'implémenter ces contraintes dans l'affection d'un point à un centre.

La première étape consiste à définir un jeu de données X ainsi qu'un ensemble de classes   :

     Jeu de données
    Classes

Ensuite, on va forcer les points qui subissent une contrainte à un certain centre :

 Pour chaque paire   de   
Si   Alors
  et   sont associés à la même classe   FinSi
Si   Alors
  et   ne peuvent être associés à la même classe   FinSi
FinPour

Enfin, on assigne à chaque point une classe tout en vérifiant les contraintes   et   :

 Pour chaque point   de  
Si   est soumis à une contrainte Alors
  est associé à la classe précédemment calculée Sinon Calculer la distance entre   et chaque centre de   et on assigne   au centre le plus proche FinSi
FinPour
 
Illustration de l'algorithme K-Moyennes contraint par les centres.

Sur cette illustration, on peut voir que les points   ont une contrainte   et appartiennent bien à la même classe. Les points   et   sont contraints par une  , ils n'appartiennent pas à la même classe, même si   est bien plus proche du centre   que du centre  .

Algorithme K-Moyennes contraint étendu

modifier

L'algorithme K-Moyennes contraint étendu est une version améliorée de l'algorithme K-Moyennes contraint par les centres. À la différence de ce dernier, les points faisant partie d'une paire de contrainte (Must-Link ou Cannot-Link) ne sont pas associés de manière définitive à un centre de classe tout au long de l'algorithme. Ils peuvent changer de centre de classe tout en respectant leurs contraintes.

Le pseudo-code présenté ci-dessous permet d'implémenter l'algorithme des K-Moyennes contraint étendu.

La première étape consiste à définir un jeu de données  , un ensemble de classes   ainsi que deux ensembles correspondant respectivement aux paires sous contraintes   et   :


     Jeu de données
    Classes
    Ensemble de paires Must-Link
    Ensemble de paires Cannot-Link

Il convient ensuite de forcer les points qui subissent une contrainte à un certain centre :

Pour chaque point   du jeu de données  
Pour chaque paire   de  
Si il existe un point   de   autre que   soumis à une contrainte   Alors
Vérifier que   s'est déjà vu affecté un centre pour cette itération Si c'est le cas Alors
  est associé à la même classe que  
FinSi FinSi
FinPour
Si   n'est pas affecté à une classe Alors
Pour chaque paire   de  
Créer un vecteur   contenant les centres de   privé de ceux auxquels   ne peut être affecté
FinPour
Pour chaque centre   de  
Calculer la distance entre   et le point  
Affecter à   la classe dont le centre est le plus proche
FinPour FinSi
FinPour
 
Illustration du respect de la contrainte Must-Link à une itération donnée sur le point X2
 
Illustration du respect de la contrainte Cannot-Link à une itération donnée sur le point X4

L'animation de gauche représente le traitement du point   au cours d'une itération. Il est soumis à une contrainte Must-Link avec   et  . Le premier étant plus proche du centre  , il a été attribué à la classe n°3. Par conséquent son voisin de droite   se retrouve associé à la classe n°3 alors qu'il est plus proche du centre de la classe n°2.

Sur l'animation de droite, on constate cette fois-ci que le point   se retrouve associé à la classe n°1 alors qu'il est plus proche du centre   de la classe n°2. Notre point est en effet soumis à une contrainte Cannot-Link avec le point  . Ce dernier étant associé à la classe n°2, le point   ne peut y être associé également.

Algorithme K-Moyennes basé distance

modifier

L'algorithme K-Moyennes basé distance n'utilise que des points de   pour définir ces centres, appelé ici médians. Sur le principe de l'algorithme des K-médianes, l'algorithme K-Moyennes basé distance calcule la matrice distance entre chaque points du jeu de donnée. Cela permet d'éviter les nombreux calculs de distance lors de la recherche de centre le plus proche.

Les centres des classes ne peuvent alors pas être des points quelconques. L'algorithme utilise alors les points comme médians de classe.

Le pseudo-code présenté ci-dessous permet d'implémenter l'algorithme des K-Moyennes basé distance.

La première étape consiste à définir un jeu de données   ainsi que deux ensembles correspondant respectivement aux paires sous contraintes   et   :

     Jeu de données
    Ensemble de paires Must-Link
    Ensemble de paires Cannot-Link
    Nombre de médians

Pour chaque couple du jeu de données
    distance entre   et  (pondérée entre 0 et 1)
FinPour
Pour chaque paire   de  
    0
FinPour

Pour chaque paire   de  
     
FinPour

Enfin, on choisit k-points pour définir les médians en respectant les contraintes   et   puis on peut procéder à l'assignation de la façon suivante :


 Tant que il n'y a pas de convergence
Alors
Chaque point est assigné à la classe dont le médian est le plus proche
Les nouveaux médians sont calculés en respectant   et  
FinTantQue
 
Illustration de l'algorithme K-Moyennes basé distance

Comme on peut le voir ci-dessus, au début de l'itération, les médians sont choisis parmi les points du jeu de donnée, tout en respectant les contraintes   et  . Après l'assignation de tous les points aux classes, le nouveau médian est calculé comme étant le point le plus proche de la moyenne de tous les points appartenant à la classe.

Algorithme de partitionnement spectral

modifier

L'algorithme de partitionnement spectral classique ne prend pas en compte les contraintes par paires. Pour y remédier, des modifications doivent être apporté à l'algorithme de base.

On utilise ce type de partitionnement lorsque nous disposons d'un jeu de données non linéairement séparable et il est particulièrement efficace pour un jeu de donnée à forte connexité. Dans un tel cas, il est nécessaire de changer repère afin de pouvoir classifier chaque données.

Prise en compte des contraintes[2]

modifier

La première étape consiste à créer la matrice de similarité   telle que définie dans l'algorithme de partitionnement spectral. On considère   comme le nombre de classe.

On définit également une matrice d'adjacence   tel que  . C'est cette matrice qui permettra la prise en compte des contraintes par paires, en plaçant la valeur   pour   et   ou   (selon les conventions d'écritures) pour  .

Il convient alors de construire une nouvelle matrice de similarité   telle que    va permettre de pondérer le respect des contraintes contenues dans la matrice  .

On peut ensuite calculer un Lagrangien   tel que  , avec   la matrice degré. Nous pouvons ainsi calculer les vecteurs propres et on extrait les   vecteurs propres stockés dans un vecteur  .

On normalise en ligne ce vecteur pour obtenir le vecteur  . Enfin, on applique l'algorithme K-moyennes avec comme paramètres   et  .

Sélection des contraintes[3]

modifier

Les contraintes doivent être choisies selon leurs utilités. En effet, une mauvaise sélection des contraintes détériore le partitionnement. Et à contrario, une bonne sélection améliore le résultat. Deux mesures permettent de qualifier cette utilité :

  • l'informativité qui mesure la quantité d'information apportée
  • la cohérence qui compare les contraintes entre elle.

Propagation automatique des contraintes[3]

modifier

Une fois ces contraintes définies et implémentées, il est possible de les propager automatiquement. En effet, certaines combinaisons entre les   et les   permettent d'obtenir de nouvelles contraintes. Pour un jeu de donnée composé de 3 points :

  • Deux contraintes   induisent une troisième contrainte  
  • Une contrainte  et une contrainte   induisent une contrainte  
  • Deux contraintes   induisent une contrainte   si il n'y a que deux classes, sinon on ne peut rien en déduire
Contrainte actuel Propagation de la contrainte
   
   
 
 

Notes et références

modifier
  1. a et b Kiri Wagstaf, Claire Cardie, Seth Rogers et Stefan Schroedl, « Constrained K-means Clustering with Background Knowledge », Proceedings of the Eighteenth International Conference on Machine Learning,‎ , p. 577-584
  2. (en) Guillaume Wacquet, Emilie Poisson Caillault, Denis Hamad et Pierre Hébert, « Constrained spectral embedding for K-way data clustering », Pattern Recognition Letters,‎
  3. a et b N Voiron, A Benoit, A Filip, P Lambert, B Ionescu. Clustering Spectral semi-supervisé avec propagation des contraintes par paires. 12 ème Conférence en Recherche d’Information et Applications - CORIA, Mars 2015, Paris, France.