• Aucun résultat trouvé

2.3 Caractérisation multiple de données

2.3.4 Calcul de solutions

g=1g}

Notons que cette formulation est sous la forme dite “DNF” (forme normale disjonctive), c’est à dire qu’elle s’écrit comme une disjonction de conjonctions :φg =W

o∈g

V

a∈Sla.

Nous verrons ainsi les méthodes de résolution par calcul de solutions dans la sous-section

2.3.4. Nous allons pour la suite de cette sous-section regarder comment déterminer directement une formulation.

DansChhel et al.[2012] est présentée une méthode par génération de formules. En consi-dérant chaque groupe contre tous les autres, et en essayant toutes les formules, on finira par dé-terminer une formule pour chaque groupe. Bien évidemment, le nombre de formules possibles est bien trop important pour que chacune soit testée, et il est difficile d’éviter la redondance. DansQuinlan[1990] est proposé un algorithme permettant de générer une formule en un temps polynomial en essayant de séparer les exemples positifs et négatifs. Toutefois, avec un tel algo-rithme, les solutions associées aux formules trouvées sont régulièrement d’une taille proche de

|A|. C’est pourquoi dansChhel et al.[2012], il est proposé d’élargir le champ des formules gé-nérées en implémentant un générateur se basant sur la construction récursive et exhaustive des formules de forme normale conjonctive (CNF), c’est à dire des conjonctions de disjonctions. Grâce à un ordonnancement des clauses (i.e. des disjonctions de littéraux), le nombre de re-dondances est réduit de manière conséquente. Ainsi le solveurExact-Form-Cara été développé pour construire l’ensemble des formules dont les solutions associées sont de taille k avant de passer à celles de taillek+ 1.

Toutefois plusieurs problématiques majeures apparaissent avec cette méthode. Non seule-ment le nombre de formules reste très important (et augseule-mente de façon exponentiel avec le nombre d’attributs), mais de plus, il est difficile d’éviter les formules redondantes en un temps et une complexité raisonnable (la génération de CNF sans redondance est un problème coNP-complet). Mais le problème majeur est qu’il est difficile de raisonner sur l’instance complète en se basant sur les groupes un à un. En effet, trouver une formule pour chaque groupe tout en minimisant le nombre d’attributs utilisé pour l’ensemble de ces formules est très coûteux. Il est donc très difficile de déterminer une formulation logique dont la solution associée soit minimale.

2.3.4 Calcul de solutions

Dans cette sous-section, nous présentons différentes méthodes de calcul de solutions minimales du PCM. En premier lieu, nous présentons une méthode proche deExact-Form-Cardécrit

pré-2.3. CARACTÉRISATION MULTIPLE DE DONNÉES 43

cédemment mais adaptée à la détection d’attributs discriminants plutôt qu’à la détection de formules. Ensuite nous présentons l’approche par programmation linéaire permettant de calcu-ler l’ensemble des solutions pour une instance. Enfin, nous présentons des algorithmes gloutons et de recherche locale permettant d’obtenir des solutions de taille proche de la taille minimale.

2.3.4.1 Exact-Proj-Car

Toujours dans Chhel et al.[2012] le solveurExact-Proj-Carest présenté. Son fonctionnement est assez similaire à celui deExact-Form-Car, mais va se baser sur la construction de solutions plutôt que de formules.

Données: Une instance(Ω,A, D, G)

Résultat: Une solutionS

//Gest l’ensemble des groupes retourné par la fonctionG.

pourkde1à|A|faire

pour tous lessous-ensemblesS ∈ Adekattributsfaire consistent =true

pour tous lesg ∈ Gfaire

G0 : une fonction telle que∀o∈Ω,G0(0) =P siG(o) =g,G0(o) = N sinon.

si(Ω, S, DS, G0)est une instance non réalisablealors consistent =f alse

Break

siconsistent=truealors

retournerS;

Algorithme 6 :Exact-Proj-Car

L’algorithme va donc tester toutes les combinaisons dek attributs avant de passer à celles de taillek+ 1si elle n’en trouve pas. Ainsi, la première solution trouvée est forcément de taille minimale.

Une autre approche est de partir d’une taillek = |A|et de diminuerk dès qu’une solution est trouvée. Lorsque toutes les combinaisons d’une taillekmin sont testées sans trouver de so-lution, nous pourront en déduire que la solution trouvée de taillekmin+ 1sera minimale. Cette approche se trouve être plus efficace pour deux raisons. En premier lieu, si l’algorithme doit s’arrêter (temps de calcul trop important, problème technique, ...), il peut retourner la dernière solution trouvée (non optimale nécessairement). De plus, le nombre de solutions étant propor-tionnellement plus important (par rapport aux nombre possible de combinaisons) à cause de la redondance des solutions dominées, trouver une solution de taille k pour passer à l’étape

k−1sera plus rapide (nous verrons la répartition des solutions par rapport à leurs tailles dans la section4.5.1).

Toutefois, tester toutes les combinaisons reste une tâche difficile (il y a k!(|A|−k|A|! )! combinai-sons de taillek différentes).

2.3.4.2 Programmation linéaire

Dans Boros et al. [2000] est présenté un modèle de programmation linéaire pour calculer les support sets (voir la sous-section2.2.2), en transformant le problème de calcul de support sets par un problème de couverture par ensembles. Cette version a été étendue dans Chhel et al.

[2013] afin de transformer le PCM en un problème de couverture minimale par ensembles. Le problème de couverture minimale par ensembles est un des 21 problèmes NP-complet de Karp (Karp[1972]). Soit un universE et une liste d’élémentsei appartenant à un ou plusieurs ensemblesEj ∈E, le problème consiste à calculer le plus petit sous-ensembleS ⊆E tel que :

∀i,∃j tel queei ∈Ej ∈S

Autrement dit, il s’agit de trouver le plus petit nombre d’ensembles contenant tous les éléments de l’universE .

Dans le Min-PCM, l’objectif est de trouver le plus petit ensemble d’attributs tel que deux observations issus de deux groupes différents soient au moins différents sur un attribut. En modélisant chacune de ces comparaisons par un élémenteidu problème de couverture minimale par ensembles, et chaque attribut par un ensemble Ej contenant les couples d’observations qui se distinguent sur cet attribut, notre modèle se modélise bien par un problème de couverture minimale par ensemble.

En premier lieux, nous devons définir l’ensemble des éléments, c’est à dire l’ensemble des couples d’observations issus de deux groupes différents.

Définition 19. Soit une instance(Ω,A, D, G), l’ensembleΘest l’ensemble des couples d’ob-servations(o, o0)∈Ω2tel queG(o)6=G(o0).

Nous pouvons ainsi représenter pour chaque couple (o, o0) ∈ Θ et pour chaque attribut

A ∈ A si les deux observations sont distinctes ou non. Pour cela, on utilise une matrice de contraintesC.

Définition 20. Soit une instance(Ω,A, D, G)etΘl’ensemble des couples d’observations issus de deux groupes différents, la matrice de contraintes est une matrice booléenne C de taille

|Θ| × |A|construite comme suit :

• Chaque ligne est numérotée par un couple d’observations(o, o0)∈Θ,

• Chaque colonne représente un attribut,

• C[(o, o0), a] = 1siD[o, a]6=D[o0, a],C[(o, o0), a]sinon,

• On noteC[(o, o0), .]le vecteur booléen représentant les différences entre les observations

2.3. CARACTÉRISATION MULTIPLE DE DONNÉES 45

Exemple 11. Reprenons l’exemple8:

Meeting Gr

Att

Rythme(r) Costume(c) Cheveux(ch) Lunettes(l) Montre(m)

1 Peu satisf. 0 1 1 0 0 2 Pass. 1 1 1 1 1 3 0 1 0 1 1 4 Bon 0 0 0 1 0 5 Excel. 1 0 1 0 0 6 1 1 0 0 1

On constate que lors du meeting 1, le candidat ne portait pas de montre, mais lors du meeting 2, si. Donc l’attribut montre différencie le meeting 1 du meeting 2. On a donc

C[(1,2), m] = 1. Toutefois, il portait le même costume lors des deux meeting, ce qui donne

C[(1,2), c] = 0. En remplissant de cette manière la matrice C, nous obtenons la matrice de contraintes suivante :

Couples

Attributs

Rythme (r) Costume (c) Cheveux (ch) Lunettes (l) Montre (m)

(1,2) 1 0 0 1 1 (1,3) 0 0 1 1 1 (1,4) 0 1 1 1 0 (1,5) 1 1 0 0 0 (1,6) 1 0 1 0 1 (2,4) 1 1 1 0 1 (2,5) 0 1 0 1 1 (2,6) 0 0 1 1 0 (3,4) 0 1 0 0 1 (3,5) 1 1 1 1 1 (3,6) 1 0 0 1 0 (4,5) 1 0 1 1 0 (4,6) 1 1 0 1 1

Maintenant que chaque couple d’observations deΘest représenté parC, nous devons, pour chaque ligne, c’est à dire chaque couple, avoir au moins un attribut différenciant le couple dans notre solution. Soit Y ∈ {0,1}|A|, Y = [y1,· · · , y|A|] tel queyi = 1 si lei-ième attribut fait partie de la solution,0sinon, on a la contrainte du programme linéaire suivante :

C.Yt>1t

Comme nous cherchons à minimiser le nombre d’attributs dans notre solution, la fonction objectif sera simplement :

min: |A|

X

i=1

yi

Au final nous obtenons le programme linéaire (Karp[1972]) suivant :

min: |A| X i=1 yi s.t.: C.Yt >1t Y ∈ {0,1}|A|, Y = [y1, ..., y|A|]

Notons que par construction, nous pouvons obtenir l’ensemble des solutions minimales par programmation linéaire, et donc résoudre leMinAll-PCM.

Toutefois, comme pour tout problème de couverture minimale par ensembles, résoudre ce programme linéaire peut être coûteux en temps et en mémoire.

2.3.4.3 Algorithmes gloutons et recherche locale

Nous venons de voir que leMin-PCMpeut se modéliser comme un problème de couverture par ensembles. Or il existe de nombreux algorithmes gloutons permettant de rapidement apporter une borne maximale au Min-PCM en déterminant une solution du Sol-PCM. Le principe de la plupart de ces algorithmes est simple, choisir un attribut, retirer tous les couples de Θ se distinguant par cet attribut, puis recommencer jusqu’à ce qu’il ne reste plus de couple à reti-rer. Obtenir une bonne solution consistera ainsi à choisir à chaque étape le bon attribut pour minimiser la taille de la solution finale.

DansChvatal [1979], il est proposé, à chaque étape, de choisir l’attribut couvrant le plus d’éléments non couverts par les attributs sélectionnés précédemment. Le calcul est rapide mais peut donner une solution de taille assez importante face à la solution minimale.

DansChhel et al. [2013] est proposée une méthode par recherche locale, qui va chercher à partir d’une solution (la solution de taille|A|)) à retirer ou échanger ou rajouter un attribut (dans cet ordre) pour obtenir de meilleures solutions et répéter cette opération tant que ces trois actions (ou moins) améliorent un critère objectif basé sur la taille de la solution, mais également basé sur une notion de poids de variables afin de ne pas se retrouver bloqué à la première solution non-dominée trouvée. En lançant l’algorithme plusieurs fois, et en faisant évoluer les poids sur les attributs en fonction du nombre de fois qu’ils ont été sélectionnés précédemment, l’algorithme explore un large espace de recherche. Ainsi, plus on relance l’algorithme, plus la solution sera