Dans cet article, nous parlerons des dĂ©pendances fonctionnelles dans les bases de donnĂ©es : ce qu'elles sont, oĂč elles sont utilisĂ©es et quels algorithmes existent pour les trouver.
Nous considĂ©rerons les dĂ©pendances fonctionnelles dans le contexte des bases de donnĂ©es relationnelles. En gros, dans de telles bases de donnĂ©es, les informations sont stockĂ©es sous forme de tableaux. Ensuite, nous utilisons des concepts approximatifs qui ne sont pas interchangeables en thĂ©orie relationnelle stricte : nous appellerons la table elle-mĂȘme une relation, les colonnes - des attributs (leur ensemble - un schĂ©ma de relation), et l'ensemble des valeurs de ligne sur un sous-ensemble d'attributs. - un tuple.

Par exemple, dans le tableau ci-dessus, (Benson, M, orgue M) est un tuple d'attributs (Patient, Paul, Docteur).
Plus formellement, cela s'écrit ainsi :
[Patient, sexe, mĂ©decinđ§đ· (Benson, M, orgue M).
Nous pouvons maintenant introduire la notion de dépendance fonctionnelle (FD) :
DĂ©finition 1. La relation R satisfait la loi fĂ©dĂ©rale X â Y (oĂč X, Y â R) si et seulement si pour tout tuple
,
â R est vrai : si
[X] =
[X], alors
[Y] =
[Y]. Dans ce cas, nous disons que X (lâensemble dĂ©terminant ou dĂ©finissant dâattributs) dĂ©termine fonctionnellement Y (lâensemble dĂ©pendant).
Autrement dit, la prĂ©sence d'une loi fĂ©dĂ©rale X â Oui signifie que si nous avons deux tuples R et ils correspondent dans les attributs X, alors ils coĂŻncideront dans les attributs Y.
Et maintenant, dans l'ordre. Regardons les attributs Le patient О Genre pour lequel on veut savoir s'il existe ou non des dépendances entre eux. Pour un tel ensemble d'attributs, les dépendances suivantes peuvent exister :
- Patient â Sexe
- Sexe â Patient
Comme dĂ©fini ci-dessus, pour que la premiĂšre dĂ©pendance soit conservĂ©e, chaque valeur de colonne unique Le patient une seule valeur de colonne doit correspondre Genre. Et pour le tableau exemple, câest effectivement le cas. Cependant, cela ne fonctionne pas dans le sens inverse, c'est-Ă -dire que la deuxiĂšme dĂ©pendance n'est pas satisfaite et que l'attribut Genre n'est pas un dĂ©terminant pour Patient. De mĂȘme, si lâon prend la dĂ©pendance MĂ©decin â Patient, vous pouvez voir qu'il est violĂ©, puisque la valeur rouge-gorge cet attribut a plusieurs significations diffĂ©rentes - Ellis et Graham.


Ainsi, les dĂ©pendances fonctionnelles permettent de dĂ©terminer les relations existantes entre des ensembles d'attributs de table. A partir de lĂ , nous examinerons les connexions les plus intĂ©ressantes, ou plutĂŽt celles X â Ouique sont ils:
- non trivial, c'est-Ă -dire que le cĂŽtĂ© droit de la dĂ©pendance n'est pas un sous-ensemble du cĂŽtĂ© gauche (Y Ìžâ X);
- minime, c'est-Ă -dire qu'il n'y a pas une telle dĂ©pendance Z â OuiQue Z âX.
Les dĂ©pendances considĂ©rĂ©es jusqu'Ă prĂ©sent Ă©taient strictes, c'est-Ă -dire qu'elles ne prĂ©voyaient aucune violation sur la table, mais en plus d'elles, il y a aussi celles qui permettent une certaine incohĂ©rence entre les valeurs des tuples. De telles dĂ©pendances sont placĂ©es dans une classe distincte, appelĂ©e approximation, et peuvent ĂȘtre violĂ©es pour un certain nombre de tuples. Ce montant est rĂ©gulĂ© par l'indicateur d'erreur maximale emax. Par exemple, le taux d'erreur
= 0.01 peut signifier que la dĂ©pendance peut ĂȘtre violĂ©e de 1 % des tuples disponibles sur l'ensemble d'attributs considĂ©rĂ©. Autrement dit, pour 1000 10 enregistrements, un maximum de XNUMX tuples peuvent enfreindre la loi fĂ©dĂ©rale. Nous considĂ©rerons une mĂ©trique lĂ©gĂšrement diffĂ©rente, basĂ©e sur des valeurs deux Ă deux diffĂ©rentes des tuples comparĂ©s. Pour la dĂ©pendance X â Oui sur l'attitude r on le considĂšre ainsi :

Calculons l'erreur pour MĂ©decin â Patient de l'exemple ci-dessus. Nous avons deux tuples dont les valeurs diffĂšrent sur l'attribut Le patient, mais coĂŻncident sur MĂ©decin:
[Médecin, Patient] = (Robin, Ellis) Et
[Médecin, Patient] = (Robin, Graham). Suite à la définition d'une erreur, il faut prendre en compte toutes les paires en conflit, ce qui signifie qu'il y en aura deux : (
,
) et son inversion (
,
). Remplaçons-le dans la formule et obtenons :

Essayons maintenant de répondre à la question : « à quoi ça sert ? En fait, les lois fédérales sont différentes. Le premier type concerne les dépendances déterminées par l'administrateur au stade de la conception de la base de données. Ils sont généralement peu nombreux, stricts et leur application principale est la normalisation des données et la conception de schémas relationnels.
Le deuxiĂšme type concerne les dĂ©pendances, qui reprĂ©sentent des donnĂ©es « cachĂ©es » et des relations jusque-lĂ inconnues entre les attributs. Autrement dit, de telles dĂ©pendances n'ont pas Ă©tĂ© prises en compte au moment de la conception et elles sont trouvĂ©es pour l'ensemble de donnĂ©es existant, de sorte que plus tard, sur la base des nombreuses lois fĂ©dĂ©rales identifiĂ©es, des conclusions puissent ĂȘtre tirĂ©es sur les informations stockĂ©es. Ce sont prĂ©cisĂ©ment ces dĂ©pendances avec lesquelles nous travaillons. Ils sont traitĂ©s par tout un domaine de data mining avec diverses techniques de recherche et algorithmes construits sur cette base. Voyons comment les dĂ©pendances fonctionnelles trouvĂ©es (exactes ou approximatives) dans n'importe quelle donnĂ©e peuvent ĂȘtre utiles.

Aujourdâhui, lâune des principales applications des dĂ©pendances est le nettoyage des donnĂ©es. Il sâagit de dĂ©velopper des processus permettant dâidentifier les « donnĂ©es sales » puis de les corriger. Les exemples frappants de « 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, etc.
Exemple d'erreur de données :

Exemple 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 la modification des donnĂ©es afin que les lois fĂ©dĂ©rales deviennent correctes. Dans ce cas, le nombre de modifications doit ĂȘtre minime (cette procĂ©dure possĂšde ses propres algorithmes, sur lesquels nous ne nous concentrerons pas dans cet article). Vous trouverez ci-dessous un exemple d'une telle transformation de donnĂ©es. Ă gauche se trouve la relation originale dans laquelle, Ă©videmment, les FL nĂ©cessaires ne sont pas remplies (un exemple de violation de l'un des FL est surlignĂ© en rouge). Ă droite se trouve la relation mise Ă jour, les cellules vertes affichant les valeurs modifiĂ©es. AprĂšs cette procĂ©dure, les dĂ©pendances nĂ©cessaires ont commencĂ© Ă ĂȘtre maintenues.

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 de mise en conformité d'une relation avec un certain ensemble d'exigences, dont chacune est définie à sa maniÚre par la forme normale. Nous ne décrirons pas les exigences des différentes formes normales (cela se fait dans n'importe quel livre sur un cours de base de données pour débutants), mais notons seulement que chacune d'elles utilise le concept de dépendances fonctionnelles à sa maniÚre. AprÚs tout, les FL 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 contexte de cette tùche, les FL sont parfois appelées superkeys).
Considérons leur application pour les quatre formes normales dans l'image ci-dessous. Rappelons que la forme normale de Boyce-Codd est plus stricte que la troisiÚme forme, mais moins stricte que la quatriÚme. Nous ne considérons pas cette derniÚre pour l'instant, car sa formulation nécessite une compréhension des dépendances multivaluées, 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 dimensionnalitĂ© de l'espace des fonctionnalitĂ©s dans des tĂąches telles que la crĂ©ation d'un classificateur Bayes naĂŻf, l'identification des fonctionnalitĂ©s significatives et le reparamĂ©trage d'un modĂšle de rĂ©gression. Dans les articles originaux, cette tĂąche est appelĂ©e la dĂ©termination de la redondance et de la pertinence des fonctionnalitĂ©s [5, 6], et elle est rĂ©solue grĂące Ă l'utilisation active des concepts de bases de donnĂ©es. Avec l'avĂšnement de tels travaux, nous pouvons dire qu'il existe aujourd'hui une demande pour des solutions qui nous 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 moins modernes) pour rechercher des lois fĂ©dĂ©rales dans un ensemble de donnĂ©es. Ces algorithmes peuvent ĂȘtre divisĂ©s en trois groupes :
- Algorithmes utilisant le parcours de réseaux algébriques (Algorithmes de parcours de treillis)
- Algorithmes basés sur la recherche de valeurs convenues (algorithmes de différence et d'accord)
- Algorithmes basés sur des comparaisons par paires (Algorithmes d'induction de dépendances)
Une brĂšve description de chaque type dâalgorithme est prĂ©sentĂ©e dans le tableau ci-dessous :

Vous pouvez en savoir plus sur cette classification [4]. Vous trouverez ci-dessous des exemples d'algorithmes pour chaque type :


Actuellement, de nouveaux algorithmes apparaissent qui combinent plusieurs approches pour trouver des dépendances fonctionnelles. Des exemples de tels algorithmes sont Pyro [2] et HyFD [3]. Une analyse de leurs travaux est attendue dans les articles suivants de cette série. Dans cet article, nous examinerons uniquement les concepts de base et le lemme nécessaires pour comprendre les techniques de détection des dépendances.
Commençons par un simple - les ensembles de diffĂ©rences et d'accords, utilisĂ©s dans le deuxiĂšme type d'algorithmes. DiïŹerence-set est un ensemble de tuples qui n'ont pas les mĂȘmes valeurs, tandis que l'accord-set, au contraire, est constituĂ© de tuples qui ont les mĂȘmes valeurs. Il convient de noter que dans ce cas, nous considĂ©rons uniquement le cĂŽtĂ© gauche de la dĂ©pendance.
Un autre concept important rencontrĂ© ci-dessus est le rĂ©seau algĂ©brique. Ătant donnĂ© que de nombreux algorithmes modernes fonctionnent sur ce concept, nous devons avoir une idĂ©e de ce dont il sâagit.
Afin d'introduire la notion de treillis, il est nécessaire de définir un ensemble partiellement ordonné (ou ensemble partiellement ordonné, en abrégé poset).
DĂ©finition 2. Un ensemble S est dit partiellement ordonnĂ© par la relation binaire ⩜ si pour tout a, b, c â S les propriĂ©tĂ©s suivantes sont satisfaites :
- La rĂ©flexivitĂ©, c'est-Ă -dire a ⩜ a
- AntisymĂ©trie, c'est-Ă -dire si a ⩜ b et b ⩜ a, alors a = b
- TransitivitĂ©, c'est-Ă -dire que pour a ⩜ b et b ⩜ c, il s'ensuit que a ⩜ c
Une telle relation est appelĂ©e relation d'ordre partiel (vrac), 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 d'ordre habituelle ⩜. Il est facile de vĂ©rifier que tous les axiomes nĂ©cessaires sont satisfaits.
Un exemple plus significatif. ConsidĂ©rons l'ensemble de tous les sous-ensembles {1, 2, 3}, ordonnĂ©s 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 un Ă©lĂ©ment peut ĂȘtre atteint par des flĂšches vers un autre Ă©lĂ©ment, alors ils sont dans une relation d'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 borne supĂ©rieure de A est un Ă©lĂ©ment u â S tel que âx â S : x ⩜ u. Soit U l'ensemble de toutes les bornes supĂ©rieures de S. S'il y a un plus petit Ă©lĂ©ment dans U, alors il est appelĂ© le supremum et est notĂ© sup A.
Le concept de limite infĂ©rieure exacte est introduit de la mĂȘme maniĂšre.
DĂ©finition 4. Soit âšS, ⩜⩠un ensemble partiellement ordonnĂ©, A â S. L'infimum de A est un Ă©lĂ©ment l â S tel que âx â S : l ⩜ x. Soit L l'ensemble de toutes les limites infĂ©rieures de S. S'il y a un plus grand Ă©lĂ©ment dans L, alors il est appelĂ© un infimum et est notĂ© inf A.
ConsidĂ©rons Ă titre d'exemple l'ensemble partiellement ordonnĂ© ci-dessus âšP ({1, 2, 3}), ââ© et trouvez-y 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 de deux Ă©lĂ©ments ait une limite supĂ©rieure et infĂ©rieure. Alors P est appelĂ© rĂ©seau algĂ©brique. Dans ce cas, sup{x, y} s'Ă©crit x âš y, et inf {x, y} comme x â§ y.
VĂ©rifions que notre exemple de travail âšP ({1, 2, 3}), ââ© est un treillis. En effet, pour tout a, b â P ({1, 2, 3}), aâšb = aâȘb, et aâ§b = aâ©b. Par exemple, considĂ©rons les ensembles {1, 2} et {1, 3} et trouvez leur infimum et supremum. Si nous les croisons, nous obtiendrons l'ensemble {1}, qui sera l'infimum. Nous obtenons le suprĂȘme en les combinant - {1, 2, 3}.
Dans les algorithmes d'identification de problĂšmes physiques, l'espace de recherche est souvent reprĂ©sentĂ© sous la forme d'un rĂ©seau, oĂč des ensembles d'un Ă©lĂ©ment (lire le premier niveau du rĂ©seau de recherche, oĂč le cĂŽtĂ© gauche des dĂ©pendances est constituĂ© d'un attribut) reprĂ©sentent chaque attribut. de la relation originelle.
Tout dâabord, nous considĂ©rons des dĂ©pendances de la forme â
â Attribut unique. Cette Ă©tape vous permet de dĂ©terminer quels attributs sont des clĂ©s primaires (pour de tels attributs, il n'y a pas de dĂ©terminants, et donc le cĂŽtĂ© gauche est vide). De plus, ces algorithmes se dĂ©placent vers le haut le long du rĂ©seau. Il convient de noter que la totalitĂ© du rĂ©seau ne peut pas ĂȘtre parcourue, c'est-Ă -dire que si la taille maximale souhaitĂ©e du cĂŽtĂ© gauche est transmise Ă l'entrĂ©e, l'algorithme n'ira pas plus loin qu'un niveau ayant cette taille.
La figure ci-dessous montre comment un rĂ©seau algĂ©brique peut ĂȘtre utilisĂ© dans le problĂšme de recherche d'une FZ. Ici chaque bord (X, XY) reprĂ©sente une dĂ©pendance X â Oui. Par exemple, nous avons passĂ© le premier niveau et savons que l'addiction est entretenue AâB (nous l'afficherons sous la forme d'une connexion verte entre les sommets A Đž B). Cela signifie que plus loin, lorsque nous progressons le long du rĂ©seau, nous ne pouvons pas vĂ©rifier la dĂ©pendance A, C â B, car il ne sera plus minime. De mĂȘme, nous ne le vĂ©rifierions pas si la dĂ©pendance Ă©tait maintenue C â B.


De plus, en rÚgle générale, tous les algorithmes modernes de recherche de lois fédérales utilisent une structure de données telle qu'une partition (dans la source originale - partition supprimée [1]). La définition formelle d'une partition est la suivante :
DĂ©finition 6. Soit X â R un ensemble d'attributs pour la relation r. Un cluster est un ensemble d'indices de tuples dans r qui ont la mĂȘme valeur pour X, c'est-Ă -dire c(t) = {i|ti[X] = t[X]}. Une partition est un ensemble de clusters, hors clusters de longueur unitaire :

En termes simples, une partition pour un 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, la structure reprĂ©sentant les partitions est appelĂ©e index de liste de positions (PLI). Les clusters de longueur unitaire sont exclus Ă des fins de compression PLI, car ce sont des clusters qui contiennent uniquement un numĂ©ro d'enregistrement avec une valeur unique qui sera toujours facile Ă identifier.
Regardons un exemple. Revenons Ă la mĂȘme table avec les patients et construisons des partitions pour les colonnes Le patient Đž Genre (une nouvelle colonne est apparue Ă gauche, dans laquelle les numĂ©ros de lignes du tableau sont marquĂ©s) :


De plus, selon la définition, la partition de la colonne Le patient sera en fait vide, puisque les clusters uniques sont exclus de la partition.
Les partitions peuvent ĂȘtre obtenues par plusieurs attributs. Et il y a deux maniĂšres de procĂ©der : en parcourant le tableau, construire une partition en utilisant tous les attributs nĂ©cessaires d'un coup, ou en la construisant en utilisant l'opĂ©ration d'intersection de partitions en utilisant un sous-ensemble d'attributs. Les algorithmes de recherche de lois fĂ©dĂ©rales utilisent la deuxiĂšme option.
En termes simples, pour par exemple obtenir une partition par colonnes abc, vous pouvez prendre des partitions pour AC О B (ou tout autre ensemble de sous-ensembles disjoints) et les croiser les uns avec les autres. L'opération d'intersection de deux partitions sélectionne les clusters de plus grande longueur communs 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, il n'y a pas de valeurs identiques pour les deux attributs. Si on modifie lĂ©gĂšrement le tableau (cas de droite), on obtiendra dĂ©jĂ une intersection non vide. De plus, les lignes 1 et 2 contiennent en rĂ©alitĂ© les mĂȘmes valeurs pour les attributs Genre Đž MĂ©decin.
Ensuite, nous aurons besoin d'un concept tel que la taille de la partition. Officiellement:

En termes simples, la taille de la partition correspond au nombre de clusters inclus dans la partition (rappelez-vous que les clusters uniques ne sont pas inclus dans la partition !) :


Nous pouvons maintenant définir l'un des lemmes clés, qui, pour des partitions données, nous permet de déterminer si une dépendance est maintenue ou non :
Lemme 1. La dĂ©pendance A, B â C est vraie si et seulement si

Selon le lemme, pour dĂ©terminer si une dĂ©pendance est vraie, quatre Ă©tapes doivent ĂȘtre effectuĂ©es :
- Calculer la partition pour le cÎté gauche de la dépendance
- Calculer la partition pour le cÎté droit de la dépendance
- Calculer le produit de la premiÚre et de la deuxiÚme étape
- Comparez les tailles des partitions obtenues aux premiÚre et troisiÚme étapes
Vous trouverez ci-dessous un exemple de vérification si la dépendance est vraie selon 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 quels algorithmes existent pour rechercher des fonctions physiques. Nous avons Ă©galement examinĂ© en dĂ©tail les concepts fondamentaux mais importants qui sont activement utilisĂ©s dans les algorithmes modernes de recherche de lois fĂ©dĂ©rales.
Les références:
- Huhtala Y. et coll. TANE : Un algorithme efficace pour dĂ©couvrir des dĂ©pendances fonctionnelles et approximatives //Le journal informatique. â 1999. â T. 42. â Non. 2. â pp. 100-111.
- Kruse S., Naumann F. DĂ©couverte efficace des dĂ©pendances approximatives // Actes de la Dotation VLDB. â 2018. â T. 11. â Non. 7. â pp. 759-772.
- Papenbrock T., Naumann F. Une approche hybride de la dĂ©couverte des dĂ©pendances fonctionnelles // Actes de la ConfĂ©rence internationale 2016 sur la gestion des donnĂ©es. â ACM, 2016. â p. 821-833.
- Papenbrock T. et coll. DĂ©couverte des dĂ©pendances fonctionnelles : une Ă©valuation expĂ©rimentale de sept algorithmes //Actes du VLDB Endowment. â 2015. â T. 8. â Non. 10. â pp. 1082-1093.
- Kumar A. et al. Rejoindre ou ne pas adhĂ©rer ? : RĂ©flĂ©chir Ă deux fois avant de sĂ©lectionner les fonctionnalitĂ©s // Actes de la ConfĂ©rence internationale 2016 sur la gestion des donnĂ©es. â ACM, 2016. â p. 19-34.
- Abo Khamis M. et coll. Apprentissage dans la 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. â p. 325-340.
- Hellerstein JM et al. La bibliothĂšque d'analyse MADlib : ou MAD skills, le SQL //Actes du VLDB Endowment. â 2012. â T. 5. â Non. 12. â pp. 1700-1711.
- Qin C., Rusu F. approximations spĂ©culatives pour l'optimisation de la descente de gradient distribuĂ©e terascale // Actes du quatriĂšme atelier sur l'analyse des donnĂ©es dans le cloud. â ACM, 2015. â P. 1.
- Meng X. et coll. Mllib : Apprentissage automatique dans Apache Spark //The Journal of Machine Learning Research. â 2016. â T. 17. â Non. 1. â pp. 1235-1241.
Auteurs des articles : , chercheur Ă , Đž , chercheur Ă
Source: habr.com
