VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY DOLOVÁNÍ ASOCIAČNÍCH PRAVIDEL ASSOCIATION RULES MINING
|
|
- Radka Němečková
- před 8 lety
- Počet zobrazení:
Transkript
1 VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY FAKULTA INFORMAČNÍCH TECHNOLOGIÍ ÚSTAV INFORMAČNÍCH SYSTÉMŮ FACULTY OF INFORMATION TECHNOLOGY DEPARTMENT OF INFORMATION SYSTEMS DOLOVÁNÍ ASOCIAČNÍCH PRAVIDEL ASSOCIATION RULES MINING BAKALÁŘSKÁ PRÁCE BACHELOR S THESIS AUTOR PRÁCE AUTHOR VEDOUCÍ PRÁCE SUPERVISOR MICHAL DVOŘÁK ING. LUKÁŠ STRYKA BRNO 2009
2 Abstrakt Cílem této bakalářské práce je návrh a implementace aplikace umožňující porovnávat výkonnost a časovou náročnost zvolených algoritmů pro dolování frekventovaných množin a asociačních pravidel. Pro demonstraci byly vybrány dolovací algoritmy Apriori, AprioriTIDList, AprioriItemSet a metoda s využitím FP-stromu. Testování probíhalo nad různými objemy dat a s různými hodnotami minimální podpory a spolehlivosti. Aplikace je implementována v objektově orientovaném jazyce C# a jako zdroj dat slouží relační databáze na MS SQL Server Klíčová slova Získávání znalostí z databází, frekventované množiny, asociační pravidla, Apriori, T-SQL, AprioriTIDList, AprioriItemSet, FP-strom, FP-growth, podpora, spolehlivost. Abstract The main goal of this bachelor's thesis is design and implementation of the application that provides a comparison of the performance and time consumption of given algorithms for mining of the frequent itemsets and the association rules. For demonstration, the mining algorithms Apriori, AprioriTIDList, AprioriItemSet and the method using FP-tree were chosen. The tests were executed over various amounts of data and with different minimum support and confidence values as well. The application was implemented in the object oriented language C# and the relational database provided by MS SQL Server 2008 is used as the data source. Keywords Knowledge discovery from databases, frequent patterns, associations rules, Apriori, T-SQL, AprioriTIDList, AprioriItemSet, FP-tree, FP-growth, support, confidence. Citace Dvořák Michal: Dolování asociačních pravidel. Brno, 2009, bakalářská práce, FIT VUT v Brně.
3 Dolování asociačních pravidel Prohlášení Prohlašuji, že jsem tuto bakalářskou práci vypracoval samostatně pod vedením pana Ing. Lukáše Stryky. Další informace mi poskytl pan Bartík Vladimír, Ing., Ph.D. Uvedl jsem všechny literární prameny a publikace, ze kterých jsem čerpal. Michal Dvořák Poděkování Chtěl bych poděkovat všem lidem, kteří mě podporovali při tvorbě této práce, zvláště pak vedoucímu práce Ing. Lukáši Strykovi za poskytnutí kvalitních studijních materiálů a konzultací. Michal Dvořák, Tato práce vznikla jako školní dílo na Vysokém učení technickém v Brně, Fakultě informačních technologií. Práce je chráněna autorským zákonem a její užití bez udělení oprávnění autorem je nezákonné s výjimkou zákonem definovaných případů.
4 Obsah Obsah... 1 Úvod Získávání znalostí z databází Motivace k získávání znalostí z databází Proces získávání znalostí Typy dolovacích úloh Asociační pravidla Definice asociačního pravidla Podpora a spolehlivost Proces dolování asociačních pravidel Získávání frekventovaných množin - Apriori Získávání frekventovaných množin - AprioriItemset a AprioriTIDList Získávání frekventovaných množin bez generování kandidátů Příklad výstavby FP-stromu a jeho dolování Návrh konceptu aplikace Implementace Dolování frekventovaných množin Apriori v C# Apriori v T-SQL Apriori Itemset Apriori TID list Konstrukce a dolování FP-stromu Omezení délky frekventovaných množin Dolování asociačních pravidel Práce s vlákny Grafy Spuštění na reálných datech a zhodnocení výsledků Testovací data Metodika měření Měření Měření 1 Dolování asociačních pravidel Měření 2 Dolování asociačních pravidel Měření 3 Dolování frekventovaných množin Měření 4 Dolování frekventovaných množin
5 5.3.5 Měření 5 Dolování frekventovaných množin Měření 6 Dolování frekventovaných množin Závěr Literatura Seznam obrázků, vzorců a tabulek Seznam příloh
6 Úvod V dnešní době jsou data kumulována v databázích neuvěřitelnou rychlostí. Jelikož se z dat stávají informace až po přidání sémantiky člověkem, je nezbytné poskytnout uživatelům alespoň částečně automatizované prostředky k vytřízení dat potencionálně zajímavých. To vedlo ke vzniku nové vědní disciplíny Získávání znalostí z dat, která zahrnuje získávání různých typů znalostí z rozmanitých zdrojů dat. Lepší představu může nastínit příklad ze života. V supermarketu byla sbírána data o nákupech zákazníků. Po čase se provedla analýza sesbíraných dat a zjistilo se, že v nákupním vozíku se objevují zároveň dětské pleny a přepravka piva. Tato část analýzy je prováděna pomocí zvoleného algoritmu. Nyní ale nastoupí manažer a přemýšlí, proč to tak je a jak z této informace profitovat. Každý si může tuto asociaci vyložit jinak. Důvodem může být například fakt, že dětské pleny jsou objemné zboží a přepravka piv těžká. Tudíž ani jednu věc nebude člověk nosit v ruce a koupí je spíše v případě, když se vydá na nákup autem. Manažer se díky této nové znalosti může rozhodnout, jestli umístí tyto druhy zboží vedle sebe nebo naopak co nejdále od sebe, aby musel zákazník projít velkou část obchodu a zvýšila se tak pravděpodobnost koupě dalšího zboží po cestě. Dolováním asociací mezi položkami nákupního košíku se věnuje i tato práce. V první kapitole je popsán proces získávání znalostí z databází spolu s představením různých typů dolovacích úloh a motivačními problémy, které jsou řešeny. Druhá kapitola se věnuje problematice asociačních pravidel spolu s popisem jejich získávání z frekventovaných množin. Jsou zde definovány základní termíny (podpora a spolehlivost) a představeny algoritmy pro dolování frekventovaných množin. Jedná se zejména o algoritmus Apriori a jeho vylepšené modifikace Apriori ItemSet a Apriori TID list. Poslední část tvoří dolování bez generování kandidátů metoda s FP-stromem. Třetí kapitola popisuje návrh konceptu aplikace pro dolování asociačních pravidel různými algoritmy. Čtvrtá kapitola se věnuje implementaci jednotlivých algoritmů pro dolování frekventovaných množin a asociačních pravidel. V páté kapitole je popsáno testování na reálných datech, vynesení výsledků do grafu a komentář k získaným výsledkům. Poslední kapitolou je závěr, ve kterém jsou shrnuty výsledky práce. 3
7 1 Získávání znalostí z databází Tato kapitola se zabývá problematikou získávání znalostí z databází. 1.1 Motivace k získávání znalostí z databází S rozvojem informačních technologií docházelo ke shromažďování velkého množství dat, která neměla mnohdy valnou hodnotu, a tak docházelo po určité době k jejich mazání. Tato data avšak mohou ukrývat nějaké skryté, dříve neznámé a i potencionálně užitečné znalosti. A tak vznikla nová disciplína: Získávání znalostí z databází. V podstatě jde o získání zajímavých informací, které jsou: Netriviální nelze je získat pouhým SQL dotazem. Skryté různé modely a vzory, které nejsou na první pohled zřejmé. Dříve neznámé objevení známé pravdy nepřináší nic zajímavého. Potenciálně užitečné mají např. význam pro další rozhodování. Dle této definice [1] tedy do získávání znalostí nepatří informace o počtu prodaných ovocných nanuků v jednotlivých prodejnách, ani že nářadí si kupují spíše muži než ženy. 1.2 Proces získávání znalostí V této kapitole bude představen proces získávání znalostí, který lze dle [1] rozdělit na 4 hlavní části: Pochopení aplikační domény nejprve je nutné vědět, co data znamenají a co reprezentují v reálném světě. Předzpracování dat nejdůležitější fáze, která má velký vliv na výsledky analýzy. o Čištění dat (Cleaning) V této fázi je nutné se vypořádat s chybějícími nebo odlehlými hodnotami, které by mohly ovlivnit výsledky. Příkladem uvedu záznamy tělesné teploty pacientů, které se zadávají s přesností desetiny stupně. Sestra se při zadávání splete a místo 36,5 C zadá 365. o Integrace dat (Integration) Ne vždy jsou informace v jediné databázi, proto je nutná jejich integrace do jediného zdroje, ze kterého se bude dolovat. V této fázi se také sjednocují názvy shodných sloupců tabulek. 4
8 Můžu mít například zákazníka se zákaznickou kartou, který platí občas platební kartou. A jednou si zapomene kartu zákaznickou, jindy platí hotově a někdy použije obojí. Spojením těchto informací můžu zákazníka jednoznačně identifikovat. o Výběr dat (Selection) Jde o výběr jen těch sloupců, které jsou relevantní v právě řešené analýze. Například u zákazníka kupujícího potraviny mě nebude zajímat konfekční velikost, ale spíš kolik členů má jeho rodina a jestli bere své děti na nákup. o Transformace dat (Transformation) Vybraná data se v této fázi zpracovávají do podoby vhodné pro danou dolovací úlohu. Dolování z dat (Data Mining) jádro celého procesu získávání znalostí z databází. Hodnocení modelů (Evaluation) a prezentace znalostí (Presentation) identifikují se zajímavé vzory a prezentují se výsledky analýzy. Obrázek 1.1 Proces získávání znalostí (kniha [1], str. 6, fig. 1.4) 5
9 1.3 Typy dolovacích úloh Typy dolovacích úloh se liší dle toho, jaký druh modelu dat se snažím z dat získat. Jde o úlohu řešenou v kroku dolování z dat. Dolovací úlohy je možné rozdělit do dvou základních skupin [1]: Deskriptivní charakterizují obecné vlastnosti analyzovaných dat. Jako příklad je možné uvést časté nákupy. Prediktivní na základě analýzy současných dat se provádí dedukce pro předpověď budoucího chování nebo k rozhodování. Typy dolovacích úloh se však dají také dělit podle funkcionality [1]: Popis konceptu/třídy o Charakterizace dat o Diskriminace dat Úlohy zaměřené na odhalování vztahů mezi atributy Klasifikace a predikce Shluková analýza Analýza odlehlých hodnot Analýza evoluce A další. Tématem této práce je odhalování vztahů mezi atributy, což bude podrobně rozebráno v následujících kapitolách. 6
10 2 Asociační pravidla Tato kapitola, stejně jako celá tato práce, se zabývá jednou z oblastí získávání znalostí, a to dolováním asociačních pravidel [1], [2] nad rozsáhlými množinami datových položek. Získaná asociační pravidla reprezentují zajímavé vztahy mezi zkoumanými položkami. Typické využití těchto znalostí je při analýze nákupního košíku, kdy je zkoumáno nákupní chování zákazníků jsou hledány souvislosti mezi nakupovanými položkami, viz [1], [3], [4], [5]. 2.1 Definice asociačního pravidla Pravidlem se dle Agrawala (1993) rozumí implikace A B, kde A znamená předpoklad a B závěr. Nejedná se ale přímo o implikaci, jelikož jev nenastává vždy s pravděpodobností rovnou jedné. Formálně lze tato pravidla zapsat následovně: Nechť T = I 1, I 2,, I m je množina položek. Nechť D je množina transakcí, kde každá transakce T je množina položek taková, že T T. Každá transakce je asociována s unikátním identifikátorem zvaným TID. Nechť A je množina položek. Říkáme, že transakce T obsahuje A tehdy a jen tehdy, když A T. Asociační pravidlo je implikace tvaru A B, kde A T, B T a A B = φ [1]. Tato definice generuje úplně všechna možná asociační pravidla. Bude jich tedy vygenerováno velké množství a navíc spousta z nich nebude zajímavá. Objektivní zajímavosti se dá ale dosáhnout omezením pomocí minimální podpory a spolehlivosti, viz následující podkapitola. 2.2 Podpora a spolehlivost Základními objektivními charakteristikami pravidel jsou podpora (z anglického support) a spolehlivost (z anglického confidence). Podpora udává četnost výskytu daného pravidla v databázi transakcí. Uvádí se buď jako absolutní (počet transakcí) nebo jako relativní (v % počtu všech transakcí). Vyjadřuje pravděpodobnost P(A B), kde A B označuje, že transakce obsahuje jak A, tak i B, viz [1], [2]. Výpočet hodnoty podpory se provádí pomocí následující formule: podpora A B = P A B. (Vzorec 2.1 [1]) Jelikož podpora neříká nic o tom, kdy se vyskytne předpoklad, ale závěr již ne, vznikla druhá objektivní charakteristika, a sice spolehlivost, která udává zajímavost asociačního pravidla. 7
11 Je definována jako podmíněná pravděpodobnost P B A), tzn. pravděpodobnost B za předpokladu, že platí A, viz [1], [2]. Hodnota spolehlivosti je odvozena z hodnot podpory množiny položek A a podpory množiny A B dle vztahu: spolehlivost A B = P B A = podpora A B podpora A Vzorec 2.2 [1] Pro ucelení tématu uvádím rovnici a nerovnici, které demonstrují rozdíl mezi podporou a spolehlivostí asociačních pravidel. Pro množiny položek A, B, kde A T, B T a A B = φ platí: podpora A B = podpora B A, (Vzorec 2.3 [1]) což není nic překvapivého. Podpora závisí jen na tom, jestli se v transakci objevují obě množiny položek současně. Na druhou stranu u spolehlivosti již rovnost obecně neplatí: spolehlivost A B spolehlivost B A. (Vzorec 2.4 [1]) 2.3 Proces dolování asociačních pravidel Získávání asociačních pravidel probíhá ve třech krocích [1]: 1. Nalezení frekventovaných množin ty splňují podmínku minimální podpory dle vzorce Pro každou frekventovanou množinu l se vygenerují všechny její neprázdné podmnožiny. 3. Pro každou podmnožinu s se vygeneruje pravidlo s l s a dle vzorce 2.2 se vypočítá jeho spolehlivost. Pokud je spolehlivost pravidla větší než minimální, je pravidlo silné. Minimální podpora je již zajištěna tím, že se pravidla generují z frekventovaných množin. 2.4 Získávání frekventovaných množin - Apriori Algoritmus Apriori [1] byl vyvinut pány Agrawalem a Srikantem v roce 1994 na dolování frekventovaných množin 1. Jméno algoritmu je založeno na faktu, že algoritmus využívá předchozí 1 Frekventovaná množina je taková množina položek, kde každá podmnožin položek má podporu vyšší než minimální. 8
12 znalosti (z anglického prior knowledge) o dříve získaných frekventovaných množinách, to znamená, že k-množiny 2 se používají pro generování (k+1)-množin. Pro vyšší efektivitu se využívá Apriori vlastnosti, která říká, že každá neprázdná podmnožina frekventované množiny je také frekventovaná. Kdyby to tak nebylo, přidání položky k množině by mohlo způsobit zvýšení podpory, což není možné. Algoritmus Apriori se skládá ze dvou částí, a to: Spojovací krok: K nalezení L k je nutné nejprve získat množinu všech kandidátních k-množin C k, kterou lze získat spojením L k 1 s L k 1. Nechť l 1 a l 2 jsou množiny L k 1, které jsou uspořádané podle libovolného, ale vhodného pravidla 3. Notace l i j značí j-tý prvek množiny l i. Spojení L k 1 L k 1 je proveditelné tehdy, pokud je prvních (k-2) prvků stejných, tedy pokud platí: l 1 1 = l 2 1 l 1 2 = l 2 2 l 1 k 2 = l 2 k 2 l 1 k 1 < l 2 k 1. Podmínka l 1 k 1 < l 2 k 1 jen zajistí nevytváření duplicit. Výsledná množina, která vznikla z l 1 a l 2, je: l 1 1, l 1 2,, l 1 k 2, l 1 k 1, l 2 k 1. Vylučovací krok: C k je nadmnožinou L k, to tedy znamená, že prvky C k mohou, ale nemusí být frekventované. Zároveň všechny frekventované k-množiny do C k náleží. Zjišťování podpory každé kandidátní množiny by bylo velice náročné, využívá se tedy Apriori vlastnosti, tedy: Žádná (k-1)-množina, která není frekventovaná, nemůže být součástí frekventované k-množiny. Takové k-množiny můžeme okamžitě odstranit z C k. 2 k-množina je množina, která má k prvků. 3 Uspořádání musí být rostoucí nebo klesající: hodnoty pro uspořádání musí být po dvou různé. 9
13 Algoritmus Apriori napsaný v pseudokódu [1]: Vstup: D databáze transakcí, min sup hodnota minimální podpory. Výstup: L frekventovaná množina z D. Pseudokód: L 1 = najdi_frekventovane_1_mnoziny(d) for (k = 2; L k-1 φ; k++) { C k = apriori_gen(l k-1 ) for each transakci t D { C t = subset(c k, t) for each kandidata c C t c.count++ } L k = {c C k c:count min_sup} } return L = L k k procedure apriori_gen(l k-1 : frekventovane (k-1)-množiny) for each množinu l 1 L k-1 for each množinu l 2 L k-1 if (l 1 [1]=l 2 [1]) (l 1 [2]=l 2 [2]) (l 1 [k-2]=l 2 [k-2]) (l 1 [k-1]<l 2 [k-1]) then { c = l 1 l 2 // spojovaci krok - generovani kandidatu if ma_nefrekventovanou_podmnozinu(c, L k-1 ) then odstran c // vylucovaci krok else pridej c do C k } return C k ; procedure ma_nefrekventovanou_podmnozinu (c: kandidat k-mnoziny, L k-1 : frekventovana (k-1)-mnozina) // vyuziva Apriori vlastnosti for each (k-1)-mnozinu s z c if s L k-1 then return TRUE return FALSE 10
14 2.5 Získávání frekventovaných množin - AprioriItemset a AprioriTIDList Jakmile se objeví nová věc, objeví se také její vylepšení. A jinak tomu nebylo ani u algoritmu Apriori. Ke zvýšení efektivity algoritmu byly vymyšleny různé techniky, které řeší množství čtení z transakční databáze, množství kandidátů na frekventované množiny a v neposlední řadě zátěž při počítání podpory kandidátů. Vznikly tak metody jako Partition, DHP, DIC, MaxMiner, Closet a další. V této práci budou rozebrány dvě takové modifikace algoritmu Apriori, jejichž vylepšení je založeno na nalezení vhodnějších datových struktur pro frekventované množiny a informací o tom, které transakce je obsahují. Místo standardního horizontálního formátu dat se zavedl formát vertikální, kde ke každé položce z databáze je uvedeno, ve kterých transakcích se nalézá. Jedná se o metody AprioriItemset a AprioriTIDList [1]. Metoda AprioriItemset ukládá ke každé frekventované množině bitový vektor, kde jednotlivé bity udávají, jestli se tato frekventovaná množina v transakci nachází nebo ne 4. Z toho plyne, že délka bitového vektoru je rovna počtu transakcí. C 2 Bitový vektor A, B 1011 A, C 1000 B, D 0110 B, C 0110 Tabulka 2.1 Množina a její bitový vektor u Apriori Itemset Pro zjištění, ve kterých transakcích se nachází množina A, B, C, stačí provést logický součin nad množinami A, B a A, C : 1011 AND 1000 = Hledaná 3-množina je v první transakci. Pro spočítání podpory takto nalezené množiny stačí zjistit počet log. 1 ve vektoru. Přestože logické operace nad bitovými vektory jsou velice rychlé, jejich uložení je při velkém počtu transakcí náročné na paměť. Tento nedostatek se snaží odstranit druhá metoda a to AprioriTIDList. Ta ke každé frekventované množině ukládá seznam transakcí, v nichž se nachází. 4 Log. 1 znamená ANO, log. 0 NE. 11
15 C 2 RV A, B 1, 3, 4 A, C 1 A, D 2, 3 B, C 2, 3 Tabulka 2.2 Množina a její bitový vektor u Apriori Itemset Přítomnost kandidátů v transakcích se zjišťuje průnikem množin RV u kandidátů podmnožin daného kandidáta. Podpora je rovna počtu prvků v množině RV. 2.6 Získávání frekventovaných množin bez generování kandidátů Algoritmus Apriori má dva nedostatky, kvůli nimž je takřka nereálné jeho nasazení nad velkými databázemi: Generuje obrovské množství kandidátních množin. Je-li na počátku např množin, vygeneruje algoritmus Apriori více než množin. Je potřeba opakovaně procházet databázi. Snahou o vyřešení těchto problémů je metoda vzrůstu frekventovaných množin (z angl. FP-growth, tedy frequent-pattern growth). Metoda FP-growth [1], [6], [7], [8] transformuje problém hledání dlouhých frekvenčních vzorů na rekurzivní hledání vzorů kratších a připojování sufixu. Jako sufixy používá nejméně frekventované položky. Tato metoda značně snižuje časovou náročnost procesu dolování frekventovaných množin. Základem dolování je transformace databáze do struktury zvané FP-strom. FP-strom má několik vlastností, které nelze opomenout uvést: Nikdy neporuší dlouhou množinu z jakékoliv transakce. Udržuje kompletní informaci pro potřeby získávání frekventovaných množin - není tedy nutné opakované čtení databáze např. pro získání podpory dané množiny. Redukuje nerelevantní informace nefrekventované položky jsou vymazány. Je seřazen podle frekvence výskytu vychází z myšlenky, že více frekventované položky budou spíše sdíleny. Nikdy nebude větší než původní databáze dochází v ní ke kompresi informace. 12
16 Algoritmus na výstavbu FP-stromu a jeho následné dolování napsaný v pseudokódu [1]: Vstup: D databáze transakcí, min sup hodnota minimální podpory. Výstup: Kompletní množina frekventovaných vzorů. Pseudokód: FP-strom je konstruován následovně: a) Projdi jednou transakční databázi. Vytvoř množinu frekventovaných položek F a spočítej podporu těchto položek. Setřiď F sestupně podle podpory a vyber jen ty položky, které vyhovují minimální podpoře. Tento seznam pojmenuj L. b) Vytvoř kořen FP-stromu a označ jej NULL. S každou transakcí Trans z D udělej následující: 1. Vyber a setřiď frekventované položky v Trans dle L. Nechť seznam seřazených frekventovaných položek v Trans je [p P], kde p je první element a P je množina zbylých elementů. 2. Zavolej insert_tree([p P], T), která dělá následující: Pokud T má potomka N takového, že N.item-name = p.itemname, pak inkrementuj počítadlo prvku N o jedničku. Jinak vytvoř nový uzel N, nastav jeho počítadlo na 1, jeho rodičovský uzel nasměruj na T a jeho node-link nasměruj do dalších uzlů se stejným item-name. Pokud není P prázdné, volej insert_tree(p, N) rekurzivně. FP-strom je dolován voláním FP_growth(FP-tree, null), který je implementován následovně: Procedure FP_growth(Tree, α) Pokud Tree obsahuje pouze jednoduchou cestu P potom Pro každou kombinaci β uzlů v cestě P Generuj vzory β α s podporou = minimální podpora uzlů v β. Jinak Pro každé a i v tabulce odkazů stromu Tree Generuj vzor β = a i α s podporou = a i.podpora Zkonstruuj podmíněný základ a podmíněný FP-strom Tree β Pokud Tree β φ pak Zavolej FP_growth(Tree β, β) 13
17 2.6.1 Příklad výstavby FP-stromu a jeho dolování Výstavbu a dolování FP-stromu budu demonstrovat na příkladu inspirovaném knihou [1]. TID T100 T200 T300 T400 T500 T600 T700 T800 T900 Seznam identifikátorů položek I1, I2, I5 I2, I4 I2, I3 I1, I2, I4 I1, I3 I2, I3 I1, I3 I1, I2, I3, I5 I1, I2, I3 Tabulka 2.3 Transakce a její položky: data pro výstavbu FP-stromu (kniha [1], str. 236, tab. 5.1) První krok je stejný jako u algoritmu Apriori získání frekventovaných 1-množin a podpory pro každou takto získanou 1-množinu. Nechť je minimální podpora rovna 2 a množina frekventovaných položek je seřazena sestupně podle podpory. Takto vzniklá množina či seznam je nazvána L, kde: L = I2: 7, I1: 6, I3: 6, I4: 2, I5: 2. FP-strom je konstruován následovně. Nejprve je vytvořen kořen stromu označený jako null. Projde se databáze podruhé. Položky v každé transakci jsou zpracovávány v pořadí dle seznamu L (počtu výskytů) a pro každou transakci je vložena větev, kde uzly jsou položky transakce. Například zpracování první transakce T100: I1, I2, I5 vede ke konstrukci první větve stromu <I2:1>, <I1:1> a <I5:1>, kde I2 je potomek kořene, I1 potomek I2 atd. Druhá transakce T200: I2, I4 by měla vytvořit další větev z kořene stromu obsahující I2 a I4. Tato větev ale sdílí s předchozí větví prefix I2, a proto bude pouze inkrementován počet výskytů u položky I2 a z této položky vyroste nová větev s prvkem I4:1 mateřským uzlem nyní bude I2:2. U slučování větví tedy platí, že počet výskytů je inkrementován u všech položek, které tvoří společnou cestu grafem. Pro efektivnější průchod stromem je vytvořena tabulka odkazů na uzly a každý takový uzel obsahuje ukazatel na další uzel shodného jména, tzv. chain of node-links. Tím je problém dolování frekventovaných vzorů v databázích transformován na dolování FP-stromu. 14
18 Obrázek 2.4 Schéma FP-stromu a tabulky odkazů na uzly (kniha [1], str. 244, fig. 5.7) FP-strom je dolován následovně. Dolování je započato pro každý frekventovaný vzor délky 1 (iniciační sufix vzoru z tabulky odkazů na uzly) zkonstruováním jeho podmíněného základu a následně podmíněného FP-stromu. Dolování je následně rekurzivně opakováno, dokud podmíněný strom neobsahuje pouze jednoduchou cestu. Růst vzoru je dosažen konkatenací sufixu vzoru s frekventovanými vzory generovanými z podmíněného FP-stromu. Položka Podmíněný základ Podmíněný FP-strom Frekventované množiny I5 {{I2, I1:1}, {I2, I1, I3:1}} <I2:2, I1:2> {I2, I5:2}, {I1, I5:2}, {I2, I1, I5:2} I4 {{I2, I1:1}, {I2:1}} <I2:2> {I2, I4:2} I3 {{I2, I1:2}, {I2:2}, {I1:2}} <I2:4, I1:2>, <I1:2> {I2, I3:4}, {I1, I3:4}, {I2, I1, I3:2} I1 {{I2:4}} <I2:4> {I2, I1:4} Tabulka 2.5 První dolování FP-stromu (kniha [1], str. 244, tab. 5.2) Dolování započnu s položkou I5 poslední ze seznamu L. I5 se nalézá ve dvou větvích FP-stromu: <I2, I1, I5:1> a <I2, I1, I3, I5:1>. Jelikož I5 je sufix, existují dvě prefixové cesty: <I2, I1:1> a <I2, I1, I3:1>, které tvoří podmíněný základ. Podmíněný FP-strom obsahuje ale již jen jednu cestu: <I2:2, I1:1>. I3 tam není obsaženo, protože jeho podpora je rovna 1 a to je méně než podpora minimální. Frekventované množiny získám připojením sufixu I5 ke všem neprázdným podmnožinám, které lze vygenerovat z podmíněného FP-stromu, který obsahuje pouze jednoduchou cestu. Pro sufix I5 dostanu následující frekventované množiny: {I2, I5:2}, {I1, I5:2} a {I2, I1, I5:2}. 15
19 I4 má dvě prefixové cesty, které tvoří podmíněný základ I4: {{I2, I1:1}, {I2:1}}. Ten generuje podmíněný FP-strom o jednom uzlu: <I2:2>. Frekventovaná množina je poté pouze jedna: {I2, I4:2}. Obrázek 2.6 Schéma podmíněného FP-stromu a tabulky odkazů na uzly (kniha [1], str. 245, fig. 5.8) Podmíněný základ I3 jsou množiny: {{I2, I1:2}, {I2:2}, {I1:2}}, které vytvoří dvě větve: <I2:4, I1:2>, <I1:2>. To je uvedeno na obrázku 2.6. Vygenerované frekventované množiny jsou poté {I2, I3:4}, {I1, I3:4}, {I2, I1, I3:2}. Pro I1 se bude postupovat stejným způsobem jako u předchozích položek tabulky odkazů. 16
20 3 Návrh konceptu aplikace Program na dolování asociačních pravidel je napsán jako klientská aplikace, která využívá databázový server jako zdroj informací pro dolování. Aplikace je napsána v objektově orientovaném programovacím jazyce C# pomocí třívrstvého modelu [9], [10], [11], [12], [13] : prezentační vrstva, výkonná vrstva a vrstva pro práci s daty. Prezentační vrstva obsahuje grafické uživatelské rozhraní. Stará se o interakci aplikace s uživatelem, přebírá vstup od uživatele a zobrazuje výsledky. Výkonná vrstva se stará o veškeré výpočty. Vytváří dotazy na databázi a zpracovává odpovědi od databázového serveru. Ale pouze skrze vrstvu pro práci s daty. Vrstva pro práci s daty se stará o připojování k databázi, vykonávání dotazů a čtení výsledků. Pracuje také s konfiguračním XML souborem, který ušetří uživatele od opakovaného zadávání hodnot. Toto rozdělení mi dává nejen možnost dalšího vývoje této aplikace nezávisle na dalších vrstvách, ale také například možnost implementace libovolné vrstvy do jiných systémů nebo provázání s jazyky pro popis dolovacích úloh, jako je například jazyk PMML (Predictive Model Markup Language) nebo DMSL (The Data Mining Specification Language). Projekt je ve skutečnosti složen ze 4 částí (ale 3 vrstvy). Tou čtvrtou jsou programové objekty databázového serveru napsané v.net CLR [9], [14], [15] takto napsaná uložená procedura mi dává mnohem širší možnosti než deklarativní jazyk SQL, potažmo T-SQL. Jako databázový server jsem zvolil Microsoft SQL server 2008 v edici Enterprise. Stejně dobře by ale bylo možné použít například Microsoft SQL server 2008 Express, který je volně ke stažení. (Podporu.NET CLR mají všechny edice.) Databázi pro dolování jsem získal z volně dostupné testovací databáze AdventureWorks Data z této databáze budou odpovídat určitě více realitě, než kdybych si taková data pseudonáhodně vygeneroval. 17
21 4 Implementace Tato kapitola popisuje implementaci algoritmů na dolování frekventovaných množin a možnosti jejich zrychlení. Dále pak dolování asociačních pravidel s využitím dřívějších znalostí pro zrychlení běhu. V neposlední řadě také práce s vlákny pro běh na pozadí a práce s grafy. 4.1 Dolování frekventovaných množin Byly implementovány čtyři varianty algoritmu Apriori a dolování FP-stromu pro získávání frekventovaných množin Apriori v C# Jako první jsem implementoval algoritmus Apriori přesně tak, jak byl uveden v teoretické části této práce. Nejprve bylo potřeba vygenerovat frekventované 1-množiny. Jelikož databázový server umí pracovat s tabulkovými daty mnohem rychleji, napsal jsem si SQL dotaz, který mi vrátí frekventované 1-množiny. SELECT FROM GROUP BY HAVING ORDER BY productid ARMTable productid COUNT(productID) productid Z takto vygenerovaných 1-množin jsem začal skládat s pomocí vlastnosti Apriori delší a delší množiny. Apriori vlastnost umožní rychle zjistit, jestli se takto vygenerovaná množina stane kandidátní množinou. Je nutné ale nejprve vygenerovat všechny její podmnožiny o jedna kratší a ty nalézt mezi již dříve získanými frekventovanými množinami, jinak se kandidátní nestane. Generování všech (k-1)-podmnožin dané k-množiny jsem provedl tak, že jsem vygeneroval k množin, kde v každé chybí jeden prvek z k-množiny. Bylo potřeba také opakovaně zjišťovat podporu jednotlivých kandidátů, proto jsem si napsal takzvanou inteligentní property, která zjišťovala minimální podporu kandidáta pomocí na míru vygenerovaného SQL dotazu, pokud tato hodnota nebyla ještě zjištěna. Z popisu implementace je tedy patrné, že klientská aplikace neustále odesílala požadavky na databázový server, aby zjistila podporu daného kandidáta. 18
22 4.1.2 Apriori v T-SQL Napadlo mě, že když jsem si ulehčil práci při generování frekventovaných 1-množin použitím SQL dotazu, proč by nešlo napsat celý algoritmus Apriori pomocí jazyka T-SQL (Transact-SQL). Tím by se výpočet přesunul na server, klient by nebyl vůbec namáhán a ulehčení by nastalo také na síti. Počítal jsem také s tím, že operace JOIN bude rychlejší v SŘBD, než když jeho obdobu píšu pomocí jazyka C#. Jazyk T-SQL ale není tak mocný, aby bylo možné obecně zapsat celý algoritmus. Napsal jsem si tedy generátor T-SQL kódu, který jej vytvoří dle zadaných parametrů. Pak jej stačí pouze odeslat na SŘBD a ten mi vrátí frekventované množiny. Nastává však jeden problém. Po celou dobu výpočtu musí být klient připojen k databázovému serveru. Pokud se spustí výpočet a trvá dlouho, spojení se přeruší a nedozvím se odpověď. Řešením by bylo skriptem vytvořit uloženou proceduru, tu spustit a nechat ji běžet. Výsledek by uložená procedura uložila do tabulky a odtud bych si jej poté mohl převzít. Zvolil jsem ale jinou cestu: zvětšil jsem timeout spojení. Není to ideální řešení, protože se tím na druhou stranu oddaluje zjištění nefunkčního spojení. A v případě, že spojení spadne po delší době, ztratím tím pouze čas a výsledky se nedostaví. Zjišťování frekventovaných 1-množin a 2-množin pomocí T-SQL: -- frekventovane 1-mnoziny SELECT productid AS AproductID INTO #frekventovane_1_mnoziny FROM ARMTable GROUP BY productid HAVING COUNT(productID) ORDER BY AproductID -- frekventovane 2-mnoziny SELECT A.AproductID AS AproductID, B.AproductID AS BproductID FROM #frekventovane_1_mnoziny A INNER JOIN #frekventovane_1_mnoziny B ON A.AproductID < B.AproductID < ( SELECT COUNT(*) FROM ARMTable TA LEFT JOIN ARMTable TB ON TA.shoppingCart = TB.shoppingCart WHERE TA.productID = A.AproductID AND TB.productID = B.AproductID ) ORDER BY 1, 2 19
23 Při testování této metody mě napadl ještě jeden způsob, jak by se dala metoda zrychlit. Po každém vygenerování frekventované k-množiny odstraním z databáze všechny záznamy, které nepatří do žádné z frekventovaných množin. Při spojování tabulek pomocí JOIN tím ušetřím velké množství operací. Nejedná se ale o známou techniku mazání takových transakcí, které neobsahují žádné frekventované k-množiny, ale o mazání řádků tabulky takových, které se nevyskytují v žádné frekventované množině. Tento způsob jsem také naimplementoval, ale do finální verze jsem jej nezakomponoval. Zrychlení nebylo patrné, pravděpodobně kvůli režii s mazáním. Při testování jsem zjistil, že výsledky nejsou nikterak dobré. Nevyužíval jsem vůbec Apriori vlastnosti, která by mi vyřadila spoustu vygenerovaných kandidátních množin, ale počítal jsem pro každého kandidáta jeho podporu a tu porovnával s minimální. Proto jsem se rozhodl tento složitý JOIN (viz úryvek kódu výše) nahradit uloženou procedurou v.net CLR, která by již respektovala Apriori vlastnost. Zrychlení se dostavilo Apriori Itemset AprioriItemset je vylepšením standardního algoritmu Apriori, kde se k růstu množin používá bitové pole, které má každá položka. Toto bitové pole má právě tolik prvků, kolik obsahuje tabulka databáze transakcí. Aby tato metoda fungovala, je potřeba mít data přichystána transformací tak, aby čísla transakcí vytvářela posloupnost od 0 s krokem 1. (Transformaci jsem si provedl pro zkušební databázi. Jelikož v procesu získávání znalostí se počítá s čištěním, integrací, výběrem a také transformací dat před samotným dolováním z dat, nezabýval jsem se dále převodem.) Jinak by nebylo možné jednoduše indexovat bitové pole pomocí čísla transakce. V kapitole jsem provedl měření, které ukazuje důležitost takové transformace Apriori TID list Metoda Apriori TID list již tímto problémem netrpí; místo bitového pole používá seznam transakcí, ve kterých se jednotlivé položky nalézají. Při rozmýšlení, proč by tato metoda měla být rychlejší než Apriori Itemset, jsem dospěl k závěru, že by se dal rozdíl přirovnat k souboru (Itemset) a řídkému souboru (TID list). Na tuto myšlenku mě přivedla technologie Database Snapshot v MS SQL serveru proč dělat Full backup databáze (jako bitové pole u Itemset), když můžu ukládat pouze rozdíly ve stránkách. Implementačně se tato metoda liší velice málo od Apriori nebo Aprioti Itemset. Rozdíl je akorát v ukládání kandidátních a frekventovaných množin a v počítání podpory. 20
24 4.1.5 Konstrukce a dolování FP-stromu Tato metoda je založena na rekurzivním dolování FP-stromu, který je ale potřeba nejprve vytvořit. Základem tedy bylo získat z databáze tabulku, která obsahuje čísla nákupního košíku, čísla položek a podporu každé položky. To jsem provedl následující funkcí (pro lepší čitelnost jsem použil Common Table Expressions): CREATE FUNCTION [dbo].[udf_fptreebase] INT ) RETURNS TABLE AS RETURN ( WITH productwithsupport_cte (productid, support) AS ( SELECT productid, COUNT(productID) AS support FROM ARMTable GROUP BY productid HAVING COUNT(productID) ) ) SELECT A.shoppingCart, A.productID, O.support FROM ARMTable A INNER JOIN productwithsupport_cte O ON A.productID = O.productID Proces výstavby stromu a následně jeho dolování jsem provedl striktně dle algoritmu. Spuštění na malých testovacích datech bylo rychlostí běhu slibné. Pokud jsem ale algoritmus spustil na větších množinách, stal se výrazně pomalejším než Apriori (především u menších podpor). Hledal jsem příčinu a dospěl jsem k tomu, že rekurzivní dolovací algoritmus doluje i položky, které nemají perspektivu. Bylo tedy potřeba strom nějakým způsobem prořezat. Nejlepší metoda, která mě napadla, bylo odstranění těch záznamů z tabulky odkazů, které nesplňují minimální podporu. (Není třeba mazat žádné části stromu a algoritmus dolování se neomezuje žádnou další podmínkou, která by jej akorát brzdila.) Došlo tím nejen k rapidnímu zrychlení při menších hodnotách podpory, ale rovněž při hodnotách vyšších tam však již není zisk tak významný. V kapitole je empirický důkaz mého zjištění. 21
25 4.2 Omezení délky frekventovaných množin Algoritmus Apriori nalezne všechny frekventované množiny libovolné délky. Já jsem ale nastavil do implementace omezení, kdy se vždy generují nejvýše k-množiny. Není mi znám žádný postup, kterým by bylo možné předpovědět počet vygenerovaných k-množin a tím i čas běhu výpočtu např. na základě počtu transakcí a selektivitě položek. Proto jsem zvolil možnost volby maximální délky frekventované množiny. U dolování FP-stromu žádné omezení zvoleno není, protože funguje na úplně jiném principu a také proto, že je to metoda o poznání rychlejší než prvotní Apriori. 4.3 Dolování asociačních pravidel Generování asociačních pravidel z frekventovaných množin je v podstatě proces generování všech podmnožin dané množiny bez prázdné a sebe sama. Otestování, jestli takto vygenerované pravidlo splňuje minimální spolehlivost a je tudíž silné, již není problém. Generování pravidel jsem implementoval tak, že jsem vygeneroval pouze polovinu pravidel a druhou polovinu vytvořil převrácením první. Plyne z toho, že jsem musel do seznamu asociačních pravidel vkládat i pravidla slabá, která jsem musel po vygenerování druhé poloviny pravidel smazat. U vytváření druhé poloviny pravidel si již můžu dovolit vkládat pouze silná pravidla. Tato operace byla ale velice časově náročná. Zrychlení o 60% jsem dosáhl tím, že jsem přestal zjišťovat podporu levé strany pravidla standardním způsobem. Místo toho si podporu vyhledám mezi již získanými frekventovanými množinami. Výsledek dolování asociačních pravidel je umístěn v tabulce pod záložkou Asociační pravidla včetně spolehlivosti daného pravidla. 4.4 Práce s vlákny Aby aplikace zůstala i při složitých výpočtech interaktivní, použil jsem na výpočet frekventovaných množin a asociačních pravidel samostatná vlákna. Jelikož GUI aplikace je postaveno na Windows Forms, využil jsem vestavěné třídy BackgroundWork ke spuštění úloh na pozadí a ne standardní třídu Thread. Práce s BackgroundWorkerem mi přišla jednodušší než u vláken, kde bylo potřeba testovat, jestli vlákno ještě běží. Pomocí metody RunWorkerComplete jednoduše zavolám rutinu, která se má provést, až výpočet skončí, a nemusím se dále o nic starat. Abych zajistil korektnost měření délky běhu různých algoritmů, nespouštím nikdy více než jedno vlákno současně pro výpočty frekventovaných množin nebo asociačních pravidel. 22
26 Spuštění dolování asociačních pravidel probíhá následovně: BackgroundWorker bw = new BackgroundWorker(); if (rbaprioria.checked) bw.dowork += bw_aprioria; else if (rbapriorib.checked) bw.dowork += bw_apriorib; else if (rbaprioric.checked) bw.dowork += bw_aprioric; else if (rbapriorid.checked) bw.dowork += bw_apriorid; else if (rbfptreea.checked) bw.dowork += bw_fptreea; bw.dowork += bw_armining; bw.runworkercompleted += bw_miningcompleteshowar; bw.runworkerasync(); 4.5 Grafy Na tvorbu grafů jsem použil volně dostupný nástroj Microsoft Chart Controls, který integrací do vývojového prostředí Microsoft Visual Studio vytvoří komponentu pro práci s grafy. Jako jeden z mála volně dostupných nástrojů, které jsem našel, umí vytvářet trojrozměrné grafy (osy metoda, podpora a čas běhu). A to včetně průhlednosti, která je pro čitelnost grafu velkým přínosem. 23
27 5 Spuštění na reálných datech a zhodnocení výsledků V této kapitole jsou podrobeny jednotlivé modifikace algoritmů testům, které empiricky dokazují tvrzení a předpoklady z předchozích kapitol. Nejedná se pouze o porovnání algoritmů mezi sebou, ale také porovnání jednoho algoritmu samého se sebou s a bez konkrétní optimalizace. 5.1 Testovací data Jako zdroj dat jsem použil tabulku Sales.SalesOrderDetail (sloupce SalesOrderID a ProductID) z databáze AdventureWorks2008, kterou Microsoft poskytuje zdarma ke stažení. Data jsou zde již velice dobře předpřipravená, takže není potřeba provádět žádné čištění, integraci více zdrojů, redukce nebo transformace. Tabulka obsahuje přes 121 tisíc řádků, kde je přes 31 tisíc transakcí a 266 položek. Pro testování si vybírám vždy pouze část této tabulky. 5.2 Metodika měření Pro měření času jsem si vytvořil třídu Timer, která odečítá aktuální čas při začátku a konci výpočtu. Rozdíl v milisekundách následně vrátí. Není možné měřit pouze běh aplikace, protože spousta operací se provádí v databázi a to by ovlivnilo výsledky. Takto je čas sice započítán včetně běhu systému a dalších aplikací, ale je to u všech stejně (všechny testy byly provedeny v jeden čas), tudíž poměr rychlostí jednotlivých metod je zachován. Další sledovanou veličinou je počet vygenerovaných frekventovaných množin, popřípadě asociačních pravidel. Testy byly prováděny na procesoru Intel Core 2 Duo Mobile P8400 s operační pamětí 4GB na OS Windows 7 RC1. 24
28 5.3 Měření Vypracoval jsem celkem 6 měření, pomocí kterých jsou srovnávány jednotlivé metody dolování jak frekventovaných množin, tak asociačních pravidel Měření 1 Dolování asociačních pravidel V prvním měření se budu zabývat dolováním asociačních pravidel. Budu sledovat celkem 4 parametry: Doba výpočtu frekventovaných množin, počet frekventovaných množin, doba výpočtu asociačních pravidel a počet asociačních pravidel. Všechny měřené veličiny jsou závislé na vstupních parametrech: Minimální podpora frekventovaných množin, minimální spolehlivost asociačních pravidel, maximální délka frekventované množiny (kromě FP-stromu) a data pro dolování (pokud nebude uvedeno jinak, vzorek dat se nemění). Pouze doba výpočtu frekventovaných množin je závislá na zvolené metodě pro dolování. Doba výpočtu asociačních pravidel by měla být stejná pro různé metody dolování frekventovaných množin. S ohledem na tento předpoklad je sestrojen i graf 6.1, který ukazuje podobnost časů výpočtu frekventovaných množin. Čas u Apriori T-SQL se však liší od ostatních. Je to způsobeno tím, že tato metoda mi nevrací podporu jednotlivých frekventovaných množin. Je potřeba podporu spočítat zvlášť. Díky návrhu aplikace (takzvaná inteligentní property pro výpočet podpory) nebylo potřeba nijak upravovat aplikaci. U grafu 6.2 se změnou podpory změnil počet frekventovaných množin a tím počet asociačních pravidel. Nastal zde vzrůst doby trvání výpočtu asociačních pravidel. Opět jsou ale doby výpočtu vesměs stejné až na Apriori T-SQL. 25
29 Graf 6.1 Doba výpočtu frekventovaných množin a asociačních pravidel 26
30 Graf 6.2 Doba výpočtu frekventovaných množin a asociačních pravidel 27
31 5.3.2 Měření 2 Dolování asociačních pravidel Druhé měření se bude také zabývat asociačními pravidly, tentokráte již ale ne statistikou. Obrázek ukazuje výběr pár asociačních pravidel. Pro úplný přehled je potřeba si spustit aplikaci. Obrázek 6.3 Snímek aplikace: vydolovaná asociační pravidla Měření 3 Dolování frekventovaných množin Minulým měřením jsem empiricky dokázal, že doba výpočtu asociačních pravidel se nemění s různými metodami dolování frekventovaných množin při stejných vstupních parametrech. Tudíž další měření budu provádět pouze na frekventovaných množinách. Předchozí pokusy jsem prováděl na testovacím vzorku 1000 záznamů v databázi. Nyní provedu test všech metod nad vzrůstajícím počtem záznamů s konstantní relativní podporou a maximální délkou množin 5. Nyní se teprve ukáže, jak rychlé jsou jednotlivé algoritmy. 28
32 Graf 6.4 Doba výpočtu frekventovaných množin v závislosti na počtu položek databáze 29
33 Konstantní relativní podpora se podepsala na výsledku tím způsobem, že se délka výpočtu u většiny metod příliš nelišila (Zpracovávalo se sice více dat, ale vzrostla adekvátně také absolutní podpora.). Razantní vzestup složitosti se ale projevil na metodě Apriori Itemset. Je z ní patrné, že zvětšující se bitové pole se výrazně podílí na délce výpočtu. Abych si ověřil lépe tento závěr, zjistil jsem si pomocí jednoduchého SQL dotazu počet transakcí při různých velikostech zdrojové tabulky. SELECT COUNT(DISTINCT shoppingcart) FROM ARMTable Výsledek tohoto dotazu pro vybrané počty řádků tabulky: Počet řádků tabulky Počet transakcí Tabulka 6.5 Výsledek dotazu na získání počtu unikátních transakcí v databázi Vezmu-li první a poslední řádek této tabulky a porovnám je, tak počet transakcí se zvedl 412 krát, zatímco délka výpočtu 678 krát (tento údaj není v tabulce uveden). Rozhodl jsem se tedy sestrojit graf, který by zobrazil podíl doby výpočtu a počtu transakcí při vzrůstajícím počtu položek tabulky. 30
34 3,5 Podíl doby výpočtu a počtu transakcí při vzrůstajícím počtu položek tabulky (Apriori ItemSet) 3 2,5 2 1,5 Podíl 1 0, Graf 6.6 Podíl doby výpočtu a počtu transakcí při vzrůstajícím počtu položek tabulky Jelikož graf vyjadřuje podíl, zobrazí se na něm přímá úměra jako konstantní funkce. To by odpovídalo střední části grafu. Krajní hodnoty tomu ale neodpovídají, nelze tedy o přímé úměře, ani jiném lineárním trendu uvažovat. Byl by potřeba mnohem větší vzorek dat, aby se dala usoudit nějaká závislost. Výše jsem uvedl, jak je důležité před použitím Apriori Itemset udělat transformaci tabulky tak, aby čísla transakcí tvořila vzestupnou posloupnost od nuly s krokem 1. Nechtěně jsem jednou při kopírování dat ze záložní tabulky do pracovní zapomněl spustit transformační proceduru. Výsledky byly v tu chvíli překvapující. Uvedu zde tedy příklad, jak se projeví neprovedení transformace na výsledných časech. 31
35 Sekundy Doba výpočtu frekv. množin v závislosti na počtu položek databáze (bez transformace dat) Apriori Apriori T-SQL Apriori ItemSet Apriori TIDlist FP strom Graf 6.7 Doba výpočtu frekv. množin v závislosti na počtu položek databáze (bez transformace dat) Další metoda, u které byl patrný růst, je Apriori TID list. Zkusil jsem tedy tuto metodu porovnat s FP-stromem. Jelikož výše uvedený graf zaujímá příliš velký rozsah, vytvořil jsem graf pouze s Apriori TID list a FP-stromem a to pouze do položek, aby byly dobře patrné i hodnoty u FP-stromu. 32
36 Milisekundy Délka výpočtu v závislosti na počtu položek tabulky Apriori TIDlist FP strom Graf 6.8 Doba výpočtu v závislosti na počtu položek tabulky Pro malý počet položek tabulky se stává, že Apriori TID list je rychlejší než metoda založena na dolování FP-stromu. Zatímco pro větší hodnoty hraje prim metoda s pomocí FP-stromu Měření 4 Dolování frekventovaných množin Samotná aplikace umí vykreslovat z mého pohledu nejzajímavější graf, a to dobu výpočtu frekventovaných množin v závislosti na zvolené metodě a minimální podpoře. Jelikož se výpočet provádí nad shodnou množinou dat, ukáže se na tomto grafu dobře rychlost jednotlivých algoritmů. Ty jsou srovnány v jednom řádku a označeny shodnou barvou. S rostoucí podporou by také měly klesat časy, anebo zůstat alespoň stejné. To se právě děje u algoritmu Apriori Itemset. Jeho tvůrci využili bitové pole a nad ním velmi rychlé bitové operace. Výstavba takového pole je již ale náročná a to se projevilo právě v grafu (vždy se musí vytvořit bitové pole rovné počtu transakcí v tabulce databáze a to je nezávislé na zvolené podpoře). 33
37 Graf 6.9 Doba výpočtu frekventovaných množin v závislosti na zvolené metodě a minimální podpoře 34
38 Sekundy Měření 5 Dolování frekventovaných množin Jak jsem uvedl dříve, obecný algoritmus dolování frekventovaných množin pomocí FP-stromu nemá při malých podporách dobré výsledky. Prořezáním stromu jsem ale docílil výrazného zrychlení algoritmu při malých hodnotách podpory. Pokud nedojde k prořezávání, vytvářejí se zbytečně podmíněné FP-stromy, ze kterých nikdy frekventované množiny nevzniknou. Empirickým důkazem tohoto tvrzení je tento graf, který zobrazuje dobu trvání dolování frekventovaných množin pomocí FP-stromu s a bez ořezání při různých hodnotách podpory. Dolování frekventovaných množin pomocí FP-stromu s a bez ořezání při různých hodnotách podpory 3 2,5 2 1,5 1 bez ořezání s ořezáním 0,5 0 0,009 0,011 0,015 Graf 6.10 Dolování frekventovaných množin pomocí FP-stromu s a bez ořezání při různých hodnotách podpory Měření 6 Dolování frekventovaných množin Všechna předchozí měření byla prováděna s relativní podporou. Tzn., že absolutní hodnota minimální podpory se měnila s měnícím se počtem řádků tabulky. V tomto měření jsem se zaměřil na vztah mezi časem a metodami, pokud se bude měnit počet řádků tabulky a hodnota podpory bude stále stejná. Jde vlastně o dvojí ztížení podmínek. Na jednu stranu se zvedá počet řádků, které se musí zpracovat, na druhou stranu se nezvětšuje adekvátně minimální podpora, která by snížila počet frekventovaných množin. Toto měření zvýraznilo rozdíly, které mezi jednotlivými metodami jsou. Jako odrazový můstek pro měření jsem zvolil tabulku s řádky a relativní podporu 0,012. Absolutní podpora tedy je
39 Graf 6.11 Doba výpočtu frekv. množin v závislosti na počtu položek databáze se stejnou absolutní podporou 36
40 6 Závěr Tato práce se zabývala problematikou získávání asociačních pravidel z databází. Cílem práce bylo vytvořit aplikaci, která by umožňovala porovnávat výkonnost a časovou náročnost několika zvolených algoritmů pro dolování těchto pravidel. Jednalo se zejména o algoritmus Apriori a jeho modifikace a dále pak o algoritmus využívající FP-strom. Součástí práce je tedy modulární aplikace, která se skládá ze tří vrstev: prezentační, výkonná a datová. Prezentační vrstva se stará o grafické uživatelské rozhraní zadávání parametrů výpočtů a následné zobrazení výsledků. Parametry se z prezentační vrstvy předávají výkonné vrstvě, která provede samotné dolování frekventovaných množin a asociačních pravidel a navrátí odpovídající výsledek. Nejnižší z vrstev, datová, se stará o získávání dat z databáze. Díky této modularitě je možné aplikaci rozšiřovat o další algoritmy nebo jednotlivé vrstvy nahradit jinými. Aplikace umí vytvářet grafy, které je možné využít k živým ukázkám při výuce dolování asociačních pravidel. Nejslibnější budoucnost z mnou implementovaných algoritmů má metoda dolování FP-stromu. Proto se také první námět na zlepšení bude týkat této metody. FP-strom se vždy doluje od spodu, ale staví se seshora v každém uzlu je seznam jeho následníků. Seznam následníků nám sice ulehčí vytváření stromu, ale také zabírá zbytečné místo. Dle článku [6] bych rád v budoucnu přepracoval tvorbu FP-stromu bez seznamu následníků u každého uzlu. Dosáhl bych tím ušetření paměti, které může být při velké vstupní databázi nedostatek. Bude nezbytně nutné experimentálně ověřit, zda snížení prostorové náročnosti nepovede k výraznému nárůstu časové náročnosti výstavby stromů. Při implementaci Apriori T-SQL se kompletní výpočet prováděl na straně databázového serveru. To server samozřejmě velmi zatěžuje. Např. v nočních hodinách by to nad produkční databází nebyl problém, ale přes den (např. v pracovní době) by to bylo nežádoucí. Bylo by tedy dobré využít Resource Governor v MS SQL serveru 2008, který by omezil výpočetní výkon a operační paměť této náročné operaci. Jelikož některé výpočty mohou běžet velice dlouho, bylo by také dobré umožnit uživateli výpočet zastavit. Kdyby bylo možné předpovědět délku běhu ze vstupních parametrů, mohly by se parametry před spuštěním výpočtu upravit tak, abych dostal žádoucí výsledek. Problém se zastavením je ale v tom, že kvůli neznalosti pokročilosti výpočtu může zastavit výpočet chvíli před dokončením. 37
Dolování asociačních pravidel
Dolování asociačních pravidel Miloš Trávníček UIFS FIT VUT v Brně Obsah přednášky 1. Proces získávání znalostí 2. Asociační pravidla 3. Dolování asociačních pravidel 4. Algoritmy pro dolování asociačních
Základy vytěžování dat
Základy vytěžování dat předmět A7Bb36vyd Vytěžování dat Filip Železný, Miroslav Čepek, Radomír Černoch, Jan Hrdlička katedra kybernetiky a katedra počítačů ČVUT v Praze, FEL Evropský sociální fond Praha
Získávání znalostí z databází. Alois Kužela
Získávání znalostí z databází Alois Kužela Obsah související pojmy datové sklady, získávání znalostí asocianí pravidla 2/37 Úvod získávání znalostí z dat, dolování (z) dat, data mining proces netriviálního
GTL GENERATOR NÁSTROJ PRO GENEROVÁNÍ OBJEKTŮ OBJEKTY PRO INFORMATICA POWERCENTER. váš partner na cestě od dat k informacím
GTL GENERATOR NÁSTROJ PRO GENEROVÁNÍ OBJEKTŮ OBJEKTY PRO INFORMATICA POWERCENTER váš partner na cestě od dat k informacím globtech spol. s r.o. karlovo náměstí 17 c, praha 2 tel.: +420 221 986 390 info@globtech.cz
Relační DB struktury sloužící k optimalizaci dotazů - indexy, clustery, indexem organizované tabulky
Otázka 20 A7B36DBS Zadání... 1 Slovníček pojmů... 1 Relační DB struktury sloužící k optimalizaci dotazů - indexy, clustery, indexem organizované tabulky... 1 Zadání Relační DB struktury sloužící k optimalizaci
3. úloha - problém batohu metodami branch & bound, dynamické programování, heuristika s testem
ČVUT FEL X36PAA - Problémy a algoritmy 3. úloha - problém batohu metodami branch & bound, dynamické programování, heuristika s testem Jméno: Marek Handl Datum: 1. 1. 2009 Cvičení: Pondělí 9:00 Zadání Naprogramujte
Databázové systémy Cvičení 5.2
Databázové systémy Cvičení 5.2 SQL jako jazyk pro definici dat Detaily zápisu integritních omezení tabulek Integritní omezení tabulek kromě integritních omezení sloupců lze zadat integritní omezení jako
VYSOKÁ ŠKOLA BÁŇSKÁ TECHNICKÁ UNIVERZITA OSTRAVA FAKULTA STROJNÍ DATABÁZOVÉ SYSTÉMY ARCHITEKTURA DATABÁZOVÝCH SYSTÉMŮ. Ing. Lukáš OTTE, Ph.D.
VYSOKÁ ŠKOLA BÁŇSKÁ TECHNICKÁ UNIVERZITA OSTRAVA FAKULTA STROJNÍ DATABÁZOVÉ SYSTÉMY ARCHITEKTURA DATABÁZOVÝCH SYSTÉMŮ Ing. Lukáš OTTE, Ph.D. Ostrava 2013 Tento studijní materiál vznikl za finanční podpory
Příprava dat v softwaru Statistica
Příprava dat v softwaru Statistica Software Statistica obsahuje pokročilé nástroje pro přípravu dat a tvorbu nových proměnných. Tyto funkcionality přinášejí značnou úsporu času při přípravě datového souboru,
Databázové systémy. Doc.Ing.Miloš Koch,CSc. koch@fbm.vutbr.cz
Databázové systémy Doc.Ing.Miloš Koch,CSc. koch@fbm.vutbr.cz Vývoj databázových systémů Ukládání dat Aktualizace dat Vyhledávání dat Třídění dat Výpočty a agregace 60.-70. léta Program Komunikace Výpočty
Databázové systémy. Datová integrita + základy relační algebry. 4.přednáška
Databázové systémy Datová integrita + základy relační algebry 4.přednáška Datová integrita Datová integrita = popisuje pravidla, pomocí nichž hotový db. systém zajistí, že skutečná fyzická data v něm uložená
ČVUT FEL X36PAA - Problémy a algoritmy. 4. úloha - Experimentální hodnocení algoritmů pro řešení problému batohu
ČVUT FEL X36PAA - Problémy a algoritmy 4. úloha - Experimentální hodnocení algoritmů pro řešení problému batohu Jméno: Marek Handl Datum: 3. 2. 29 Cvičení: Pondělí 9: Zadání Prozkoumejte citlivost metod
Reranking založený na metadatech
České vysoké učení technické v Praze Fakulta informačních technologií Katedra softwarového inženýrství Reranking založený na metadatech MI-VMW Projekt IV - 1 Pavel Homolka Ladislav Kubeš 6. 12. 2011 1
1 Webový server, instalace PHP a MySQL 13
Úvod 11 1 Webový server, instalace PHP a MySQL 13 Princip funkce webové aplikace 13 PHP 14 Principy tvorby a správy webového serveru a vývojářského počítače 14 Co je nezbytné k instalaci místního vývojářského
Aplikace pro srovna ní cen povinne ho ruc ení
Aplikace pro srovna ní cen povinne ho ruc ení Ukázkový přiklad mikroaplikace systému Formcrates 2010 Naucrates s.r.o. Veškerá práva vyhrazena. Vyskočilova 741/3, 140 00 Praha 4 Czech Republic tel.: +420
Databáze I. 5. přednáška. Helena Palovská
Databáze I 5. přednáška Helena Palovská palovska@vse.cz SQL jazyk definice dat - - DDL (data definition language) Základní databáze, schemata, tabulky, indexy, constraints, views DATA Databáze/schéma
DATABÁZOVÉ SYSTÉMY. Metodický list č. 1
Metodický list č. 1 Cíl: Cílem předmětu je získat přehled o možnostech a principech databázového zpracování, získat v tomto směru znalosti potřebné pro informačního manažera. Databázové systémy, databázové
Kontingenční tabulky v MS Excel 2010
Kontingenční tabulky v MS Excel 2010 Autor: RNDr. Milan Myšák e-mail: milan.mysak@konero.cz Obsah 1 Vytvoření KT... 3 1.1 Data pro KT... 3 1.2 Tvorba KT... 3 2 Tvorba KT z dalších zdrojů dat... 5 2.1 Data
Zabezpečení proti SQL injection
Zabezpečení proti SQL injection ESO9 intranet a.s. Zpracoval: Tomáš Urych U Mlýna 2305/22, 141 Praha 4 Záběhlice Dne: 19.9.2012 tel.: +420 585 203 370-2 e-mail: info@eso9.cz Revize: Urych Tomáš www.eso9.cz
Informační systémy ve zdravotnictví. 6. cvičení
Vysoká škola báňská Technická univerzita Ostrava Fakulta elektrotechniky a informatiky Informační systémy ve zdravotnictví 6. cvičení Ing. Petr Lukáš petr.lukas@nativa.cz Ostrava, 2014 Opakování Relace
2. úkol MI-PAA. Jan Jůna (junajan) 3.11.2013
2. úkol MI-PAA Jan Jůna (junajan) 3.11.2013 Specifikaci úlohy Problém batohu je jedním z nejjednodušších NP-těžkých problémů. V literatuře najdeme množství jeho variant, které mají obecně různé nároky
8.2 Používání a tvorba databází
8.2 Používání a tvorba databází Slide 1 8.2.1 Základní pojmy z oblasti relačních databází Slide 2 Databáze ~ Evidence lidí peněz věcí... výběry, výpisy, početní úkony Slide 3 Pojmy tabulka, pole, záznam
Vývoj moderních technologií při vyhledávání. Patrik Plachý SEFIRA spol. s.r.o. plachy@sefira.cz
Vývoj moderních technologií při vyhledávání Patrik Plachý SEFIRA spol. s.r.o. plachy@sefira.cz INFORUM 2007: 13. konference o profesionálních informačních zdrojích Praha, 22. - 24.5. 2007 Abstrakt Vzhledem
MBI - technologická realizace modelu
MBI - technologická realizace modelu 22.1.2015 MBI, Management byznys informatiky Snímek 1 Agenda Technická realizace portálu MBI. Cíle a principy technického řešení. 1.Obsah portálu - objekty v hierarchiích,
Stromy, haldy, prioritní fronty
Stromy, haldy, prioritní fronty prof. Ing. Pavel Tvrdík CSc. Katedra počítačů FEL České vysoké učení technické DSA, ZS 2008/9, Přednáška 6 http://service.felk.cvut.cz/courses/x36dsa/ prof. Pavel Tvrdík
Metoda Monte Carlo a její aplikace v problematice oceňování technologií. Manuál k programu
Metoda Monte Carlo a její aplikace v problematice oceňování technologií Manuál k programu This software was created under the state subsidy of the Czech Republic within the research and development project
Datové struktury 2: Rozptylovací tabulky
Datové struktury 2: Rozptylovací tabulky prof. Ing. Pavel Tvrdík CSc. Katedra počítačových systémů Fakulta informačních technologií České vysoké učení technické v Praze c Pavel Tvrdík, 2010 Efektivní algoritmy
hledání zajímavých asociací i korelací ve velkém množství dat původně pro transakční data obchodní transakce analýza nákupního košíku
Asociační pravidla Asociační pravidla hledání zajímavých asociací i korelací ve velkém množství dat původně pro transakční data obchodní transakce analýza nákupního košíku podpora rozhodování Analýza nákupního
Zabezpečení proti SQL injection
Zabezpečení proti SQL injection ESO9 intranet a.s. Zpracoval: Tomáš Urych U Mlýna 2305/22, 141 Praha 4 Záběhlice Dne: 19.9.2012 tel.: +420 585 203 370-2 e-mail: info@eso9.cz Revize: Urych Tomáš www.eso9.cz
Bakalářské práce realizované v.net/c# Bachelor thesis implemented in.net/c#
Bakalářské práce realizované v.net/c# Bachelor thesis implemented in.net/c# Ing. Marek Musil 1 Abstrakt Platforma.NET je používána k vytváření velmi efektivních a uživatelsky přívětivých aplikací. Nabízí
Semestrální práce 2 znakový strom
Semestrální práce 2 znakový strom Ondřej Petržilka Datový model BlockFileRecord Bázová abstraktní třída pro záznam ukládaný do blokového souboru RhymeRecord Konkrétní třída záznamu ukládaného do blokového
xrays optimalizační nástroj
xrays optimalizační nástroj Optimalizační nástroj xoptimizer je součástí webového spedičního systému a využívá mnoho z jeho stavebních bloků. xoptimizer lze nicméně provozovat i samostatně. Cílem tohoto
STŘEDNÍ ŠKOLA INFORMAČNÍCH TECHNOLOGIÍ A SOCIÁLNÍ PÉČE
STŘEDNÍ ŠKOLA INFORMAČNÍCH TECHNOLOGIÍ A SOCIÁLNÍ PÉČE WEBOWÉ STRÁNKY TŘÍD KAMIL POPELKA ZÁVĚREČNÁ MATURITNÍ PRÁCE BRNO 2011 Prohlášení Prohlašuji, že maturitní práce je mým původním autorským dílem, které
Uživatelský manuál. Aplikace GraphViewer. Vytvořil: Viktor Dlouhý
Uživatelský manuál Aplikace GraphViewer Vytvořil: Viktor Dlouhý Obsah 1. Obecně... 3 2. Co aplikace umí... 3 3. Struktura aplikace... 4 4. Mobilní verze aplikace... 5 5. Vytvoření projektu... 6 6. Části
Základní datové struktury III: Stromy, haldy
Základní datové struktury III: Stromy, haldy prof. Ing. Pavel Tvrdík CSc. Katedra počítačových systémů Fakulta informačních technologií České vysoké učení technické v Praze c Pavel Tvrdík, 2010 Efektivní
Dynamicky vázané metody. Pozdní vazba, virtuální metody
Dynamicky vázané metody Pozdní vazba, virtuální metody Motivace... class TBod protected: float x,y; public: int vrat_pocet_bodu() return 1; ; od třídy TBod odvodíme: class TUsecka: public TBod protected:
Obsah. Kapitola 1. Kapitola 2. Kapitola 3. Úvod 9
Obsah Úvod 9 Kapitola 1 Business Intelligence, datové sklady 11 Přechod od transakčních databází k analytickým..................... 13 Kvalita údajů pro analýzy................................................
Tabulkový procesor. Základní rysy
Tabulkový procesor Tabulkový procesor je počítačový program zpracovávající data uložená v buňkách tabulky. Program umožňuje použití vzorců pro práci s daty a zobrazuje výsledné hodnoty podle vstupních
Databáze pro evidenci výrobků
Databáze pro evidenci výrobků Databáze ve formátu Microsoft Access je součástí systému, který řídí automatizovanou výrobní linku. Tabulka tblcharge obsahuje data o výrobcích a je plněna automaticky řídicím
1. Webový server, instalace PHP a MySQL 13
Úvod 11 1. Webový server, instalace PHP a MySQL 13 Princip funkce webové aplikace 13 PHP 14 Principy tvorby a správy webového serveru a vývojářského počítače 14 Co je nezbytné k instalaci místního vývojářského
Neuronové časové řady (ANN-TS)
Neuronové časové řady (ANN-TS) Menu: QCExpert Prediktivní metody Neuronové časové řady Tento modul (Artificial Neural Network Time Series ANN-TS) využívá modelovacího potenciálu neuronové sítě k predikci
Operátory ROLLUP a CUBE
Operátory ROLLUP a CUBE Dotazovací jazyky, 2009 Marek Polák Martin Chytil Osnova přednášky o Analýza dat o Agregační funkce o GROUP BY a jeho problémy o Speciální hodnotový typ ALL o Operátor CUBE o Operátor
Algoritmy I, složitost
A0B36PRI - PROGRAMOVÁNÍ Algoritmy I, složitost České vysoké učení technické Fakulta elektrotechnická v 1.01 Rychlost... Jeden algoritmus (program, postup, metoda ) je rychlejší než druhý. Co ta věta znamená??
Výroková a predikátová logika - III
Výroková a predikátová logika - III Petr Gregor KTIML MFF UK ZS 2017/2018 Petr Gregor (KTIML MFF UK) Výroková a predikátová logika - III ZS 2017/2018 1 / 16 2-SAT 2-SAT Výrok je v k-cnf, je-li v CNF a
Informační systémy 2006/2007
13 Vysoká škola báňská Technická univerzita Ostrava Fakulta strojní, Katedra automatizační techniky a řízení Informační systémy 2006/2007 Ivan Kedroň 1 Obsah Analytické nástroje SQL serveru. OLAP analýza
Instalace. Produkt je odzkoušen pro MS SQL server 2008 a Windows XP a Windows 7. Pro jiné verze SQL server a Windows nebyl testován.
Instalace Produkt se neinstaluje. Stačí soubor uložit na libovolné místo na Vašem počítací (klikněte pravým tlačítkem a dejte 'uložit cíl jako ), pak jen spustit. Požadavky na software Produkt je odzkoušen
Wonderware Information Server 4.0 Co je nového
Wonderware Information Server 4.0 Co je nového Pavel Průša Pantek (CS) s.r.o. Strana 2 Úvod Wonderware Information Server je výrobní analytický a reportní informační portál pro publikaci výrobních dat
Nemocnice. Prvotní analýza a plán projektu
Nemocnice Projekt do předmětu AIS Prvotní analýza a plán projektu Lukáš Pohl, xpohll00, xkosti03 Jan Novák, xnovak79 2009/2010 1 Neformální specifikace FN potřebuje informační systém, který bude obsahovat
Reporting. Ukazatele je možno definovat nad libovolnou tabulkou Helios Orange, která je zapsána v nadstavbě firmy SAPERTA v souboru tabulek:
Finanční analýza Pojem finanční analýza Finanční analýza umožňuje načítat data podle dimenzí a tyto součty dlouhodobě vyhodnocovat. Pojem finanční analýza není nejpřesnější, protože ukazatele mohou být
Tvorba asociačních pravidel a hledání. položek
Tvorba asociačních pravidel a hledání častých skupin položek 1 Osnova Asociace Transakce Časté skupiny položek Apriori vlastnost podmnožin Asociační pravidla Aplikace 2 Asociace Nechť I je množina položek.
TÉMATICKÝ OKRUH Softwarové inženýrství
TÉMATICKÝ OKRUH Softwarové inženýrství Číslo otázky : 24. Otázka : Implementační fáze. Postupy při specifikaci organizace softwarových komponent pomocí UML. Mapování modelů na struktury programovacího
Dynamické programování
Dynamické programování prof. Ing. Pavel Tvrdík CSc. Katedra počítačových systémů Fakulta informačních technologií České vysoké učení technické v Praze c Pavel Tvrdík, 2010 Efektivní algoritmy (BI-EFA)
Vzorce. Suma. Tvorba vzorce napsáním. Tvorba vzorců průvodcem
Vzorce Vzorce v Excelu lze zadávat dvěma způsoby. Buď známe přesný zápis vzorce a přímo ho do buňky napíšeme, nebo použijeme takzvaného průvodce při tvorbě vzorce (zejména u složitějších funkcí). Tvorba
TECHNOLOGIE ELASTICKÉ KONFORMNÍ TRANSFORMACE RASTROVÝCH OBRAZŮ
TECHNOLOGIE ELASTICKÉ KONFORMNÍ TRANSFORMACE RASTROVÝCH OBRAZŮ ÚVOD Technologie elastické konformní transformace rastrových obrazů je realizována v rámci webové aplikace NKT. Tato webová aplikace provádí
Vzdělávací obsah vyučovacího předmětu
V.9.3. Vzdělávací obsah vyučovacího předmětu Vzdělávací oblast: Inormatika a informační a komunikační technologie Vyučovací předmět: Informatika Ročník: 1. ročník + kvinta chápe a používá základní termíny
Informační systémy 2008/2009. Radim Farana. Obsah. Dotazy přes více tabulek
5 Vysoká škola báňská Technická univerzita Ostrava Fakulta strojní, Katedra automatizační techniky a řízení 2008/2009 Radim Farana 1 Obsah Jazyk SQL, Spojení tabulek, agregační dotazy, jednoduché a složené
Datové typy a struktury
atové typy a struktury Jednoduché datové typy oolean = logická hodnota (true / false) K uložení stačí 1 bit často celé slovo (1 byte) haracter = znak Pro 8-bitový SII kód stačí 1 byte (256 možností) Pro
6. blok část B Vnořené dotazy
6. blok část B Vnořené dotazy Studijní cíl Tento blok je věnován práci s vnořenými dotazy. Popisuje rozdíl mezi korelovanými a nekorelovanými vnořenými dotazy a zobrazuje jejich použití. Doba nutná k nastudování
Rekurzivní algoritmy
Rekurzivní algoritmy prof. Ing. Pavel Tvrdík CSc. Katedra počítačových systémů Fakulta informačních technologií České vysoké učení technické v Praze c Pavel Tvrdík, 2010 Efektivní algoritmy (BI-EFA) ZS
Vyhledávání. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava. Prezentace ke dni 21.
Vyhledávání doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava Prezentace ke dni 21. září 2018 Jiří Dvorský (VŠB TUO) Vyhledávání 242 / 433 Osnova přednášky
5.15 INFORMATIKA A VÝPOČETNÍ TECHNIKA
5.15 INFORMATIKA A VÝPOČETNÍ TECHNIKA 5. 15. 1 Charakteristika předmětu A. Obsahové vymezení: IVT se na naší škole vyučuje od tercie, kdy je cílem zvládnutí základů hardwaru, softwaru a operačního systému,
Úvod do databázových systémů
Vysoká škola báňská Technická univerzita Ostrava Fakulta elektrotechniky a informatiky Úvod do databázových systémů Cvičení 3 Ing. Petr Lukáš petr.lukas@vsb.cz Ostrava, 2014 Opakování 4 fáze vytváření
Úvod do databází. Modelování v řízení. Ing. Petr Kalčev
Úvod do databází Modelování v řízení Ing. Petr Kalčev Co je databáze? Množina záznamů a souborů, které jsou organizovány za určitým účelem. Jaké má mít přínosy? Rychlost Spolehlivost Přesnost Bezpečnost
E-NABÍDKA PARTNER.REDA.CZ
E-NABÍDKA PARTNER.REDA.CZ Reda e-nabídka představuje mocný nástroj, díky kterému mohou naši registrovaní klienti přímo z prostředí e-shopu partner.reda.cz vytvářet vlastní produktové nabídky pro své zákazníky.
Primární klíč, cizí klíč, referenční integrita, pravidla normalizace, relace
Téma 2.2 Primární klíč, cizí klíč, referenční integrita, pravidla normalizace, relace Obecný postup: Každá tabulka databáze by měla obsahovat pole (případně sadu polí), které jednoznačně identifikuje každý
IB111 Úvod do programování skrze Python
Vyhledávání, řazení, složitost IB111 Úvod do programování skrze Python 2012 Otrávené studny 8 studen, jedna z nich je otrávená laboratorní rozbor dokáže rozpoznat přítomnost jedu ve vodě je drahý (je časově
Ing. Petr Hájek, Ph.D. Podpora přednášky kurzu Aplikace umělé inteligence
APLIKACE UMĚLÉ INTELIGENCE Ing. Petr Hájek, Ph.D. Podpora přednášky kurzu Aplikace umělé inteligence Aplikace umělé inteligence - seminář ING. PETR HÁJEK, PH.D. ÚSTAV SYSTÉMOVÉHO INŽENÝRSTVÍ A INFORMATIKY
Algoritmus pro hledání nejkratší cesty orientovaným grafem
1.1 Úvod Algoritmus pro hledání nejkratší cesty orientovaným grafem Naprogramoval jsem v Matlabu funkci, která dokáže určit nejkratší cestu v orientovaném grafu mezi libovolnými dvěma vrcholy. Nastudoval
Návrh uživatelských rozhraní NOV-WEB. Jakub Bartoš, Pavel Dvořák, Jakub Motyčka, Kamil Procházka
Návrh uživatelských rozhraní D3 NOV-WEB Web pro stránky předmětů Jakub Bartoš, Pavel Dvořák, Jakub Motyčka, Kamil Procházka Prototyp - Prototyp je vytvořen formou webové stránky. Výchozí stránka prototypu
Jaký je rozdíl v definicicíh VARCHAR2(20 BYTE) a VARCHAR2(20 CHAR):
Mezi příkazy pro manipulaci s daty (DML) patří : 1. SELECT 2. ALTER 3. DELETE 4. REVOKE Jaké vlastnosti má identifikující relace: 1. Je relace, která se využívá pouze v případě modelovaní odvozených entit
MS SQL Server 2008 Management Studio Tutoriál
MS SQL Server 2008 Management Studio Tutoriál Vytvoření databáze Při otevření management studia a připojením se ke konkrétnímu sql serveru mám v levé části panel s názvem Object Explorer. V tomto panelu
Microsoft Access. Úterý 26. února. Úterý 5. března. Typy objektů databáze: Vytvoření a návrh nové tabulky
Úterý 26. února Microsoft Access Databáze je seskupení většího množství údajů, které mají určitou logiku a lze je určitým způsobem vyhodnocovat, zpracovávat a analyzovat Access je jedním z programů určených
KIV/ZIS cvičení 5. Tomáš Potužák
KIV/ZIS cvičení 5 Tomáš Potužák Úvod do SQL (1) SQL (Structured Query Language) je standardizovaný strukturovaný dotazovací jazyk pro práci s databází Veškeré operace v databázi se dají provádět pomocí
Typy souborů ve STATISTICA. Tento článek poslouží jako přehled hlavních typů souborů v programu
StatSoft Typy souborů ve STATISTICA Tento článek poslouží jako přehled hlavních typů souborů v programu STATISTICA, ukáže Vám jejich možnosti a tím Vám dovolí využívat program efektivněji. Jistě jste již
Architektura softwarových systémů
Architektura softwarových systémů Ing. Jiří Mlejnek Katedra softwarového inženýrství Fakulta informačních technologií České vysoké učení technické v Praze Jiří Mlejnek, 2011 jiri.mlejnek@fit.cvut.cz Softwarové
DATABÁZE MS ACCESS 2010
DATABÁZE MS ACCESS 2010 KAPITOLA 5 PRAKTICKÁ ČÁST TABULKY POPIS PROSTŘEDÍ Spuštění MS Access nadefinovat název databáze a cestu k uložení databáze POPIS PROSTŘEDÍ Nahoře záložky: Soubor (k uložení souboru,
Databázové a informační systémy
Databázové a informační systémy doc. Ing. Miroslav Beneš, Ph.D. katedra informatiky FEI VŠB-TUO A-1007 / 597 324 213 http://www.cs.vsb.cz/benes Miroslav.Benes@vsb.cz Obsah Jak ukládat a efektivně zpracovávat
Experimentální systém pro WEB IR
Experimentální systém pro WEB IR Jiří Vraný Školitel: Doc. RNDr. Pavel Satrapa PhD. Problematika disertační práce velmi stručný úvod WEB IR information retrieval from WWW, vyhledávání na webu Vzhledem
Informační systémy 2008/2009. Radim Farana. Obsah. Obsah předmětu. Požadavky kreditového systému. Relační datový model, Architektury databází
1 Vysoká škola báňská Technická univerzita Ostrava Fakulta strojní, Katedra automatizační techniky a řízení 2008/2009 Radim Farana 1 Obsah Požadavky kreditového systému. Relační datový model, relace, atributy,
Úvod do databázových systémů
Vysoká škola báňská Technická univerzita Ostrava Fakulta elektrotechniky a informatiky Katedra informatiky Database Research Group Úvod do databázových systémů Cvičení 3 Ing. Petr Lukáš petr.lukas@vsb.cz
Testování prvočíselnosti
Dokumentace zápočtového programu z Programování II (NPRG031) Testování prvočíselnosti David Pěgřímek http://davpe.net Úvodem V různých oborech (například v kryptografii) je potřeba zjistit, zda je číslo
5a. Makra Visual Basic pro Microsoft Escel. Vytvořil Institut biostatistiky a analýz, Masarykova univerzita J. Kalina
5a. Makra Visual Basic pro Microsoft Escel Vytvořil Institut biostatistiky a analýz, Masarykova univerzita J. Kalina Cyklické odkazy a iterativní výpočty Zde bude stránka o cyklických odkazech a iteracích.
Business Intelligence
Business Intelligence Josef Mlnařík ISSS Hradec Králové 7.4.2008 Obsah Co je Oracle Business Intelligence? Definice, Od dat k informacím, Nástroj pro operativní řízení, Integrace informací, Jednotná platforma
Algoritmizace Dynamické programování. Jiří Vyskočil, Marko Genyg-Berezovskyj 2010
Dynamické programování Jiří Vyskočil, Marko Genyg-Berezovskyj 2010 Rozděl a panuj (divide-and-conquer) Rozděl (Divide): Rozděl problém na několik podproblémů tak, aby tyto podproblémy odpovídaly původnímu
Proces vývoje HRIS Vema (Human Resources Information System) Jaroslav Šmarda
Proces vývoje HRIS Vema (Human Resources Information System) Jaroslav Šmarda Proces vývoje HRIS Vema Vlastnosti HRIS (Human Resources Information System) HRIS Vema Proces vývoje HRIS Vema Vema, a. s. Přední
Doplňování chybějících hodnot v kategoriálních datech 2.00
Doplňování chybějících hodnot v kategoriálních datech 2.00 1. Cíle programu Účelem programu je umožnit uživateli doplnění chybějících hodnot v kategoriálních datech. Pro doplnění chybějících hodnot je
MIS. Manažerský informační systém. pro. Ekonomický informační systém EIS JASU CS. Dodavatel: MÚZO Praha s.r.o. Politických vězňů 15 110 00 Praha 1
MIS Manažerský informační systém pro Ekonomický informační systém EIS JASU CS Dodavatel: MÚZO Praha s.r.o. Politických vězňů 15 110 00 Praha 1 Poslední aktualizace dne 5.8.2014 MÚZO Praha s.r.o. je certifikováno
8. Zpracování dotazu. J. Zendulka: Databázové systémy 8 Zpracování dotazu 1
8. Zpracování dotazu 8.1. Podstata optimalizace zpracování dotazu... 2 8.2. Postup optimalizace zpracování dotazu... 3 8.2.1. Implementace spojení... 5 8.2.2. Využití statistik databáze k odhadu ceny dotazu...11
Dolování z textu. Martin Vítek
Dolování z textu Martin Vítek Proč dolovat z textu Obrovské množství materiálu v nestrukturované textové podobě knihy časopisy vědeckéčlánky sborníky konferencí internetové diskuse Proč dolovat z textu
Princip funkce počítače
Princip funkce počítače Princip funkce počítače prvotní úlohou počítačů bylo zrychlit provádění matematických výpočtů první počítače kopírovaly obvyklý postup manuálního provádění výpočtů pokyny pro zpracování
IS pro podporu BOZP na FIT ČVUT
IS pro podporu BOZP na FIT ČVUT Závěrečná zpráva pro 2. iteraci 21. dubna 2011 Zadavatel: Ing. Jiří Chludil Řešitelský tým: Jiří Kopecký Jan Kratochvíl Milan Matějček Štefan Pinďák Kristýna Streitová Úvod
Náplň. v.0.03 16.02.2014. - Jednoduché příklady na práci s poli v C - Vlastnosti třídění - Způsoby (algoritmy) třídění
Náplň v.0.03 16.02.2014 - Jednoduché příklady na práci s poli v C - Vlastnosti třídění - Způsoby (algoritmy) třídění Spojení dvou samostatně setříděných polí void Spoj(double apole1[], int adelka1, double
Primární klíč (Primary Key - PK) Je právě jedna množina atributů patřící jednomu z kandidátů primárního klíče.
Primární a cizí klíč Kandidát primárního klíče (KPK) Je taková množina atributů, která splňuje podmínky: Unikátnosti Minimálnosti (neredukovatelnosti) Primární klíč (Primary Key - PK) Je právě jedna množina
Základy informatiky. 08 Databázové systémy. Daniela Szturcová
Základy informatiky 08 Databázové systémy Daniela Szturcová Problém zpracování dat Důvodem je potřeba zpracovat velké množství dat - evidovat údaje o nějaké skutečnosti. o skupině lidí (zaměstnanců, studentů,
Vyhledávání. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava. Prezentace ke dni 12.
Vyhledávání doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava Prezentace ke dni 12. září 2016 Jiří Dvorský (VŠB TUO) Vyhledávání 201 / 344 Osnova přednášky
Systém souborů (file system, FS)
UNIX systém souborů (file system) 1 Systém souborů (file system, FS)! slouží k uchování dat na vnějším paměťovém médiu a zajišťuje přístup ke struktuře dat! pro uživatele možnost ukládat data a opět je
VÝUKOVÝ MATERIÁL. Bratislavská 2166, 407 47 Varnsdorf, IČO: 18383874 www.vosassvdf.cz, tel. +420412372632 Číslo projektu
VÝUKOVÝ MATERIÁL Identifikační údaje školy Vyšší odborná škola a Střední škola, Varnsdorf, příspěvková organizace Bratislavská 2166, 407 47 Varnsdorf, IČO: 18383874 www.vosassvdf.cz, tel. +420412372632
Profitabilita klienta v kontextu Performance management
IBM Technical specialist team Pre Sale 26/10/2010 Profitabilita klienta v kontextu Performance management Co všechno řadíme do PM? Automatická data Běžný reporting Pokročilé statistické modely Včera What
PODOBÁ SE JAZYKU C S NĚKTERÝMI OMEZENÍMI GLOBÁLNÍ PROMĚNNÉ. NSWI162: Sémantika programů 2
PI JE JEDNODUCHÝ IMPERATIVNÍ PROGRAMOVACÍ JAZYK OBSAHUJE PODPORU ANOTACÍ NEOBSAHUJE NĚKTERÉ TYPICKÉ KONSTRUKTY PROGRAMOVACÍCH JAZYKŮ JAKO JSOU REFERENCE, UKAZATELE, GLOBÁLNÍ PROMĚNNÉ PODOBÁ SE JAZYKU C
MS Excel makra a VBA
Autor: RNDr. Obsah: MS Excel makra a VBA 1 Využití, ukázky, výhody a nevýhody... 2 2 Makra a zabezpečení... 2 2.1 Nastavení zabezpečení Excelu... 2 2.2 Uložení maker do sešitu a osobního sešitu maker...