Techniki indeksowania w eksploracji danych Maciej Zakrzewicz Instytut Informatyki Politechnika Poznańska Plan prezentacji Zastosowania indeksów w systemach baz danych Wprowadzenie do metod eksploracji baz danych: odkrywanie asocjacji odkrywanie ciągów Problemy wydajności algorytmów eksploracji danych Zastosowanie indeksów grupowych (sygnaturowych) do poprawy wydajności algorytmów Wyniki eksperymentalne Motywacje Zapotrzebowanie na szybką eksplorację danych (On-Line Data Mining) Dotychczasowe prace badawcze skupiały się na optymalizacji części obliczeniowej algorytmów eksploracji danych ([AIS9], [AS9], [FPS96b], [HF95], [MZ97], [SON95], [SA95], [Toiv96]) Tradycyjne zapytania bazodanowe są najskuteczniej optymalizowane przy pomocy indeksów Nie rozważano dotychczas stosowania indeksów dla potrzeb eksploracji danych Indeksy w bazach danych redukcja liczby operacji we/wy podczas realizacji zapytań; indeksy stanowią podstawę optymalizacji zapytań; rozmiar indeksu jest znacznie mniejszy od rozmiaru oryginalnej relacji indeks jest strukturą danych, która a priori materializuje pośrednie wyniki wykonywania zapytań w praktyce stosowanych jest wiele rodzajów indeksów: B-drzewa (jednowymiarowe warunki równościowe i nierównościowe), bitmapowe (jednowymiarowe warunki równościowe dla atrybutów o niskiej krotności), R-drzewa, Quad-drzewa (wielowymiarowe warunki równościowe i nierównościowe), materializowane perspektywy (zapytania złożone)
Klasyczne zastosowania indeksów Zastosowanie indeksów podczas realizacji zapytań: implementacja warunków selekcji, np. select nazwisko from pracownicy where pensja < ; implementacja operacji połączenia, np. select nazwisko, poj_silnika from pracownicy, samochody where pracownicy.nr_rej = samochody.nr_rej; implementacja operacji sortowania, np. select nazwisko from pracownicy order by pensja; realizacja kompletnego zapytania bez dostępu do relacji, np. select sum(pensja) from pracownicy; Eksploracja danych odkrywanie asocjacji Dane wejściowe: relacyjna baza danych zawierająca zbiory nieuporządkowane, np.: set_id item 7 7 5 7 {,7,,7} {,} {,5,7} Cel: znaleźć najczęściej występujące podzbiory, np. {}, {7}, {,7} zawierają się w 66% zbiorów Eksploracja danych w bazach danych Zapytania operacyjne (SQL): operacje połączenia relacji, selekcji krotek, projekcji atrybutów, agregacji, np. "wyświetl daty wszystkich sprzedaży towaru x" indeksy B-drzewa Zapytania analityczne (OLAP): data-cube, zwijanie, rozwijanie, wycinanie, obracanie, np. "porównaj sprzedaż towaru x ze sprzedażą towaru y, w zależności od pory roku i regionu" indeksy bitmapowe, materializowane perspektywy Zapytania eksploracyjne (Data Mining): odkrywanie asocjacji, sekwencji, modelu klasyfikacji, zgrupowań, np. "wyświetl wszystkie towary, których sprzedaż wpływa na sprzedaż towaru x"??? nisza badawcza Eksploracja danych odkrywanie ciągów Dane wejściowe: relacyjna baza danych zawierająca zbiory uporządkowane, np.: set_id ts item 7 7 5 7 7 7 5 7 Cel: znaleźć najczęściej występujące podciągi, np. 7 zawiera się w 66% ciągów
Schemat algorytmów odkrywania asocjacji i ciągów znalezienie najczęstszych asocjacji -elem. asocjacji -elementowych na podstawie znalezionych -elementowych weryfikacja najczęstszych asocjacji -elem. asocjacji -elementowych na podstawie znalezionych -elementowych weryfikacja najczęstszych asocjacji -elem.... Wykorzystanie indeksów do poprawy wydajności algorytmów Konieczność kompozycji znormalizowanych zbiorów indeks B-drzewo na identyfikatorach zbiorów (set_id) Wielokrotne pełne odczyty bazy danych Badanie zawierania się zbiorów Bardzo duży rozmiar bazy danych Problemy wydajnościowe algorytmów Konieczność kompozycji znormalizowanych zbiorów: krotki reprezentujące elementy jednego zbioru są zwykle rozproszone fizycznie Wielokrotne pełne odczyty bazy danych: liczba odczytów jest zależna od maksymalnej długości odkrytych asocjacji/ciągów Badanie zawierania się zbiorów: każda potencjalnie częsta asocjacja/ciąg musi być sprawdzona względem każdego zbioru bazowego Bardzo duży rozmiar bazy danych: w praktyce setki tysięcy lub miliony zbiorów bazowych Własności indeksów grupowych (sygnaturowych) Służą do optymalizacji problemu zawierania podzbiorów: "znajdź wszystkie zbiory bazowe, które zawierają podany podzbiór" Stosują haszową bitową reprezentację zbiorów; ich rozmiar jest znacząco mniejszy od rozmiaru oryginalnej bazy danych (np. 8MB baza danych MB indeks grupowy) Umożliwiają znalezienie nadzbioru poprawnego wyniku: wymagana jest wtórna weryfikacja, eliminująca fałszywe wyniki
Tworzenie indeksu grupowego (sygnaturowego) dla zbiorów nieuporządkowanych baza danych set_id item 7 7 5 7 sygnatury Właściwość sygnatur: "Jeżeli sygnatura(x) AND sygnatura(y) = sygnatura(x), to X Y " Twierdzenie odwrotne nie jest prawdziwe Zastosowanie indeksów grupowych znalezienie najczęstszych asocjacji -elem. asocjacji -elementowych na podstawie znalezionych -elementowych weryfikacja najczęstszych asocjacji -elem. asocjacji -elementowych na podstawie znalezionych -elementowych weryfikacja najczęstszych asocjacji -elem.... Tworzenie indeksu grupowego (sygnaturowego) dla zbiorów uporządkowanych uporządkowanie 7 7 7 7 7 7 sygnatura uporządkowania (su) baza danych set_id ts item 7 7 5 7 zawartość sygnatura zawartości (sz) Właściwość sygnatur: "Jeżeli sz(x) AND sz(y) = sz(x) oraz su(x) AND su(y) = su(x) to ciąg Y zawiera ciąg X" Twierdzenie odwrotne nie jest prawdziwe Obserwacje pracy algorytmu Pierwsza iteracja algorytmu: powinna być wykonana na oryginalnej bazie danych w celu redukcji propagacji fałszywych wyników Indeks grupowy nie musi wcześniej istnieć może zostać dynamicznie utworzony podczas pierwszej iteracji Niektóre iteracje powinny wykorzystywać oryginalną bazę danych w celu redukcji propagacji fałszywych wyników nadmiar fałszywych wyników zwiększa konsumpcję pamięci operacyjnej i zmniejsza wydajność kroku weryfikacji Wynik końcowy musi zostać zweryfikowany w oparciu o oryginalną bazę danych
Implementacja algorytmu Średni rozmiar zbiorów 5 elementów (z 5) Sztucznie wygenerowany zbiór danych, parametry rozkładu statystycznego jak w innych pracach, (IBM GEN) Zbiór danych symuluje dziennik dostępów do serwera WWW Dane w bazie danych Oracle8i (Pentium II MHz, 8 MB RAM) Algorytm zaimplementowany po stronie klienta (Pentium II MHz, 8 MB RAM) Implementacja w C++ Czas wykonania algorytmu 8 6 execution time [s] Rozmiar wyników pośrednich Ha s h-mine (s ta rt a t ) 5 Apriori 5 5 5 6 7 8 9 iteratio n Apriori (7 s c a ns ) Ha s h-mine ( s c a ns ) Ha s h-mine ( s c a ns ) 5 6 database size (#itemsets) Podsumowanie Indeksy grupowe umożliwiają poprawę wydajności algorytmów eksploracji danych poprzez: redukcję rozmiaru bazy danych automatyczną kompozycję znormalizowanych zbiorów skrócenie czasu badanie zawierania zbiorów Problemy stosowania indeksów grupowych: konieczność końcowej weryfikacji wyniku propagacja fałszywych wyników (pamięć, przetwarzanie) Plany badawcze: odkrywanie skupień i klasyfikatorów w oparciu o indeksy grupowe automatyczna optymalizacja zapytań eksploracyjnych (w jakich przypadkach i w których iteracjach korzystać z indeksów) number of frequent itemsets