• Nie Znaleziono Wyników

Rozbudowa systemu KTDA

N/A
N/A
Protected

Academic year: 2022

Share "Rozbudowa systemu KTDA"

Copied!
50
0
0

Pełen tekst

(1)

PRACA DYPLOMOWA INŻYNIERSKA Piotr Maciej Dziewicki

Rozbudowa systemu KTDA

Ocena ...………

...………...

Podpis Przewodniczącego Komisji Egzaminu Dyplomowego

Opiekun pracy:

doc. dr inż. Roman Podraza

(2)

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 matematyczno­fizyczno­informatycznym.   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: ………..

………..

(3)

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

(4)

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 statystyczno­czę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

(5)

Bibliografia...49

(6)

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.

(7)

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.

(8)

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

(9)

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.

(10)

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.

(11)

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}

(12)

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.

(13)

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]:

(14)

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   statystyczno­czę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   .

(15)

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

(16)

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:

(17)

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   .

(18)

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.

(19)

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:

(20)

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:

(21)

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.

(22)

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;

(23)

 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.

(24)

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.

(25)

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".

(26)

Scenariusz alternatywny:

1­3. 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.

(27)

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ętowo­systemowych. 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.

(28)

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.

(29)

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.

(30)

5.2. Architektura trójwarstwowa

Architektura trójwarstwowa jest wzorcem architektonicznym typu klient­serwer,   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. Model­View­Controller),   który   w   pewnym   sensie   odpowiada architekturze   trójwarstwowej,   jednak   dotyczy   wyłącznie   implementacji interfejsu użytkownika.

Wzorzec   Model­Widok­Kontroler   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.

(31)

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.

(32)

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.

(33)

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

(34)

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.

(35)

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.

(36)

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.

(37)

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.

(38)

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.

(39)

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.

(40)

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.

(41)

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.

(42)

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.

(43)

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.

(44)

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:

(45)

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.

(46)

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.

(47)

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.

(48)

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.

(49)

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 P­glycoprotein 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/

(50)

11. Projekt Code::Blocks, 

http://www.codeblocks.org/

12. Projekt Git,          

https://git­scm.com/

13. Biblioteka wxWidgets, 

https://www.wxwidgets.org/

14. Biblioteka Newmat, 

http://www.robertnz.net/nm_intro.htm

Cytaty

Powiązane dokumenty

Inne wielkości fizyczne definiuje się za pomocą wielkości podstawo- wych oraz ich jednostek i wzorców.. Jednostki SI W niniejszej książce korzystamy przede wszyst- kim

„Chciałam pierwsza spróbować mojego własnego systemu i najpierw tak żyć, jak każdy w ujarzmionym kraju żyć powinien, nie ociągać się na wielkie dzieła, do których

Opis struktury systemu (schemat pojęciowy): Tu należy umieścić diagram klas zbudowany w oparciu o opis struktury systemu, umieszczony w części pierwszej punktu 5., czyli

Warto zwrócić uwagę, że miłość jawi się jako siła, której nie można się przeciwstawić, jest ona ponad człowiekiem.. Uczucie ma wymiar nadprzyrodzony, a

• Wzorce projektowe Elementy oprogramowania obiektowego wielokrotnego użytku, Gamma E., Helm E., Johnson R., Vlissades J., WNT

• Wzorce projektowe Elementy oprogramowania obiektowego wielokrotnego użytku, Gamma E., Helm E., Johnson R., Vlissades J., WNT

Praca określa wzorzec oddziaływania marketingowego, podobieństwa marketingu biznesowego i politycznego, zasady content marketingu i brandingu marki.. Słowa klucze:

Czy nie przeczy to tezie, że pierwszy wyraz ciągu nie może mieć wpływu na