2013 m. rugsėjo 18 d., trečiadienis

Asociacinių taisyklių radimas pilno perrinkimo būdu



Siekiant geriau išsiaiškinti asociacinių taisyklių radimo metodiką, buvo nuspręsta pradžioje sukurti asociacinių taisyklių radimo programą su grafiniu interfeisu. Ši programa nėra skirta algoritmų greitaveikos patikrinimui. Ji skirta vaizdžiai pateikti analizuojamus duomenis ir tarpinius rezultatus. Programos kūrimui buvo pasirinkta Delphi programavimo kalba. Programos išeities tekstas pateikiamas priede 1. Programa turi patogų vartotojo interfeisą:Programoje realizuotas asociacinių taisyklių radimo procesas išskaidytas į 4 etapus:
1.      Nuskaitoma elementų aibė
2.      Suformuojamos   visos   įmanomos   netuščios   ir   nepasikartojančios elementų aibės
3.      Atliekamas aibių palaikymų suskaičiavimas
4.    Randamos asociacinės taisyklės, bei suskaičiuojami jų stiprumai
Šiuos etapus vartotojas valdo atitinkamų mygtukų paspaudimais.
Programa duomenis nuskaito į dinaminę duomenų struktūrą. Šiam tikslui buvo sukurti sekantys duomenų tipai:
         Aibe - tiesinis dinaminis sąrašas, kurio nariai laiko informaciją apie aibei priklausančius elementus
         Palaik - tiesinis dinaminis sąrašas, kurio kiekvienas narys turi nuoroda į aibę, bei suskaičiuotą palaikymo vertę
         Asoc - tiesinis dinaminis sąrašas, kurio kiekvienas narys turi po dvi nuorodas į aibes, bei tų aibių suskaičiuotas palaikymo vertes.
Pradžioje nuskaitomas elementų sąrašas (procedūra Button3Click), kuris patalpinamas į elementų vardų masyvą ElemVard, bei pateikiamas vartotojui kairioje interfeiso lango dalyje.
Antrame etape generuojamos aibės iš nuskaitytųjų elementų (procedūra Button4Click). Aibės yra generuojamos rekurentiškai, įtraukiant ar išmetant po vieną elementą (procedūra ElmGo). Visos sugeneruotos aibės apjungiamos į sąrašą Sp, bei išvedamos vartotojui centrinėje interfeiso lango dalyje.
Trečio etapo metu skaičiuojami palaikymai (procedūra Button5Click). Tam imama kiekviena sugeneruotoji aibė ir skaičiuojamas jos pasikartojimų kiekis duomenų bazėje. Rezultatai vartotojui pateikiami centrinėje interfeiso lango dalyje.
Ketvirtame etape ieškoma asociacinių taisyklių (procedūra Button6Click). Tam formuojama nauja struktūra Sc. Taisyklės randamos skaidant aibes, turinčias daugiau nei vieną elementą, bei turinčias nenulinį palaikymą. Sugeneruotos asociacinės taisyklės pateikiamos vartotojui dešinėje interfeiso lango dalyje.
Šios programos kūrimo metu buvo išsiaiškintas darbas su duomenimis ir įgyta patirtis, kuri buvo panaudota kuriant greitaveikius asociacinių taisyklių radimo algoritmus.

3.2    Asociacinių taisyklių radimo algoritmų bendra dalis

Siekiant užtikrinti asociacinių taisyklių radimo algoritmų greitaveiką, buvo nuspręsta programines algoritmų realizacijas kurti C++ kalba (kompiliatorius Borland C++ 5.5.1 for Win32), kaip komandinės eilutės aplikacijas be grafinio vartotojo interfeiso. Tai leidžia maksimaliai išnaudoti kompiuterio resursus, bei atlikti automatizuotą algoritmų greitaveikos tyrimą. Taip pat buvo nuspręsta, kad skirtingų algoritmų programos turi būti su vienodais duomenų interfeisais.
Išnagrinėjus teorinėje dalyje pateiktus algoritmus buvo pastebėta, kad algoritmai turi daug bendrų dalių, bei naudoja tokias pačias duomenų struktūras, todėl buvo nuspręsta bendrąsias algoritmų dalis iškelti į atskirą modulį. Šis modulis turi talpinti savyje visus naudojamus objektus.
Bendrosios dalies išeities tekstas pateiktas priede 2.
Elementų saugojimui ir darbui su jais, greitaveikos sumetimais, pasirinkta naudoti elementų skaitinius identifikatorius. Šių identifikatorių greitam nustatymui (tai reikalinga atliekant transakcijų duomenų bazės nuskaitymą) sukurtas objektas RaidSar. Objekte realizuota medžio struktūra:


Tad medyje ieškant elemento pavadinimo ARA, gaunamas identifikatorius 2, o pavadinimo AHA - 9. Taip išvengiama didelio kiekio tikrinimų, palyginus su masyvo struktūra.
Elementų vardų medis padarytas dinaminis, tad atitinkamos šakos sukuriamos tik jei yra elementų, turinčių tokius simbolius savo pavadinimuose. Atminties taupymo sumetimais, simbolių, galimų naudoti elementų varduose, aibė apribota iki didžiųjų lotyniškų raidžių, mažųjų lotyniškų raidžių, arabiškų skaitmenų ir pabraukimo simbolio „_".
Greitam elemento vardo radimui, kai turimas elemento identifikatorius, sukurtas dinaminis elementų vardų masyvo objektas NumSar, kur elemento identifikatorius sutampa su masyvo indeksu.
Šiuos du objektus RaidSar ir NumSar į vieną visumą apjungia objektas Elementai. Šiame objekte papildomai realizuoti metodai naujo elemento įdėjimui, elemento pašalinimui, elemento pavadinimo radimui žinant identifikatorių, elemento identifikatoriaus radimui žinant elemento pavadinimą, pilno elementų sąrašo nusiskaitymui iš užduoto failo, bei elementų pasikartojimo suskaičiavimui užduotoje transakcijų duomenų bazėje.
Elementų aibės saugojimui atmintyje sukurtas objektas Aibe. Kiekvienas elementas Aibe objekte užima 1 bitą. Binarinis elementų saugojimas įgalina greitai atlikinėti veiksmus su aibėmis - aibių sudėtis, atimtis, daugyba. Šie metodai realizuoti objekte. Papildomai dar sukurti metodai elemento buvimo aibėje patikrinimui, aibių palyginimui, išvedimui į nurodytą failą.
Objektas Palaikymas apibendrina Aibe objektą papildydamas jį atminties ląstele suskaičiuoto palaikymo saugojimui, bei suriša aibes į tiesinį dinaminį sąrašą.
Visų aukščiau paminėtų duomenų struktūrų apibendrinimui sukurtas objektas PalaikymuSk. Šis objektas tarnauja ir kaip elementų aibių palaikymo, bei asociacinių taisyklių radimo ir stiprumo skaičiavimo metodų konteineris. Objekte sukurti metodai Aibių prijungimui, pašalinimui, radimui, aibės palaikymo radimui, mažų aibių pašalinimui, palaikymų skaičiavimui, kito objekto duomenų perėmimui, algoritmas ARGen asociacinių taisyklių radimui.
Mėginio ir Padalinimo algoritmuose naudojamas duomenų bazės dalies patalpinimas operatyvinėje atmintyje, todėl sukurtas objektas VidBaze realizuojantis tiesinį sąrašą, kuriame saugomi transakcijų duomenų bazės elementai. Objektas turi duomenų bloko nusiskaitymo iš užduoto failo metodą.
Sukurtieji objektai yra skirti tik šiam darbui, todėl visi objektų elementai ir metodai yra viešojo tipo. Norint sukurtuosius objektus panaudoti kitiems komerciniams tikslams, rekomenduotina vidinius objektų elementus padaryti privačiais ir palikti atvirus tik interfeisus.
3.3    Algoritmų programinės realizacijos

Turint bendrus visiems algoritmams duomenų objektus, sekančiame etape buvo sukurtos keturių algoritmų programinės realizacijos. Kadangi buvo iškeltas reikalavimas vienodiems interfeisams, tai visos programos priima tokią komandinę eilutę:
<vardas> <baze> <elementai> <rezultatai> <palaikymas> <stiprumas> <vardas>      programos vykdomojo failo pavadinimas <baze>        transakcijų duomenų bazės failo pavadinimas <elementai>  elementų sąrašo failo pavadinimas <rezultatai>   išvedamų rezultatų failo pavadinimas <palaikymas> pareikalaujamas minimalus palaikymas <stiprumas>  pareikalaujamas minimalus asociacinės taisyklės stiprumas



3.3.1     Pilno perrinkimo algoritmas

Šio algoritmo programos išeities tekstas pateiktas priede 3.
Programoje realizuotas elementų sąrašo nuskaitymas, visų įmanomų elementų aibių suformavimas, transakcijų duomenų bazės skaitymas ir palaikymų skaičiavimas, asociatyvinių taisyklių radimas. Programa nuskaitinėja transakcijų duomenų bazę tik vieną kartą.
Elementų aibių formavimui panaudota rekurentinė funkcija Formuoti.



3.3.2     Apriorinis algoritmas

Šio algoritmo programos išeities tekstas pateiktas priede 4.
Programa nuskaito elementų sąrašą ir suformuoja kandidatus-aibes po vieną elementą. Toliau vykdomas ciklas, kol yra nors vienas kandidatas. Cikle atliekamas transakcijų duomenų bazės praėjimas ir palaikymų suskaičiavimas. Panaudojant Apriori-Gen algoritmą atliekamas naujų kandidatų radimas. Pabaigus ciklą atliekamas asociatyvinių taisyklių radimas.



3.3.3     Mėginio algoritmas

Šio algoritmo programos išeities tekstas pateiktas priede 5.
Programa nuskaito elementų sąrašą ir patalpina dalį transakcijų duomenų bazės į operatyvinę atmintį. Tada su šia dalimi atlieka Apriorinį algoritmą. Gautos aibės ir aibės iš negatyvios ribos funkcijos naudojamos kaip kandidatai pilnam transakcijų duomenų bazės skanavimui. Jei šio skanavimo metu buvo gautos aibės, priklausiusios negatyvios ribos funkcijos rezultatui, tai atliekamas kandidatų sąrašo išplėtimas ir dar vienas transakcijų duomenų bazės praėjimas. Pabaigoje vykdomas asociatyvinių taisyklių radimas.



3.3.4     Padalinimo algoritmas

Šio algoritmo programos išeities tekstas pateiktas priede 6.
Programa nuskaito elementų sąrašą ir vykdo ciklą. Ciklo metu patalpina eilinę duomenų bazės dalį į atmintį ir atlieka Apriorinį algoritmą. Ciklas baigiamas, kai nuskaitomas paskutinis transakcijų duomenų bazės blokas. Visos sukauptosios elementų aibės naudojamos kaip kandidatai antram transakcijų duomenų bazės praėjimui. Pabaigoje vykdomas asociatyvinių taisyklių radimas.



3.3.5     Elementų sąrašo sudarymas

Visų algoritmų programinės realizacijos naudoja elementų sąrašo failą, todėl duomenų paruošimo fazėje yra reikalingas tokio failo sudarymas. Šią funkciją atliekančios programos išeities tekstas pateiktas priede 7.
Programa skaito visus transakcijų duomenų bazės įrašus ir formuoja pavadinimų medį. Kai pabaigiamas skaitymas, programa įrašo elementų sąrašą į failą, išrūšiuodama elementus abėcėlės tvarka.


3.4   Testinės duomenų aibės

Algoritmų tyrimui reikia testinių transakcijų duomenų bazių. Tam buvo pasirinkta naudoti devynias duomenų aibes:
1.                                  Maža duomenų aibė iš 5 elementų ir 5 įrašų. Aibė pateikta priede 8. Ši aibė naudojama pavyzdžiuose teorinėje algoritmų analizėje.
2.                                  Praplėstas mažos duomenų aibės variantas. Aibę sudaro 11 elementų ir 23 įrašai. Aibė pateikta priede 9.
3.                                  Mažas realių skambučių poaibis. Šią aibę sudaro 21 elementas ir 40 įrašų. Aibė pateikta priede 10.
4.                                  Realių skambučių vienos paros rajonų kodų duomenys. Aibę sudaro 218 elementų ir 42913 įrašų. Aibės dalis pateikta priede 11.
5.                                  Realių skambučių kilmės kodų vienos paros duomenys. Aibę sudaro 65 elementai ir 45069 įrašai. Aibės dalis pateikta priede 12.
6.                                  Realių skambučių paskirties kodų vienos paros duomenys. Aibę sudaro 228 elementai ir 20479 įrašai. Aibės dalis pateikta priede 13.
7.                                  Realių skambučių vienerių metų rajonų kodų duomenys. Aibę sudaro 503 elementai ir 15205852 įrašai. Aibės struktūra identiška 4 variantui.
8.                                  Realių skambučių kilmės kodų vienerių metų duomenys. Aibę sudaro 106 elementai ir 16169534 įrašai. Aibės struktūra identiška 5 variantui.
9.                                  Realių skambučių paskirties kodų vienerių metų duomenys. Aibę sudaro 502 elementai ir 7608725 įrašai. Aibės struktūra identiška 6 variantui.


3.5    Realių duomenų aibių paruošimas

Turima informacija apie 50000 telefono abonentų metų skambučius formate (pateiktas vienas įrašas):
8|1|356|2004.05.20|01:16:59|01111011111111111111111111111111|45|E034|??| Global|852 65 0199|68|00|890155555|0|-1|-1|0|384|01|12 8|00|55555|??|??|0| 0|1|0|1|0|FF|??|??|0|0|??|0|0|0|0|0|0|00000000000000000000|??|0|0|00|0| 0|00000000000000000000|55555|??|??|0|3|0|25|??

Šiuose įrašuose yra daug perteklinės informacijos, todėl sukurta programa įrašų supaprastinimui (programos išeities tekstas pateiktas priede 23). Programa iš įrašų išskiria skambinančiojo ir paskirties abonentų numerius, tad iš aukščiau pateikto įrašo suformuojamas naujas įrašas:
852650199,890155555
Tokie atskirų abonentų įrašai panaudojami trijų tipų duomenų aibių sukūrimui:
1.      Skambučių rajonų kodų duomenys, nusakantys skambučių trauką tarp skirtingų rajonų. Programos, atliekančios šį pertvarkymą išeities tekstas pateiktas priede 24.
2.      Skambučių kilmės kodų į vieną fizinį numerį sąrašas, nusakantis rajonų kodus, skambinusius į tam tikrą numerį. Programos, atliekančios šį pertvarkymą išeities tekstas pateiktas priede 25.
3.      Skambučių paskirties kodų iš vieno fizinio numerio sąrašas, nusakantis rajonų kodus, į kuriuos buvo skambinto iš vieno tam tikro numerio. Programos, atliekančios šį pertvarkymą išeities tekstas pateiktas priede 26.
Šių tipų aibės buvo naudojamos tiek algoritmų greitaveikos tyrime, tiek ir pačių duomenų analizėje.


3.6    Algoritmų veikimo tyrimas

Tiriant algoritmus buvo panaudotas automatizuotas programų paleidimas ir registruojami paleidimo, bei programos darbo pabaigos laikai. Šiam tikslui sukurtas komandinis failas:
@Echo Off
if %1.==.   Goto Klaida
Echo Paleidimo laikas   :   %Time% > Data_1_Met_%1.Run
"..\Met %1\Met_%1.Exe" Data_1.Dat Data_1.Elm Data_1_Met_%1.Rez 0.3 0.5 Echo Pabaigos laikas   :     %Time% >> Data_1_Met_%1.Run Goto Pabaiga
:Klaida
Echo Klaida   !
Echo Nenurodytas metodas.
:Pabaiga

Tokie komandiniai failai (jie buvo sukurti kiekvienai duomenų aibei atskirai) atlikinėjo nurodytų programų iškvietimą, bei laiko registravimą.
Pilno perrinkimo algoritmas buvo naudojamas tik su pirmomis trejomis duomenų aibėmis, nes didėjant elementų kiekiui, eksponentiškai didėjo šio algoritmo pareikalaujamas operatyviosios atminties kiekis. Testuojant su trečiąja duomenų aibe, turinčia 21 elementą, programa pareikalavo ~900 Mb darbinės atminties.



3.6.1  Teisingumas

Visi algoritmai gavo teisingus rezultatus, t.y. visi algoritmai rado visas dideles elementų aibes. Gautieji algoritmų rezultatai yra identiški visose devyniose duomenų aibėse. Algoritmų sugeneruotos didelės elementų aibės su palaikymais, bei rastos asociatyvinės taisyklės su jų stiprumo įverčiais pateiktos prieduose:





Duomenų aibė
Pareikalautieji parametrai
Priedo numeris
Palaikymas
Stiprumas
1
30%
50%
14
2
10%
50%
15
3
15 %
50%
16
Duomenų aibė
Pareikalautieji parametrai
Priedo numeris

Palaikymas
Stiprumas

4
0,5 %
20%
17

5
0,5 %
5 %
18

6
0,5 %
5 %
19

7
0,5 %
20%
20

8
0,5 %
5 %
21

9
0,5 %
5 %
22











3.6.2 Greitaveika

Užregistruotieji algoritmų veikimo laiko įrašai yra pateikti priede 27. Apibendrinta panaudoto mašininio laiko lentelė atrodo taip:


Duomenys
Algoritmas
1
Pilno perrinkimo
2
Apriorinis
3
Mėginio
4
Padalinimo
1
00:00:00
00:00:00
00:00:00
00:00:00
2
00:00:00
00:00:00
00:00:00
00:00:00
3
00:00:09
00:00:00
00:00:00
00:00:00
4

00:00:05
00:00:15
00:00:06
5

00:00:01
00:00:02
00:00:01
6

00:00:03
00:00:06
00:00:03
7

00:54:58
01:35:17
00:53:56
8

00:05:22
00:10:24
00:06:23
9

00:29:24
00:52:31
00:28:47

Kaip matoma, pilno perrinkimo algoritmas, net su sąlyginai maža duomenų aibe 3, veikė 9 sek. Taip įvyko dėl operatyviosios atminties trūkumo ir intensyvaus diskinio „swap" naudojimo. Tačiau reikia neužmiršti, kad pilno perrinkimo algoritmas visada atlieka tik vieną pilną transakcijų duomenų bazės nuskaitymą, tad jis būtų naudotinas tais atvejais, kai turimas didelis įrašų skaičius, tačiau šiuos įrašus sudarančių elementų kiekis yra nedidelis.
Panagrinėkime detaliau algoritmų laikus su 7, 8 ir 9 duomenų aibėmis:

Algoritmų greitaveika




Laikas

01:40:48 01:26:24 01:12:00 00:57:36 00:43:12 00:28:48 00:14:24

00:00:00


□ 2
□ 3
□ 4


7                                             8                                             9
Duomenų aibė

Šioje histogramoje skaitmenimis 2, 3 ir 4 atitinkamai pažymėti Apriorinis, Mėginio ir Padalinimo algoritmai. Matome, kad Mėginio algoritmas visais atvejais buvo prasčiausias. Tai įvyko todėl, kad atliekant mėginio analizę yra naudojamas mažesnis palaikymo lygis ir yra sugeneruojamas didelis kandidatų kiekis pilnam transakcijų duomenų bazės skanavimui.
Padalinimo algoritmas buvo pranašesnis už Apriorinį, su 7 ir 9 duomenų aibėmis, tačiau su 8 duomenų aibe atsiliko. Tai įvyko todėl, kad 8 duomenų aibėje nėra antros eilės didelių elementų aibių ir Aprioriniam algoritmui nereikėjo antrojo praėjimo. Šis Padalinimo algoritmo pranašumas, matomas 7 ir 9 variantuose, turėtų dar labiau išryškėti, jei būtų sudarinėjamos aukštesnės eilės kandidatų aibės.


3.7    Realių duomenų analizė

Gautieji rezultatai, panaudojant realias telefoninių skambučių duomenų aibes parodo, kad Asociatyvinių ryšių analizė gali būti praktiškai pritaikoma versle.
7 duomenų aibės analizė atskleidė miestų kodus, tarp kurių abonentų vyksta masiškiausi skambučiai. Tai yra vertinga informacija naujam telekomunikacijų rinkos dalyviui. Jei jis norės plėtoti savo veiklą vietovėje, aptarnaujamoje tarpmiestiniu kodu [Kodas 1], tai jam tikslinga turėti tiesioginį sujungimą su kodą [Kodas 2] aptarnaujančia stotimi, nes 78% skambučių, kuriuose dalyvauja [Kodas 1], vyksta su [Kodas 2]. Operatorius šiuo atveju galės pasiūlyti pigesnius tarifus į minėtąjį kodą, kas turėtų pritraukti tokiomis kryptimis aktyviai skambinančius klientus.
9 duomenų aibės analizė parodė, kad yra asociatyviniai ryšiai tarp kodų, kuriuos renka abonentai. Net 54.4% abonentų, kurie skambina kodais [Kodas 3] ir [Kodas 4], aktyviai skambina ir kodu [Kodas 5]. Tai vėlgi naudinga informacija, kuria galima remtis atliekant telekomunikacijų tinklo dimensijavimą ir optimizavimą.
4   Išvados

Šiame darbe buvo atlikta trijų asociatyvinių algoritmų teorinė analizė, sukurtos keturių algoritmų programinės realizacijos, atlikti jų teisingumo, bei greitaveikos tyrimai. Papildomai patyrinėta asociatyvinių ryšių radimo pritaikomumas realių verslo uždavinių sprendimui.

Algoritmų teisingumo tyrimas parodė, kad:
1.        Visi algoritmai rado visas dideles elementų aibes.
2.        Gautieji algoritmų rezultatai yra identiški visose devyniose duomenų aibėse.

Algoritmų greitaveikos tyrimas nustatė, kad:
1.          Pilno perrinkimo algoritmas yra iš viso nenaudotinas, kai elementų kiekis >20, tačiau jis būtų naudotinas tais atvejais, kai turimas didelis įrašų skaičius, tačiau šiuos įrašus sudarančių elementų kiekis yra nedidelis.
2.          Mėginio algoritmas buvo mažiausiai našus, nes atliekant mėginio analizę yra naudojamas mažesnis palaikymo lygis ir yra sugeneruojamas didelis kandidatų kiekis pilnam transakcijų duomenų bazės skanavimui.
3.          Padalinimo algoritmas yra pranašiausias kai sudarinėjamos aukštesnės eilės kandidatų aibės.

Asociatyvinių ryšių radimas realiuose verslo duomenyse parodė, kad:
1.        Asociatyvinių ryšių analizė gali būti praktiškai pritaikoma versle.
2.        Remiantis šios analizės rezultatais galima suformuoti tikslinės klientų grupės pritraukimo kampaniją.
5   Literatūros sąrašas
1.       David Hand, Heikki Mannila, Padhraic Smyth. Principles of Data Mining. -Massachusetts: Massachusetts Institute of Technology, 2001.
2.       Jiawei Han, Micheline Kamber. Data Mining: Concepts and Techniques. - Morgan Kaufmann Publishers, 2000.
3.       Kurt  Thearling.   An  Introduction  to  Data  Mining.   -  www.thearling.com, dmintro.pdf, 2004.
4.       Margaret H. Dunham. Data Mining Introductory and Advanced Topics. - New Jersey: Pearson Education, Inc., 2003.
5.       Mehmed Kantardzic. Data Mining: Concepts, Models, Methods and Algorithms. -John Wiley & Sons, 2003.
6.       Mohammed J. Zaki, Ching-Tien Ho. Large-Scale Parallel Data Mining. - Berlin:
Springer, 2000.
7.       Paul J. Lucas. The C++ Programmer's Handbook. - New Jersey: AT&T Bell Laboratories, 1992.
8.       R. Tidikis, J. S. Pečkaitis, S. Šedbaras. Magistrų baigiamųjų darbų rengimas ir gynimas. - Vilnius: Lietuvos teisės universitetas, 2003.
6   Santrauka

Šio darbo tikslas yra palyginti asociacinių taisyklių sudarymo algoritmus ir išanalizuoti jų tinkamumą praktinių uždavinių sprendimui. Šio tikslo pasiekimui, darbe yra teoriškai išnagrinėti trys didelių elementų aibių radimo algoritmai:
1.      Apriorinis algoritmas, kuris remiasi taisykle, kad bet kuris didelės elementų aibės poaibis turi būti didelis. Šis algoritmas intensyviai naudojasi transakcijų duomenų baze - maksimalus duomenų bazės peržiūrėjimų skaičius yra vienu didesnis nei didžiausios rastos didelės elementų aibės eilė.
2.      Mėginio algoritmas, paimantis duomenų bazės dalį (mėginį) potencialių didelių elementų aibių radimui. Šis algoritmas leidžia sumažinti duomenų bazės praėjimų skaičių iki dviejų arba net vieno, geriausiu atveju, kai visos didelės elementų aibės nustatomos mėginio.
3.      Padalinimo algoritmas, kuris analizuoja duomenų bazę dalimis ir remiasi taisykle, kad bet kuri didelė elementų aibė visoje bazėje turi būti didelė bent vienoje dalių. Padalinimo panaudojimas leidžia sumažinti duomenų bazės praėjimų skaičių iki dviejų.
Darbo praktinėje dalyje atliekamas algoritmų palyginimas. Tam sukurtos keturių algoritmų (trejų išnagrinėtų teorinėje dalyje ir pilno perrinkimo algoritmo) programinės realizacijos C++ kalba. Siekiant užtikrinti asociacinių taisyklių radimo algoritmų greitaveiką, programos yra komandinės eilutės aplikacijos be grafinio vartotojo interfeiso. Algoritmų palyginimas atliktas tiriant algoritmų darbą su devyniomis testinių duomenų aibėmis, kurių apimtis kinta nuo mažiausios duomenų aibės, 5 elementų ir 5 įrašų, iki didžiausios - 503 elementai ir 15205852 įrašai. Algoritmai lyginami dviem aspektais: algoritmų veikimo teisingumas ir algoritmų greitaveika.
Ištyrus algoritmų veikimo teisingumą buvo nustatyta, kad visi algoritmai gavo teisingus rezultatus, t.y. visi algoritmai rado visas dideles elementų aibes.
Algoritmų greitaveikos tyrimas parodė, kad pilno perrinkimo algoritmas yra viso nenaudotinas, kai elementų kiekis >20; mėginio algoritmas buvo mažiausiai našus, nes atliekant mėginio analizę yra naudojamas mažesnis palaikymo lygis ir yra sugeneruojamas didelis kandidatų kiekis; padalinimo algoritmas yra pranašiausias kai sudarinėjamos aukštesnės eilės kandidatų aibės.
Algoritmų tyrimas su realiais duomenimis parodė, kad asociatyvinių ryšių analizė gali būti praktiškai pritaikoma versle ir gali padėti suformuoti tikslines klientų grupes.

Komentarų nėra:

Rašyti komentarą