• Aucun résultat trouvé

Chapitre 2 : indexation

4.2 Approximation locale

Les méthodes basées sur des approximations locales reposent sur l’utilisation des formes géométriques (rectangles, sphères, ect.). Ces formes n’ont pas nécessairement les mêmes propriétés : taille différente, possibilité de chevauchement, codage différent, etc. Ces formes sont dans la plupart des cas indexés par une structure arborescente. Cette approche est plutôt adaptée aux données réelles dont la distribution est généralement non uniforme. Nous détaillons dans les sous paragraphes qui suivent les méthodes A-Tree, IQ-Tree, RA-Blocks, GC- Tree, Active Vertice , et PCR-Tree .

4.1.1 A-Tree

A-Tree [Syu 00] est une méthode d’indexation hiérarchique similaire au R*-Tree. La différence entre les deux méthodes est dans la stratégie d’approximation des MBRs (Minimum bounding rectangle). A-Tree introduit la notion des rectangles englobant virtuels (VBRs) qui repose sur l’idée d’approximer chaque MBR ou vecteur relativement par rapport à son MBR père. Cette approximation est plus précise que le R*-Tree et permet d’avoir un arbre avec une grande capacité de stockage.

En effet les VBRs sont des rectangles contenant une approximation des MBRS ou des données réelles selon le niveau de l’arbre à qui ils appartiennent. Ils se calculent de la manière suivante : Etant donné un rectangle multidimensionnel RectP représenté par deux vecteurs multidimensionnels p et p correspondant au côté bas gauche et haut droit tel que : '

] ,..., [p1 pd

p= , ]p'=[p'1,...,p'd et pipi'pour i=

{

i=1,...d

}

avec d est la dimension de l’espace multidimensionnel. Soit Rectqun rectangle dans P représenté par deux points q et q telle '

que ' ' i p q q piii≤ .

L’idée de l’approximation relative est de quantifier l’intervalle ( , ') i i q

q relativement par rapport à

l’intervalle )( , ' i i p

p avec la fonction de quantification Quant définie :

nb i q h i p i p i p i q Quant ) ( ) ' ( ) ( = + − , avec ⎪ ⎩ ⎪ ⎨ ⎧ − − = − = on nb p a q p q si nb q h i i p i i i i i sin . ) ( 1 ) ( ' '

nb est un entier supérieur à 1. q se calcul de la même manière que i' q . i

Le rectangle virtuel englobant VBR est le rectangle RectVBreprésenté par les deux vecteurs vet '

v telle que : v=(Quant(q1),...,Quant(qd))et ))( ( ),..., ( ' ' 1 ' d q Quant q Quant

v = sachant que Q est

inclus dans RectVqet RectVqest inclus dans RectP . Soit U un vecteur de données contenu dans le rectangle P , ce vecteur de données est vu comme étant un rectangle de diagonal nulle, de ce fait son VBR peut être définie de la même manière que précédemment. La figure 2.18 montre un exemple de VBR.

Fig. 2.18. Exemple de VBR

A-Tree est une structure arborescente, elle contient trois éléments : le nœud racine, les nœuds intermédiaires, et les feuilles. Le nœud racine représente l’espace de données, les nœuds intermédiaires contiennent les MBRs ainsi que les codes des VBRs relatifs aux MBRs des nœuds fils. Finalement les nœuds feuilles contiennent les vecteurs de données réels. Lors de la construction de la structure d’index, les codes des VBRs de chaque nœud de l’arbre sont calculés à partir des informations stockées dans les MBR des parents et des fils du même nœud. Lors de la recherche d’un vecteur requête, la position exacte du VBRs fils d’un nœud peut être calculée à partir du MBR père et des codes des VBRs stockés dans le nœud. Un exemple de cette structure est illustré dans la figure 2.19. Dans la figure 2.19, le rectangle Rect représente l’espace de données, M1 et M2 sont deux rectangle dans Rect. M1 et le MBR de M3 etM4. M3est le MBR du vecteur de données P1 et P2. Dans cette structure V1, V2, V3, et V4 sont les VBRs respectivement de M1dans Rect, M2 dans Rect, M3 dans M1, et M4dans M1. C1 et C2 sont les VBRs respectivement de P1, P2 et M3

Fig.2.19 Structure d’index du A-Tree

L’algorithme de la recherche des kppv du A-Tree est une amélioration de l’algorithme présenté dans [Hja 95] . Ce dernier se base sur le calcul des distances MINDIST, c.à.d les distances minimales entre les MBRs d’un nœud et un vecteur requête donnée sont calculées et stockées avec un ordre décroissant dans une structure nommée queue de priorité. Les nœuds sont visités dans l’ordre décroissant de leurs distances MINDIST, et une liste des kppv est crée durant la recherche pour stocker les vecteurs les plus proches de la requête. Dans la queue de priorité les nœuds éliminés de la recherche sont ceux dont la distance par rapport au vecteur requête est supérieure au kème vecteurs proche dans la liste. Dans A-Tree, la queue de priorité contient les

Rectangle q ct Re q ctV Re Rectangle RectP Rectangle Rect M1

distances MINDIST et un pointeur sur le nœud, l’algorithme de recherche améliore le taux de filtrage en utilisant deux listes des kppv . La première appelée NNOVL, elle correspond aux vecteurs kppv usuels comme dans [Hja 95], elle contient les objets candidats stockées avec leurs distances par rapport au vecteur requête. La deuxième liste NNVL contient les distances maximales entre le vecteur requête et les VBRs des données réelles. En résumé deux conditions guident le processus de la recherche : les données sont retenues si la distance entre le vecteur requête et le VBRs contenant le vecteur réel est inférieur ou égale à la kème distance dans NNOL. Si la distance entre le vecteur requête et le vecteur réel est inférieur au kèmevecteur dans NNOL ce vecteur est retenu et insérer dans NNOL. Le détail de l’algorithme de recherche est donné dans [Syu 00].

Les performances de A-Tree sont intéressantes par rapport à VA-File. En effet, à la différence du VA-File, qui se base sur des approximations exactes des vecteurs de données, A-Tree quant à lui utilise des approximations relative qui permettent de d’adapter à la distribution des données, d’un autre côté, l’erreur de l’approximation relative est beaucoup moins inférieure à celle d’une approximation exacte, ce qui rend cette technique bien adaptée aux distributions non uniforme des données.

Par ailleurs, les valeurs des approximations sont représentées d’une manière compacte diminuant ainsi la taille des entrées de chaque nœud, par conséquent, la capacité des nœuds augmente ce qui diminue par la suite le nombre des nœuds parcourus durant la recherche et ainsi le temps CPU.

Un autre avantage de la structure A-tree est chaque nœuds contient des informations relative à deux niveaux, celui du père et du fils. Cette configuration des nœuds est très utile pour l’efficacité des opérations de mise à jour.

A-Tree présente par contre une limitation au niveau de l’erreur d’approximation, cette dernière dégrade d’une manière considérable la qualité de la recherche particulièrement en grande dimension.

4.1.2 IQ-Tree

Berchtold et al. [Bbj 00] ont proposé le IQ-Tree ( Independent Quantization Tree) un structure d’indexation constituée de trois niveaux d’indexation répartis sur trois fichiers différents: un premier niveau appelé "directory", répartit les données dans une structure hiérarchique de type R*-Tree [Bec 90], ce niveau contient les représentations exacte des MBRs. Le second niveau nommé "quantized data pages" conserve une approximation du style VA-File pour chaque rectangle minimum englobant (REM), enfin le dernier niveau correspond aux données réelles. Chaque MBR dans un "directory" contient un pointeur sur un "quantized data page" qui contient à son tour un pointeur sur une page de données réelle. Les "quantized data page" possède une taille maximale de blocks, c.à.d, étant donnée un nombre de bit de codage chaque "quantized data page" peut stocker un nombre maximale de points codés par une chaine de bit dans une seule "quantized data page".

Tout comme le VA-File, un nombre b de bits par dimension est utilisée pour approximer la i localisation des points en divisant virtuellement les MBR suivant chaque dimension en

bi

2 partitions de taille égale. Les points contenus dans une région sont représentés par une chaine de bits comme dans le VA-File. Le pas de quantification b (qui correspond au nombre i de bit de codage) varie en fonction de la densité des points dans les MBRs. La structure de IQ- Tree est illustrée dans la figure 2.20.

Fig.2.20 structure d’index d’IQ-Tree

La recherche dans IQ-Tree s’effectue de la même manière que dans le A-Tree. En effet, la condition générale pour guider le processus de la recherche est la suivante : si une région spécifique dans un certain niveau de l’arbre est non exclue de la recherche, le processus de la recherche suit le pointeur correspondant au MBR de la région courante et descend récursivement jusqu’à le niveau le plus bas. Cette condition peut être appliquée aux MBRs d’un ensemble de points ainsi aux approximations des MBRs relatif aux points. Cette condition permet également de limiter le nombre d’accès aux vecteurs réelles dans le sens où ceux-ci sont parcourus uniquement que s’ils sont les vrai réponses à la requête ou si la requête ne peut pas être évalué à la l’aide de la représentation compressée.

Etant donnée un requête, les approximations des MBRs sont insérées dans la queue de priorité comme dans le A-Tree. Les vecteurs réels correspondant à ces approximations sont parcourus uniquement dans le cas où leurs approximations deviennent des pages de la queue de priorité, c.à.d que leurs approximations possèdent les distances minimales dminpar rapport à un vecteur

requête q donnée parmi tout les autres MBRs de la que de priorité. S’il existe un point telle que sa distance par rapport au vecteur requête q est inférieure à la plus petite dmax dans la queue de

priorité, les coordonnées réelles de ce point sont examinées pour calculer la distance réelle. Dans le cas contraire, il existe aucun point qui vérifie la condition précédant, le point pest sélectionné car il constitue le voisin le plus proche du vecteur requête. Il n’existe en effet, aucune stratégie raisonnable qui permet d’éliminer ou de retarder la sélection du point p si son approximation est une page de la queue de priorité, puisque la vrai distance entre p et q est la plus petite possible.

IQ-Tree a de bonnes performances par rapport au VA-File : Le nombre d’accès aux données et le temps de recherche sont considérablement réduits. Par contre lorsque la dimension augmente la structure arborescente souffre des problèmes de la malédiction de la dimension, sa conception reste complexe par rapport aux autres structures.

4.1.3 GC-Tree

Le GC-Tree (Grid Cell Tree) [Gua 02b] est une technique qui combine les avantages de l’approche approximation des vecteurs permettant d’accéder à un nombre réduits de vecteurs réelles et les avantages des indexes multidimensionnels permettent de regrouper et d’organier les données dynamiquement dans l’index. GC-Tree repose sur une stratégie basée sur la densité pour le partitionnement de l’espace de données

-Partitionnement de l’espace basé sur la densité :

Pour approximer la densité des points, le GC-Tree partitionne l’espace de données en des cellules hyper carrées de même volume, ceci est effectué en divisant chaque dimension en des intervalles réguliers de même taille ce qui permet de produire par conséquent de cellules de même volume. Le nombre de vecteur dans chaque cellule est utilisé pour approximer la densité de la cellule. Pour une base statique, la densité d’une cellule est définie comme étant le quotient du nombre de points dans la cellule sur le nombre maximale de vecteurs qui peuvent être logés dans une page disque. Par contre, dans le cas d’une base de données dynamique, GC-Tree définit la densité d’une cellule comme étant le nombre de vecteur dans la cellule sur la capacité de la page disque sachant qu’un sous espace de l’espace de données correspond à un nœud dans l’arbre GC et il est physiquement stocké dans une page disque.

Une cellule est dense si sa densité est supérieure ou égale à un seuil τ. Sinon elle est dite éparse. Le partitionnent de l’espace de données basée sur la densité consiste en trois étapes : (i) L’espace de données est partitionné en se basant sur une fonction de densité identifiant les régions denses et les régions éparses. (ii) Le partitionnement est concentré sur les régions denses. (iii) Les vecteurs des régions éparses sont traités comme s’ils se trouvent dans une seule région. La figure 2.21 montre un exemple de partitionnent de l’espace de données basé sur la densité dans un espace à deux dimensions. Dans cet exemple, la capacité des cellules est fixée à 4. Si la cellule contient au maximum 3 points elle est appelée "cluster", sinon elle est nommée "outliers". La figure 2.21 montre le résultat de trois niveau de partitionnent selon GC-Tree. Lors du premier partitionnent les point 1, 2, 3, 4, 5 et 6 sont identifier en tant que "outliers", donc le "cluster" correspondant est subdivisé. Lors du second partitionnent, les points 7, 8 et 9 sont identifiés comme étant des "outliers" et les points 10, 11, et 12 sont également identifiés comme étant des "outliers" lors de du 3eme niveau de partitionnent. Finalement, nous obtenons, un seul "cluster" dans 3eme niveau, et trois "outliers" dans le niveau 2, 1 et 0.

Fig. 2.21Partitionnement de l’espace selon GC-Tree

Structure d’index

Le GC-Tree est organisé sous forme d’un arbre dynamique où les nœuds internes de l’arbre contiennent les cellules correspondant aux sous espaces et les feuilles contiennent les données réelles. L’entrée de chaque feuille de l’arbre contient l’approximation du vecteur réelle, cette approximation est calculée suivant la méthode LPC-File (voir paragraphe 4.2.2) et un pointeur vers un nœud de données dans lesquelles les données réelles sont stockées. L’entrée d’un nœud interne de l’arbre contient la cellule correspondant au sous espace couvrant les données de cette

•1 •2 •3 •4 •5 •6 • • • •10 • 11 •12 •9 •7 •8 Cluster dans le niveau 3 Niveau 2 Niveau 1 Niveau 0

cellule ainsi qu’un pointeur vers le niveau inférieur. Un exemple de construction de la structure d’index du GC-Tree est illustré dans la figure 2.22. La figure 2.22a représente un espace de données de deux dimensions divisé en 16 cellules avec un nombre de bits de codage fixé à 2. La densité maximale des cellules est fixée à 3/(capacité des nœuds). La racine contient trois entrées. La cellule (00,11) du second niveau représenté dans la figure 2.22a correspondant au nœud C2 forme une partition fine du cluster correspondant au nœud C4 et un "outlier". Le nœud C4 à son tour forme une partition fine dans le "cluster" correspondant au nœud C5 et un "outlier". La construction de l’index se fait par insertion successive des données réelles. La recherche des kppv s’effectue en deux étapes : une première étape de filtrage et une seconde

étape d’accès aux données réelles. L’algorithme de recherche utilise trois structures globales : deux listes bl_list et cand_list et un tableau k_element contenant les k vecteurs les plus proches. La liste bl_list contient les branches des nœuds internes de l’arbre avec leurs distances minimales et maximales par rapport au vecteur requête. La liste cand_list contient la liste des nœuds candidats, c-à-d ceux susceptible de contenir les vecteurs les plus proche à la requête, cette liste contient également les distances minimales et maximales qui séparent chaque candidats et le vecteur requête. Ces deux structures (bl_list et cand_list) sont calculées en utilisant l’algorithme min heap [Min 95]. Lors de la recherche si une approximation est rencontrée telle que sa distance minimale est supérieure à la plus petite distance maximale, le vecteur correspondant est éliminé de la recherche.

(a) (b)

Fig. 2.22. Construction de l’index de l’arbre GC. (a)partitionnent de l’espace de données. (b) la structure d’index correspondante [Gua 02b]

GC-Tree améliore les performances de la majorité des techniques d’indexation basées sur l’approximation à savoir : IQ-Tree, LCP-File, VA-File et la recherche séquentielle. Par contre, cette méthode souffre des problèmes de la malédiction de la dimension. En effet, l’espace de données est partitionné suivant la méthode KD-Tree en des hyper cubes de petits volume. Or en grande dimension, les distances entre vecteurs ont tendance à converger ceci risque de regrouper tout les vecteurs dans le même hyper cubes ce qui diminue par conséquence la performance de l’index ainsi que celle de la recherche.

4.1.4 RA-Blocks

RA-Blocks [Ter 02] est une technique basée sur l’approximation des régions. L’espace de données est tout d’abord partitionné en cellules hyper rectangle de taille identique et à chaque cellule correspondant à un vecteur est attribué un code comme dans le VA-File.

L’espace de donnée est partitionné en des régions selon l’algorithme KDB-Tree, l’algorithme de partitionnent est guidé d’une part par les valeurs de quantification issues du découpage de l’espace de données en cellules et d’autre part par la capacité des régions préalablement fixé au cours de l’indexation. Les régions résultantes du découpage de l’espace de données sont codées par les deux cellules correspondant la cellule du bas à gauche et en haut à droite.

L’algorithme de la recherche des kppv est composé de deux étapes : une étape de filtrage

dans laquelle les régions candidates sont sélectionnées en se basant sur leurs distances minimales et maximales par rapport au vecteur requête. Dans la deuxième étape dite accès au

vecteurs, les régions sélectionnées seront accédées et une recherche séquentielle est exécutée

afin de calculer les vecteurs les plus proches au vecteur requête (cette méthode est présenté en détail dans le paragraphe 1.4 du chapitre 3)

Comme le VA-File RA-Blocks n’utilise aucune structure arborescente, elle repose sur la gestion de deux ensembles de fichiers, un fichier contenant les approximations des régions et un autre contenant les données réelles. À la différence des méthodes qui se basent sur une structure arborescente, L’insertion de nouveau vecteurs ne nésite aucune réorganisation de l’espace de données, sa structure est simple et dynamique.

D’un autre côté, RA-Blocks combine les avantages des méthodes basées sur une structure arborescente permettant de regrouper localement les données et les organiser en index, ainsi que les avantages des méthodes basées sur l’approximation globale permettant de réduire le temps de calcul des distances et d’accéder à un nombre réduits de vecteurs réelles.

La structure du RA-Blocks par contre, semble plus adaptée aux données de distribution uniforme, elle souffre aussi et comme la majorité des techniques d’indexation basées sur l’approximation des problèmes de la malédiction de la dimension.

Contrairement au VA-File, le nombre de bit de codage b n’a pas l’influence significative sur la i taille du fichier d’approximations et les performances de la méthode. Un grand nombre de bits de codage produit une approximation précise par contre elle augmente légèrement la taille du fichier d’approximation puisque celui-ci contient uniquement les approximations des régions représentés par deux cellules.

4.1.5 Active Vertice

Balko et al. proposent une méthode appelée AV (Active Vertice) [Bal 04] pour l’indexation des données multidimensionnelle. Cette méthode reprend les techniques basées sur les arbres quaternaires [Sam 84] pour le partitionnement de l’espace, elle construit les approximations des vecteurs dans l’espace et associe à ces approximations des codes binaires B comme dans le VA-i File. Cependant, les cellules régulières dans VA-File sont remplacées dans la méthode AV par un arbre équilibré pour refléter la distribution des vecteurs dans l’espace. Chaque nœud C de i l’arbre détermine une région de l’espace décrite par un point représentatif, le nœud C est i délimité par l’intersection d’un ellipsoïde et d’un hyper-rectangle. Le rayon maximum de l’ellipsoïde est un paramètre fixé au début de l’indexation. La taille de l’hyper-rectangle dépend du niveau du nœud délimité par l’hyper-rectangle. Elle est réduite de moitié lorsqu’on passe d’un nœud donnée aux nœuds de niveau directement inférieur en cas de distribution uniforme

des données. Le code binaire B est entièrement défini par le chemin parcouru pour aller de la i