PRACA DYPLOMOWA INŻYNIERSKA Piotr Maciej Dziewicki
Rozbudowa systemu KTDA
Ocena ...………
...………...
Podpis Przewodniczącego Komisji Egzaminu Dyplomowego
Opiekun pracy:
doc. dr inż. Roman Podraza
Data urodzenia: 1992.04.10
Data rozpoczęcia studiów: 2011.10.01
Życiorys
Urodziłem się 10 kwietnia 1992 r. w Lublinie. Po ukończeniu szkoły podstawowej i gimnazjum, kontynuowałem edukację w I Liceum Ogólnokształczącym im. Stanisława Staszica w Lublinie w klasie o profilu matematycznofizycznoinformatycznym. W październiku 2011 r.
rozpocząłem studia pierwszego stopnia na kierunku Informatyka na wydziale Elektroniki i Technik Informacyjnych Politechniki Warszawskiej.
Od września 2013 r. do czerwca 2014 r. brałem udział w programie podwójnego dyplomowania KEUDOS, studiując na Kyungpook National University w Daegu, w Korei Południowej.
………...…..…..
Podpis studenta
EGZAMIN DYPLOMOWY
Złożył egzamin dyplomowy w dniu ………..
z wynikiem ………
Ogólny wynik studiów: ……….
Dodatkowe wnioski i uwagi Komisji: ………..
………..
System KTDA jest oprogramowaniem służącym do przeprowadzania badań z dziedziny analizy wiarygodności danych. Za jego pomocą możliwe staje się oszacowanie wiarygodności poszczególnych rekordów rozważanego zbioru danych, poprzez wyznaczenie współczynników wiarygodności dla każdego z nich.
W szczególności system korzysta z wyłaniających wzorców do wyznaczania wspomnianych współczynników wiarygodności. W niniejszej pracy został zaprezentowany proces rozbudowy rzeczonego systemu.
W poczet podjętych starań wchodzi dodanie brakujących funkcji dotyczących operacji na wyłaniających wzorcach oraz migracja do najnowszych wersji bibliotek użytych w pierwotnej wersji programu.
Słowa kluczowe: system KTDA, wiarygodność danych, analiza
wiarygodności danych, współczynnik wiarygodności, wyłaniające wzorce
ABSTRACT Title: Extension of KTDA system
KTDA system is a software used to conduct research in the field of credibility analysis. With its help it is possible to estimate credibility of individual records of considered data set, by determining credibility coefficients for each of them. In particular, system uses emerging patterns to determine aforementioned credibility coefficients. The thesis presents extension process of KTDA system. Undertaken efforts include adding missing features related to operations on emerging patterns and migration to the latest version of the libraries used in original software version.
Keywords: KTDA system, data credibility, credibility analysis, credibility coefficient, emerging patterns
1. Wstęp...6
1.1. Przedmowa...6
1.2. Wprowadzenie...6
1.3. Zawartość merytoryczna...8
2. Wprowadzenie do dziedziny...10
2.1. Wyłaniające wzorce...10
2.1.1. Wsparcie wzorca...11
2.1.2. Współczynnik wzrostu wzorca...11
2.2. Analiza wiarygodności danych...12
2.3. Współczynnik wiarygodności...13
2.3.1. Metoda statystycznoczęstotliwościowa...14
2.3.2. Metoda oparta na przybliżeniach klas decyzyjnych...15
2.3.3. Metoda zbiorów częstych...17
2.3.4. Metoda reguł decyzyjnych...18
3. Możliwości istniejącego systemu...21
3.1. Zbiór danych...21
3.2. System decyzyjny...22
3.3. Wyłaniające wzorce...22
3.4. Klasyfikacja...22
3.5. Współczynniki wiarygodności...23
4. Specyfikacja wymagań...24
4.1. Aktorzy systemu...24
4.2. Wymagania funkcjonalne...24
4.3. Wymagania niefunkcjonalne...27
5. Architektura systemu...28
5.1. Początkowa struktura programu...28
5.2. Architektura trójwarstwowa...30
5.3. Wprowadzone zmiany...31
6. Implementacja rozwiązania...33
6.1. Uruchomienie programu...33
6.2. Zmiana generatora liczb pseudolosowych...34
6.3. Dodanie nowych funkcji...36
7. Technologie i narzędzia...37
7.1. Code::Blocks...37
7.2. Git...38
7.3. Biblioteka wxWidgets...39
7.4. Biblioteka Newmat...39
Bibliografia...49
1.1. Przedmowa
Dokument ten powstał w ramach pracy dyplomowej inżynierskiej, złożonej po wypełnieniu wszystkich wymagań studiów stacjonarnych pierwszego stopnia na kierunku Informatyka, specjalizacja Inżynieria Systemów Informatycznych na Wydziale Elektroniki i Technik Informacyjnych Politechniki Warszawskiej. Stanowi on podsumowanie pracy wykonanej przez autora od lutego do września 2015 r. pod opieką doc. dr inż. Romana Podrazy z Instytutu Informatyki. Tematem pracy jest rozbudowa istniejącego systemu KTDA, służącego do prowadzenia badań z zakresu eksploracji danych, a ściślej analizy wiarygodności danych.
1.2. Wprowadzenie
Eksploracja danych (ang. data mining) jest dynamicznie rozwijającą się gałęzią informatyki. Dziedzina ta w połączeniu z technikami sztucznej inteligencji daje nam możliwość budowania systemów, które mogą wspomagać człowieka w rozwiązywaniu złożonych problemów. Tego typu systemy (nazywane również systemami eksperckimi bądź systemami wnioskującymi) są szczególnie atrakcyjne, w przypadku gdy skala oraz stopień złożoności problemu przekracza ludzkie możliwości.
Wnioskowanie może odbywać się jedynie na wiarygodnych danych.
W przypadku niespełnienia tego warunku nie można mieć pewności co do poprawności odkrytej wiedzy i wysnutych wniosków. W celu zapewnienia wiarygodnych danych stosuje się różne metody.
W systemach bazodanowych wykorzystuje się więzy integralności.
W systemach hurtowego przetwarzania danych rolę tę pełni metoda czyszczenia danych. Ponadto same metody eksploracji danych potrafią wykrywać często występujące wzorce, aby na tej podstawie minimalizować wpływ danych niewiarygodnych (przy spełnionym założeniu, że dane te pozostają w mniejszości). Niestety metody te zawodzą w pewnych sytuacjach. Nie wszystkie dane niepoprawne udaje się zidentyfikować lub niedopuszczalne jest usunięcie niektórych rekordów. Pożądanym byłoby dysponowanie systemem potrafiącym zweryfikować wiarygodność dostarczonych danych. Dodatkowo taki system mógłby wykrywać dane nietypowe lecz poprawne. Uwagę eksperta warto zwrócić na oba te przypadki. Ich dalsze badanie pozwoli zdobyć interesującą wiedzę na temat dziedziny problemu.
W 2005 r. z problemem tym zmierzył się Krzysztof Tomaszewski w ramach swojej pracy magisterskiej. W rozprawie wnikliwie omawia proces analizy wiarygodności danych i proponuje nowe podejścia do rozpatrywanego zagadnienia. Jednym z nich jest wykorzystanie wyłaniających wzorców w procesie analizy.
Następstwem wspomnianej pracy jest powstanie systemu KTDA.
Narzędzie to zostało przystosowane do przeprowadzania eksperymentów związanych z analizą wiarygodności. Oprogramowanie udostępnia szereg funkcji poprzez wygenerowanie syntetycznego zbioru danych, odkrycie wyłaniających wzorców, aż wreszcie obliczenie współczynników wiarygodności.
System KTDA został praktycznie wykorzystany w pracy [8].
Wyłaniające wzorce zostały użyte w procesie klasyfikacji związków chemicznych. Wszystkie eksperymenty przeprowadzono stosując rzeczony system. Podczas trwania badań autorom udało się obnażyć niedociągnięcia w konstrukcji programu. Planując wykorzystanie systemu w przyszłości oraz chcąc zwiększyć efektywność swojej pracy przygotowali sugestie poprawek, które można by wprowadzić do kolejnej wersji oprogramowania. Lista została przedłożona doc. dr inż. Romanowi Podrazie z Instytutu Informatyki.
Modernizacja istniejącego systemu oraz dodanie brakujących funkcji stanowi główny temat tej pracy.
1.3. Zawartość merytoryczna
Tekst pracy został podzielony na dziewięć rozdziałów, kolejno są nimi:
Wstęp.
Wprowadzenie do dziedziny.
Możliwości istniejącego systemu.
Specyfikacja wymagań.
Architektura systemu.
Implementacja rozwiązania.
Technologie i narzędzia.
Przykłady użycia.
Podsumowanie.
Wstęp stanowi pierwszy rodział niniejszej pracy. Znajduje się w nim krótka przedmowa, wprowadzenie do tematu oraz lapidarny opis zawartości merytorycznej dokumentu.
Rozdział drugi jest wprowadzeniem do dziedziny problemu. Zostały w nim opisane wyłaniające wzorce jako narzędzie eksploracji danych umożliwiające reprezentację wieloatrybutowych kontrastów pomiędzy dwoma zbiorami obiektów. Ponadto zaprezentowany został proces jakim jest analiza wiarygodności danych oraz przedstawiono definicję współczynnika wiarygodności.
Rozdział trzeci w zwięzły sposób przedstawia możliwości istniejącego systemu. Wszystkie dostępne funkcje zostały podzielone na kategorie ze względu na część systemu, której dotyczą oraz zestawione w postaci listy.
Rozdział czwarty zawiera specyfikację wymagań.
Zademonstrowano w nim wymagania stawiane rozbudowanemu systemowi. Zgodnie z metodyką inżynierii oprogramowania wymagania podzielono na funkcjonalne i niefunkcjonalne.
W rozdziale piątym została szczegółowo opisana architektura systemu KTDA, pierwotnie zaproponowana przez twórcę. Następnie zawarto przekrojowy zarys architektury trójwarstwowej w kontekście
zalet, które oferuje aplikacjom projektowanym zgodnie z tą koncepcją.
Rozdział kończy się sprawozdaniem obejmującym swą treścią wykaz zmian wprowadzonych przez autora, w celu przybliżenia wyjściowej struktury programu do postulowanej przez powszechnie stosowany wzorzec architektoniczny MVC.
Rozdział szósty w całości traktuje o wyzwaniach, z którymi zmierzył się autor podczas rozbudowy istniejącego systemu. Wymieniono w nim podjęte decyzje na temat sposobu rozwiązania problemów poruszanych w tej pracy oraz szczegóły implementacji dodatkowych funkcji programu.
Rozdział siódmy został poświęcony ogólnemu przeglądowi technologii i narzędzi użytych podczas projektowania i implementacji zmodernizowanego systemu. Charakterystyki poszczególnych pozycji obejmują również motywację towarzyszącą autorowi podczas wyboru każdej z nich.
W rozdziale ósmym zilustrowano przykłady użycia systemu.
Niniejsza sekcja może posłużyć jako swoisty podręcznik użytkownika.
Rozdział dziewiąty stanowi spójne podsumowanie zrealizowanej pracy.
W rozdziale tym znajduje się wprowadzenie do wiedzy dziedzinowej z zakresu eksploracji danych oraz procesu analizy wiarygodności danych. W kolejnych podrozdziałach znajdują się definicje i przykłady takich pojęć jak:
wyłaniające wzorce;
analiza wiarygodności danych;
współczynnik wiarygodności.
Ponadto rozdział został uzupełniony o opisy najpopularniejszych metod wyznaczania współczynników wiarygodności, popartych odpowiednimi i prostymi przykładami.
2.1. Wyłaniające wzorce
Pojęcie wyłaniających wzorców (ang. emerging patterns) zostało przedstawione w pracy [6]. Za jego pomocą można określić kontrast pomiędzy dwoma zbiorami obiektów. Te cechy, którymi odznaczają się obiekty jednego z tych zbiorów znacznie częściej niż drugiego, są nazywane wyłaniającym wzorcem.
Zważając na fakt, że w większości zbiorów danych liczba wyłaniających wzorców jest ogromna, w pracy [6] skupiono się na odkrywaniu tylko tych, których współczynnik wzrostu jest wyższy od pewnego progu liczbowego.
2.1.1. Wsparcie wzorca
Wsparcie (ang. support) wzorca w systemie informacyjnym definiuje się jako:
gdzie oznacza liczbę obiektów ze zbioru pasujących do wzorca , natomiast to liczność zbioru . Innymi słowy wsparcie wzorca to częstość występowania pasujących do niego obiektów.
2.1.2. Współczynnik wzrostu wzorca
Niech będzie uporządkowaną parą systemów informacyjnych opisywanych za pomocą tego samego zbioru atrybutów.
Współczynnik wzrostu wzorca z do definiuje się jako:
Przykład 2.1. Poniżej przedstawiono dwa wyłaniające wzorce odkryte w zbiorze danych grzybów z repozytorium UCI [7] i opublikowane w pracy [6]:
X = {zapach=żaden, rozmiar blaszek=szerokie, liczba pierścieni=1}
Y = {sinieje=nie, rozmieszczenie blaszek=ścisłe, kolor osłony=biały}
wzorzec wsparcie w kat.
„trujące” wsparcie w kat.
„jadalne” współczynnik wzrostu
X 0% 63,9% ∞
Y 81,4% 3,8% 21,4
Tabela 2.1. Wyłaniające wzorce.
Posługując się tabelą 2.1 można zauważyć, że wzorzec występuje wyłącznie wśród grzybów jadalnych, natomiast wzorzec jest o wiele bardziej charakterystyczny dla grzybów trujących. Współczynnik wzrostu określa ile razy częściej wyłaniający wzorzec występuje w kategorii, do której należy.
2.2. Analiza wiarygodności danych
Analiza wiarygodności danych jest procesem, w którym szacuje się wiarygodność poszczególnych obiektów badanego zbioru danych. Jej celem jest wykrycie tych rekordów, których wiarygodność jest wątpliwa.
W efekcie zidentyfikowane obiekty mogą być pozostawione bez zmian, poprawione bądź usunięte ze zbioru danych.
Do przeprowadzenia analizy wiarygodności danych wymagana jest znajomość dziedziny problemu. Warunek ten spełnia ekspert z danej dziedziny. Może on wykonać to zadanie samodzielnie, natomiast nie jest to rozwiązanie automatyczne. Inną możliwością jest implementacja systemu wykorzystującego uprzednio spisaną wiedzę eksperta. Niestety to rozwiązanie również nie jest doskonałe z uwagi na fakt, iż właściwa reprezentacja wiedzy eksperckiej w systemie komputerowym jest problemem samym w sobie.
Do wykonania w pełni automatycznej analizy wiarygodności potrzeba narzędzia, które "pozna" dziedzinę na podstawie dostarczonych przypadków, a w kolejnym kroku wskaże te elementy, które mogą być niepoprawne. Podejście to zakłada, że w analizowanym zbiorze danych przeważają rekordy poprawne. Wynikiem tej metody jest ocena wiarygodności dla każdego obiektu z badanego systemu informacyjnego.
Niewątpliwą zaletą takiego rozwiązania jest jego uniwersalność, co pozwala na szerokie zastosowanie narzędzia, niezależnie od dziedziny.
W pracy [1] autor wyjaśnia, że niemożliwym jest, aby ocena wiarygodności uzyskana w wyniku działania tak opisanego systemu (tj.
bez wsparcia wiedzy eksperta), była oceną bezwzględną. W tym celu wprowadza się współczynnik wiarygodności, pozwalający uszeregować obiekty zgodnie z rosnącą oszacowaną wiarygodnością.
2.3. Współczynnik wiarygodności
Współczynnik wiarygodności (ang. credibility coefficient) określa się jako liczbę rzeczywistą z przedziału [0, 1], gdzie 0 oznacza najmniejszą, natomiast 1 największą możliwą do uzyskania ocenę wiarygodności. Tym samym im bliższa jedności jest wartość współczynnika wiarygodności dla danego obiektu, tym wyżej ocenia się jego wiarygodność. Jest to ocena względna, związana z kontekstem całego zbioru danych. Dowolna modyfikacja tego zbioru, z wysokim prawdopodobieństwem doprowadzi do zmiany wartości współczynnika.
Istnieje szereg metod wyznaczania współczynników wiarygodności.
Należy przy tym pamiętać, że współczynniki wyznaczane różnymi metodami są między sobą nieporównywalne. Nie istnieje ogólna interpretacja współczynnika, tj. nie można traktować wartości współczynnika jako prawdopodobieństwa tego, czy dany obiekt jest wiarygodny czy też nie. Poza zakresem wartości na współczynnik wiarygodności nie nakłada się żadnych warunków.
Poniżej zaprezentowano podstawowe metody wykorzystywane podczas wyznaczania współczynników wiarygodności. Do tego celu posłużono się przykładowym systemem decyzyjnym z atrybutem decyzyjnym Grypa zaczerpniętym z pracy [2]:
Pacjent Ból głowy Ból mięśni Temperatura Grypa (kat.)
1 nie tak wysoka tak
2 tak nie wysoka tak
3 tak tak b. wysoka tak
4 nie tak b. wysoka tak
5 tak nie wysoka nie
6 nie tak normalna nie
Tabela 2.2. Przykładowy system decyzyjny.
2.3.1. Metoda statystyczno-częstotliwościowa
W metodzie statystycznoczęstotliwościowej zaproponowanej w pracy [2] wyznaczenie współczynnika wiarygodności polega na zliczeniu obiektów należących do tej samej klasy decyzyjnej co badany obiekt. Współczynnik jest tym większy, im więcej obiektów posiada te same wartości poszczególnych atrybutów, co aktualnie rozpatrywany obiekt.
Przykład 2.2. Wyznaczmy współczynnik wiarygodności dla obiektu 1 z tabeli 2.2:
Należy uwzględnić obiekty należące do tej samej kategorii (”Grypa
= tak”), co obiekt 1. Są 3 takie obiekty: 2, 3 i 4.
W następnym kroku procedury rozważamy po kolei wszystkie pozostałe atrybuty znalezionych rekordów, porównując ich wartości z obiektem, dla którego chcemy wyznaczyć współczynnik wiarygodności.
W ten sposób:
1. Dla atrybutu ”Ból głowy”:
1 spośród 3 rozważanych obiektów ma wartość atrybutu zgodną z obiektem 1. Licznik zwiększamy o .
2. Dla atrybutu ”Ból mięśni”:
2 spośród 3 rozważanych obiektów mają wartość atrybutu zgodną z obiektem 1. Licznik zwiększamy o .
3. Dla atrybutu ”Temperatura”:
1 spośród 3 rozważanych obiektów ma wartość atrybutu zgodną z obiektem 1. Licznik zwiększamy o .
Ostatecznie wartość licznika należy podzielić przez ilość atrybutów:
Wartość współczynnika wiarygodności dla obiektu 1 z systemu decyzyjnego z tabeli 2.2 wyznaczonego metodą statystyczno
częstotliwościową wynosi 0,44.
Zaprezentowana metoda cechuje się prostotą, a co za tym idzie niską złożonością obliczeniową. Znajduje zastosowanie jedynie dla atrybutów dyskretnych, natomiast nie stawia wymogu na wyróżnienie kategorii w badanym zbiorze danych.
2.3.2. Metoda oparta na przybliżeniach klas decyzyjnych
Metoda oparta na przybliżeniach klas decyzyjnych bazuje na teorii zbiorów przybliżonych. Dokładny opis pojęć wykorzystywanych w tej teorii znajduje się w pracach [4] i [5]. W szczególności użyte zostaną pojęcia obiektu konfliktowego i obiektu niekonfliktowego względem danej kategorii oraz obszaru pozytywnego i obszaru negatywnego zbioru przybliżonego obiektów tej kategorii.
Algorytm opiera się na założeniu, że obiekty niekonfliktowe powinny wyróżniać się wyższymi wartościami współczynnika
wiarygodności niż obiekty konfliktowe. Należy rozważyć wszystkie wyróżnione kategorie w kontekście analizowanego obiektu. Kategoria, względem której obiekt jest niekonfliktowy, zwiększa licznik dla tego obiektu o 1. W przeciwnym wypadku licznik zostaje zwiększony o wartość wyliczoną w podobny sposób jak w metodzie statystyczno
częstotliwościowej, jednak uwzględniając przy tym obszary pozytywne i negatywne danej klasy decyzyjnej, w odróżnieniu od przynależności obiektów do tej samej kategorii co badany obiekt.
Przykład 2.3. Zbiór przybliżony kategorii (”Grypa = tak”) tworzą obiekty {1, 2, 3, 4}. Brzegiem tego zbioru są obiekty 2, 5, ponieważ są między sobą nierozróżnialne względem dostępnych atrybutów warunków oraz należą do innych klas decyzyjnych.
Wyznaczmy współczynnik wiarygodności dla obiektu 2 z tabeli 2.2:
1. Dla kategorii (”Grypa = tak”):
Obiekt 2 jest konfliktowy i należy do kategorii, wobec tego do obliczeń wykorzystujemy obszar pozytywny (obiekty {1, 3, 4}) analizowanej kategorii. Licznik zwiększamy o:
2. Dla kategorii (”Grypa = nie”):
Obiekt 2 jest konfliktowy i nie należy do kategorii, wobec tego do obliczeń wykorzystujemy obszar negatywny (obiekty {1, 3, 4}) analizowanej kategorii. Licznik zwiększamy o:
Ostatecznie należy dokonać normalizacji, tj. podzielić wartość tymczasowego licznika przez ilość rozróżnianych kategorii:
Wartość współczynnika wiarygodności dla obiektu 2 z systemu decyzyjnego z tabeli 2.2 wyznaczonego metodą opartą na przybliżeniach klas decyzyjnych wynosi 0,22.
Łatwo zauważyć, że przedstawiona metoda ma sens jedynie w przypadku analizy zbioru danych, w którym występuje więcej niż jedna kategoria. W przeciwnym razie wyznaczenie współczynników wiarygodności nie prowadzi do uzyskania żadnej wiedzy. Podobnie jak poprzednio, metoda daje się zastosować wyłącznie do atrybutów dyskretnych.
2.3.3. Metoda zbiorów częstych
Metoda zbiorów częstych jest pierwszą metodą wyznaczania współczynników wiarygodności wykorzystującą w pełni takie dziedziny wiedzy jak eksploracja danych i odkrywanie wiedzy. Została ona dokładnie opisana w pracy [3].
Wartość wyznaczonego tą metodą współczynnika wiarygodności jest powiększana przez każdy wzorzec, do którego pasuje dany obiekt.
Wartość zwiększa się o tzw. czynnik przynależności, tj. stosunek obiektów pasujących do wzorca oraz należących do tej samej kategorii co on, do ilości wszystkich obiektów pasujących do tegoż wzorca.
Przykład 2.4. Wyznaczmy współczynnik wiarygodności dla obiektu 1 z tabeli 2.2. Niech zbiorami częstymi dla tego systemu będą:
"Ból mięśni = tak"
"Temperatura = wysoka"
Długość obu wzorców wynosi 1 i do obu pasuje analizowany obiekt. Teraz:
1. Dla wzorca "Ból mięśni = tak":
Czynnik przynależności podzielony przez jego długość wynosi .
Zwiększamy współczynnik badanego obiektu o tę wartość.
2. Dla wzorca "Temperatura = wysoka":
Czynnik przynależności podzielony przez jego długość wynosi . Zwiększamy współczynnik badanego obiektu o tę wartość.
Następnie należy przeskalować wartość współczynnika wiarygodności przez liczbę wszystkich pasujących wzorców do danego obiektu:
Ostatnim krokiem procedury jest podzielenie wartości współczynnika przez wartość największego wyznaczonego współczynnika wiarygodności, dla któregoś z obiektów z rozważanego zbioru danych.
Załóżmy, że ta wartość to 0,9:
Ostatecznie, przy przyjętych założeniach, wartość współczynnika wiarygodności dla obiektu 2 z systemu decyzyjnego z tabeli 2.2 wyznaczonego metodą zbiorów częstych wynosi 0,79.
Opisana metoda zbiorów częstych bezpośrednio nie nakłada ograniczeń na typ atrybutów. Warto jednak zwrócić uwagę na fakt, iż wartości wyznaczonych współczynników ściśle zależą od postaci kolekcji zbiorów częstych, którą to trzeba określić przed zastosowaniem metody.
2.3.4. Metoda reguł decyzyjnych
W metodzie reguł decyzyjnych również wykorzystuje się wcześniej zdobytą wiedzę na temat analizowanego zbioru danych. Reprezentacją tej wiedzy jest kolekcja tzw. reguł decyzyjnych. Reguła decyzyjna składa się z poprzednika (wzorca) oraz następnika (decyzji) reguły.
Przykład 2.5. Przeanalizujmy przykładową regułę decyzyjną:
”Temperatura = b. wysoka” ”Grypa = tak”⇒
Takie stwierdzenie można interpretować jako przekonanie, że jeśli dany obiekt pasuje do wzorca występującego w poprzedniku (tutaj:
obecność bardzo wysokiej temperatury) to również słuszna jest dla niego decyzja zapisana w następniku (w tym przypadku: wystąpienie grypy).
Dodatkowo określa się zaufanie reguły, czyli stosunek liczby obiektów pasujących do poprzednika i następnika, do liczby obiektów zgodnych tylko z poprzednikiem.
Metoda reguł decyzyjnych polega na tym, aby dla analizowanego obiektu obniżać współczynnik wiarygodności o wartość średniego zaufania niezgodnych z nim reguł. Wartość współczynnika dla obiektów zgodnych ze wszystkimi regułami jest maksymalna i wynosi 1. Zostało to dokładnie opisane w pracy [3].
Przykład 2.6. Wyznaczmy współczynnik wiarygodności dla obiektu 1 z tabeli 2.2. Załóżmy, że zbiór reguł decyzyjnych wraz z ich hipotetycznym zaufaniem przedstawia tabela 2.3:
reguła zaufanie
a) ”Temperatura = b. wysoka” ”Grypa = tak”⇒ 100%
b) ”Ból mięśni = tak” ”Grypa = tak”⇒ 75%
c) ”Ból głowy = nie” ”Grypa = nie”⇒ 33%
Tabela 2.3. Przykładowe reguły decyzyjne.
Algorytm rozpoczynamy od poszukiwania reguł takich, że poprzednik pasuje do badanego obiektu, natomiast jej następnik jest z nim niezgodny:
1. Reguła a):
Poprzednik reguły nie pasuje do analizowanego obiektu
pomijamy.
2. Reguła b):
Poprzednik reguły pasuje do analizowanego obiektu, ale jej następnik jest zgodny z obiektem pomijamy.
3. Reguła c):
Poprzednik reguły pasuje do analizowanego obiektu i jej następnik jest zgodny z obiektem. Zwiększamy licznik reguł o 1, a do sumatora dodajemy zaufanie znalezionej reguły .
W momencie, gdy wyczerpaliśmy zbiór reguł obliczamy średnie zaufanie reguł, dla których obiekt pasuje do wzorca, ale jest niezgodny z decyzją Ostatecznie wartość współczynnika wiarygodności dla obiektu 1 z systemu decyzyjnego z tabeli 2.2 wyznaczamy jako:
System KTDA jest narzędziem do przeprowadzania analizy wiarygodności danych opartej na wyłaniających wzorcach. Przy jego pomocy możliwym staje się wygenerowanie syntetycznego zbioru danych, a następnie odkrywanie wyłaniających wzorców. Tak wykreowane wyłaniające wzorce mogą w dalszym ciągu posłużyć do klasyfikacji danych na ich podstawie.
W bieżącym rodziale przedstawiono kompleksowy spis funkcji programu, zaimplementowanych przez pierwszego autora systemu.
Kolejne podrozdziały dzielą dostępne funkcje na spójne jednostki tematyczne.
3.1. Zbiór danych
W podrozdziale znajduje się lista dostępnych operacji dotyczących zbioru danych:
wygenerowanie syntetycznego zbioru danych;
wczytanie zbioru danych z pliku. Dostępne formaty tekstowe:
ARFF,
DATA,
CSV (ang. comma separated value),
TAB;
przeglądanie zbioru danych wraz z histogramami ilustrującymi rozkład wartości poszczególnych atrybutów;
zapis zbioru danych do pliku w formacie ARFF.
3.2. System decyzyjny
W podrozdziale znajduje się lista dostępnych operacji dotyczących systemu decyzyjnego:
definiowanie systemu decyzyjnego poprzez wskazanie atrybutu decyzyjnego z wybranego zbioru danych;
dodanie do wskazanego systemu decyzyjnego wygenerowanych w sposób pseudolosowy fałszywych obiektów o zadanych parametrach;
przeprowadzenie doświadczenia z wykrywaniem dodanych, fałszywych obiektów;
zapis zbioru danych do pliku w formacie ARFF.
3.3. Wyłaniające wzorce
W podrozdziale znajduje się lista dostępnych operacji dotyczących wyłaniających wzorców:
odkrywanie wyłaniających wzorców z wybranego systemu decyzyjnego jedną z dwóch dostępnych metod:
metoda z użyciem maksymalnych częstych zbiorów,
metoda z użyciem drzewa decyzyjnego;
przeglądanie odkrytych wyłaniających wzorców wraz z ich parametrami;
eksport wyłaniających wzorców do pliku tekstowego.
3.4. Klasyfikacja
W podrozdziale znajduje się lista dostępnych operacji dotyczących procesu klasyfikacji:
wyznaczenie klasyfikatora CAEP;
przeprowadzenie klasyfikacji za pomocą algorytmu CAEP;
przeglądanie wyniku klasyfikacji.
3.5. Współczynniki wiarygodności
W podrozdziale znajduje się lista dostępnych operacji dotyczących współczynników wiarygodności:
wyznaczenie współczynników wiarygodności;
przeglądanie wyznaczonych współczynników wiarygodności w jednym z dwóch trybów:
z zaznaczonymi obiektami, których współczynnik wiarygodności jest mniejszy lub równy od pewnej zadanej wartości,
z zaznaczonymi obiektami o najmniejszych współczynnikach wiarygodności.
Niniejszy rozdział przedstawia wymagania stawiane rozbudowanemu systemowi. Zostały one podzielone na dwie kategorie (wymagania funkcjonalne i niefunkcjonalne), tj. w sposób standardowy w przypadku realizacji projektów informatycznych.
4.1. Aktorzy systemu.
W rolę aktora systemu może wcielić się pracownik naukowy bądź student chcący przeprowadzić badania z zakresu eksploracji danych i analizy wiarygodności danych. Oprogramowanie dostarcza użytkownikowi szereg przydatnych funkcji umożliwiających wygenerowanie zbioru danych, a następnie wykonanie na nim licznych eksperymentów i symulacji.
4.2. Wymagania funkcjonalne
Podrozdział ten zawiera zbiór wymagań funkcjonalnych, które powinien spełniać rozbudowany system KTDA. Każda z pozycji została opatrzona zwięzłym opisem i odpowiadającym jej przypadkiem użycia.
1. Zapis odkrytych wyłaniających wzorców.
System umożliwia zapis odkrytych wyłaniających wzorców w formacie ARFF. Poprzednia wersja programu udostępniała jedynie zapis w formie raportu tekstowego, lecz była to postać nie nadająca się do wtórnego przetwarzania.
Przypadek użycia 4.1. Zapis odkrytych wyłaniających wzorców.
Zakładamy, że zbiór danych został uprzednio wczytany z pliku bądź wygenerowany w programie.
Scenariusz główny:
1. Użytkownik wybiera opcję "Utwórz system decyzyjny".
2. System wyświetla okno dialogowe "Tworzenie systemu decyzyjnego".
3. Użytkownik wybiera atrybut decyzyjny.
4. System tworzy obiekt "System decyzyjny".
5. Użytkownik wybiera opcję "Odkryj wyłaniające wzorce".
6. System wyświetla okno dialogowe "Konfiguracja algorytmu"
w zależności od wybranej metody.
7. Użytkownik wprowadza parametry metody.
8. System tworzy obiekt "Wyłaniające wzorce".
9. Użytkownik wybiera opcję "Zapisz do pliku ARFF".
10. Obiekt "Wyłaniające wzorce" zostaje zapisany do pliku o formacie ARFF.
2. Wczytanie uprzednio odkrytych wyłaniających wzorców.
Użytkownik chcąc wykonać eksperyment na innym zbiorze danych może wczytać kolekcję wyłaniających wzorców odkrytych w poprzedniej sesji działania programu.
Przypadek użycia 4.2. Wczytanie uprzednio odkrytych wyłaniających wzorców. Zakładamy, że system decyzyjny jest dany.
Scenariusz główny:
1. Użytkownik wybiera opcję "Wczytaj wyłaniające wzorce".
2. System wyświetla okno "Wybór pliku".
3. Użytkownik wybiera plik z definicją wyłaniających wzorców.
4. System tworzy obiekt "Wyłaniające wzorce".
Scenariusz alternatywny:
13. Jak w scenariuszu głównym.
4. Jeżeli format pliku jest niepoprawny to system wyświetla stosowny komunikat.
5. Powrót do głównego okna programu.
3. Możliwość manualnego wyboru wyłaniających wzorców użytych w dalszym procesie analizy.
Po etapie odkrywania wyłaniających wzorców użytkownik ma możliwość wyboru, które spośród nich zostaną użyte w kolejnej fazie analizy wiarygodności danych. Interakcja z systemem odbywa się poprzez okno dialogowe, wypełnione polami wyboru reprezentującymi odkryte wzorce. Poprzednia wersja programu nie przewidywała takiej elastyczności. Domyślnie wszystkie pola są zaznaczone.
Przypadek użycia 4.3. Wybór wyłaniających wzorców użytych w dalszym procesie analizy. Zakładamy, że system decyzyjny jest dany.
Scenariusz główny:
1. Użytkownik wybiera opcję "Odkryj wyłaniające wzorce".
2. System wyświetla okno dialogowe "Konfiguracja algorytmu"
w zależności od wybranej metody.
3. Użytkownik wprowadza parametry metody.
4. System tworzy obiekt "Wyłaniające wzorce".
5. Użytkownik wybiera opcję "Utwórz klasyfikator CAEP opierając się na wybranych wzorcach".
6. System wyświetla okno dialogowe "Wybór wyłaniających wzorców użytych do utworzenia klasyfikatora CAEP".
7. Użytkownik wybiera wyłaniające wzorce poprzez zaznaczenie korespondujących im pól wyboru.
8. Klasyfikator CAEP zostaje utworzony.
4.3. Wymagania niefunkcjonalne
W podrozdziale wyszczególniono wymagania niefunkcjonalne sformułowane dla opracowywanego oprogramowania.
1. Kompatybilność.
Konwencje architektoniczne, nazewnicze oraz sposób formatowania kodu źródłowego powinny być zachowane w zgodzie z regułami przyjętymi podczas powstawania systemu.
2. Przenośność.
Program powinien dać się skompilować na większości współczesnych platform sprzętowosystemowych. Wymaganym minimum są komputery działające pod kontrolą systemów operacyjnych Linux oraz Windows.
3. Łatwość użycia.
Aplikacja powinna udostępniać prosty i intuicyjny interfejs użytkownika, umożliwiający szybkie i wygodne korzystanie z funkcji programu.
4. Technologia.
Rozszerzenia programu powinny być przygotowane z wykorzystaniem dostępnych, darmowych rozwiązań informatycznych.
Ponadto zaleca się użycie jak największej liczby technologii wybranych podczas implementacji pierwotnej wersji systemu.
W tej części pracy scharakteryzowana została architektura systemu KTDA. Znajduje się tutaj opis pierwotnego sposobu organizacji kodu źródłowego oraz analiza przyjętego rozwiązania. Następnie w rozdziale zawarto esencjonalny portret architektury trójwarstwowej, skupiający się na zaletach takiej kompozycji. Ostatni fragment rozdziału stanowi raport z przeprowadzonej reorganizacji struktury programu.
5.1. Początkowa struktura programu
System KTDA w założeniu został skonstruowany z dwóch warstw:
algorytmicznej oraz warstwy składającej się na interfejs użytkownika.
Interfejs korzysta z warstwy algorytmicznej udostępniając w ten sposób użytkownikowi zaimplementowane funkcje.
Sama wartswa algorytmiczna została podzielona na pakiety zawierające moduły programu o zbieżnym zastosowaniu. Wspomniane pakiety aplikacji to:
data;
ep;
cred;
other.
Każdy z nich zostanie opisany pod kątem oferowanej funkcjonalności.
1. Pakiet "data".
W pakiecie data zawiera się moduł odpowiedzialny za dostęp do danych. Zamodelowana została tutaj abstrakcja systemu informacyjnego z ogólnym typem wartości atrybutów. Dopuszcza się zarówno dyskretne, jak i rzeczywiste wartości atrybutów. Opisywany moduł jest także odpowiedzialny za obsługę odczytu i zapisu plików różnych formatów.
2. Pakiet "ep".
Pakiet ep został skonstruowany w celu przechowywania modelu wyłaniających wzorców oraz metod ich przetwarzania. Znajdują się tutaj implementacje algorytmów odkrywania wyłaniających wzorców oraz klasyfikacji za ich pomocą.
3. Pakiet "cred".
Kolejnym pakietem jest pakiet cred. Mieści się w nim moduł związany z analizą wiarygodności. Umieszczono tu algorytmy wyznaczania współczynników wiarygodności. Ponadto zaimplementowano tu również generatory syntetycznych zbiorów danych używanych podczas doświadczeń z analizą wiarygodności danych.
4. Pakiet "other".
Ostatnim z pakietów jest pakiet other. Znalazły w nim swoje miejsce moduły niezwiązane bezpośrednio z wcześniej wymienionymi pojęciami. Występują tu natomiast deklaracje metod wykorzystywanych przez pozostałe pakiety. Do opracowanych modułów m.in. należą:
generator punktów o wielowymiarowym rozkładzie normalnym, dodatkowe funkcje obsługi macierzy czy moduł zaawansowanego zarządzania pamięcią.
O ile taka organizacja kodu źródłowego wydaje się przejrzysta i zrozumiała, to po głębszej analizie udaje się dostrzec jej niedoskonałości. Przede wszystkim brak wyraźnej separacji pomiędzy składowaniem danych, a ich przetwarzaniem. Dodatkowo, wyżej wspomniana warstwa interfejsu użytkownika również nie jest niezależną całością i w wielu miejscach przenika się z innymi wartstwami systemu.
Ostatnim niedociągnięciem jest występowanie w kodzie źródłowym plików niepowiązanych z żadnym z zaprojektowanych pakietów.
W dalszej części rozdziału ukazano, jakimi środkami poradzono sobie ze wspomnianymi trudnościami oraz co było istotą refaktoryzacji.
5.2. Architektura trójwarstwowa
Architektura trójwarstwowa jest wzorcem architektonicznym typu klientserwer, gdzie interfejs użytkownika (warstwa prezentacji), przetwarzanie danych (warstwa logiki aplikacji) oraz składowanie danych (warstwa danych) są implementowane w postaci odrębnych modułów.
Takie rozplanowanie architektury systemu umożliwia niezależną wymianę dowolnej warstwy, chociażby w odpowiedzi na zaistniałe zmiany technologiczne.
System KTDA nie jest oprogramowaniem, w którym zachodzi potrzeba aż tak zasadniczej hermetyzacji. W gruncie rzeczy jest to aplikacja okienkowa przeznaczona do eksploatacji tylko przez jednego użytkownika, na pojedynczej maszynie. Nie ma również konieczności tworzenia skomplikowanej warstwy dostępu do danych, gdyż wszelkie operacje zachodzą przy wykorzystaniu dostępnej pamięci. Można natomiast skorzystać z popularnego wzorca projektowego MVC (ang. ModelViewController), który w pewnym sensie odpowiada architekturze trójwarstwowej, jednak dotyczy wyłącznie implementacji interfejsu użytkownika.
Wzorzec ModelWidokKontroler dzieli aplikację na trzy współzależne części, oddzielając w ten sposób wewnętrzną reprezentację danych od zasad rządzących ich przetwarzaniem, a także od sposobu w jaki są one prezentowane użytkownikowi.
W modelu zawarta jest reprezentacja dziedziny problemu, uchwycona przez stworzony system. To tutaj zapisane są zasady dotyczące zachowania aplikacji oraz sposób zarządania danymi.
Widok stanowi warstwę, która odpowiada za prezentację danej części modelu użytkownikowi. Możliwym jest stworzenie tzw.
podwidoków, umożliwiających przedstawienie tej samej informacji w różnych ujęciach.
Na ostatnią część wzorca składa się kontroler, o którym możemy myśleć jak o buforze pomiędzy modelem, a widokiem. Do jego naczelnych zadań bowiem należy przyjmowanie żądań od użytkownika, skutujących odświeżaniem widoku tudzież aktualizacją modelu.
Rysunek 5.1. Diagram ilustrujący przepływ sterowania w architekturze MVC.
5.3. Wprowadzone zmiany
Główną zmianą architektoniczą w strukturze systemu było wydzielenie warstawy prezentacji programu. Do realizacji tego celu utworzony został nowy pakiet view. W pakiecie zebrano wszystkie klasy (dotychaczas rozrzucone w wielu miejscach kodu źródłowego) odpowiedzialne za wygląd aplikacji. Zabieg ten umożliwił uporządkowanie źródeł programu, co również ułatwiło nawigację po plikach podczas pracy nad rozbudową systemu.
Rysunek 5.2. Docelowy wygląd drzewa katalogów mieszczących kod źródłowy systemu.
Bezsprzeczną zaletą tego rozwiązania jest zysk w postaci zwiększonej elastyczności oprogramowania. W przypadku chęci zmiany biblioteki do tworzenia graficznego interfejsu użytkownika lub środowiska graficznego jednym pakietem wymagającym zmiany jest pakiet view. Logika aplikacji i model danych są odporne na modyfikacje poczynione w tym kierunku.
Niniejszy rozdział przedstawia szereg decyzji podjętych podczas rozbudowy systemu KTDA. Problemy oraz metody rozwiązania zostały przedstawione w sposób chronologiczny, zgodnie z kolejnością przedsięwziętych działań.
6.1. Uruchomienie programu
Pierwszym krokiem rozpoczynającym pracę nad implementacją było uruchomienie programu. To z pozoru zdawać by się mogło trywialne zadanie ujawniło początkowe trudności, a tym samym wyznaczyło inicjalny etap pracy. Zważając na liczność bibliotek użytych w pierwotnej wersji programu oraz upływ czasu, błędy pojawiające się podczas kompilacji nie dziwią.
Biblioteka wxWidgets użyta do stworzenia graficznego interfejsu użytkownika na przestrzeni lat kilkakrotnie się zmieniała. Intuicyjnym rozwiązaniem wydawać by się mogło skorzystanie z wersji biblioteki użytej podczas pierwszego wydania systemu KTDA. Niemniej jednak nie jest to rozwiązanie satysfakcjonujące. Autor rozszerzenia programu zdecydował się na wykorzystanie najnowszej wersji biblioteki, tj. wxWidgets 3.0.
Do realizacji tego celu konieczne było przeprowadzenie refaktoryzacji kodu źródłowego w miejscach, w których stosowana była wyżej wymieniona biblioteka. Posiłkując się wykazem zmian dostarczonym przez projektantów biblioteki oraz komunikatami o błędach sygnalizowanymi przez kompilator udało się z powodzeniem uaktualnić oprogramowanie, tak aby korzystało z biblioteki w wersji 3.0.
Refaktoryzacja swoim zakresem obejmowała m.in. zmiany nazw wewnętrznych zmiennych stosowanych przez bibliotekę, zmiany
w obsłudze napisów i zmiennych tekstowych, jak i poprawienie konfiguracji zarządzania wątkami.
Rysunek 6.1. Okno główne programu pod kontrolą systemu Kubuntu 15.04.
6.2. Zmiana generatora liczb pseudolosowych
W pracy [1] autor wymienia bibliotekę R250, jako narzędzie którego użył do generacji liczb pseudolosowych. Zaznacza również, że jest to wersja własnoręcznie poprawiona. W źródłach programu jedynym śladem po rzeczonej bibliotece są dyrektywy:
#include <random>
oraz wybrane, na nowo przepisane klasy biblioteki.
Ostatecznie nie udało się odnaleźć teraźniejszej wersji biblioteki R250, którą można by było dołączyć do programu za pomocą pojedynczej, prostej dyrektywy jak nakreślono to wyżej.
Podczas dalszych poszukiwań natrafiono na witrynę [9], na której znajduje się dostępna do pobrania implementacja generatora R250 w postaci archiwum zawierającego pliki źródłowe. Implementacja została napisana w języku C++.
Po porównaniu znalezionego kodu źródłowego, z kodem stanowiącym poprawki wprowadzone przez pierwszego autora systemu zauważono, że nazwy klas i metod są ze sobą zbieżne. Stanowiło to pierwszy trop, a zarazem przełom w poszukiwaniu biblioteki R250. Po skrupulatnej analizie i serii eksperymentów udało się uruchomić aplikację z działającym generatorem liczb pseudolosowych R250.
Autor poczuł się zaintrygowany problemem generowania liczb pseudolosowych, więc postanowił bliżej przyjrzeć się temu zagadnieniu.
Po przestudiowaniu tematu okazało się, że obecnie generator R250 znacznie ustępuje swoim konkurentom. Jego niezaprzeczalnym atutem jest szybkość działania, jednakże oferowana jakość losowości pozostawia wiele do życzenia. Podjęto decyzję o reimplementacji części systemu odpowiedzialnej za generowanie liczb pseudolosowych.
Wraz z nowym standardem języka C++, C++11, światło dzienne ujrzała nowa biblioteka dostarczająca narzędzia do generacji liczb pseudolosowych. Zaimplementowano w niej szereg wiodących algorytmów w tej dziedzinie. Będąc wyposażonym w kompilator obsługujący standard języka C++11 projektant jest gotowy do skorzystania z biblioteki. Poprzez dołączenie dyrektywy:
#include <random>
w pliku źródłowym, dostępne stają się wszystkie klasy zawarte w bibliotece.
Autor przeprowadził kompletną refaktoryzację kodu źródłowego usuwając generator R250 i zastępując go doskonalszym odpowiednikiem dostarczonym wraz z nową specyfikacją języka.
6.3. Dodanie nowych funkcji
Ostatnim etapem pracy było dodanie brakujących funkcji programu. Ta część nie sprawiła większych problemów. W tym stadium rozwoju autor biegle poruszał się po kodzie źródłowym aplikacji. Kolejne funkcje były dodawane cyklicznie do momentu spełnienia założonych wymagań funkcjonalnych.
W bieżącym rozdziale znajduje się opis najważniejszych narzędzi użytych podczas implementacji nowych funkcjonalności systemu.
Podczas wyboru technologii głównymi kryteriami były: wygoda użytkowania, uniwersalność oraz dostępność na rynku wolnego oprogramowania. Wszystkie technologie i narzędzia zostały opisane w kontekście ich pochodzenia, popularności oraz warunków licencyjnych.
7.1. Code::Blocks
W każdym większym projekcie informatycznym, nieodzownym staje się skorzystanie z zintegrowanego środowiska programistycznego (ang. integrated development environment, IDE). Code::Blocks jest darmowym, wieloplatformowym środowiskiem wspierającym m.in. język C++, który został wykorzystany do budowy systemu oraz do napisania samego środowiska. Tym, co zaważyło na wyborze omawianego środowiska był fakt, że do jego implementacji wykorzystano wieloplatformową bibliotekę wxWidgets, która jest szeroko stosowana w implementacji systemu KTDA. Środowisko Code::Blocks udostępnia najlepsze wsparcie do projektowania aplikacji wykorzystujących tę bibliotekę.
Podczas pracy nad rozszerzeniem programu użyto wersji Code::Blocks 13.12.
Program Code::Blocks jest dystrybuowany na licencji GNU GPL v3.0.
Rysunek 7.1. Ekran powitalny środowiska Code::Blocks w wersji 13.12.
7.2. Git
Tematem niniejszej pracy jest rozbudowa istniejącego systemu.
Podczas realizacji tego zadania pożądanym było dysponowanie działającą wersją oprogramowania, na każdym etapie rozwoju projektu.
W spełnieniu tego wymagania pomocne okazało się skorzystanie z systemu kontroli wersji (ang. version control system, VCS) Git.
Narzędzia użyto w celu rejestracji oraz śledzenia zmian w kodzie źródłowym. Dzięki temu zabiegowi możliwe stało się cofnięcie do dowolnego miejsca w historii rozbudowy aplikacji w przypadku wystąpienia regresji. Log wprowadzanych poprawek był przechowywany w prywatnym repozytorium przez cały czas trwania prac nad projektem.
System Git jest dystrybuowany na licencji GNU GPL v2.0.
Rysunek 7.2. Logo projektu Git.
7.3. Biblioteka wxWidgets
W pierwotnej wersji programu autor zdecydował się na wykorzystanie biblioteki wxWidgets. wxWidgets jest biblioteką klas języka C++ przeznaczoną do tworzenia graficznego interfejsu użytkownika aplikacji. Biblioteka udostępnia jednolity, łatwy w użyciu interfejs do budowy oprogramowania przeznaczonego do uruchamiania na różnych platformach, co stanowi jej główną zaletę.
Biblioteka do dziś jest aktywnie rozwijana. Na przestrzeni lat przeszła szereg zmian i usprawnień. Podczas rozbudowy systemu KTDA postanowiono skorzystać z jej najnowszej wersji, tj. wxWidgets 3.0.
W konsekwencji należało przebudować kod źródłowy, pozbywając się z niego przestarzałych funkcji, klas czy zmienionych nazw zmiennych i zastąpić je aktualnymi odpowiednikami. W niektórych przypadkach konieczne były zmiany w architekturze programu. Stanowiło to zasadniczą część pracy.
Biblioteka wxWidgets jest dystrybuowana na licencji wxWindows, która w zasadniczej części została oparta na licencji LGPL.
Rysunek 7.3. Logo biblioteki wxWidgets.
7.4. Biblioteka Newmat
Newmat jest biblioteką języka C++ udostępniającą użytkownikom podstawowe operacje na macierzach. Biblioteka kładzie główny nacisk na operacje stosowane w obliczeniach statystycznych.
W pracy korzysta się z wersji biblioteki Newmat10.
W bieżącym rozdziale zaprezentowano przykłady użycia systemu.
Zademonstrowane funkcje wybrano pod kątem ukazania możliwości oprogramowania w jak najszerszym zakresie. Przede wszystkim skupiono się na nowo powstałych funkcjach.
Przykład 8.1. Obliczenie współczynników wiarygodności dla wygenerowanego zbioru danych „RP”.
Procedurę rozpoczynamy od uruchomienia programu, a następnie wygenerowaniu specjalnego zbioru danych „RP”. W tym celu z widocznego menu kontekstowego wybieramy kolejno opcje:
Plik Utwórz zbiór danych RP→
Po wybraniu tej opcji pojawia się okno dialogowe, w którym należy zadać parametry aktualnie generowanego zbioru:
Rysunek 8.1. Okno wyboru parametrów generowanego zbioru danych.
Zatwierdzając wybór w głównym oknie programu powinien pojawić się obiekt reprezentujący wygenerowany zbiór:
Rysunek 8.2. Utworzenie obiektu zbioru danych.
Wygenerowany zbiór możemy przejrzeć. W tym celu prawym przyciskiem myszy należy kliknąć interesujący nas zbiór danych, a następnie wybrać opcję Widok. Naszym oczom ukaże się nowe okno zawierające tabelę, w której każdy rekord odpowiada innemu obiektowi, a także komplet histogramów obrazujących rozkład wartości poszczególnych atrybutów.
Warto również zauważyć, że wraz z generacją zbioru danych automatycznie został utworzony system decyzyjny z domyślnym atrybutem decyzyjnym. Jeśli potrzebujemy utworzyć system decyzyjny bazujący na innym atrybucie, to w tym celu należy klikając prawym przyciskiem myszy na zbiorze danych wybrać opcję Utwórz system decyzyjny, a następnie w oknie dialogowym wybrać właściwy atrybut decyzyjny.
Rysunek 8.3. Okno przeglądu zbioru danych.
Kolejnym krokiem procedury jest odkrycie w systemie decyzyjnym wyłaniających wzorców. Dokonać tego możemy na trzy sposoby:
odkrywanie wyłaniających wzorców z użyciem drzewa decyzyjnego;
odkrywanie wyłaniających wzorców z użyciem maksymalnych częstych zbiorów;
załadowanie uprzednio odkrytych wyłaniających wzorców z pliku ARFF.
W przykładzie skorzystamy z pierwszej możliwości. Klikając prawym przyciskiem myszy na systemie decyzyjnym wybieramy:
Odkryj wyłaniające wzorce Algorytm drzewa decyzyjnego→
Po tej czynności system wyświetli okno dialogowe służące do nastawy parametrów algorytmu:
Rysunek 8.4. Okno wyboru parametrów algorytmu odkrywania wyłaniających wzorców.
Zatwierdzając wybór przyciskiem OK program wykona operację odkrywania wyłaniających wzorców. Po jej zakończeniu do głównego okna programu dodany zostaje obiekt reprezentujący odkryte wyłaniające wzorce:
Rysunek 8.5. Utworzenie obiektu wyłaniających wzorców.
W następnym kroku utworzymy klasyfikator CAEP.
Oprogramowanie umożliwia podjęcie decyzji, czy chcemy zbudować klasyfikator na podstawie wszystkich wyłonionych wzorców, czy tylko na kilku wybranych. Wykorzystamy drugą możliwość.
Klikając prawym przyciskiem myszy na obiekcie reprezentującym wyłaniające wzorce wybieramy opcję Utwórz klasyfikator CAEP bazując na wybranych wzorcach. System wyświetla okno dialogowe z możliwością wyboru wzorców użytych w dalszym procesie analizy:
Rysunek 8.6. Okno wyboru wyłaniających wzorców wykorzystanych w dalszym procesie analizy.
Po wyborze i jego zatwierdzeniu w głównym oknie programu pojawia się nowo utworzony obiekt wyrażający klasyfikator CAEP.
Mając do dyspozycji klasyfikator możemy przystąpić do finalnego etapu procedury, tj. obliczenia współczynników wiarygodności. W tym celu klikając prawym przyciskiem myszy na obiekcie klasyfikatora wybieramy opcję Użyj do obliczenia współczynników wiarygodności.
Wyświetlone zostaje kolejne okno dialogowe, w którym wybieramy system decyzyjny, który zostanie poddany przetwarzaniu:
Rysunek 8.7. Okno wyboru systemu decyzyjnego poddanego analizie.
Zatwierdzając decyzję współczynniki wiarygodności dla danego systemu decyzyjnego zostają wyznaczone, co w systemie objawia się ukazaniem kolejnego obiektu:
Rysunek 8.8. Utworzenie obiektu zbierającego wyznaczone współczynniki wiarygodności.
System umożliwia także przejrzenie wyników działania procedury w przejrzystej formie tabelarycznej. Aby skorzystać z tej możliwości należy, klikając prawym przyciskiem myszy na obiekcie reprezentującym współczynniki wiarygodności, wybrać opcję Widok.
Wyświetlone zostaje okno zawierające wszelkie dane o badanych obiektach:
Rysunek 8.9. Okno przeglądu wyników analizy.
W ramach niniejszej pracy dyplomowej z powodzeniem zrealizowano rozbudowę systemu KTDA. Spełnione zostały wszystkie wymogi zawarte w specyfikacji wymagań.
Modernizacja już istniejącego systemu wymaga przyjęcia odpowiedniego rygoru pracy. Ze względu na fakt, że system KTDA jest oprogramowaniem dedykowanym, przed przystąpieniem do właściwych działań autor zapoznał się z dziedziną problemu. W obrębie tych działań znalazło się przyswojenie podstawowych pojęć z zakresu eksploracji danych, procesu analizy wiarygodności danych, wyłaniających wzorców oraz współczynników wiarygodności. Zrozumienie przytoczonych zagadnień umożliwiło dokładną analizę wymagań stawianych rozbudowywanemu systemowi.
Po przyswojeniu wiedzy dziedzinowej nadszedł czas na wybór narzędzi i technologii stosowanych do rozwiązania zadania.
Zdecydowano się użyć większości bibliotek, którymi posłużono się w inicjalnej wersji projektu. Z racji tego, że były to propozycje nieznane autorowi, należało poświęcić czas na zapoznanie się z nimi.
Zdecydowanie najbardziej czasochłonnym etapem okazała się analiza architektury systemu. Ponadto autor musiał przyzwyczaić się do konwencji stosowanych przez swojego poprzednika, co również stanowiło pewne wyzwanie.
Po rzetelnym przygotowaniu teoretycznym przystąpiono do właściwej pracy nad kodem źródłowym aplikacji oraz wprowadzaniem nowych funkcjonalności systemu. Wraz z upływem czasu autor coraz lepiej orientował się w organizacji kodu źródłowego oraz bieglej posługiwał się wykorzystywanymi narzędziami. Poskutkowało to tym, że implementacje kolejnych funkcji pojawiały się w krótszych odstępach czasu.
Ostatecznie udało się zrealizować wszystkie założone cele pracy.
System KTDA został wyposażony w nowe, praktyczne funkcje, elastyczną architekturę, aktualne wersje bibliotek oraz nie sprawia żadnych trudności podczas uruchamiania na współczesnych maszynach.
1. Krzysztof Tomaszewski „Analiza wiarygodności danych z wykorzystaniem wyłaniających wzorców”, praca dyplomowa magisterska, Politechnika Warszawska, Wydział Elektroniki i Technik Informacyjnych, Instytut Informatyki, Warszawa, 2005 2. Andrzej Dominik „Analiza danych z zastosowaniem teorii zbiorów
przybliżonych”, praca dyplomowa magisterska, Politechnika Warszawska, Wydział Elektroniki i Technik Informacyjnych, Instytut Informatyki, Warszawa, 2004
3. Mariusz Walkiewicz „Ocena wiarygodności danych”, praca dyplomowa magisterska, Politechnika Warszawska, Wydział Elektroniki i Technik Informacyjnych, Instytut Informatyki, Warszawa, 2004
4. Zdzisław Pawlak „Rough sets – Basic notions”, ICS PAS Reports, Warszawa, 1981
5. Zdzisław Pawlak „Systemy informacyjne podstawy teoretyczne”, WNT, Warszawa, 1983
6. Guozhu Dong, Jinyan Li „Efficient Mining of Emerging Patterns:
Discovering Trends and Differences”, Proceedings of the SIGKDD (5th ACM International Conference on Knowledge Discovery and Data Mining), 1999
7. Mosche Lichman, UCI Machine Learning Repository, Irvine, CA:
University of California, School of Information and Computer Science, 2013, http://archive.ics.uci.edu/ml
8. Pan Xianchao, Chao Li, Tan Wen i in. "Emerging chemical patterns applied to prediction of Pglycoprotein inhibitors", Chemometrics and Intelligent Laboratory Systems, 2014
9. Random Number Generation,
https://www.taygeta.com/random.html 10. Dokumentacja języka C++,
http://en.cppreference.com/
11. Projekt Code::Blocks,
http://www.codeblocks.org/
12. Projekt Git,
https://gitscm.com/
13. Biblioteka wxWidgets,
https://www.wxwidgets.org/
14. Biblioteka Newmat,
http://www.robertnz.net/nm_intro.htm