Introduction aux dépendances fonctionnelles

Dans cet article, nous parlerons des dĂ©pendances fonctionnelles dans les bases de donnĂ©es - ce qu'elles sont, oĂč elles sont appliquĂ©es et quels algorithmes existent pour leur recherche.

Nous considĂ©rerons les dĂ©pendances fonctionnelles dans le contexte des bases de donnĂ©es relationnelles. Parlant trĂšs grossiĂšrement, dans de telles bases de donnĂ©es, les informations sont stockĂ©es sous forme de tableaux. De plus, nous utilisons des concepts approximatifs, qui dans une thĂ©orie relationnelle stricte ne sont pas interchangeables: nous appellerons la table elle-mĂȘme une relation, des colonnes - attributs (leur ensemble - un diagramme de relation), et un ensemble de valeurs de ligne sur un sous-ensemble d'attributs - un tuple.



Par exemple, dans le tableau ci-dessus, (Benson, M, M organe ) est un tuple d'attributs (Patient, Sexe, MĂ©decin) .
Plus formellement, ceci est Ă©crit comme suit: t1[ Patient, Paul, docteur ] = (Benson, M, M organe) .
Nous pouvons maintenant introduire le concept de dépendance fonctionnelle (FZ):

DĂ©finition 1. La relation R satisfait la loi fĂ©dĂ©rale X → Y (oĂč X, Y ⊆ R) si et seulement si pour des tuples t1, t2∈ R dĂ©tient: si t1[X] = t2[X] puis t1[Y] = t2[Y]. Dans ce cas, on dit que X (un dĂ©terminant ou un ensemble d'attributs dĂ©finissant) dĂ©finit fonctionnellement Y (un ensemble dĂ©pendant).

En d'autres termes, la prĂ©sence de la loi fĂ©dĂ©rale X → Y signifie que si nous avons deux tuples dans R et qu'ils coĂŻncident dans les attributs de X , ils coĂŻncideront Ă©galement dans les attributs de Y.
Et maintenant en ordre. Considérez les attributs Patient et Sexe pour lesquels nous voulons savoir s'il existe ou non des dépendances entre eux. Pour tant d'attributs, les dépendances suivantes peuvent exister:

  1. Patient → Sexe
  2. Sexe → Patient

Selon la dĂ©finition ci-dessus, afin de conserver la premiĂšre dĂ©pendance, une seule valeur de la colonne Sexe doit correspondre Ă  chaque valeur unique de la colonne Patient . Et pour l'exemple de table, cela est vrai. Cependant, cela ne fonctionne pas dans la direction opposĂ©e, c'est-Ă -dire que la deuxiĂšme dĂ©pendance n'est pas remplie et l'attribut Paul n'est pas un dĂ©terminant pour le patient . De mĂȘme, si vous prenez la dĂ©pendance MĂ©decin → Patient , vous pouvez voir qu'elle est violĂ©e, car la valeur Robin pour cet attribut a plusieurs valeurs diffĂ©rentes - Ellis et Graham .





Ainsi, les dĂ©pendances fonctionnelles permettent de dĂ©terminer les relations existantes entre les ensembles d'attributs de table. DĂ©sormais, nous considĂ©rerons les relations les plus intĂ©ressantes, ou plutĂŽt X → Y telles qu'elles sont:

  • non triviale, c'est-Ă -dire que le cĂŽtĂ© droit de la dĂ©pendance n'est pas un sous-ensemble de la gauche (Y ̞⊆ X) ;
  • minimale, c'est-Ă -dire qu'il n'y a pas une telle dĂ©pendance Z → Y telle que Z ⊂ X.

Les dĂ©pendances considĂ©rĂ©es jusqu'Ă  prĂ©sent Ă©taient strictes, c'est-Ă -dire qu'elles n'incluaient aucune violation sur la table, mais Ă  cĂŽtĂ© d'eux il y a aussi celles qui permettent une certaine incohĂ©rence entre les valeurs des tuples. Ces dĂ©pendances sont placĂ©es dans une classe distincte, appelĂ©e approximative, et autorisĂ©es Ă  ĂȘtre violĂ©es sur un certain nombre de tuples. Ce montant est rĂ©gulĂ© par l'indicateur d'erreur emax maximum. Par exemple, la proportion d'erreur emax= 0,01 peut signifier que la dĂ©pendance peut ĂȘtre violĂ©e par 1% des tuples disponibles sur l'ensemble d'attributs considĂ©rĂ©. Autrement dit, pour 1000 enregistrements, un maximum de 10 tuples peut violer la loi fĂ©dĂ©rale. Nous considĂ©rerons une mĂ©trique lĂ©gĂšrement diffĂ©rente basĂ©e sur des valeurs diffĂ©rentes par paire des tuples comparĂ©s. Pour la dĂ©pendance X → Y de la relation r, elle est considĂ©rĂ©e comme suit:

e (X \ rightarrow Y, r) = \ frac {| \ {(t_1, t_2) \ in r ^ 2 \ | \ t_1 [X] = t_2 [X] \ wedge t_1 [Y] \ neq t_2 [Y] \} |} {| r ^ 2 | - | r |}


Nous calculons l'erreur pour MĂ©decin → Patient Ă  partir de l'exemple ci-dessus. Nous avons deux tuples, dont les valeurs diffĂšrent sur l'attribut Patient , mais coĂŻncident sur le docteur : t1[ Docteur, patient ] = ( Robin, Ellis ) et t2[ Docteur, patient ] = ( Robin, Graham ). Suite Ă  la dĂ©finition de l'erreur, nous devons prendre en compte toutes les paires en conflit, ce qui signifie qu'il y en aura deux: ( t1, t2) et son inversion ( t2, t1) Remplacez dans la formule et obtenez:

 frac252−5=0,1


Essayons maintenant de répondre à la question: «Pourquoi est-ce tout?». En fait, les lois fédérales sont différentes. Le premier type est les dépendances qui sont déterminées par l'administrateur au stade de la conception de la base de données. Habituellement, ils sont peu nombreux, ils sont stricts et l'application principale est la normalisation des données et la conception du schéma de relation.

Le deuxiĂšme type est celui des dĂ©pendances reprĂ©sentant des donnĂ©es «cachĂ©es» et des relations auparavant inconnues entre les attributs. Autrement dit, de telles dĂ©pendances n'Ă©taient pas envisagĂ©es au moment de la conception et se trouvent dĂ©jĂ  pour l'ensemble de donnĂ©es existant, de sorte que, sur la base de l'ensemble des lois fĂ©dĂ©rales identifiĂ©es, pour tirer des conclusions sur les informations stockĂ©es. C'est avec de telles dĂ©pendances que nous travaillons. Ils sont engagĂ©s dans tout un domaine de l'extraction de donnĂ©es avec diverses techniques de recherche et algorithmes construits sur leur base. Voyons comment les dĂ©pendances fonctionnelles trouvĂ©es (exactes ou approximatives) dans toutes les donnĂ©es peuvent ĂȘtre utiles.



Aujourd'hui, le nettoyage des données fait partie des principaux domaines d'utilisation des dépendances. Elle implique le développement de processus d'identification des «données sales» avec leur correction ultérieure. Les représentants brillants des «données sales» sont les doublons, les erreurs de données ou les fautes de frappe, les valeurs manquantes, les données obsolÚtes, les espaces supplémentaires et similaires.

Exemple d'erreur de données:



Exemples de doublons dans les données:



Par exemple, nous avons un tableau et un ensemble de lois fĂ©dĂ©rales qui doivent ĂȘtre exĂ©cutĂ©es. Dans ce cas, le nettoyage des donnĂ©es implique de modifier les donnĂ©es afin que les lois fĂ©dĂ©rales soient correctes. Dans le mĂȘme temps, le nombre de modifications devrait ĂȘtre minime (pour cette procĂ©dure, il existe des algorithmes sur lesquels nous ne nous concentrerons pas dans cet article). Voici un exemple d'une telle conversion de donnĂ©es. À gauche se trouve la relation initiale, dans laquelle, Ă©videmment, les lois fĂ©dĂ©rales nĂ©cessaires ne sont pas remplies (un exemple de violation de l'une des lois fĂ©dĂ©rales est surlignĂ© en rouge). À droite, une relation mise Ă  jour dans laquelle les cellules vertes affichent des valeurs modifiĂ©es. AprĂšs une telle procĂ©dure, les dĂ©pendances nĂ©cessaires ont commencĂ© Ă  se maintenir.



Une autre application populaire est la conception de bases de données. Ici, il convient de rappeler les formes normales et la normalisation. La normalisation est le processus d'alignement d'une relation avec un certain ensemble d'exigences, chacune étant déterminée à sa maniÚre par une forme normale. Nous n'écrirons pas les exigences des différentes formes normales (cela se fait dans n'importe quel livre sur le cours DB pour les débutants), mais nous notons seulement que chacun d'eux utilise le concept de dépendances fonctionnelles à sa maniÚre. En effet, les lois fédérales sont intrinsÚquement des contraintes d'intégrité qui sont prises en compte lors de la conception d'une base de données (dans le cadre de cette tùche, les lois fédérales sont parfois appelées super-clés).

Considérez leur application pour les quatre formes normales dans l'image ci-dessous. Rappelons que la forme Boyce-Codd normale est plus stricte que la troisiÚme forme, mais moins stricte que la quatriÚme. Nous ne considérons pas encore ce dernier, car sa formulation nécessite une compréhension des dépendances à valeurs multiples, qui ne nous intéressent pas dans cet article.






Un autre domaine dans lequel les dĂ©pendances ont trouvĂ© leur application est la rĂ©duction de la dimension de l'espace des caractĂ©ristiques dans des tĂąches telles que la construction d'un classifieur bayĂ©sien naĂŻf, l'identification des caractĂ©ristiques significatives et la reparamĂ©trisation du modĂšle de rĂ©gression. Dans les articles originaux, ce problĂšme est appelĂ© la dĂ©termination des fonctionnalitĂ©s redondantes et la pertinence des fonctionnalitĂ©s [5, 6], et il est rĂ©solu avec l'utilisation active des concepts de base de donnĂ©es. Avec l'avĂšnement de tels travaux, nous pouvons dire qu'il existe aujourd'hui une demande de solutions qui permettent de combiner la base de donnĂ©es, l'analyse et la mise en Ɠuvre des problĂšmes d'optimisation ci-dessus en un seul outil [7, 8, 9].

Il existe de nombreux algorithmes (Ă  la fois modernes et pas trĂšs) pour rechercher la loi fĂ©dĂ©rale dans un ensemble de donnĂ©es. Ces algorithmes peuvent ĂȘtre divisĂ©s en trois groupes:

  • Algorithmes utilisant la traversĂ©e de rĂ©seaux algĂ©briques (algorithmes de traversĂ©e de rĂ©seau)
  • Algorithmes basĂ©s sur la recherche de valeurs cohĂ©rentes (algorithmes de di ïŹ€ Ă©rence et d'accord)
  • Algorithmes de comparaison par paire (algorithmes d'induction de dĂ©pendance)

Une brÚve description de chaque type d'algorithme est présentée dans le tableau ci-dessous:


Plus de dĂ©tails sur cette classification peuvent ĂȘtre lus [4]. Voici des exemples d'algorithmes pour chaque type:





Actuellement, de nouveaux algorithmes apparaissent qui combinent plusieurs approches de la recherche de dépendances fonctionnelles à la fois. Des exemples de tels algorithmes sont Pyro [2] et HyFD [3]. Une analyse de leur travail est attendue dans les articles suivants de cette série. Dans cet article, nous analyserons uniquement les concepts de base et le lemme qui sont nécessaires pour comprendre les techniques de détection des dépendances.

Commençons par un simple - di ïŹ€ Ă©rence- et accord-ensemble, utilisĂ© dans le deuxiĂšme type d'algorithmes. Di ïŹ€ erence-set est un ensemble de tuples qui ne correspondent pas en valeurs, et d'accord-set, au contraire, sont des tuples qui correspondent en valeur. Il convient de noter que dans ce cas, nous ne considĂ©rons que le cĂŽtĂ© gauche de la dĂ©pendance.

Un rĂ©seau important qui a Ă©tĂ© rencontrĂ© ci-dessus est Ă©galement le rĂ©seau algĂ©brique. Étant donnĂ© que de nombreux algorithmes modernes fonctionnent sur ce concept, nous devons avoir une idĂ©e de ce que c'est.

Pour introduire le concept de réseau, il est nécessaire de définir un ensemble partiellement ordonné (ou un ensemble partiellement ordonné, pour un poset court).

DĂ©finition 2. On dit que l'ensemble S est partiellement ordonnĂ© par la relation binaire â©œ si pour tout a, b, c ∈ S les propriĂ©tĂ©s suivantes sont satisfaites:
  1. RĂ©flexivitĂ©, c'est-Ă -dire a â©œ a
  2. AntisymĂ©trie, c'est-Ă -dire que si a â©œ b et b â©œ a, alors a = b
  3. TransitivitĂ©, c'est-Ă -dire que pour a â©œ b et b â©œ c, il s'ensuit que a â©œ c

Une telle relation est appelĂ©e une relation d'ordre partiel (non strict), et l'ensemble lui-mĂȘme est appelĂ© un ensemble partiellement ordonnĂ©. Notation formelle: ⟹S, ⩜⟩.

Comme exemple le plus simple d'un ensemble partiellement ordonnĂ©, nous pouvons prendre l'ensemble de tous les nombres naturels N avec la relation habituelle d'ordre â©œ. Il est facile de vĂ©rifier que tous les axiomes nĂ©cessaires sont satisfaits.

Exemple plus significatif. ConsidĂ©rons l'ensemble de tous les sous-ensembles {1, 2, 3} ordonnĂ© par la relation d'inclusion ⊆. En effet, cette relation satisfait toutes les conditions d'ordre partiel, donc ⟹P ({1, 2, 3}), ⊆⟩ est un ensemble partiellement ordonnĂ©. La figure ci-dessous montre la structure de cet ensemble: si d'un Ă©lĂ©ment vous pouvez marcher le long des flĂšches vers un autre Ă©lĂ©ment, alors elles sont en relation avec l'ordre.



Nous aurons besoin de deux définitions plus simples du domaine des mathématiques - supremum et infimum.

DĂ©finition 3. Soit ⟹S, ⩜⟩ un ensemble partiellement ordonnĂ©, A ⊆ S. La limite supĂ©rieure de A est un Ă©lĂ©ment u ∈ S tel que ∀x ∈ A: x â©œ u. Soit U l'ensemble de toutes les bornes supĂ©rieures de A. Si U a le plus petit Ă©lĂ©ment, alors il est appelĂ© supremum et est notĂ© sup A.

De mĂȘme, le concept d'une limite infĂ©rieure exacte est introduit.

DĂ©finition 4. Soit ⟹S, ⩜⟩ un ensemble partiellement ordonnĂ©, A ⊆ S. La limite infĂ©rieure de A est un Ă©lĂ©ment l ∈ S tel que ∀x ∈ A: l â©œ x. Soit L l'ensemble de toutes les bornes infĂ©rieures de A. Si L a le plus grand Ă©lĂ©ment, alors il est appelĂ© infimum et est notĂ© inf A.

ConsidĂ©rons, par exemple, l'ensemble partiellement ordonnĂ© ci-dessus ⟹P ({1, 2, 3}), et y trouvons le supremum et l'infimum:



Nous pouvons maintenant formuler la définition d'un réseau algébrique.

DĂ©finition 5. Soit ⟹P, ⩜⟩ un ensemble partiellement ordonnĂ© tel que chaque sous-ensemble Ă  deux Ă©lĂ©ments ait des bornes supĂ©rieure et infĂ©rieure exactes. Alors P est appelĂ© un rĂ©seau algĂ©brique. De plus, sup {x, y} s'Ă©crit comme x √ y, et inf {x, y} - comme x ∧ y.

Nous vĂ©rifions que notre exemple de travail ⟹P ({1, 2, 3}), ⊆⟩ est un rĂ©seau. En effet, pour tout a, b ∈ P ({1, 2, 3}), a√b = aâˆȘb, et a∧b = a∩b. Par exemple, considĂ©rez les ensembles {1, 2} et {1, 3} et trouvez leur infimum et leur supremum. Si nous les croisons, nous obtenons l'ensemble {1}, qui sera l'infimum. Nous obtenons le supremum par leur union - {1, 2, 3}.

Dans les algorithmes de dĂ©tection FD, l'espace de recherche est souvent reprĂ©sentĂ© sous la forme d'un rĂ©seau, oĂč les ensembles d'un Ă©lĂ©ment (lire le premier niveau du rĂ©seau de recherche, oĂč la partie gauche des dĂ©pendances se compose d'un attribut) sont chaque attribut de la relation d'origine.
Au dĂ©but, les dĂ©pendances de la forme ∅ → Attribut unique sont considĂ©rĂ©es. Cette Ă©tape vous permet de dĂ©terminer quels attributs sont des clĂ©s primaires (il n'y a pas de dĂ©terminants pour de tels attributs, et donc le cĂŽtĂ© gauche est vide). De plus, ces algorithmes remontent le rĂ©seau. Il convient de noter que le rĂ©seau ne peut pas ĂȘtre contournĂ© tous, c'est-Ă -dire que si la taille maximale souhaitĂ©e de la partie gauche est transmise Ă  l'entrĂ©e, l'algorithme ne dĂ©passera pas le niveau avec cette taille.

La figure ci-dessous montre comment vous pouvez utiliser le rĂ©seau algĂ©brique dans le problĂšme de recherche de la loi fĂ©dĂ©rale. Ici, chaque arĂȘte ( X, XY ) reprĂ©sente une dĂ©pendance X → Y. Par exemple, nous sommes passĂ©s par le premier niveau et nous savons que la dĂ©pendance A → B est conservĂ©e (nous l'afficherons par la connexion verte entre les sommets A et B ). Par consĂ©quent, lorsque nous remontons le rĂ©seau vers le haut, nous ne pouvons pas vĂ©rifier la dĂ©pendance A, C → B , car elle ne sera plus minimale. De mĂȘme, nous ne le testerions pas si la dĂ©pendance C → B Ă©tait conservĂ©e.




De plus, en rÚgle générale, tous les algorithmes de recherche FZ modernes utilisent une telle structure de données comme une partition (partition supprimée [1] dans la source d'origine). La définition formelle de la partition est la suivante:

DĂ©finition 6. Soit X ⊆ R l'ensemble des attributs de la relation r. Un cluster est un ensemble d'indices de tuples de r qui ont la mĂȘme valeur pour X, c'est-Ă -dire c (t) = {i | ti [X] = t [X]}. La partition est un ensemble de clusters, Ă  l'exclusion des clusters de longueur unitaire:

\ pi (X): = \ {c (t) | t \ in r \ coin | c (t) | > 1 \}


En termes simples, la partition de l'attribut X est un ensemble de listes, oĂč chaque liste contient des numĂ©ros de ligne avec les mĂȘmes valeurs pour X. Dans la littĂ©rature moderne, une structure reprĂ©sentant des partitions est appelĂ©e un index de liste de positions (PLI). Les clusters de longueur d'unitĂ© sont exclus pour la compression PLI car ce sont des clusters contenant uniquement un numĂ©ro d'enregistrement avec une valeur unique qui sera toujours facile Ă  dĂ©finir.

Prenons un exemple. Revenons Ă  la mĂȘme table avec les patients et construisons des partitions pour les colonnes Patient et Paul (une nouvelle colonne est apparue Ă  gauche, dans laquelle les numĂ©ros de ligne de la table sont marquĂ©s):





De plus, selon la définition, la partition de la colonne Patient sera en fait vide, car les clusters uniques sont exclus de la partition.

Les partitions peuvent ĂȘtre obtenues par plusieurs attributs. Et pour cela, il y a deux façons: parcourir la table, crĂ©er une partition Ă  la fois selon tous les attributs nĂ©cessaires, ou la construire en utilisant le croisement de partitions le long d'un sous-ensemble d'attributs. Les algorithmes de recherche FZ utilisent la deuxiĂšme option.

En termes simples, par exemple, pour obtenir une partition par des colonnes ABC , vous pouvez prendre des partitions pour AC et B (ou tout autre ensemble de sous-ensembles disjoints) et les intersecter. L'opération d'intersection de deux partitions identifie les clusters de la plus grande longueur commune aux deux partitions.

Regardons un exemple:





Dans le premier cas, nous avons reçu une partition vide. Si vous regardez attentivement le tableau, alors en effet, les valeurs identiques pour les deux attributs ne sont pas lĂ . Si nous modifions lĂ©gĂšrement le tableau (le cas Ă  droite), nous obtenons dĂ©jĂ  une intersection non vide. En mĂȘme temps, les lignes 1 et 2 contiennent vraiment les mĂȘmes valeurs pour les attributs Paul et Doctor .

Ensuite, nous avons besoin d'un concept tel que la taille de la partition. Formellement:

| \ pi (X) | = | \ {c \ in \ pi (X): | c | > 1 \} |


Autrement dit, la taille de la partition est le nombre de clusters inclus dans la partition (rappelez-vous que les clusters individuels ne sont pas inclus dans la partition!):





Maintenant, nous pouvons définir l'un des lemmes clés, qui pour des partitions données nous permet d'établir si la dépendance est maintenue ou non:

Lemme 1 . La dĂ©pendance A, B → C est maintenue si et seulement si

| \ pi (AB) | = | \ pi (AB \ cup \ {C \}) |


Selon le lemme, pour déterminer si une dépendance est maintenue, il est nécessaire d'effectuer quatre étapes:

  1. Calculer la partition pour le cÎté gauche de la dépendance
  2. Calculez la partition pour le cÎté droit de la dépendance
  3. Calculez le produit des premiĂšre et deuxiĂšme Ă©tapes
  4. Comparer les tailles de partitions obtenues lors des premiĂšre et troisiĂšme Ă©tapes

Voici un exemple de vérification si la dépendance est maintenue par ce lemme:






Dans cet article, nous avons examinĂ© des concepts tels que la dĂ©pendance fonctionnelle, la dĂ©pendance fonctionnelle approximative, examinĂ© oĂč ils sont utilisĂ©s, ainsi que les algorithmes de recherche pour la loi fĂ©dĂ©rale. Nous avons Ă©galement examinĂ© en dĂ©tail les concepts de base, mais importants, qui sont activement utilisĂ©s dans les algorithmes modernes de recherche de lois fĂ©dĂ©rales.

Références à la littérature:

  1. Huhtala Y. et al. TANE: Un algorithme efficace pour découvrir les dépendances fonctionnelles et approximatives // Le journal informatique. - 1999. - T. 42. - Non. 2. - Art. 100-111.
  2. Kruse S., Naumann F. Découverte efficace de dépendances approximatives // Actes de la dotation VLDB. - 2018. - T. 11. - Non. 7. - Art. 759-772.
  3. Papenbrock T., Naumann F. Une approche hybride de la découverte de la dépendance fonctionnelle // Actes de la Conférence internationale de 2016 sur la gestion des données. - ACM, 2016 .-- S. 821-833.
  4. Papenbrock T. et al. Découverte de la dépendance fonctionnelle: une évaluation expérimentale de sept algorithmes // Actes de la dotation VLDB. - 2015. - T. 8. - Non. 10. - Art. 1082-1093.
  5. Kumar A. et al. Rejoindre ou ne pas rejoindre?: Réfléchir à deux fois sur les jointures avant la sélection des fonctionnalités // Actes de la Conférence internationale de 2016 sur la gestion des données. - ACM, 2016 .-- S. 19-34.
  6. Abo Khamis M. et al. Apprentissage en base de données avec des tenseurs clairsemés // Actes du 37e Symposium ACM SIGMOD-SIGACT-SIGAI sur les principes des systÚmes de bases de données. - ACM, 2018 .-- S. 325-340.
  7. Hellerstein JM et al. La bibliothÚque d'analyse MADlib: ou compétences MAD, le SQL // Proceedings of the VLDB Endowment. - 2012. - T. 5. - Non. 12. - Art. 1700-1711.
  8. Qin C., Rusu F. Approximations spéculatives pour l'optimisation de la descente de gradient distribué terascale // Actes du quatriÚme atelier sur l'analyse des données dans le cloud. - ACM, 2015 .-- S. 1.
  9. Meng X. et al. Mllib: Apprentissage automatique dans une Ă©tincelle apache // The Journal of Machine Learning Research. - 2016. - T. 17. - Non. 1 .-- S. 1235-1241.

Auteurs de l'article: Anastasia Birillo , chercheuse Ă  JetBrains Research , Ă©tudiante au centre CS et Nikita Bobrov , chercheuse Ă  JetBrains Research

Source: https://habr.com/ru/post/fr473882/


All Articles