Introduction to functional dependencies

NĂ« kĂ«tĂ« artikull do tĂ« flasim pĂ«r varĂ«sitĂ« funksionale nĂ« bazat e tĂ« dhĂ«nave — çfarĂ« janĂ«, ku pĂ«rdoren dhe cilat algorithme ekzistojnĂ« pĂ«r t'i gjetur ato.

Do ta shqyrtojmĂ« varĂ«sinĂ« funksionale nĂ« kontekstin e bazave tĂ« tĂ« dhĂ«nave relacional. NĂ«se flasim shumĂ« thjesht, nĂ« kĂ«to baza tĂ« dhĂ«nash, informacionet ruhen nĂ« formĂ«n e tabelave. MĂ« pas, do tĂ« pĂ«rdorim konceptet afĂ«r tĂ« cilat nĂ« teorinĂ« strikte relacionale nuk janĂ« tĂ« ndĂ«rrueshme: tabelĂ«n vetĂ« do ta quajmĂ« relacion, kolumnat — atributet (grupi i tyre — skema e relacionit), dhe grupin e vlerave tĂ« rreshtit nĂ« njĂ« nĂ«ngrup tĂ« Attributeve — tupiz.

Introduction to functional dependencies

Për shembull, në tabelën e mësipërme, (Benson, M, M organ) është një tupiz mbi atributet (Pacienti, Gjinia, Mjeku).
Më formalisht, kjo shkruhet në mënyrën e mëposhtme: Introduction to functional dependencies[Pacienti, Gjinia, Mjeku] = (Benson, M, M organ).
Tani mund të futim konceptin e varësisë funksionale (VF):

Definicioni 1. Relacioni R plotĂ«son VF X → Y (ku X, Y ⊆ R) atĂ«herĂ« dhe vetĂ«m atĂ«herĂ« kur pĂ«r çdo tupiz Introduction to functional dependencies, Introduction to functional dependencies ∈ R Ă«shtĂ« e vĂ«rtetĂ«: nĂ«se Introduction to functional dependencies[X] = Introduction to functional dependencies[X], atĂ«herĂ« Introduction to functional dependencies[Y] = Introduction to functional dependencies[Y]. NĂ« kĂ«tĂ« rast, thuhet se X (determinant, ose grupi pĂ«rcaktues i atributeve) pĂ«rcakton funksionalisht Y (grupi i varur).

Me fjalĂ« tĂ« tjera, pranimi i VF X → Y do tĂ« thotĂ« se nĂ«se kemi dy tupizĂ« nĂ« R dhe ato pĂ«rputhen mbi atributet X, atĂ«herĂ« ato do tĂ« pĂ«rputhen edhe mbi atributet Y.
Tani, në rend. Le të shqyrtojmë atributet Pacienti dhe Gjinia për të cilat duam të dimë nëse ekzistojnë varësi midis tyre apo jo. Për këtë grup atributesh mund të ekzistojnë varësitë e mëposhtme:

  1. Pacienti → Gjinia
  2. Gjinia → Pacienti

Sipas definicionit tĂ« mĂ«sipĂ«rm, pĂ«r tĂ« mbajtur varĂ«sinĂ« e parĂ«, çdo vlerĂ« unike tĂ« kolumnĂ«s Pacienti duhet t'i korrespondonte vetĂ«m njĂ« vlerĂ« tĂ« kolumnĂ«s Gjinia. Dhe pĂ«r tabelĂ«n-shembull, kjo Ă«shtĂ« vĂ«rtet kĂ«shtu. MegjithatĂ«, nĂ« anĂ«n tjetĂ«r, kjo nuk funksionon, domethĂ«nĂ« varĂ«sia e dytĂ« nuk pĂ«rmbushet, dhe atributi Gjinia nuk Ă«shtĂ« njĂ« determinant pĂ«r Pacientin. Po ashtu, nĂ«se marrim varĂ«sinĂ« Mjeku → Pacienti, mund tĂ« vĂ«rejmĂ« se ajo shkelet, pasi vlera Robin nĂ« kĂ«tĂ« atribut ka disa vlera tĂ« ndryshme — Ellis dhe Graham.

Introduction to functional dependencies

Introduction to functional dependencies

KĂ«shtu, varĂ«sitĂ« funksionale lejojnĂ« pĂ«rcaktimin e lidhjeve ekzistuese mes grupeve tĂ« atributeve tĂ« tabelĂ«s. Prandaj, nga tani e tutje, ne do tĂ« shqyrtojmĂ« lidhjet mĂ« interesante, konkretisht ato X → Y, tĂ« cilat janĂ«:

  • jo triviale, domethĂ«nĂ« ana e djathtĂ« e varĂ«sisĂ« nuk Ă«shtĂ« nĂ«ngrup i majtĂ«s (Y ̞⊆ X);
  • minimale, domethĂ«nĂ« nuk ka njĂ« varĂ«si tĂ« tillĂ« Z → Y, qĂ« Z ⊂ X.

VarĂ«sitĂ« e shqyrtuara deri tani ishin tĂ« rrepta, domethĂ«nĂ« nuk parashikonin asnjĂ« shkelje nĂ« tabelĂ«, por pĂ«rveç tyre ka edhe tĂ« tilla qĂ« lejojnĂ« disa mosmarrĂ«veshje mes vlerave tĂ« turmave. KĂ«to varĂ«si nxirren nĂ« njĂ« klasĂ« tĂ« veçantĂ«, quhen afĂ«rsisht dhe u lejohet tĂ« shkelin nĂ« njĂ« numĂ«r tĂ« caktuar turmash. Ky numĂ«r rregullohet nga treguesi i gabimit maksimal emax. PĂ«r shembull, pesha e gabimit Introduction to functional dependencies = 0.01 mund tĂ« nĂ«nkuptojĂ« se varĂ«sia mund tĂ« shkelet nĂ« 1% tĂ« turmave ekzistuese nĂ« grupin e atributeve tĂ« shqyrtuara. DomethĂ«nĂ« pĂ«r 1000 regjistrime, maksimumi 10 turma mund tĂ« shkelin FZ. Ne do tĂ« shqyrtojmĂ« njĂ« metrikĂ« pak mĂ« tĂ« ndryshme, tĂ« bazuar nĂ« vlerat nĂ« çift tĂ« turmave qĂ« po krahasohen. PĂ«r varĂ«sinĂ« X → Y nĂ« raport r ajo llogaritet kĂ«shtu:

Introduction to functional dependencies

TĂ« llogarisim gabimin pĂ«r Mjeku → Pacienti nga shembulli mĂ« sipĂ«r. Kemi dy turma, vlerat e tĂ« cilave ndryshojnĂ« nĂ« atributin Pacienti, por bien dakord nĂ« Doktorin: Introduction to functional dependencies[Doktor, Pacienti] = (Robin, Ellis) dhe Introduction to functional dependencies[Doktor, Pacienti] = (Robin, Graham). Duke ndjekur definicionin e gabimit, ne duhet tĂ« marrim parasysh tĂ« gjitha çiftet konfliktuese, dhe kĂ«shtu do tĂ« kemi dy: (Introduction to functional dependencies, Introduction to functional dependencies) dhe invertimi i saj (Introduction to functional dependencies, Introduction to functional dependencies). TĂ« futim nĂ« formulĂ« dhe tĂ« marrim:

Introduction to functional dependencies

Tani le tĂ« pĂ«rpiqemi tĂ« pĂ«rgjigjemi nĂ« pyetjen: "Pse na duhen kĂ«to tĂ« gjitha?" NĂ« tĂ« vĂ«rtetĂ«, FZ-tĂ« janĂ« tĂ« ndryshme. Lloji i parĂ« Ă«shtĂ« ai varĂ«si qĂ« pĂ«rcaktohet nga administratori nĂ« fazĂ«n e projektimit tĂ« bazĂ«s sĂ« tĂ« dhĂ«nave. Zakonisht janĂ« pak, ato janĂ« tĂ« rrepta, dhe pĂ«rdorimi kryesor — normalizimi i tĂ« dhĂ«nave dhe dizajni i skemĂ«s sĂ« raportit.

Lloji i dytë është varësitë, të cilat paraqesin të dhëna "të fshehura" dhe lidhje të panjohura më parë midis atributeve. Kjo do të thotë se për këto varësi nuk mendohej në momentin e projektimit dhe ato gjenden tashmë për një grup të dhënash të caktuar, në mënyrë që më pas, mbi bazën e shumë varësive të zbuluara, të bëhen disa përfundime mbi informacionin e ruajtur. Pikërisht me këto varësi ne punojmë. Një fushë e tërë e datamining merret me to, me teknika të ndryshme kërkimi dhe algoritme të ndërtuara mbi to. Le të shqyrtojmë se si mund të jenë të dobishme varësitë funksionale të gjetura (të sakta ose të afërta) në disa të dhëna.

Introduction to functional dependencies

Sot, ndër fushat kryesore të aplikimit të varësive, spikasin pastrimi i të dhënave. Ky proces përfshin zhvillimin e proceseve për identifikimin e "të dhënave të ndotura" me pastrimin e tyre të mëvonshëm. Disa përfaqësues të shquar të "të dhënave të ndotura" janë dublikatet, gabimet në të dhëna apo shtypjet e gabuara, vlerat e humbura, të dhënat e vjetra, hapësirat e tepërta dhe kështu me radhë.

Shembulli i një gabimi në të dhëna:

Introduction to functional dependencies

Shembulli i dublikateve në të dhëna:

Introduction to functional dependencies

Për shembull, ne kemi një tabelë dhe një grup rregullash funksionale që duhet të realizohen. Pastrimi i të dhënave në këtë rast nënkupton të ndryshojmë të dhënat në mënyrë që rregullat funksionale të bëhen të sakta. Në këtë rast, numri i modifikimeve duhet të jetë minimal (për këtë procedurë ekzistojnë algoritme të caktuara, për të cilat nuk do të fokusohemi në këtë artikull). Më poshtë është një shembull i tillë i transformimit të të dhënave. Majtas është marrëdhënia fillestare, në të cilën, sigurisht, nuk përmbushen rregullat e nevojshme (me ngjyrë të kuqe është theksuar një shembull i shkeljes së një nga rregullave). Nga ana e djathtë është paraqitur marrëdhënia e përditësuar, në të cilën kutitë e gjelbërta tregojnë vlerat e modifikuara. Pas kryerjes së kësaj procedure, varësitë e nevojshme u mbajtën.

Introduction to functional dependencies

Një fushë tjetër e zakonshme përdorimi është dizajni i bazës së të dhënave. Këtu është e rëndësishme të përmendim format normale dhe normalizimin. Normalizimi është procesi i përshtatjes së një relacioni në përputhje me një set kërkesash, secila prej të cilave përcaktohet në mënyrë të veçantë nga një format normal. Nuk do të detajojmë kërkesat e formave të ndryshme normale (kjo bëhet në çdo libër për kursin e DB për fillestarët), por thjesht do të theksojmë se secila prej tyre përdor në mënyrë të veçantë konceptin e varësive funksionale. Në fund të fundit, varësitë funksionale (VF) janë në thelb kufizime të integritetit që merren parasysh gjatë projektimit të bazës së të dhënave (në kontekstin e kësaj detyre, VF ndonjëherë quhen superçelësa).

Le të shqyrtojmë aplikimin e tyre për katër forma normale në figurën më poshtë. Të kujtojmë se forma normale e Boyce-Codd është më e rreptë se forma e tretë, por më pak e rreptë se forma e katërt. Formën e fundit nuk po e shqyrtojmë ende, pasi për ta vënë në praktikë nevojitet kuptimi i varësive shumëshkallëshe, të cilat në këtë artikull nuk janë të interesit tonë.

Introduction to functional dependencies
Introduction to functional dependencies
Introduction to functional dependencies
Introduction to functional dependencies

Një tjetër fushë ku varësitë kanë gjetur përdorim është ulja e dimensionalitetit të hapësirës së veçorive në probleme të tilla si ndërtimi i klasifikuesit naive bayesian, identifikimi i veçorive të rëndësishme dhe riparametrizimi i modelit regresiv. Në artikujt origjinalë, kjo detyrë quhet përcaktimi i veçorive të tepërta (feature redundancy) dhe të përputhshme (feature relevancy) [5, 6], dhe zgjidhet me përdorimin aktiv të koncepteve të bazës së të dhënave. Me shfaqjen e këtyre veprave, mund të flasim për një kërkesë për zgjidhje që lejojnë bashkimin e bazës së të dhënave, analizës dhe realizimin e problemeve të mësipërme të optimizimit në një mjet të vetëm [7, 8, 9].

Për të kërkuar varësitë funksionale në një grup të dhënash ekzistojnë shumë algoritma (si të rinj, ashtu edhe të vjetër). Këta algoritma mund të ndahen në tre grupe:

  • Algoritmat qĂ« pĂ«rdorin kalimin pĂ«rmes rrjeteve algebraike (Lattice traversal algorithms)
  • Algoritmat qĂ« bazohen nĂ« kĂ«rkimin e vlerave tĂ« pajtueshme (Difference- and agree-set algorithms)
  • Algoritmat qĂ« bazohen nĂ« krahasime çift pas çifti (Dependency induction algorithms)

Një përshkrim të shkurtër të çdo lloji algoritmi është paraqitur në tabelën më poshtë:
Introduction to functional dependencies

Më shumë për këtë klasifikim mund të lexoni [4]. Më poshtë janë paraqitur shembuj algoritmesh për çdo një nga llojet:

Introduction to functional dependencies

Introduction to functional dependencies

Aktualisht po shfaqen algoritma të rinj që kombinon disa qasje për të gjetur varësitë funksionale. Shembuj të tillë algoritmash janë Pyro [2] dhe HyFD [3]. Analiza e funksionimit të tyre parashikohet në artikujt e ardhshëm të këtij cikli. Në këtë artikull, do të shqyrtojmë vetëm konceptet kryesore dhe lemën që nevojiten për të kuptuar teknikat e identifikimit të varësive.

TĂ« fillojmĂ« me tĂ« thjeshtĂ«n — diferencĂ« dhe set tĂ« ra, tĂ« pĂ«rdorura nĂ« llojin e dytĂ« tĂ« algoritmave. Seti i diferencĂ«s pĂ«rfaqĂ«son njĂ« grup tĂ« tupleve qĂ« nuk korrespondojnĂ« me vlerat, ndĂ«rsa seti i ra Ă«shtĂ« pĂ«rkundrazi — tuple qĂ« korrespondojnĂ« me vlerat. Duhet tĂ« theksohet se nĂ« kĂ«tĂ« rast ne shqyrtojmĂ« vetĂ«m pjesĂ«n e majtĂ« tĂ« varĂ«sisĂ«.

Një koncept tjetër të rëndësishëm që u përmend më lart është rrjeti algebraik. Duke qenë se shumë algoritma moderne operojnë me këtë koncept, na nevojitet një ide se çfarë është ai.

PĂ«r tĂ« futur konceptin e rrjetit, nevojitet njĂ« pĂ«rkufizim i grupit tĂ« pjesĂ«risht renditur (ose grup i pjesĂ«risht renditur, shkurtimisht — poset).

PĂ«rkufizimi 2. NjĂ« grup S quhet i pjesĂ«risht renditur nga njĂ« marrĂ«dhĂ«nie binare ⩜, nĂ«se pĂ«r çdo a, b, c ∈ S janĂ« tĂ« vlefshme kĂ«to prona:

  1. Refleksiviteti, pra a ⩜ a
  2. Antisimetri, pra, nĂ«se a ⩜ b dhe b ⩜ a, atĂ«herĂ« a = b
  3. Transitiviteti, pra pĂ«r a ⩜ b dhe b ⩜ c, duhet qĂ« a ⩜ c


Kjo marrĂ«dhĂ«nie quhet marrĂ«dhĂ«nie (jo-strikt) e renditjes sĂ« pjesshme, dhe grupi vetĂ« Ă«shtĂ« njĂ« grup i renditur pjesĂ«risht. Shenja formale: ⟹S, ⩜⟩.

Si njĂ« shembull tĂ« thjeshtĂ« tĂ« njĂ« grupi tĂ« renditur pjesĂ«risht, mund tĂ« marrim grupin e tĂ« gjithĂ« numrave natyrorĂ« N me marrĂ«dhĂ«nien e zakonshme tĂ« rendit ⩜. Nuk Ă«shtĂ« e vĂ«shtirĂ« tĂ« verifikohet se tĂ« gjitha aksiomat e nevojshme pĂ«rmbushen.

NjĂ« shembull mĂ« informues. Le tĂ« shqyrtojmĂ« grupin e tĂ« gjitha nĂ«ngrupeve {1, 2, 3}, tĂ« renditura nga marrĂ«dhĂ«nia e pĂ«rfshirjes ⊆. VĂ«rtet, kjo marrĂ«dhĂ«nie pĂ«rmbush tĂ« gjitha kushtet e rendit tĂ« pjesshĂ«m, prandaj ⟹P ({1, 2, 3}), ⊆⟩ — Ă«shtĂ« njĂ« grup i renditur pjesĂ«risht. NĂ« figurĂ«n mĂ« poshtĂ« Ă«shtĂ« pĂ«rshkruar struktura e kĂ«tij grupi: nĂ«se nga njĂ« element mund tĂ« arrihet me arrow nĂ« njĂ« tjetĂ«r element, atĂ«herĂ« ata janĂ« nĂ« marrĂ«dhĂ«nie rendit.

Introduction to functional dependencies

Na nevojiten edhe dy pĂ«rkufizime tĂ« thjeshta nga fusha e matematikĂ«s — supremum (supremum) dhe infimum (infimum).

PĂ«rkufizimi 3. Le tĂ« supozojmĂ« ⟹S, ⩜⟩ — njĂ« grup tĂ« pjesĂ«risht renditur, A ⊆ S. Kufiri i sipĂ«rm i A Ă«shtĂ« njĂ« element u ∈ S, e tillĂ« qĂ« pĂ«r çdo x ∈ S: x ⩜ u. Le tĂ« konsiderojmĂ« U — grupin e tĂ« gjithĂ« kufijve tĂ« sipĂ«rm tĂ« S. NĂ«se nĂ« U ekziston njĂ« element mĂ« i vogĂ«l, atĂ«herĂ« ai quhet supremum dhe shĂ«nohet si sup A.

Në mënyrë të ngjashme, prezantohet koncepti i kufirit të saktë të poshtëm.

PĂ«rkufizimi 4. Le tĂ« supozojmĂ« ⟹S, ⩜⟩ — njĂ« grup tĂ« pjesĂ«risht renditur, A ⊆ S. Kufiri i poshtĂ«m i A Ă«shtĂ« njĂ« element l ∈ S, e tillĂ« qĂ« pĂ«r çdo x ∈ S: l ⩜ x. Le tĂ« konsiderojmĂ« L — grupin e tĂ« gjithĂ« kufijve tĂ« poshtĂ«m tĂ« S. NĂ«se nĂ« L ekziston njĂ« element tĂ« madh, atĂ«herĂ« ai quhet infimum dhe shĂ«nohet si inf A.

TĂ« shqyrtojmĂ« si shembull grupin e sipĂ«rm tĂ« renditur ⟹P ({1, 2, 3}), ⊆⟩ dhe tĂ« gjejmĂ« nĂ« tĂ« supremum dhe infimum:

Introduction to functional dependencies

Tani mund të formulojmë përkufizimin e grupit algebraik.

PĂ«rkufizimi 5. Le tĂ« supozojmĂ« ⟹P, ⩜⟩ — njĂ« grup tĂ« pjesĂ«risht renditur, i tillĂ« qĂ« çdo nĂ«ngrup dy-elementĂ«sh ka kufij tĂ« saktĂ« tĂ« sipĂ«rm dhe tĂ« poshtĂ«m. AtĂ«herĂ« P quhet grup algebraik. NĂ« kĂ«tĂ« rast, sup{x, y} shĂ«nohet si x √ y, dhe inf {x, y} — si x ∧ y.

Le tĂ« kontrollojmĂ« se shembulli ynĂ« pune ⟹P ({1, 2, 3}), ⊆⟩ Ă«shtĂ« grup. NĂ« tĂ« vĂ«rtetĂ«, pĂ«r çdo a, b ∈ P ({1, 2, 3}), a√b = aâˆȘb, dhe a∧b = a∩b. PĂ«r shembull, le tĂ« shqyrtojmĂ« grupet {1, 2} dhe {1, 3} dhe tĂ« gjejmĂ« infimum dhe supremum tĂ« tyre. NĂ«se i ndĂ«rpresim, do tĂ« marrim grupin {1}, i cili do tĂ« jetĂ« infimumi. Supremumi do tĂ« marrim duke i bashkuar — {1, 2, 3}.

Në algoritmet e identifikimit të FZ, hapësira e kërkimit shpesh paraqitet në formën e një grupi, ku grupe prej një elementi (lexo niveli i parë i grupit të kërkimit, ku ana e majtë e varësive përbëhet nga një atribut) përfaqësojnë secilin atribut të marrëdhënies fillestare.
Fillimisht shqyrtohen varĂ«sitĂ« e tilla si ∅ → Atribut i vetĂ«m. Ky hap lejon tĂ« pĂ«rcaktohet se cilĂ«t atribute janĂ« çelĂ«sat primarĂ« (pĂ«r ata atribute nuk ka determinante, dhe pĂ«r kĂ«tĂ« arsye ana e majtĂ« Ă«shtĂ« e zbrazĂ«t). MĂ« pas, algoritmet e tilla lĂ«vizin lart pĂ«rmes grupit. Duke pasur parasysh se grupi mund tĂ« anashkalohet, nĂ«se i jepni njĂ« madhĂ«si maksimale tĂ« dĂ«shiruar tĂ« anĂ«s sĂ« majtĂ«, algoritmi nuk do tĂ« vazhdojĂ« mĂ« tej se niveli me atĂ« madhĂ«si.

NĂ« figurĂ«n mĂ« poshtĂ« tregohet si mund tĂ« pĂ«rdoret grila algebrike nĂ« detyrĂ«n e kĂ«rkimit tĂ« FZ. KĂ«tu çdo skaj (X, XY) pĂ«rfaqĂ«son njĂ« varshmĂ«ri X → Y. PĂ«r shembull, ne kaluam nivelin e parĂ« dhe dimĂ« se mbahet varshmĂ«ria A → B (tĂ« cilĂ«n e paraqesim me lidhje tĂ« gjelbra midis kulmave A dhe B). KĂ«shtu, kur do tĂ« pĂ«rparojmĂ« nĂ« grilĂ« lart, ne mund tĂ« mos kontrollojmĂ« varshmĂ«rinĂ« A, C → B, sepse ajo do tĂ« jetĂ« tashmĂ« jo minimale. Po ashtu, ne nuk do ta kontrollonim, nĂ«se do tĂ« mbahej varshmĂ«ria C → B.

Introduction to functional dependencies
Introduction to functional dependencies

PĂ«r mĂ« tepĂ«r, zakonisht, tĂ« gjithĂ« algoritmĂ«t modernĂ« pĂ«r kĂ«rkimin e FZ pĂ«rdorin njĂ« strukturĂ« tĂ« dhĂ«nash si partitĂ« (nĂ« burim — stripped partition [1]). PĂ«rkufizimi formal i njĂ« partie Ă«shtĂ« si mĂ« poshtĂ«:

PĂ«rkufizimi 6. Le tĂ« jetĂ« X ⊆ R — njĂ« grup atributesh pĂ«r marrĂ«dhĂ«nien r. Klastri pĂ«rfaqĂ«son njĂ« grup indeksesh tuple nga r, tĂ« cilat kanĂ« vlera tĂ« njĂ«jta pĂ«r X, dmth c(t) = {i|ti[X] = t[X]}. Partita pĂ«rfaqĂ«son njĂ« grup klasrish, duke pĂ«rjashtuar klastrimet e gjatĂ«si njĂ«si:

Introduction to functional dependencies

Me fjalë të thjeshta, partida për atributin X përfaqëson një grup listash, ku çdo listë përmban numrat e rreshtave me vlera të njëjta për X. Në literaturën moderne, struktura që përfaqëson partitë quhet position list index (PLI). Klastrit e gjatësi njësi përjashtohen për qëllime kompresimi të PLI, sepse këto janë klastra që përmbajnë vetëm numrin e regjistrimit me vlerë unike, e cila gjithmonë do të jetë e lehtë për t'u përcaktuar.

Le të shqyrtojmë një shembull. Të kthehemi te e njëjta tavolinë me pacientë dhe të ndërtomë partitë për kolona Pacienti dhe Gjinia (në të majtë është shfaqur një kolonë e re, ku janë shënuar numrat e rreshtave të tavolinës):

Introduction to functional dependencies

Introduction to functional dependencies

Sipas përkufizimit, partia për kolonën Pacienti në fakt do të jetë e zbrazët, pasi klasrat e vetme përjashtohen nga partia.

Partitë mund të fitohet mbi disa atribute. Dhe për këtë ekzistojnë dy rrugë: duke kaluar përmes tavolinës, ndërtimi i një partie menjëherë për të gjithë atributet e nevojshme, ose ndërtimi i saj me anë të operacionit të ndërsektimit të partive mbi një nëngrup atributesh. Algoritmët për kërkimin e FZ përdorin variantin e dytë.

Me fjalë të thjeshta, për të marrë një parti për kolona ABC, mund të merret partitë për AC dhe B (ose grupesh të tjera të papërshtatshme) dhe t'i ndërthurim ato. Operacioni i ndërthurjes së dy grupeve identifikon klastra me gjatësi maksimale të përbashkët për të dy grupet.

Le të shqyrtojmë një shembull:

Introduction to functional dependencies

Introduction to functional dependencies

Në rastin e parë morëm një grup të zbrazët. Nëse e shohim tabelën, do të shohim që nuk ka vlera të njëjta për dy atribute. Nëse modifikojmë pak tabelën (rastin në të djathtë), do të marrim një ndërthurje jo të zbrazët. Në këtë rast, rreshtat 1 dhe 2 vërtet përmbajnë vlera të njëjta për atributet. Gjinia dhe Doktori.

Më pas do na nevojitet një koncept i tillë si madhësia e grupit. Formalisht:

Introduction to functional dependencies

Thjesht, madhësia e grupit përfaqëson numrin e klastrave që hynë në grup (kujtojmë se klastrat e vetme nuk hyjnë në grup!):

Introduction to functional dependencies

Introduction to functional dependencies

Tani mund të përcaktojmë një nga lemën kyçe, e cila për grupet e caktuara lejon të vendosim nëse mbahen varësitë apo jo:

Lema 1. VarĂ«sia A, B → C mbahet, nĂ«se dhe vetĂ«m nĂ«se

Introduction to functional dependencies

Sipas lemës, për të përcaktuar nëse mbahen varësitë, është e nevojshme të kryhen katër hapa:

  1. Të llogaritë grupin për anën e majtë të varësisë
  2. Të llogaritë grupin për anën e djathtë të varësisë
  3. Të llogaritë produktin e hapat e parë dhe të dytë
  4. Të krahasohet madhësia e grupeve që u morën në hapin e parë dhe të tretë

Më poshtë është një shembull i verifikimit nëse varësia mbahet sipas kësaj lemë:

Introduction to functional dependencies
Introduction to functional dependencies
Introduction to functional dependencies
Introduction to functional dependencies

Në këtë artikull shqyrtuam konceptet si varësia funksionale, varësia funksionale e afërt, shqyrtova se ku përdoren ato, si dhe cilat algoritmo për gjetjen e varësive funksionale ekzistojnë. Po ashtu, shqyrtuam në detaje konceptet bazë, por të rëndësishme, që përdoren në algoritmet moderne për gjetjen e varësive funksionale.

Lidhje me literaturën:

  1. Huhtala Y. et al. TANE: NjĂ« algoritĂ«m efikas pĂ«r zbulimin e varĂ«sive funksionale dhe tĂ« pĂ«rafĂ«rta //Revista kompjuterike. – 1999. – T. 42. – Nr. 2. – fq. 100-111.
  2. Kruse S., Naumann F. Zbulimi efikas i varĂ«sive tĂ« pĂ«rafĂ«rta //Proceedings of the VLDB Endowment. – 2018. – T. 11. – Nr. 7. – fq. 759-772.
  3. Papenbrock T., Naumann F. NjĂ« qasje hibrid pĂ«r zbulimin e varĂ«sive funksionale //Proceedings of the 2016 KonferencĂ«s NdĂ«rkombĂ«tare mbi Menaxhimin e tĂ« DhĂ«nave. – ACM, 2016. – fq. 821-833.
  4. Papenbrock T. et al. Zbulimi i varĂ«sive funksionale: NjĂ« vlerĂ«sim eksperimentues i shtatĂ« algoritmove //Proceedings of the VLDB Endowment. – 2015. – T. 8. – Nr. 10. – fq. 1082-1093.
  5. Kumar A. et al. TĂ« bashkĂ«ngjitemi apo jo?: TĂ« mendojmĂ« dy herĂ« pĂ«r bashkimet para pĂ«rzgjedhjes sĂ« veçorave //Proceedings of the 2016 KonferencĂ«s NdĂ«rkombĂ«tare mbi Menaxhimin e tĂ« DhĂ«nave. – ACM, 2016. – fq. 19-34.
  6. Abo Khamis M. et al. MĂ«simi nĂ« bazĂ« tĂ« tĂ« dhĂ«nave me tensorĂ« tĂ« hollĂ« //Proceedings of the 37th ACM SIGMOD-SIGACT-SIGAI Symposium on Principles of Database Systems. – ACM, 2018. – Fq. 325-340.
  7. Hellerstein J. M. et al. Biblioteka analitike MADlib: ose aftĂ«sitĂ« MAD, SQL //Proceedings of the VLDB Endowment. – 2012. – V. 5. – Nr. 12. – Fq. 1700-1711.
  8. Qin C., Rusu F. Aproksimime spekulative pĂ«r optimizimin e gradientit tĂ« shpĂ«rndarĂ« teraskal //Proceedings of the Fourth Workshop on Data analytics in the Cloud. – ACM, 2015. – Fq. 1.
  9. Meng X. et al. Mllib: MĂ«simi nĂ« apache spark //The Journal of Machine Learning Research. – 2016. – V. 17. – Nr. 1. – Fq. 1235-1241.

Autorët e artikullit: Anastasia Birillo, kërkues në JetBrains Research, student i qendrës CS dhe Nikita Bobrov, kërkues në JetBrains Research

Burimi: habr.com

Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster