Panimula sa Functional Dependencies

Sa artikulong ito ay pag-uusapan natin ang tungkol sa mga functional na dependency sa mga database - kung ano ang mga ito, kung saan ginagamit ang mga ito at kung anong mga algorithm ang umiiral upang mahanap ang mga ito.

Isasaalang-alang namin ang functional dependencies sa konteksto ng mga relational database. Upang ilagay ito nang halos halos, sa naturang mga database ay nakaimbak ang impormasyon sa anyo ng mga talahanayan. Susunod, gumagamit kami ng tinatayang mga konsepto na hindi maaaring palitan sa mahigpit na teorya ng relational: tatawagin namin ang talahanayan mismo na isang kaugnayan, ang mga haligi - mga katangian (ang kanilang hanay - isang schema ng kaugnayan), at ang hanay ng mga halaga ng hilera sa isang subset ng mga katangian - isang tuple.

Panimula sa Functional Dependencies

Halimbawa, sa talahanayan sa itaas, (Benson, M, M organ) ay isang tuple ng mga katangian (Pasyente, Paul, Doktor).
Mas pormal, ito ay nakasulat bilang mga sumusunod: Panimula sa Functional Dependencies[Pasyente, Kasarian, Doktor] = (Benson, M, M organ).
Ngayon ay maaari nating ipakilala ang konsepto ng functional dependence (FD):

Kahulugan 1. Ang ugnayang R ay nakakatugon sa pederal na batas X → Y (kung saan X, Y ⊆ R) kung at kung para lamang sa anumang tuple Panimula sa Functional Dependencies, Panimula sa Functional Dependencies ∈ R ay may hawak na: kung Panimula sa Functional Dependencies[X] = Panimula sa Functional Dependencies[X], pagkatapos Panimula sa Functional Dependencies[Y] = Panimula sa Functional Dependencies[Y]. Sa kasong ito, sinasabi namin na ang X (ang determinant, o pagtukoy sa hanay ng mga katangian) ay gumaganang tumutukoy sa Y (ang nakadependeng hanay).

Sa madaling salita, ang pagkakaroon ng isang pederal na batas X → Y nangangahulugan na kung mayroon tayong dalawang tuple R at tumutugma sila sa mga katangian X, pagkatapos ay magkakasabay sila sa mga katangian Y.
At ngayon, sa pagkakasunud-sunod. Tingnan natin ang mga katangian Pasyente и Paul kung saan gusto naming malaman kung may mga dependency sa pagitan nila o wala. Para sa naturang hanay ng mga katangian, maaaring umiral ang mga sumusunod na dependency:

  1. Pasyente → Kasarian
  2. Kasarian → Pasyente

Gaya ng tinukoy sa itaas, para manatili ang unang dependency, bawat natatanging halaga ng column Pasyente isang column value lang ang dapat tumugma Paul. At para sa halimbawang talahanayan ito talaga ang kaso. Gayunpaman, hindi ito gumagana sa kabaligtaran na direksyon, iyon ay, ang pangalawang dependency ay hindi nasiyahan, at ang katangian Paul ay hindi isang determinant para sa pasyente. Katulad nito, kung kukunin natin ang pagtitiwala Doktor → Pasyente, makikita mo na ito ay nilabag, dahil ang halaga Robin ang katangiang ito ay may iba't ibang kahulugan - Ellis at Graham.

Panimula sa Functional Dependencies

Panimula sa Functional Dependencies

Kaya, ginagawang posible ng mga functional dependencies na matukoy ang mga umiiral na ugnayan sa pagitan ng mga hanay ng mga katangian ng talahanayan. Mula dito, isasaalang-alang namin ang mga pinaka-kagiliw-giliw na koneksyon, o sa halip ay ganoon X → Yano sila:

  • non-trivial, ibig sabihin, ang kanang bahagi ng dependence ay hindi isang subset ng kaliwa (Y ̸⊆ X);
  • minimal, ibig sabihin, walang ganoong pag-asa Z → YNa Z ⊂ X.

Ang mga dependency na isinasaalang-alang hanggang sa puntong ito ay mahigpit, iyon ay, hindi sila nagbigay ng anumang mga paglabag sa talahanayan, ngunit bilang karagdagan sa kanila, mayroon ding mga nagpapahintulot sa ilang hindi pagkakapare-pareho sa pagitan ng mga halaga ng mga tuple. Ang mga naturang dependency ay inilalagay sa isang hiwalay na klase, na tinatawag na tinatayang, at pinapayagang lumabag para sa isang tiyak na bilang ng mga tuple. Ang halagang ito ay kinokontrol ng maximum na tagapagpahiwatig ng error na emax. Halimbawa, ang rate ng error Panimula sa Functional Dependencies Ang = 0.01 ay maaaring mangahulugan na ang dependence ay maaaring lumabag ng 1% ng mga available na tuple sa itinuturing na hanay ng mga katangian. Iyon ay, para sa 1000 na talaan, ang maximum na 10 tuple ay maaaring lumabag sa Pederal na Batas. Isasaalang-alang namin ang isang bahagyang naiibang sukatan, batay sa magkaibang magkaibang mga halaga ng mga tuple na inihahambing. Para sa addiction X → Y sa ugali r ito ay itinuturing na ganito:

Panimula sa Functional Dependencies

Kalkulahin natin ang error para sa Doktor → Pasyente mula sa halimbawa sa itaas. Mayroon kaming dalawang tuple na ang mga halaga ay naiiba sa katangian Pasyente, ngunit nag-tutugma sa Doktor: Panimula sa Functional Dependencies[Doktor, Pasyente] = (Robin, Ellis) At Panimula sa Functional Dependencies[Doktor, Pasyente] = (Robin, Graham). Kasunod ng kahulugan ng isang error, dapat nating isaalang-alang ang lahat ng magkasalungat na pares, na nangangahulugang magkakaroon ng dalawa sa kanila: (Panimula sa Functional Dependencies, Panimula sa Functional Dependencies) at ang pagbabaligtad nito (Panimula sa Functional Dependencies, Panimula sa Functional Dependencies). Ipalit natin ito sa formula at makuha ang:

Panimula sa Functional Dependencies

Ngayon subukan nating sagutin ang tanong na: "Bakit para sa lahat ito?" Sa katunayan, iba ang mga pederal na batas. Ang unang uri ay ang mga dependency na tinutukoy ng administrator sa yugto ng disenyo ng database. Karaniwang kakaunti ang mga ito sa bilang, mahigpit, at ang pangunahing aplikasyon ay ang normalisasyon ng data at disenyo ng relational schema.

Ang pangalawang uri ay dependencies, na kumakatawan sa "nakatagong" data at dating hindi alam na mga ugnayan sa pagitan ng mga katangian. Iyon ay, ang mga naturang dependency ay hindi naisip tungkol sa oras ng disenyo at sila ay natagpuan na para sa umiiral na set ng data, upang sa paglaon, batay sa maraming natukoy na mga pederal na batas, anumang mga konklusyon ay maaaring iguguhit tungkol sa nakaimbak na impormasyon. Ito ay tiyak na mga dependency na aming pinagtatrabahuhan. Ang mga ito ay hinarap ng isang buong larangan ng data mining na may iba't ibang mga diskarte sa paghahanap at algorithm na binuo sa kanilang batayan. Alamin natin kung paano maaaring maging kapaki-pakinabang ang mga nakitang functional dependencies (eksakto o tinatayang) sa anumang data.

Panimula sa Functional Dependencies

Ngayon, isa sa mga pangunahing aplikasyon ng mga dependency ay paglilinis ng data. Kabilang dito ang pagbuo ng mga proseso para sa pagtukoy ng "maruming data" at pagkatapos ay itama ito. Ang mga kilalang halimbawa ng "maruming data" ay mga duplicate, mga error sa data o typo, mga nawawalang value, hindi napapanahong data, mga karagdagang espasyo, at iba pa.

Halimbawa ng error sa data:

Panimula sa Functional Dependencies

Halimbawa ng mga duplicate sa data:

Panimula sa Functional Dependencies

Halimbawa, mayroon kaming isang talahanayan at isang hanay ng mga pederal na batas na dapat isagawa. Ang paglilinis ng data sa kasong ito ay nagsasangkot ng pagbabago ng data upang maging tama ang mga Pederal na Batas. Sa kasong ito, ang bilang ng mga pagbabago ay dapat na minimal (ang pamamaraang ito ay may sariling mga algorithm, na hindi namin tututukan sa artikulong ito). Nasa ibaba ang isang halimbawa ng naturang pagbabago ng data. Sa kaliwa ay ang orihinal na relasyon, kung saan, malinaw naman, ang mga kinakailangang FL ay hindi natutugunan (isang halimbawa ng isang paglabag sa isa sa mga FL ay naka-highlight sa pula). Sa kanan ay ang na-update na relasyon, kung saan ang mga berdeng cell ay nagpapakita ng mga binagong halaga. Pagkatapos ng pamamaraang ito, nagsimulang mapanatili ang mga kinakailangang dependency.

Panimula sa Functional Dependencies

Ang isa pang tanyag na application ay ang disenyo ng database. Narito ito ay nagkakahalaga ng pagpapabalik ng mga normal na anyo at normalisasyon. Ang normalisasyon ay ang proseso ng pagdadala ng isang kaugnayan sa pagsang-ayon sa isang tiyak na hanay ng mga kinakailangan, na ang bawat isa ay tinukoy ng normal na anyo sa sarili nitong paraan. Hindi namin ilalarawan ang mga kinakailangan ng iba't ibang mga normal na anyo (ginagawa ito sa anumang libro sa isang kurso sa database para sa mga nagsisimula), ngunit mapapansin lamang namin na ang bawat isa sa kanila ay gumagamit ng konsepto ng functional dependencies sa sarili nitong paraan. Pagkatapos ng lahat, ang mga FL ay likas na mga hadlang sa integridad na isinasaalang-alang kapag nagdidisenyo ng isang database (sa konteksto ng gawaing ito, ang mga FL ay kung minsan ay tinatawag na mga superkey).

Isaalang-alang natin ang kanilang aplikasyon para sa apat na normal na anyo sa larawan sa ibaba. Alalahanin na ang normal na anyo ng Boyce-Codd ay mas mahigpit kaysa sa ikatlong anyo, ngunit hindi gaanong mahigpit kaysa sa ikaapat. Hindi namin isinasaalang-alang ang huli sa ngayon, dahil ang pagbabalangkas nito ay nangangailangan ng pag-unawa sa mga multi-valued dependencies, na hindi kawili-wili sa amin sa artikulong ito.

Panimula sa Functional Dependencies
Panimula sa Functional Dependencies
Panimula sa Functional Dependencies
Panimula sa Functional Dependencies

Ang isa pang lugar kung saan natagpuan ng mga dependency ang kanilang aplikasyon ay ang pagbabawas ng dimensionality ng feature space sa mga gawain tulad ng pagbuo ng isang walang muwang na Bayes classifier, pagtukoy ng mga makabuluhang feature, at reparameterizing ng isang regression model. Sa orihinal na mga artikulo, ang gawaing ito ay tinatawag na pagpapasiya ng kalabisan at tampok na kaugnayan [5, 6], at ito ay nalutas sa aktibong paggamit ng mga konsepto ng database. Sa pagdating ng naturang mga gawa, masasabi natin na ngayon ay may pangangailangan para sa mga solusyon na nagpapahintulot sa amin na pagsamahin ang database, analytics at pagpapatupad ng mga problema sa pag-optimize sa itaas sa isang tool [7, 8, 9].

Mayroong maraming mga algorithm (parehong moderno at hindi masyadong moderno) para sa paghahanap ng mga pederal na batas sa isang set ng data. Ang mga naturang algorithm ay maaaring hatiin sa tatlong pangkat:

  • Algorithm gamit ang traversal ng algebraic lattice (Lattice traversal algorithms)
  • Algorithm batay sa paghahanap para sa mga napagkasunduang halaga (Pagkakaiba at sang-ayon na mga algorithm)
  • Algorithm batay sa pairwise na paghahambing (Dependency induction algorithm)

Ang isang maikling paglalarawan ng bawat uri ng algorithm ay ipinakita sa talahanayan sa ibaba:
Panimula sa Functional Dependencies

Maaari kang magbasa nang higit pa tungkol sa pag-uuri na ito [4]. Nasa ibaba ang mga halimbawa ng mga algorithm para sa bawat uri:

Panimula sa Functional Dependencies

Panimula sa Functional Dependencies

Sa kasalukuyan, lumalabas ang mga bagong algorithm na pinagsasama ang ilang mga diskarte sa paghahanap ng mga functional na dependencies. Ang mga halimbawa ng naturang mga algorithm ay ang Pyro [2] at HyFD [3]. Inaasahan ang pagsusuri sa kanilang gawain sa mga sumusunod na artikulo ng seryeng ito. Sa artikulong ito susuriin lang natin ang mga pangunahing konsepto at lemma na kinakailangan upang maunawaan ang mga diskarte sa pagtuklas ng dependency.

Magsimula tayo sa isang simpleng - difference- at agree-set, na ginamit sa pangalawang uri ng mga algorithm. Ang difference-set ay isang set ng mga tuple na walang parehong mga halaga, habang ang agree-set, sa kabaligtaran, ay mga tuple na may parehong mga halaga. Kapansin-pansin na sa kasong ito ay isinasaalang-alang lamang natin ang kaliwang bahagi ng pagtitiwala.

Ang isa pang mahalagang konsepto na nakatagpo sa itaas ay ang algebraic lattice. Dahil maraming modernong algorithm ang gumagana sa konseptong ito, kailangan nating magkaroon ng ideya kung ano ito.

Upang maipakilala ang konsepto ng isang sala-sala, kinakailangan upang tukuyin ang isang partially ordered set (o partially ordered set, abbreviated as poset).

Kahulugan 2. Ang isang set S ay sinasabing bahagyang inayos ng binary relation ⩽ kung para sa lahat ng a, b, c ∈ S ang mga sumusunod na katangian ay nasiyahan:

  1. Reflexivity, iyon ay, isang ⩽ a
  2. Antisymmetry, ibig sabihin, kung a ⩽ b at b ⩽ a, kung gayon a = b
  3. Transitivity, ibig sabihin, para sa isang ⩽ b at b ⩽ c sumusunod na ang isang ⩽ c


Ang ganitong relasyon ay tinatawag na isang (maluwag) na bahagyang pagkakasunod-sunod na ugnayan, at ang hanay mismo ay tinatawag na isang partially ordered set. Pormal na notasyon: ⟨S, ⩽⟩.

Bilang pinakasimpleng halimbawa ng isang partially ordered set, maaari nating kunin ang set ng lahat ng natural na numero N na may karaniwang pagkakasunod-sunod na ugnayan ⩽. Madaling i-verify na ang lahat ng kinakailangang axiom ay nasiyahan.

Isang mas makabuluhang halimbawa. Isaalang-alang ang set ng lahat ng mga subset {1, 2, 3}, na inayos ayon sa inclusion relation ⊆. Sa katunayan, ang kaugnayang ito ay nakakatugon sa lahat ng bahagyang kundisyon ng pagkakasunud-sunod, kaya ang ⟨P ({1, 2, 3}), ⊆⟩ ay isang bahagyang nakaayos na hanay. Ang figure sa ibaba ay nagpapakita ng istraktura ng set na ito: kung ang isang elemento ay maaaring maabot ng mga arrow patungo sa isa pang elemento, kung gayon ang mga ito ay nasa isang pagkakasunud-sunod na relasyon.

Panimula sa Functional Dependencies

Kakailanganin natin ang dalawa pang simpleng kahulugan mula sa larangan ng matematika - supremum at infimum.

Kahulugan 3. Hayaan ang ⟨S, ⩽⟩ maging isang partially ordered set, A ⊆ S. Ang upper bound ng A ay isang elemento u ∈ S na ang ∀x ∈ S: x ⩽ u. Hayaang ang U ang set ng lahat ng upper bounds ng S. Kung mayroong pinakamaliit na elemento sa U, kung gayon ito ay tinatawag na supremum at tinutukoy na sup A.

Ang konsepto ng isang eksaktong lower bound ay ipinakilala nang katulad.

Kahulugan 4. Hayaang ang ⟨S, ⩽⟩ ay isang partially ordered set, A ⊆ S. Ang infimum ng A ay isang elemento l ∈ S na ang ∀x ∈ S: l ⩽ x. Hayaang ang L ang set ng lahat ng lower bounds ng S. Kung mayroong pinakamalaking elemento sa L, kung gayon ito ay tinatawag na infimum at tinutukoy bilang inf A.

Isaalang-alang bilang halimbawa ang nasa itaas na bahagyang nakaayos na set ⟨P ({1, 2, 3}), ⊆⟩ at hanapin ang pinakamataas at infimum dito:

Panimula sa Functional Dependencies

Ngayon ay maaari na nating bumalangkas ng kahulugan ng isang algebraic na sala-sala.

Kahulugan 5. Hayaang ang ⟨P,⩽⟩ ay isang bahagyang nakaayos na hanay upang ang bawat dalawang elementong subset ay may upper at lower bound. Ang P ay tinatawag na algebraic lattice. Sa kasong ito, ang sup{x, y} ay isinusulat bilang x ∨ y, at inf {x, y} bilang x ∧ y.

Suriin natin na ang ating gumaganang halimbawa ⟨P ({1, 2, 3}), ⊆⟩ ay isang sala-sala. Sa katunayan, para sa alinmang a, b ∈ P ({1, 2, 3}), a∨b = a∪b, at a∧b = a∩b. Halimbawa, isaalang-alang ang mga set {1, 2} at {1, 3} at hanapin ang kanilang infimum at supremum. Kung i-intersect natin ang mga ito, makukuha natin ang set {1}, na magiging infimum. Nakukuha namin ang supremum sa pamamagitan ng pagsasama-sama ng mga ito - {1, 2, 3}.

Sa mga algorithm para sa pagtukoy ng mga pisikal na problema, ang espasyo sa paghahanap ay madalas na kinakatawan sa anyo ng isang sala-sala, kung saan ang mga hanay ng isang elemento (basahin ang unang antas ng search lattice, kung saan ang kaliwang bahagi ng mga dependency ay binubuo ng isang katangian) ay kumakatawan sa bawat katangian. ng orihinal na kaugnayan.
Una, isinasaalang-alang namin ang mga dependency ng form ∅ → Isang katangian. Ang hakbang na ito ay nagbibigay-daan sa iyo upang matukoy kung aling mga katangian ang pangunahing mga susi (para sa mga naturang katangian ay walang mga determinant, at samakatuwid ang kaliwang bahagi ay walang laman). Dagdag pa, ang mga naturang algorithm ay gumagalaw paitaas sa kahabaan ng sala-sala. Ito ay nagkakahalaga ng noting na hindi ang buong sala-sala ay maaaring traversed, iyon ay, kung ang nais na maximum na laki ng kaliwang bahagi ay ipinasa sa input, pagkatapos ay ang algorithm ay hindi lalampas sa isang antas na may ganoong laki.

Ang figure sa ibaba ay nagpapakita kung paano magagamit ang isang algebraic lattice sa problema ng paghahanap ng FZ. Narito ang bawat gilid (X, XY) ay kumakatawan sa isang dependency X → Y. Halimbawa, nakapasa kami sa unang antas at alam na ang pagkagumon ay napanatili A → B (ipapakita namin ito bilang isang berdeng koneksyon sa pagitan ng mga vertex A и B). Nangangahulugan ito na higit pa, kapag umakyat tayo sa kahabaan ng sala-sala, maaaring hindi natin suriin ang pagtitiwala A, C → B, dahil hindi na magiging minimal. Katulad nito, hindi namin ito susuriin kung ang dependency ay gaganapin C → B.

Panimula sa Functional Dependencies
Panimula sa Functional Dependencies

Bilang karagdagan, bilang isang panuntunan, ang lahat ng mga modernong algorithm para sa paghahanap ng mga pederal na batas ay gumagamit ng isang istraktura ng data tulad ng isang partition (sa orihinal na pinagmulan - stripped partition [1]). Ang pormal na kahulugan ng isang partisyon ay ang mga sumusunod:

Kahulugan 6. Hayaang ang X ⊆ R ay isang hanay ng mga katangian para sa kaugnayan r. Ang cluster ay isang set ng mga indeks ng tuples sa r na may parehong halaga para sa X, iyon ay, c(t) = {i|ti[X] = t[X]}. Ang partition ay isang hanay ng mga cluster, hindi kasama ang mga cluster ng haba ng unit:

Panimula sa Functional Dependencies

Sa simpleng salita, isang partition para sa isang attribute X ay isang hanay ng mga listahan, kung saan ang bawat listahan ay naglalaman ng mga numero ng linya na may parehong mga halaga para sa X. Sa modernong panitikan, ang istraktura na kumakatawan sa mga partisyon ay tinatawag na position list index (PLI). Ang mga cluster na may haba ng unit ay hindi kasama para sa mga layunin ng compression ng PLI dahil ang mga ito ay mga cluster na naglalaman lang ng record number na may natatanging value na palaging madaling matukoy.

Tingnan natin ang isang halimbawa. Bumalik tayo sa parehong talahanayan kasama ang mga pasyente at bumuo ng mga partisyon para sa mga haligi Pasyente и Paul (may lumabas na bagong column sa kaliwa, kung saan minarkahan ang mga numero ng hilera ng talahanayan):

Panimula sa Functional Dependencies

Panimula sa Functional Dependencies

Bukod dito, ayon sa kahulugan, ang pagkahati para sa haligi Pasyente ay talagang walang laman, dahil ang mga solong kumpol ay hindi kasama sa partisyon.

Ang mga partisyon ay maaaring makuha sa pamamagitan ng ilang mga katangian. At mayroong dalawang paraan upang gawin ito: sa pamamagitan ng pagpunta sa talahanayan, bumuo ng isang partisyon gamit ang lahat ng kinakailangang mga katangian nang sabay-sabay, o buuin ito gamit ang pagpapatakbo ng intersection ng mga partisyon gamit ang isang subset ng mga katangian. Ginagamit ng mga algorithm sa paghahanap ng pederal na batas ang pangalawang opsyon.

Sa simpleng salita, para, halimbawa, makakuha ng partition ayon sa mga column Abakada, maaari kang kumuha ng mga partisyon para sa AC и B (o anumang iba pang hanay ng magkahiwalay na mga subset) at i-intersect ang mga ito sa isa't isa. Ang pagpapatakbo ng intersection ng dalawang partisyon ay pumipili ng mga kumpol ng pinakamahabang haba na karaniwan sa parehong mga partisyon.

Kumuha tayo ng isang halimbawa:

Panimula sa Functional Dependencies

Panimula sa Functional Dependencies

Sa unang kaso, nakatanggap kami ng walang laman na partisyon. Kung titingnan mo nang mabuti ang talahanayan, sa katunayan, walang magkaparehong mga halaga para sa dalawang katangian. Kung babaguhin natin nang bahagya ang talahanayan (ang kaso sa kanan), makakakuha na tayo ng isang hindi walang laman na intersection. Bukod dito, ang mga linya 1 at 2 ay talagang naglalaman ng parehong mga halaga para sa mga katangian Paul и Doctor.

Susunod, kakailanganin natin ang gayong konsepto bilang laki ng partisyon. Pormal na:

Panimula sa Functional Dependencies

Sa madaling salita, ang laki ng partisyon ay ang bilang ng mga kumpol na kasama sa partisyon (tandaan na ang mga solong kumpol ay hindi kasama sa partisyon!):

Panimula sa Functional Dependencies

Panimula sa Functional Dependencies

Ngayon ay maaari nating tukuyin ang isa sa mga pangunahing lemma, na para sa mga partikular na partisyon ay nagbibigay-daan sa amin upang matukoy kung ang isang dependency ay gaganapin o hindi:

Lemma 1. Ang dependency A, B → C ay nagtataglay ng kung at kung lamang

Panimula sa Functional Dependencies

Ayon sa lemma, upang matukoy kung ang isang dependency ay may hawak, apat na hakbang ang dapat gawin:

  1. Kalkulahin ang partisyon para sa kaliwang bahagi ng dependency
  2. Kalkulahin ang partisyon para sa kanang bahagi ng dependency
  3. Kalkulahin ang produkto ng una at ikalawang hakbang
  4. Ihambing ang mga sukat ng mga partisyon na nakuha sa una at ikatlong hakbang

Nasa ibaba ang isang halimbawa ng pagsuri kung ang dependence ay humahawak ayon sa lemma na ito:

Panimula sa Functional Dependencies
Panimula sa Functional Dependencies
Panimula sa Functional Dependencies
Panimula sa Functional Dependencies

Sa artikulong ito, sinuri namin ang mga konsepto tulad ng functional dependence, tinatayang functional dependence, tiningnan kung saan ginagamit ang mga ito, pati na rin kung anong mga algorithm para sa paghahanap ng mga pisikal na function ang umiiral. Sinuri din namin nang detalyado ang mga pangunahing ngunit mahalagang konsepto na aktibong ginagamit sa mga modernong algorithm para sa paghahanap ng mga pederal na batas.

Mga sanggunian:

  1. Huhtala Y. et al. TANE: Isang mahusay na algorithm para sa pagtuklas ng mga functional at tinatayang dependencies //Ang computer journal. – 1999. – T. 42. – Hindi. 2. – pp. 100-111.
  2. Kruse S., Naumann F. Mahusay na pagtuklas ng tinatayang mga dependency // Proceedings of the VLDB Endowment. – 2018. – T. 11. – Hindi. 7. – pp. 759-772.
  3. Papenbrock T., Naumann F. Isang hybrid na diskarte sa pagtuklas ng functional dependency //Proceedings of the 2016 International Conference on Management of Data. – ACM, 2016. – pp. 821-833.
  4. Papenbrock T. et al. Pagtuklas ng functional dependency: Isang pang-eksperimentong pagsusuri ng pitong algorithm //Proceedings of the VLDB Endowment. – 2015. – T. 8. – Hindi. 10. – pp. 1082-1093.
  5. Kumar A. et al. Para sumali o hindi para sumali?: Nag-iisip nang dalawang beses tungkol sa pagsali bago ang pagpili ng tampok //Proceedings of the 2016 International Conference on Management of Data. – ACM, 2016. – pp. 19-34.
  6. Abo Khamis M. et al. In-database learning na may sparse tensors //Proceedings of the 37th ACM SIGMOD-SIGACT-SIGAI Symposium on Principles of Database Systems. – ACM, 2018. – pp. 325-340.
  7. Hellerstein JM et al. Ang MADlib analytics library: o MAD skills, ang SQL //Proceedings of the VLDB Endowment. – 2012. – T. 5. – Hindi. 12. – pp. 1700-1711.
  8. Qin C., Rusu F. Mga speculative approximation para sa terascale distributed gradient descent optimization //Proceedings of the Fourth Workshop on Data analytics in the Cloud. – ACM, 2015. – P. 1.
  9. Meng X. et al. Mllib: Machine learning sa apache spark //The Journal of Machine Learning Research. – 2016. – T. 17. – Hindi. 1. – pp. 1235-1241.

Mga may-akda ng artikulo: Anastasia Birillo, mananaliksik sa Pananaliksik sa JetBrains, CS center student и Nikita Bobrov, mananaliksik sa Pananaliksik sa JetBrains

Pinagmulan: www.habr.com

Magdagdag ng komento