In questu articulu avemu da parlà di dependenzii funziunali in basa di dati - ciò chì sò, induve sò usati è chì algoritmi esistenu per truvà.
Avemu da cunsiderà dipendenze funziunali in u cuntestu di basa di dati relazionale. Per dì assai apprussimatamente, in tali basa di dati l'infurmazioni sò guardati in forma di tavule. In seguitu, usemu cuncetti apprussimati chì ùn sò micca intercambiabili in a teoria rilazioni stretta: chjameremu a tavula stessu una relazione, i culonni - attributi (u so settore - un schema di relazione), è u settore di valori di fila nantu à un subset di attributi. - una tupla.

Per esempiu, in a tabella sopra, (Benson, M, M organ) hè una tupla di attributi (Pazient, Paul, Doctor).
Più formalmente, questu hè scrittu cusì:
[Paziente, Genere, Dottore]= (Benson, M, M organe).
Avà pudemu intruduce u cuncettu di dependenza funziunale (FD):
Definizione 1. A relazione R satisface a lege federale X → Y (induve X, Y ⊆ R) se è solu s'ellu per qualsiasi tuple
,
∈ R teni: se
[X] =
[X], allora
[Y] =
[Y]. In questu casu, dicemu chì X (u determinante, o definitu di l'attributi) determina funziunale Y (u settore dipendente).
In altre parolle, a prisenza di una lege federale X → Y significa chì s'è avemu dui tuple in R è currispondenu in attributi X, tandu cuncideranu in attributi Y.
È avà, in ordine. Fighjemu l'attributi Pacientu и Sex per quale vulemu sapè s'ellu ci sò dipendenze trà elli o micca. Per un tali inseme di attributi, e seguenti dipendenze ponu esse:
- Pacient → Genere
- Genere → Pacientu
Cum'è definitu sopra, per chì a prima dependenza di mantene, ogni valore di colonna unicu Pacientu solu un valore di colonna deve cuncordà Sex. È per a tabella di esempiu questu hè veramente u casu. In ogni casu, questu ùn viaghja micca in a direzzione opposta, vale à dì, a seconda dependenza ùn hè micca soddisfatta, è l'attributu Sex ùn hè micca un determinante per Pacientu. In u listessu modu, si pigliamu a dependenza Medicu → Pacientu, pudete vede chì hè violatu, postu chì u valore Robin stu attributu hà parechji significati diffirenti - Ellis è Graham.


Cusì, e dependenzii funziunali facenu pussibule di determinà e relazioni esistenti trà setti di attributi di tabella. Da quì in avanti, cunsideremu e cunnessione più interessanti, o piuttostu tali X → Yciò chì sò:
- non-trivial, vale à dì, u latu drittu di a dependenza ùn hè micca un subset di a manca (Y ̸⊆ X);
- minimu, vale à dì, ùn ci hè micca una tale dipendenza Z → Y, questu Z ⊂ X.
I dependenzii cunsiderati finu à questu puntu eranu stretti, vale à dì, ùn anu micca furnitu alcuna violazione nantu à a tavula, ma in più di elli, ci sò ancu quelli chì permettenu una certa incongruenza trà i valori di e tuple. Tali dependenzii sò posti in una classa separata, chjamata apprussimata, è sò permessi di esse violati per un certu numaru di tuple. Questa quantità hè regulata da l'indicatore di errore massimu emax. Per esempiu, u tassu di errore
= 0.01 pò significà chì a dependenza pò esse violata da 1% di e tuple dispunibuli nantu à u settore di attributi cunsideratu. Questu hè, per 1000 records, un massimu di 10 tuples ponu violà a Legge Federale. Avemu da cunsiderà una metrica ligeramente sfarente, basatu annantu à i valori diffirenti di i tuppi paragunati. Per l'addiction X → Y nantu à l'attitudine r hè cunsideratu cusì:

Calculemu l'errore per Medicu → Pacientu da l'esempiu sopra. Avemu dui tuples chì i valori sò diffirenti nantu à l'attributu Pacientu, ma coincide Dottore:
[Dottore, Paziente] = (Robin, Ellis) è
[Dottore, Paziente] = (Robin, Graham). Dopu à a definizione di un errore, duvemu piglià in contu tutti i pariglii cunflitti, chì significa chì ci saranu dui: (
,
) è a so inversione (
,
). Sustituemu in a formula è uttene:

Avà pruvemu à risponde à a quistione: "Perchè hè tuttu per?" In fatti, e lege federale sò diverse. U primu tipu hè quelli dipendenze chì sò determinate da l'amministratore in u stadiu di cuncepimentu di basa di dati. Di solitu sò pocu in numeru, stretti, è l'applicazione principale hè a normalizazione di dati è u disignu di schema relazionale.
U sicondu tipu hè dipendenze, chì rapprisentanu dati "hidden" è relazioni prima scunnisciute trà attributi. Vale à dì, tali dependenzii ùn sò micca pensati à u mumentu di u disignu è si trovanu per u settore di dati esistenti, perchè più tardi, basatu annantu à e parechje lege federale identificate, qualsiasi cunclusioni pò esse chjappu nantu à l'infurmazioni almacenati. Hè precisamente sti dependenzii chì travagliammu. Sò trattati da un campu sanu di data mining cù diverse tecniche di ricerca è algoritmi custruiti nantu à a so basa. Scupritemu cumu e dependenzii funziunali truvati (esatti o apprussimati) in ogni dati ponu esse utili.

Oghje, una di l'applicazioni principali di dipendenze hè a pulizia di dati. Implica u sviluppu di prucessi per l'identificazione di "dati sporchi" è poi corregge. Esempi prominenti di "dati sporchi" sò duplicati, errori di dati o typos, valori mancanti, dati obsoleti, spazi extra, è simili.
Esempiu di errore di dati:

Esempiu di duplicati in dati:

Per esempiu, avemu una tavula è un inseme di liggi federali chì deve esse eseguitu. A pulizia di dati in questu casu implica cambià e dati in modu chì e Leggi Federali diventanu currette. In questu casu, u numeru di mudificazioni deve esse minimu (sta prucedura hà i so algoritmi, chì ùn avemu micca focu annantu à questu articulu). Quì sottu hè un esempiu di tali trasfurmazioni di dati. A manca hè a relazione originale, in quale, ovviamente, i FL necessarii ùn sò micca scontri (un esempiu di una violazione di unu di i FL hè evidenziatu in rossu). À a diritta hè a relazione aghjurnata, cù e cellule verdi chì mostranu i valori cambiati. Dopu à sta prucedura, i dependenzii necessarii cuminciaru à esse mantinuti.

Un'altra applicazione populari hè u disignu di basa di dati. Quì vale a pena ricurdà e forme nurmali è nurmalizazione. A nurmalizazione hè u prucessu di mette una relazione in cunfurmità cù un certu settore di esigenze, ognuna di quali hè definita da a forma normale in u so modu. Ùn avemu micca discrittu i bisogni di diverse forme nurmali (questu hè fattu in ogni libru nantu à un cursu di basa di dati per i principianti), ma avemu da nutà solu chì ognuna di elle usa u cuncettu di dipendenze funziunali in u so modu. Dopu tuttu, i FLs sò intrinsecamente limitazioni di integrità chì sò cunsiderate quandu si cuncepisce una basa di dati (in u cuntestu di questu compitu, i FL sò qualchì volta chjamati superkeys).
Fighjemu a so applicazione per e quattru forme normali in a stampa sottu. Ricurdativi chì a forma normale Boyce-Codd hè più stretta di a terza forma, ma menu stretta di a quarta. Ùn avemu micca cunsiderà l'ultime per ora, postu chì a so formulazione richiede una cunniscenza di dependenzi multi-valuati, chì ùn sò micca interessanti per noi in questu articulu.




Un'altra zona in quale e dipendenze anu truvatu a so applicazione hè di riduce a dimensionalità di u spaziu di funziunalità in i travaglii cum'è a custruzzione di un classificatore Bayes ingenu, l'identificazione di caratteristiche significative è a riparazione di un mudellu di regressione. In l'articuli urigginali, questu compitu hè chjamatu a determinazione di a pertinenza redundante è di funziunalità [5, 6], è hè risolta cù l'usu attivu di cuncetti di basa di dati. Cù l'avventu di tali travaglii, pudemu dì chì oghje ci hè una dumanda di suluzioni chì ci permettenu di cumminà a basa di dati, l'analisi è l'implementazione di i prublemi di ottimisazione sopra in una strumentu [7, 8, 9].
Ci sò parechji algoritmi (sia muderni è micca cusì muderni) per a ricerca di liggi federali in un settore di dati Tali algoritmi ponu esse divisu in trè gruppi:
- Algoritmi chì utilizanu traversu di reticuli algebrichi (Algoritmi di traversu di reticuli)
- Algoritmi basati nantu à a ricerca di valori accunsentiti (Algoritmi di differenzi è d'accordu)
- Algoritmi basati nantu à paraguni à coppia (algoritmi di induzione di dipendenza)
Una breve descrizzione di ogni tipu d'algoritmu hè presentata in a tabella sottu:

Pudete leghje più nantu à sta classificazione [4]. Quì sottu sò esempi di algoritmi per ogni tipu:


Attualmente, appariscenu novi algoritmi chì combinanu parechji approcci per truvà dipendenze funziunali. Esempii di tali algoritmi sò Pyro [2] è HyFD [3]. Un analisi di u so travagliu hè previstu in i seguenti articuli di sta serie. In questu articulu, avemu da esaminà solu i cuncetti basi è lemma chì sò necessarii per capiscenu e tecniche di rilevazione di dependenza.
Accuminciamu cù una simplicità - differenza- è accordu-set, utilizatu in u sicondu tipu d'algoritmi. Difference-set hè un inseme di tuple chì ùn anu micca i stessi valori, mentre chì l'accordu-set, à u cuntrariu, sò tuples chì anu i stessi valori. Hè da nutà chì in questu casu avemu cunsideratu solu u latu manca di a dependenza.
Un altru cuncettu impurtante chì hè statu scontru sopra hè u lattice algebraic. Siccomu parechji algoritmi muderni operanu nantu à stu cuncettu, avemu bisognu di avè una idea di ciò chì hè.
Per intruduce u cuncettu di un lattice, hè necessariu di definisce un inseme parzialmente urdinatu (o inseme parzialmente urdinatu, abbreviatu cum'è poset).
Definizione 2. Si dice chì un inseme S hè parzialmente urdinatu da a relazione binaria ⩽ se per tutti a, b, c ∈ S e seguenti proprietà sò soddisfatte:
- Riflessività, cioè a ⩽ a
- Antisimmetria, vale a dire se a ⩽ b e b ⩽ a, allora a = b
- La transitività, cioè per a ⩽ b e b ⩽ c ne segue che a ⩽ c
Una tale relazione hè chjamata una relazione d'ordine parziale (loose), è u settore stessu hè chjamatu un settore parzialmente urdinatu. Notazione formale: ⟨S, ⩽⟩.
Cum'è l'esempiu più simplice di un settore parzialmente urdinatu, pudemu piglià l'inseme di tutti i numeri naturali N cù a relazione d'ordine abituale ⩽. Hè facilitu per verificà chì tutti l'assiomi necessarii sò soddisfatti.
Un esempiu più significativu. Cunsiderate l'inseme di tutti i subsets {1, 2, 3}, urdinati da a relazione d'inclusione ⊆. Infatti, sta rilazioni soddisfa tutte e cundizioni d'ordine parziale, cusì ⟨P ({1, 2, 3}), ⊆⟩ hè un inseme parzialmente urdinatu. A figura sottu mostra a struttura di questu settore: se un elementu pò esse ghjuntu cù frecce à un altru elementu, allora sò in una relazione d'ordine.

Avemu bisognu di duie definizioni più simplici da u campu di a matematica - supremum è infimum.
Definizione 3. Sia ⟨S, ⩽⟩ un inseme parzialmente urdinatu, A ⊆ S. U limite superiore di A hè un elementu u ∈ S tali chì ∀x ∈ S: x ⩽ u. Sia U l'inseme di tutti i limiti superiori di S. S'ellu ci hè un elementu più chjucu in U, allora hè chjamatu supremu è hè denotatu sup A.
U cuncettu di un limite inferjuri esatta hè introduttu di manera simile.
Definizione 4. Sia ⟨S, ⩽⟩ un inseme parzialmente urdinatu, A ⊆ S. L'infimu di A hè un elementu l ∈ S tali chì ∀x ∈ S: l ⩽ x. Chì L sia l'inseme di tutti i limiti più bassi di S. S'ellu ci hè un elementu più grande in L, allora hè chjamatu infimum è hè denotatu cum'è inf A.
Considérez à titre d'exemple l'ensemble partiellement ordonné ⟨P ({1, 2, 3}), ⊆⟩ et trouvez le supremum et l'infimum en lui :

Avà pudemu formulà a definizione di un lattice algebricu.
Definizione 5. Sia ⟨P,⩽⟩ un inseme parzialmente urdinatu cusì chì ogni sottumessu di dui elementi hà un limite superiore è inferiore. Allora P hè chjamatu reticule algebricu. In questu casu, sup{x, y} hè scrittu cum'è x ∨ y, è inf {x, y} cum'è x ∧ y.
Cuntrollamu chì u nostru esempiu di travagliu ⟨P ({1, 2, 3}), ⊆⟩ hè un reticulatu. Infatti, per ogni a, b ∈ P ({1, 2, 3}), a∨b = a∪b, è a∧b = a∩b. Per esempiu, cunzidira l'insiemi {1, 2} è {1, 3} è truvate u so infimum è supremum. Se li intersecemu, averemu u set {1}, chì serà l'infimum. Avemu u supremu cumminendu - {1, 2, 3}.
In l'algoritmi per identificà i prublemi fisichi, u spaziu di ricerca hè spessu rapprisintatu in a forma di un lattice, induve insemi di un elementu (leghjite u primu livellu di u lattice di ricerca, induve u latu manca di e dependenzii hè custituitu da un attributu) rapprisentanu ogni attributu. di a relazione originale.
Prima, avemu cunsideratu dipendenze di a forma ∅ → Attributu unicu. Stu passu vi permette di determinà quali attributi sò chjave primariu (per tali attributi ùn ci sò micca determinanti, è per quessa u latu manca hè viotu). In più, tali algoritmi si movenu in sopra à u lattice. Hè vale a nutà chì micca u lattice tutale pò esse attraversatu, vale à dì, se a dimensione massima desiderata di u latu manca hè passatu à l'input, allura l'algoritmu ùn andarà più di un livellu cù quella dimensione.
A figura sottu mostra cumu un reticulatu algebricu pò esse usatu in u prublema di truvà una FZ. Quì ogni bordu (X, XY) rapprisenta una dependenza X → Y. Per esempiu, avemu passatu u primu livellu è sapemu chì l'addiction si mantene A → B (Vimumu questu cum'è una cunnessione verde trà i vertici A и B). Questu significa chì in più, quandu si move nantu à u lattice, ùn pudemu micca verificà a dependenza A, C → B, perchè ùn serà più minimu. In listessu modu, ùn averiamu micca verificatu se a dependenza era tenuta C → B.


Inoltre, in regula, tutti l'algoritmi muderni per a ricerca di e lege federale utilizanu una struttura di dati cum'è una partizione (in a fonte originale - partizione spogliata [1]). A definizione formale di una partizione hè a siguenti:
Definizione 6. Sia X ⊆ R un inseme di attributi per a relazione r. Un cluster hè un inseme di indici di tuple in r chì anu u listessu valore per X, vale à dì c(t) = {i|ti[X] = t[X]}. Una partizione hè un inseme di clusters, escludendu clusters di unità di lunghezza:

In parolle simplici, una partizione per un attributu X hè un inseme di listi, induve ogni lista cuntene numeri di linea cù i stessi valori per X. In a literatura muderna, a struttura chì rapprisenta partizioni hè chjamata indice di lista di posizione (PLI). I clusters di unità di lunghezza sò esclusi per scopi di compressione PLI perchè sò clusters chì cuntenenu solu un numeru record cù un valore unicu chì serà sempre faciule d'identificà.
Fighjemu un esempiu. Riturnemu à a listessa tavula cù i pazienti è custruiscenu partizioni per e colonne Pacientu и Sex (una nova colonna hè apparsa à a manca, in quale i numeri di fila di a tavula sò marcati):


Inoltre, secondu a definizione, a partizione per a colonna Pacientu serà veramente viotu, postu chì i clusters unichi sò esclusi da a partizione.
E partizioni ponu esse ottenute da parechji attributi. E ci sò duie manere di fà questu: passendu per a tavula, custruisce una partizione cù tutti l'attributi necessarii à una volta, o custruite cù l'operazione di intersezzione di partizioni cù un subset di attributi. L'algoritmi di ricerca di a lege federale utilizanu a seconda opzione.
In parolle simplici, per, per esempiu, uttene una partizione per colonne ABC, pudete piglià partizioni per AC и B (o qualsiasi altru inseme di subsets disjoint) è l'intersece cù l'altri. L'operazione di intersezzione di duie partizioni selezziunate clusters di a più grande lunghezza chì sò cumuni à e duie partizioni.
Fighjemu un esempiu:


In u primu casu, avemu ricevutu una partizione viota. Se fighjate attentamente à a tavula, allora ùn ci sò micca valori identichi per i dui attributi. Sè avemu mudificà ligeramente a tavula (u casu à a diritta), avemu digià ottene una intersezzione micca viota. Inoltre, e linee 1 è 2 cuntenenu i stessi valori per l'attributi Sex и Dottore.
Dopu, avemu bisognu di un tali cuncettu cum'è a dimensione di partizione. Formalmente:

Bastamente, a dimensione di a partizione hè u numeru di clusters inclusi in a partizione (ricurdate chì i clusters unichi ùn sò micca inclusi in a partizione!):


Avà pudemu definisce unu di i lemmi chjave, chì per partizioni dati ci permette di determinà se una dependenza hè tenuta o micca:
Lemme 1. A dipendenza A, B → C vale se è solu se

Sicondu u lema, per stabilisce s'ellu hè una dependenza, deve esse realizatu quattru passi:
- Calculate a partizione per u latu manca di a dependenza
- Calculate a partizione per u latu drittu di a dependenza
- Calculate u pruduttu di u primu è u sicondu passu
- Comparare e dimensioni di e partizioni ottenute in u primu è terzu passu
Quì sottu hè un esempiu di cuntrollà s'ellu si mantene a dependenza secondu stu lema:




In questu articulu, avemu esaminatu cuncetti cum'è a dependenza funziunale, a dependenza funzionale apprussimativa, hà vistu induve sò usati, è ancu ciò chì l'algoritmi per a ricerca di e funzioni fisiche esistenu. Avemu ancu esaminatu in dettu i cuncetti basi ma impurtanti chì sò attivamente utilizati in l'algoritmi muderni per a ricerca di e lege federale.
Referenze:
- Huhtala Y. et al. TANE: Un algoritmu efficace per scopre dependenzii funziunali è apprussimati // U ghjurnale di l'informatica. – 1999. – T. 42. – No. 2. – pp 100-111.
- Kruse S., Naumann F. Scuperta efficace di dependenzi apprussimati // Proceedings of the VLDB Endowment. – 2018. – T. 11. – No. 7. – pp 759-772.
- Papenbrock T., Naumann F. Un accostu hibridu à a scuperta di a dependenza funziunale // Proceedings of the 2016 International Conference on Management of Data. – ACM, 2016. – pp 821-833.
- Papenbrock T. et al. Scuperta di a dependenza funziunale: Una valutazione sperimentale di sette algoritmi //Proceedings of the VLDB Endowment. – 2015. – T. 8. – No. 10. – pp 1082-1093.
- Kumar A. et al. Per unisce o micca unisce ?: Pensendu duie volte à l'unioni prima di a selezzione di e funzioni //Proceedings of the 2016 International Conference on Management of Data. – ACM, 2016. – pp 19-34.
- Abo Khamis M. et al. Apprendimentu in basa di dati cù tensori sparse //Atti di u 37u Simposiu ACM SIGMOD-SIGACT-SIGAI nantu à i principii di i sistemi di basa di dati. – ACM, 2018. – pp 325-340.
- Hellerstein JM et al. A libreria analitica di MADlib: o cumpetenze MAD, u SQL //Proceedings of the VLDB Endowment. – 2012. – T. 5. – No. 12. – pp 1700-1711.
- Qin C., Rusu F. Approssimazioni speculative per terascale distributed gradient descent optimization // Proceedings of the Fourth Workshop on Data analytics in the Cloud. – ACM, 2015. – P. 1.
- Meng X. et al. Mllib: Machine learning in apache spark // The Journal of Machine Learning Research. – 2016. – T. 17. – No. 1. – pp 1235-1241.
Autori di l'articulu: , ricercatore à , и , ricercatore à
Source: www.habr.com
