Algorytm - środek ułatwiający dochodzenie do podjęcia decyzji (do rozwiązania problemu), przy uwzględnieniu jedynie tych czynników, które mają w danej decyzji znaczenie.
Program komputerowy - ciąg instrukcji przeznaczonych do rozwiązywania określonego zadania. Podczas wykonywania programu(program rezyduje w pamięci operacyjnej), instrukcje są realizowane przez jednostkę centralną komputera kolejno lub zgodnie z rozgałęzieniami, uwarunkowanymi przez rozkazy skoku.
Taksonomia systemów informatycznych
- system komputerowy(hardware + oprogramowanie)
- system operacyjny - podstawowe oprogramowanie przystosowujące komputer do użytku
- system informatyczny - jest programem komputerowym o dużej (nieraz bardzo dużej) liczbie czynnych instrukcji, cechującym się zazwyczaj wysokim stopniem skomplikowania i złożoną logiką, przyporządkowany rozwiązaniu pewnego nadrzędnego problemu wymagającego problemów. W przeciwieństwie do tego, program komputerowy rozwiązuje na ogół jeden, dosyć wąski problem.
- system informacyjny - to system informatyczny do specjalnych zadań w tym zarządzania, wspomagania podejmowania decyzji, planowania, gromadzenia i odzyskiwania informacji, a także jej tworzenia.
Systemy informacyjne nowej generacji (inteligentne systemy informacyjne) rozwiązując problem muszą poszukiwać rozwiązań, ponieważ rozstrzygnięcie postawionego problemu zazwyczaj nie jest bezpośrednio osiągalne. Wszystkie rozwiązania danego problemu (najlepsze, właściwe, dopuszczalne, zadowalające, błędne) tworzą przestrzeń rozwiązań.
Dane - Losowa grupa prostych faktów i zdarzeń
Informacja - Właściwie zagregowane proste fakty w bardziej (kompleksowe fakty)
Wiedza - Sumaryczny wynik naszych procesów percepcyjnych
Mądrość - Najczęściej zdefiniowana jako zdrowy rozsądek lub właściwy osąd
W informatyce można przyjąć, że:
Wiedza = Dane + Reguły rozsądnego ich użycia
Inteligentne systemy informacyjne
Systemy wydające na zewnątrz:
- informację
- wiedzę
Wydawana na zewnątrz informacja pochodzi ze źródeł istniejących (pierwotnych), może zostać sklasyfikowana jako:
- istniejąca przygotowana przez człowieka w postaci np.:
•asocjacji wiedzy
•reguł
•drzew
•obrazów wiedzy
•wektorów wiedzy
-ukryta (odkryta przez eksplorację danych, wydana na zewnątrz systemu w postaci odpowiedniego modelu uczenia)
- niejawna (odkryta przez komputer w procesie odkrywania wiedzy)
System ekspertowy jest programem komputerowym, który przetwarza zgromadzoną wiedzę na temat wyspecjalizowanego zagadnienia i rozumuje w celu rozwiązania postawionego problemu lub podjęcia właściwej decyzji
-Systemy interpretacyjne ( przewidywanie opisu zjawisk na podstawie interpretacji obserwacji lub sygnałów np.: ewolucja budowy strukturalnej związków chemicznych, objaśnianie elektrokardiogramów)
-Systemy predykcyjne (przewidywanie skutków określonych sytuacji lub zjawisk np.: prognozowanie pogody, wartości akcji na giełdach, trendów zmian kursów walut)
-Systemy diagnostyczne (wnioskowanie o defektach obiektów na podstawie danych symptomatycznych. Typowe zastosowania dotyczą bardzo rozległego spektrum zadań np.: w medycynie, rolnictwie, mechanice i elektronice),
-Systemy projektowania (generowanie odpowiedniej konfiguracji obiektów, spełniającej zadane wymagania i ograniczenia. Typowe zastosowania obejmują projektowanie układów elektronicznych, lub optymalne rozlokowanie maszyn w ograniczonej przestrzeni)
-Systemy planowania (generowanie sekwencji akcji niezbędnej do osiągnięcia określonego celu. Najczęściej są to systemy planowania ruchów robotów przemysłowych lub planowania drogi)
-Systemy monitorowania (badanie zachowania się obiektów w czasie, celem zapobiegania anomaliom, które mogą zagrażać niewypełnieniem postawionych zadań. Do typowych obszarów zastosowań należą tu: kontrola lotów nad lotniskami, monitorowanie stanu kompleksowych obiektów przemysłowych np.: rafinerii ropy naftowej, szelfowych wież wiertniczych, elektrowni jądrowych)
-Systemy usuwające błędy (generowanie porad/akcji zapobiegających defektom obiektów. Typowe zastosowania obejmują kreowanie.
-Systemy naprawcze (generowanie i administrowanie środkami naprawy uszkodzeń obiektów. Zastosowania to awionika, sieci komputerowe.
-Systemy edukacyjne (diagnozowanie błędów percepcji w nauczaniu studentów i współdziałanie w usuwaniu ich skutków w wybranych dziedzinach studiów
-Systemy kontroli i sterowania (zarządzanie zachowaniem
Systemy ekspertowe są znamienne tym, że:
•Naśladują sposób rozumowania człowieka podczas rozwiązywania problemu z danej dziedziny wiedzy, odcinając się raczej od symulacji wiedzy jako takiej. Celem jest tu skupienie uwagi na emulacji umiejętności i zdolności eksperta do rozwiązywania problemów tj. na realizacji części relatywnych zadań w sposób równie dobry, a czasem nawet lepszy niż to robi człowiek
•Prowadzą rozumowanie na reprezentacji wiedzy człowieka w danej dziedzinie, a dodatkowo wykonują obliczenia numeryczne i pozyskiwanie danych, informacji oraz wiedzy. Wiedza może być reprezentowana w systemach ekspertowych w specjalizowanych językach, chociaż ostatnio już w języku naturalnym i jest oddzielona od kodu realizującego rozumowanie, rozwiązując problemy stosując metody przybliżone lub/oraz metody heurystyczne, co w odróżnieniu od rozwiązań algorytmicznych nie gwarantuje sukcesu.
•Rozwiązują problemy stosując metody przybliżone lub/oraz metody heurystyczne, co w odróżnieniu od rozwiązań algorytmicznych nie gwarantuje sukcesu. Sens stosowania metod przybliżonych polega na tym, że metody te nie wymagają ścisłych danych, a także rozwiązania proponowane przez system mogą być nacechowane różnym stopniem pewności, co oznacza, że systemy ekspertowe poszukują rozwiązań w przestrzeni rozwiązań. Rozwiązania te, w znaczeniu leksykalnym, mogą być optymalne (najlepsze).
Systemy ekspertowe odróżniają się od innych programów sztucznej inteligencji:
-Gotowością do wykonywania zadań o wysokim stopniu kompleksowości (tzw. Real-world-problems)
-Szybkością realizacji zadań
-Bezbłędnością działania (mowa o module rozumującym), a także
-Zdolnością objaśniania linii rozumowania (tzn. sposobu wydedukowania finalnej konkluzji), z zamysłem uwiarygodnienia uzyskanych hipotez i wniosków:
P1,…, Pm Q1,…, Qn
Co czytamy:
Jeżeli przesłanki P1 oraz,…, Pm są prawdziwe to wykonaj konkluduj akcję/hipotezę Q1 oraz,…, Qn
Ogólniej można to zapisać przy pomocy operatora warunkowego
p
q
np. jeżeli wpadniesz do wody, to będziesz mokry.
Jeżeli <warunek_1> Jest prawdziwy CF
Oraz <warunek_2> Jest prawdziwy CF
to <konkluzja_X> CF=X
lub <konkluzja_Y> CF=Y
Reguła_1
Jeżeli ryzyko jest duże to kredyt jest odrzucany.
Reguła_2
Jeżeli ryzyko jest średnie oraz klient jest nieznany to kredyt jest odrzucany.
Reguła_3
Jeżeli ryzyko jest średnie oraz klient jest znany to kredyt jest akceptowany.
Reguła_4
Jeżeli ryzyko jest małe to kredyt jest akceptowany.
Reguła_5
Jeżeli konto jest > 5 lat to klient jest znany.
Reguła_6
Jeżeli spłaty są bez zarzutu to ryzyko jest średnie.
Operacje realizowane przez maszynę wnioskującą:
1.wybór reguły do oceny
2.ocena reguły
przypadek 1: ocena reguły nieznanej [zanim reguła może zostać oceniona, trzeba wykryć(pozyskać) niezmienną informację]
przypadek 2: ocena reguły fałszywej
przypadek3: ocena reguły prawdziwej
Najczęstsze obszary zastosowań systemów uczących się to diagnostyka medyczna, rozpoznawanie mowy, analiza problemów, które są złożone i trudne do formalnego opisu (często nieposiadających wystarczających modeli teoretycznych), a także zadania eksploracji i analizy danych gdzie dwa rozmiary zbiorów danych uniemożliwiają ich analizę w sposób nie automatyczny.
Nazwy kolumn to atrybuty opisujące (zmienne niezależne)
Nazwa ostatniej kolumny to atrybuty decyzyjne (zmienne zależne).
Atrybuty nominalne (Stan_nieba - trzy wartości, Wiatr - dwie wartości, Decyzja - dwie wartości)
Atrybuty porządkowe (Wilgotność - dwie wartości)
Atrybuty liczbowe (Temperatura - różne liczby)
Pojęcie (concept) - ogólne określenie oznaczające zbiór (klasę obiektów posiadających pewne wspólne właściwości, które odróżniają je od innych pojęć.
Konstruowanie systemu klasyfikującego
Przykłady uczące - System uczący się - Klasyfikator
Uczenie się klasyfikatora ze zbioru uczącego
Nowe obiekty - Klasyfikator - Decyzja klasyfikacyjna
Czym jest drzewo decyzji?
-Drzewo decyzji jest jedną z alternatyw strukturalnej informacji atrybut-wartość, umożliwiającą podział zbioru obserwacji (podział zbioru danych) na klasy lub kategorie
-Drzewo decyzji składa się z węzłów decyzyjnych, węzłów terminalnych i łączących je gałęzi
-Węzły decyzyjne określają testy, które należy przeprowadzić względem danej wartości atrybutu, z jedną gałęzią dla każdego wyniku testu
-Węzły terminalne reprezentują określoną klasę (kategorię obiektów)
-Gałęzie określają wartość pokazanych testów
Na czym polega uczenie się maszyn
Uczenie się oznacza zmiany w systemie, które mają charakter adaptacyjny w tym sensie, że pozwalają systemowi wykonać za następnym razem takie samo zadanie.
Uczenie się to konstruowanie i zmiana reprezentacji doświadczalnych faktów
•W ocenie konstruowanych reprezentacji bierze się pod uwagę
-Wiarygodność
-Efektywność
-Poziom abstrakcji
Przy czym reprezentacja rozumiana jest jako np.: opis symboliczny, algorytmy, modele
•Problemy rozwiązywane przez systemy uczące się muszą mieć
-Jednoznacznie określone zadanie T
-Wybraną miarę oceny P (służącą do oceny poprawy działania systemu w rozwiązywaniu zadania T)
•Reprezentacje doświadczenia E w postaci zbioru przykładów uczących
Czym jest uczenie
Zbieranie (zdobywanie) nowej wiedzy.
Poprawianie działania w miarę zdobywania doświadczenia.
Zmiana zachowania wskutek zdobycia doświadczenia.
System informatyczny uczy się, jeśli dokonuje w samym sobie zmian umożliwiających lepszą realizację określonego zadania.
Wiedza jest:
-Trudna do gromadzenia
-Trudna do stosowania
-Trudna do dystrybucji
-Rozproszona
-Sprzeczna
-Starzejąca się
-Rzadka
-Mglista
Rozumowanie:
Uważa się, że system informatyczny rozumuje, gdy może (potrafi) zrealizować czynność, o której nie powiedziano jak ją należy realizować.
Dedukcja: przejście od wiedzy ogólnej do specyficznej
Indukcja: przejście od szczegółów do wiedzy ogólnej
Odkrycie: pozyskanie wiedzy o czymś uprzednio nieznanym
Rodzaje uczenia maszynowego:
-Nadzorowane
-Nienadzorowane
-Tworzenie skupisk
Typowa procedura postępowania
a)gromadzenie danych o znanych przypadkach
c)interpretacja zjawiskowa parametrów modelu
d)zastosowanie modelu do nowych (niewidzialnych) przypadków
Uwagi:
Zazwyczaj jedna zmienna nie wystarcza do opisu danych związanych z określonym obiektem. Dlatego musimy posłużyć się charakterystyką opartą na wielu zmiennych (cechach) stąd konieczność korzystania z metod wielu zmiennych.
W podejściu tym obiekt(y) jest (są)
Każdą cechę można rozpatrywać jako współrzędną punktu w przestrzeni cech (lub) jako element wektora); każdy obiekt odpowiada, więc punktowi (lub jest wektorem) w p-wymiarowej przestrzeni cech. Zerową hipotezą w wielo-zmiennej interpretacji danych jest fakt istnienia ścisłej zależności między dystansami pomiędzy poszczególnymi punktami (obiektami) a określonymi właściwościami (np. przynależnością do danej klasy)
W analizie danych metodami multivariate mamy do czynienia z dwoma typami danych.
Dane wielo-zmienne. Typ1 opisany jest tylko przy pomocy macierzy X
Dane wielo-zmienne. Typ2a: macierz X i wektor Y. Typ2b: macierz X oraz macierz Y
Typ1 danych zawiera jedynie dane z zasadniczymi cechami interpretacji tego typu danych są : uzyskanie wglądu w strukturę danych, wyszukiwanie skupień (skupisk), które zawierają podobne obiekty, wybór istotnych cech, wykrycie obiektów odległych. Ten typ oceny danych często spotykany jest często pod nazwą eksploracyjnej analizy danych (EDA exploratory data analysis) lub uczenia nienadzorowanego.
Typ 2 danych zawiera dodatkowo dane y, przy czym może być tylko jedna lub kilka kolumn danych y. Rozróżnienie pomiędzy danymi X (cechy) oraz danymi y jest arbitralne. Z praktycznego punktu widzenia cechy stanowią dane łatwo dostępne, podczas gdy właściwości są na ogół danymi trudno mierzalnymi niedostępnymi bezpośrednio. Zasadniczymi cechami interpretacji tego typu danych są: klasyfikacja obiektów, badania zależności pomiędzy zbiorem cech a zbiorem właściwości. Z uwagi na fakt, że interpretacja danych x jest sterowana (lub kontrolowana) danymi y, ten typ interpretacji danych jest uznany za uczenie nadzorowane.
Dane wielo-zmienne typu 1 oraz 2 tworzą płaskie tablice.
Obecnie stosuje się często tablice trójwymiarowe np. dane zawierające p-cech dla n-obiektów w q różnych warunkach mogą być gromadzone w strukturach pudeł o wymiarach n*p*q
Metody minimalno-odległościowe
Procedura w algorytmie minimalno-odległościowym:
-Liczenie odległości od badanego obiektu do innych obiektów
-Wyznaczenie trzech najmniejszych odległości od badanego obiektu do innych obiektów i wybieramy te obiekty
-Gdy jest więcej obiektów danej klasy w pobliżu badanego obiektu to obiekt badany przyporządkowujemy do tej klasy
Obiekt może należeć do kilku klas, ale raczej powinien do jednej.
W oparciu o ten algorytm działają systemy, minimalno odległościowe
Inteligentne systemy informacyjne
Systemy wydające na zewnątrz:
-informację lub czasami
-wiedzę
Inżynieria softwarowa - definicja wywodzi się z 2 odrębnych pojęć software oraz inżynieria (wg. Nowego słownika Webster's New Interkolegiate Dictionary, 2001)
-software - jest (całym) zbiorem programów, procedur oraz odpowiedniej dokumentacji, związanej z systemem informatycznym
-inżynieria opiera się na zastosowaniu nauki i matematyki, dzięki którym właściwości materii
-inżynieria softwareowa opiera się na zastosowaniu nauki i matematyki, dzięki którym zdolności (możliwości) sprzętu komputerowego (informatycznego) stają się użyteczne dla człowieka via programy komputerowe, procedury oraz odpowiednią dokumentację.
Sens bardzo szybkiego rozwoju inżynierii softwarowej wynika ze spostrzeżenia, że w nieodległej przyszłości ponad 40% populacji całego świata będzie wykorzystywała programy komputerowe i komputery osobiste w swojej codziennej pracy, nie mając wystarczającej wiedzy na temat działania programów i komputerów. Można, zatem powiedzieć, że właśnie 40% pracujących będzie w zupełności zależało od wyników, dostarczanych przez programy i komputery
Ogólne wymagania stawiane współcześnie (i w przyszłości) programom komputerowym dotyczą przede wszystkim następujących cech: niezwykłej wiarygodności, humanizacji, łatwości użytkowania, niemożliwość błędnego użycia oraz (powszechnej) akceptacji.
Inżynieria wiedzy
Nowe zasady, narzędzia(software) oraz techniki utworzone w celu prowadzenia budowy inteligentnych systemów informatycznych zmierzające najpierw do ekstrakcji wiedzy (zazwyczaj przedstawionej w postaci symbolicznej) następnie do organizowania jej w efektywną implementację.
Stary typ wiedzy: książki - zawierają wiedzę w postaci pasywnej (biernej); zanim może być zastosowana, człowiek musi: odzyskać ją, zinterpretować, zdecydować jak ją należy stosować dla efektywnego rozwiązywania problemów.
Wiedza nowego typu:
Ekspert inżynier wiedzy
Ekspert:
-uczy się na podstawie poprzednich doświadczeń
-umie stosować analogie w rozumowaniu
-potrafi zidentyfikować czynniki istotne dla rozwiązania problemu
-potrafi restrukturyzować wiedzę i rekonceptualizować sposób rozwiązywania problemu
-potrafi zidentyfikować wyjątki
-umie zastosować raczej ogólny sens zasady, niż jej absolutny nakaz
-posiada zdrowy rozsądek (wskroś wszystkich dziedzin)
-cechuje się intuicją
Ekspert może należeć do jednej z następujących kategorii
-chce i potrafi,
-jest niezainteresowany,
-jest niekompetentny,
-jest wrogi.
Inżynier wiedzy powinien:
-musi mieć doświadczenie w technologii komputerowej
-być doświadczonym programistą
-mieć głęboką wiedzę ogólną
-znać praktyczne podstawy psychologii
-mieć doświadczenie w zakresie wiedzy dziedzinowej.
Narzędzia i techniki projektowania systemów
Pięć faz projektowania systemów informatycznych
1.zrozumienie problemu (na podstawie uzgodnionej specyfikacji)
2.planowanie rozwiązania (projektowanie algorytmów. Co jeżeli projekt nie ma algorytmicznego rozwiązania?)
3.kodowanie algorytmów (kodowanie strukturalne, zstępujące, modularne)
4.testowanie systemu (walidacja oraz weryfikacja)
5.dokumentowanie systemu (czynienie go zrozumiałym)
•strategia projektowania wstępującego
•strategia projektowania zstępującego
Sposoby przedstawiania projektów systemów informatycznych:
•sieć przepływu informacji/działania systemu
•pseudokod
•diagramy IPO (input processing output)
•technika Warnierr-Orr'a
Porównanie gł. Metod reprezentacji działania systemów informatycznych
A. Sieć przepływu informacji:
-Zalety: powszechność znajomości metody w kręgu informatyków, obrazowa reprezentacja, łatwość przyswojenia zasad przez osoby bez przygotowania zawodowego.
-Wady: wymaga obszernej dokumentacji, nieporęczna do przedstawienia procedur lub przerwań, wymaga dużego nakładu pracy podczas dokonywania zmian strukturalnych w systemie.
B. Pseudokod:
-Zalety: łatwy do nauczenia się, bardzo elastyczny z uwagi na możliwość stosowania poleceń w języku naturalnym projektanta systemu wymieszanych z instrukcjami kodu w języku angielskim, fragmenty projektu mogą zostać zakodowane na ogół bez zmian, bardziej zwarty od reprezentacji w formie sieci przepływu informacji, łatwy do przechowywania na nośnikach komputerowych, dokonywanie zmian łatwiejsze niż w innych metodach
-brak przedstawienia obrazowego (z wyjątkiem wcięć lub nawiasów grupowych).
Pseudokod:
Oblicz WYNAGRODZENIA
Wczytaj dane początkowe
Wykonaj obliczenia
Wyprowadź wyniki na zewnątrz systemu
C. Diagramy HIPO:
-Zalety: dostosowane do strategii projektowania zstępującego, wyraźnie objaśniają zagadnienia danych wejściowych i danych wyjściowych, zrozumiałe dla osób bez przygotowania informatycznego
-Wady: kompletny zapis projektu wymaga na ogół wielostronicowej dokumentacji, wymagają pewnej praktyki zawodowej przed pierwszym zastosowaniem, wymagają dużego nakładu pracy podczas dokonywania zmian strukturalnych w systemie.
D. Diagramy Warnierr-Orr'a
-Zalety: łatwe do nauczenia się, standaryzowane, nieco bardziej zwięzłe od pseudokodu.
-Wady: brak przedstawienia obrazowego (z wyjątkiem wcięć lub nawiasów grupowych), stosowanie wymaga większego doświadczenia zawodowego niż pseudokod.
Tworzenie specyfikacji systemu informatycznego:
a. Określenie możliwości (Feasibility). Zdefiniowanie preferowanej koncepcji produktu softwarowego, określenie jego cyklu życia. Rozważenie wyższości projektowanego systemu nad innymi, alternatywnymi koncepcjami.
b. Zdefiniowanie wymagań (Requirements). Opracowanie kompletnej, walidowanej specyfikacji wymaganych funkcji systemu, interfejsu, a także charakterystyki oczekiwanych osiągnięć produktu softwerowego.
c.Projektowanie produktu (Produkt design). Opracowanie kompletnej, zweryfikowanej specyfikacji ogólnej architektury systemu hardwerowo-softwerowego, struktur kontrolnych oraz struktur danych. Należy także opracować strukturę innych, niezbędnych komponentów systemu, np. wstępnych wersji podręczników użytkownika czy planów testowania systemu.
d.Szczegółowe projektowanie systemu - (zakłada
e.Kodowanie (Coding) - utworzenie kompletnego, zweryfikowanego zbioru kodów wszystkich komponentów systemu
f.Integracja (Integration) - zestawienie poprawnie funkcjonującego produktu softwarowego, zawierającego wszystkie przewidziane komponenty.
g.Implementacja - utworzenie poprawnie funkcjonującego systemu hardwerowo-softwerowego, łącznie z realizacją takich zadań jak konserwacja danych, instalacja systemu, czy szkolenie użytkowników.
h.Konserwacja - kompleksowa konserwacja systemu hardwerowo-softwerowego cyklicznie powtarzana po każdym usprawnieniu systemu.
i.Stopniowe zaniechanie.
Weryfikacja - sprawdzenie prawdziwości relacji między produktem softwarowym i jego specyfikacją. (czy tworzymy produkt softwarowy poprawnie)
Walidacja - sprawdzenie wartości produktu softwerowego, w sensie spełniania zaplanowanej dla niego misji operacyjnej. (czy tworzymy poprawny produkt softwarowy)
Etapy akwizycji wiedzy
Zwiększenie efektywności systemu informatycznego (oprogramowania) może mieć miejsce na różnych płaszczyznach. Najczęściej zwiększanie efektywności odnosi się do procesu tworzenia projektu oraz w konsekwencji do sposobu kodowania projektu. Należy podkreślić konieczność zachowania następujących (wybranych) zarz
1.W odniesieniu do wyboru języka programowania
-Należy wybierać raczej język dobrze znany programiście (grupie programistów) niż język specjalizowany, dostosowany do opracowywanego zagadnienia (vide: Fortran vs. ADA: ALGOL, COBOL, PASCAL, C++, VISUAL BASIC, PROLOG, SIMULA, CLIPS, OPS5, języki obiektowe, RAD (np. DELPHI), i inne.
2.W odniesieniu do strategii rozwiązania problemu
-KISS (BUZI) - bez udziwnień zakoduj idioto
-Co zrobić z błyskotliwym programistą? (wyrzucić bo zacznie pisać wg. Siebie i pisze niezrozumiałe dla innych programy)
3.W odniesieniu do stylu kodowania
-Programy muszą być zrozumiałe dla ludzi (program „działający” vs. Program dający się przeczytać) [punktacja, paragrafowanie, uporządkowanie, stosowanie spacji, wcięcia.]
-Należy dawać więcej komentarzy niż - jak sądzimy - potrzeba. Komentarze powinny być na wstępie, potem spis treści (komentarzy) i ponadto - komentarze wyjaśniające. Na ogół we wstępie do oprogramowania powinny być co najmniej następujące uwagi:
a.co program (procedura) realizuje
b.jak program wywołać i użytkować
c.wykaz najważniejszych zmiennych i macierzy
i.specjalne uwagi dla operatora
j.nazwisko autora
k.data wykonania ostatniej wersji oprogramowania
•dużych systemach informatycznych należy stosować wykaz komentarzy (wykaz modułów, ich funkcje, położenie, długość…)
4.W odniesieniu do łatwości czytania oprogramowania
-Stosować spacje w celu większej czytelności
-Stosować zmienne o nazwach cechujących się dobrą mnemoniką (pełne nazwy np. Cena = Koszty + Zysk)
-Unikać w nazwach zmiennych następujących kombinacji liter
Należy najpierw napisać tekst programu (systemu) w języku naturalnym (polski, angielski - pseudokod!!!) reprezentując pewne problemy (rezerwacja pamięci, czas maszynowy, złożoność oprogramowania)
IO (notacja)
0(2n) > 0(n3) > 0(n2) > 0(n log 2 n) > 0(n) > 0(log 2 n) > 0(1)
Czasami mogą oddziaływać jednocześnie różne czynniki np. porównując dwa algorytmy, mające rzeczywisty czas maszynowy 2n oraz n2 pierwszy jest szybszy (mniejsza wartość) od drugiego, dla wszystkich n > 2. Jednakże porównując dwa algorytmy mające czasy obliczeń rzędu 103 n oraz n2, sytuacja jest odwrotna dla wszystkich n < 104.
Kontrolę złożoności oprogramowania (modularność)
Programowanie strukturalne (top-down design, programowanie strukturalne,
kodowanie strukturalne)
-Należy stosować kompilatory optymalizujące kod wynikowy, a także profilować oprogramowanie, wyszukując krytyczny region i optymalizować tylko ten region np.:
Procedura_A pochł. 5% czasu maszynowego
Procedura_B pochł. 60% czasu maszynowego
Procedura_C pochł. 15% czasu maszynowego
Procedura_D pochł. 20% czasu maszynowego
Opłaca się optymalizować tylko procedurę_B
-Należy optymalizować (najpierw) wewnętrzne pętle, np.:
Usuwanie błędów
Niestety nie ma możliwości budowania systemów informatycznych (oprogramowania) pozbawiania błędów. Istnieją jednak pewne zasady - sposoby tworzenia programów - umożliwiające zminimalizowanie błędów w oprogramowaniu.
-Hipotezy związane z oszacowaniem liczby błędów
Zerowa hipoteza zakłada, że liczba błędów w oprogramowaniu jest proporcjonalną (α) do liczby instrukcji.
W dostępnej literaturze można znaleźć wyniki badań nad różnymi wariantami tego podstawowego założenia.
1)Wariant długości oprogramowania:
Liczba błędów α do liczby czynnych instrukcji maszynowych. Jest to równoważne z założeniem o proporcjonalności między liczbą błędów a długością tokenów (token: operator + operand)
2)Wariant zawartości informacyjnej
Liczba błędów α do zawartości informacyjnej programu
3)Wariant dokonania:
Liczba błędów α do wysiłku związanego z opracowaniem systemu informatycznego, E.
E = V/L
V - objętość tekstu
L - poziom programu
4)Wariant Akiyama'y:
Liczba błędów α do liczby decyzji plus liczba wywołań procedur
-Algorytmy EDA oraz EDCA
EDA (Error Detective Algorytm) - Algorytmy wykrywające błędy
EDCA (Error Detective and Corecting Algorytm) - Algorytmy wykrywające i naprawiające błędy
-Podstawowe błędy oprogramowania
*Błędne zdefiniowanie problemu - Program poprawnie rozwiązuje niewłaściwy problem
*Niewłaściwy algorytm - Algorytm rozwiązuje problem błędnie lub źle
*Błędy w analizie - Niewłaściwe zaprogramowanie algorytmu
*Błędy semantyczne - Niezrozumienie jak działa dana instrukcja
*Błędy w fazie wykonania - Niepowodzenie w przewidywaniu możliwych wyników obliczeń (np. dzielenie przez zero)
*Błędy w danych - Niepowodzenie w przewidywaniu zakresu danych
*Błędy w dokumentacji - Dokumentacja użytkownika nie jest zgodna z użytkowanym oprogramowaniem
-wstępne definicje
Testowanie - służy stwierdzeniu, czy występują błędy w oprogramowaniu, odbłędowienie (debugging) - lokalizacja przyczyn błędu
Skuteczne zalecenia:
Należy używać kompilatory usuwające błędy (debugging compilers). Jednakże, niektórych błędów kompilatory nie są w stanie wykryć! (np. opuszczenie pewnych fragmentów oprogramowania, niewłaściwe rozgałęzienia, niewłaściwy rozmiar macierzy, i inne.) Uwaga na dwuznaczne komunikaty kompilatorów!!!
Należy stosować ogólną procedurę lokalizacji błędów polegającą na:
1.Wstawianiu instrukcji wyświetlania pośrednich wyników na monitor.
2.Używaniu „śladów” logicznych, np. tekstów „zakończenie normalne”.
3.Korzystaniu z defensywnego programowania (każdy moduł oprogramowania zakłada, że przekazywane do niego dane są podejrzane, i dlatego muszą być zweryfikowane).
4.Natychmiastowym usuwaniu przyczyn wykrytych błędów.
5.Budowaniu śladów dostępu do poszczególnych procedur, szczególnie podczas testowania dużych systemów informatycznych.
6.Korzystaniu z pomocy partnera, z którym można porozmawiać o dostrzeżonych błędach.
-Należy testować przypadki normalne, ekstremalne i wyjątkowe
-Narzędzia do automatycznego testowania
Zarządzanie projektem systemu:
Należy rozstrzygnąć następujące problemy:
-Jak sprostać realizacji dużego systemu, o ogromnych wymaganiach specyfikacji, pozostając w granicach przyznanego budżetu?
-Jakie należy zastosować środki dyscyplinujące i organizujące tworzenie projektu?
-Jakie należy zastosować uwarunkowania dla efektywnego i doświadczonego zarządzania projektem?
Zaleca się stosowanie pisemnych memorandów np.
od grupy w przedsiębiorstwie do grupy programistów
(co chcieliby mieć opracowane, jakie dane mogą udostępnić, czego oczekują od nowego systemu informatycznego)
od grupy programistów do grupy zleceniodawców
[1. co zostanie opracowane
2. wskazanie pewnych idei (koncepcji) rozwiązania problemu
3. przedstawienie wstępnego projektu
4. przedstawienie kosztu opracowania
5. przedstawienie (w zarysie) schematu realizacji oprogramowania]
Każda faza wykonania projektu powinna być poddana walidacji.
Walidacja poprzez porównanie programu z wymaganiami „czy otrzymaliśmy to, czego oczekiwaliśmy”
Wiarygodność systemu (weryfikacja i walidacja)
W pierwszej fazie następuje wymieszanie rekordów bazy wg dwu różnych algorytmów generowanie liczb losowych, a następnie utworzenia 10 par plików w każdej parze po 9/10 rekordów jest używane do tworzenia modelu decyzyjnego a 1/10 do sprawdzenia jego poprawności.
Ekonomika softweru
Modele kosztów projektowania systemów informatycznych
Podstawowe definicje:
MM - liczba osobo-miesięcy, wymagana do opracowania produktu softwarowego
DSI - liczba instrukcji kodu źródłowego, dostarczanego w ramach projektu
Ogólne założenia:
Ocena dotyczy okresu od momentu rozpoczęcia prac nad specyfikacją systemu, do mementu zakończenia fazy integracji, testowania.
Estymacja kosztów obejmuje prace takie jak: zarządzanie, projektowanie systemu i kodowanie, dokumentowanie, koszty maszynowe itp.: Natomiast nie obejmuje kosztów szkolenia użytkowników, planowanie instalacji systemu, programistów, projektantów algorytmów, zaś nie pokrywa wyższego personelu zarządzającego, ochrony, dozorców itp.). Ponadto model oceny kosztów zakłada, że MM oznacza 152 godz pracy w miesiącu
Wysiłek (effort):
MM = 2,4 * (DSI/1000)1,05
{osobo miesiące}
Produktywność (productivity):
PR = DSI/MM
{liczba instrukcji czynnych/osobo miesiące}
Plan (schedule):
TDEV = 2,5*(MM)0,38
Średnie zatrudnienie
AS = MM/TDEV
{osoby}
W przypadku małych systemów, każdy model oceny kosztów może być zawodny z uwagi na fakt silnego oddziaływania cech osobistych personelu, w porównaniu do innych czynników.
ABC budowy systemów ekspertowych
System ekspertowy:
-Rozwiązuje złożone problemy rzeczywistego świata wymagające interpretacji eksperta ( a nie np. „Toy problems”)
-Rozwiązując problemy, stosuje komputerowy model rozumowania i uzyskuje te same konkluzje (wnioski), które osiągnąłby człowiek ekspert.
Narzędzia:
Powłoki systemów ekspertowych: systemy ekspertowe z pustą bazą wiedzy dziedzinowej.
Narzędzia do generowania systemów ekspertowych: środowiska programowe do budowy i utrzymywania systemów ekspertowych (lub innych inteligentnych aplikacji), wykorzystujące poszerzone możliwości:
-Kreowanie GUI
-Dostępu do różnych typów baz danych
-Pracy w strukturach sieciowych
•Czym różnią się systemy ekspertowe od konwencjonalnych programów?
Systemy ekspertowe różnią się od konwencjonalnego oprogramowania następującymi cechami:
-Oddzielają mechanizmy poszukiwania rozwiązań od danych oraz reprezentacji wiedzy
-Łatwo radzą sobie z danymi symbolicznymi (jakościowymi)
-Umożliwiają przetworzenie niepewnej lub niekompletnej informacji
-Objaśniają użytkownikowi linię rozumowania systemu
-Umożliwiają łatwe dodawanie informacji (wiedzy) bez konieczności zmian kodu lub/oraz jego logiki
Charakterystyka korzystnych zastosowań systemów ekspertowych:
Dobrze dobrane obszary zastosowań systemów ekspertowych
-Rozwiązanie może być wywnioskowane z danych dostępnych
-Dostępne dane mogą być niepewne lub niekompletne
-Rozwiązywany problem można uznać za zbiór niezależnych akcji (pod-problemów)
Dodatkowe komentarze o maszynach wnioskujących
Maszyna wnioskująca może pracować:
-automatycznie
-w sposób kontrolowany informacjami dostarczanymi przez użytkowników podczas konsultacji (sesji)
Uzyskane hipotezy muszą zostać ocenione. Ocena konkluzji (akcji, hipotez, procesów, wniosków) jest dokonywana:
-arbitralnie
-na podstawie wiarygodnych podstaw teoretycznych
-według przyjętych kryteriów statystycznych
Ogólnie maszyny wnioskujące mogą spełniać rolę:
-procedury klasyfikującej
-procedury generującej i sprawdzającej
Schemat pozyskiwania wiedzy:
Wywiad
wiedza wąskodziedzinowa (od eksperta) - baza wiedzy via inżynier wiedzy
Interakcja
wiedza wąskodziedzinowa (od eksperta) - baza wiedzy via inteligentny program edukacyjny
Uczenie na przykładach
ukryte (w danych) struktury wiedzy - baza wiedzy via program indukcyjny
Uczenie przez zrozumienie tekstu
pasywna wiedza (np. z książek) - baza wiedzy via program rozumiejący tekst
Narzędzia do budowy systemów ekspertowych - pakiety oprogramowania użytkowego, które upraszczają i ułatwiają pracę związaną z budową systemów ekspertowych.
Zazwyczaj narzędzia te zawierają maszynę wnioskującą, interfejs użytkownika oraz procedury pozyskiwania wiedzy stwarzające w sumie możliwość.
Prowadzenie wywiadu:
Wiedza dziedzinowa (od eksperta) do bazy wiedzy via inżynier wiedzy
Uczenie przez interakcję:
Wiedza dziedzinowa (od eksperta) do bazy wiedzy via system interaktywnych podpowiedzi
Uczenie przez indukcję:
Ukryte struktury wiedzy dziedzinowej (ekstrahowane z danych) do bazy wiedzy via system indukcyjnego generowania modelu uczenia (drzewa decyzji, reguły wnioskowania, i innych)
Uczenie bez ograniczeń:
Pasywna wiedza dziedzinowa przekazana do bazy wiedzy via program rozumiejący tekst.
Stopniowanie trudności przetwarzania tekstu:
-cyfry i liczby
-zwykły tekst (jednokierunkowy i jednowymiarowy)
-wzory struktur chemicznych (wielokierunkowe, trójwymiarowe)
Ocena systemów ekspertowych:
Współczesne systemy ekspertowe różnią się od systemów konwencjonalnych „inteligentnych programów” następującymi elementami:
-sposobem organizacji przetwarzania
-sposobem realizacji zadań
-wrażeniem wywieranym na użytkownikach podczas konsultacji
Wyniki generowane przez systemy ekspertowe ogólnie są dobre, lecz nie dlatego, że system wie więcej od eksperta (człowieka), ale ponieważ:
1.określony zbiór reguł wnioskowania jest nieustannie stosowany podczas działania systemu
2.ten sam zbiór regł jest używany zawsze, nawet podczas rozwiązywania problemów.
3.ten sam zbór reguł jest używany zawsze, bez błędów i bez utraty pamięci.
Efektywność współczesnych systemów ekspertowych jest wysoka lecz jedynie w rękach dziedzinowych ekspertów!
Miary oceny systemów informatycznych
Ocena stopnia złożoności systemu
W istocie rzeczy etapy (kroki) procesu przygotowania danych wykraczają na ogół poza utworzenie samej hurtowni danych. Poniżej podano zarys przebiegu procesu przygotowania danych, a ponadto wymieniono pewne firmy (organizacje), dostarczające specjalizowane narzędzia softwarowe, ułatwiające prowadzenie wspomaganego procesu.
Gromadzenie danych
Pierwszym krokiem budowy (uruchomienia) każdego systemu wspomagania decyzji jest akwizycja danych i ulokowanie ich w systemie. Zazwyczaj dane mogą mieć zróżnicowaną formę, a także mogą mieć odmienny i trudny do zrozumienia format. Poniższe organizacje mogą wydatnie wspomagać ten etap:
Carlton Corporation, Electronic Data Systems Corporation, Informatica Corporation, Platinum Technology, Prism Solutions.
Usprawnienie danych
Gdy dane zostały pobrane i ulokowane w danym systemie decyzji, należy przeprowadzić wiele operacji czyszczenia danych (dane zapisane nieprawidłowo, dane przestarzałe, redundantne lub po prostu błędne). Również tu istnieje wiele firm, które oferują narzędzia do usprawnienia danych:
Acxiom Corporation, Platinum Technology, Prism Solutions
Tworzenie hurtowni danych
W następnym etapie musi powstać hurtownia danych.
Wśród firm dostarczających narzędzia automatyzujące ten proces można wymienić: Sybase, LBMS
Przetwarzanie danych vs. Modelowanie
-przetwarzanie danych (zorientowane na interpretację wyników)
•Akwizycja
•Manipulacja
Kompresja
Eliminacja(odrzucanie wartości odległych
Ekstrapolacja
Interpolacja
Redukcja
Przeszukiwanie
Wygładzanie
Reprezentacja (grafika 2D lub 3D, animacja)
Przechowywanie
Modelowanie (zorientowane na generowanie danych, predykcję cech, właściwości zachowania itp.). Modelowanie często definiowane jest jako komputerowa (cyfrowa) reprezentacja obiektów
Symulacja - jest definiowana jako komputerowa (cyfrowa) reprezentacja procesów.
Obiekt - przyjmuje się, że jest domyślnym obiektem mającym zmienne cechy.
Dychotomia modeli:
-Modele analogowe (ciągłe)
-Modele cyfrowe (dyskretne, umożliwiają modelowanie właściwości i zależności jakościowych lub/oraz ilościowych)
-Modele abstrakcyjne
Problemy NP. - zupełne
Dlaczego pewne problemy są „łatwe”? Dlaczego niektóre problemy są „trudne”? w wielu przypadkach można spotkać szczególną klasę problemów o których nie daje się powiedzieć czy istnieje ich efektywne rozwiązanie. W istocie rzeczy jesteśmy zainteresowani identyfikacją algorytmów o czasie maszynowym proporcjonalnym do pewnego wielomianu w odniesieniu do liczby bitów na wejściu. Każdy problem, który daje się rozwiązać przy pomocy algorytmu wymienionego typu należy do klasy
P: zbiór wszystkich problemów, które mogą być rozwiązane przy pomocy deterministycznego algorytmu w czasie wielomianowym (algorytm deterministyczny - zawsze, gdy algorytm wykonuje jakąś operację, jest jedynie jedna następna czynność dobrze zdefiniowana)
Poszerzmy możliwości komputerów poprzez dodanie niedeterministycznego wyboru, gdy algorytm staje wobec problemu wyboru pewnej liczby możliwości, musi posiadać zdolność „odgadnięcia” poprawnej decyzji (a także zweryfikowania jej). Zatem
NP.: zbiór wszystkich problemów, które mogą być rozwiązane przy pomocy niedeterministycznego algorytmu w czasie wielomianowym.
Z tego względu często stosuje się algorytmy uproszczone, algorytmy rozwiązań przybliżonych (znajdują rozwiązania, o których wiadomo, że są bliskie rozwiązaniu najlepszemu
Algorytmy skuteczności średniego czasu (znajdują rozwiązania w niektórych przypadkach, lecz niekoniecznie muszą zawsze pracować.
Data miting
{drążenie danych, eksploracja danych, zgłębianie danych}
Drążenie danych definiujemy jako proces, w którym stosuje się w celu automatycznej analizy danych i ekstrakcji wiedzy z danych zawartych w bazie (bazach) danych. Zasadniczym celem drążenia danych jest, zatem identyfikacja wzorców lub trendów w danych.
Wiedza pozyskana przy pomocy techniki drążenia danych jest przedstawiana w postaci modelu lub uogólnienia danych. Istnieje wiele technik drążenia danych, jednakże wszystkie techniki drążenia stosują na ogół uczenie oparte na indukcji.
Uczenie to pozwala na utworzeniu ogólnej definicji konceptu poprzez obserwację specyficznych przykładów ilustrujących koncept będący przedmiotem uczenia. Przykłady wiedzy pozyskanej przy pomocy technik drążenia danych. Dlaczego tak wiele turniejów golfa jest sponsorowanych prze firmy maklerskie pracujące w trybie on-line? (podstawową przyczyną jest fakt, że ponad 70% inwestorów on-line to mężczyźni w wieku ok. 40 lat grający w golfa.)
Ponadto okazuje się, że 60% inwestorów giełdowych gra w golfa. Czy ma sens, aby firma fonograficzna, propagująca muzykę rap, reklamowała swoje wyroby w czasopismach dedykowanych dla osób starszych? (tak, gdy drążenie danych ujawniło, że starsi obywatele często kupują nagrania muzyki rap dla swoich nastoletnich wnuków)
Odkrywanie wiedzy w bazach danych (KDD)
Jest terminem powszechnie używanym wymiennie z terminem drążenia danych. Przyjmuje się, że KDD jest zastosowaniem metod naukowych do drążenia danych. Dodatkowo oprócz drążenia danych, typowy proces KDD włącza metodologię ekstrakcji i przygotowania danych oraz podejmowanie decyzji na temat akcji, która powinna być podjęta, gdy zostanie zakończone drążenie danych
Czego może się nauczyć komputer?
Drążenie danych jest ściśle związane z uczeniem. Jest to złożony proces, który można prawidłowo ocenić pamiętając o czterech poziomach uczenia. Są to:
-Fakty - proste stwierdzenia prawdy
-Koncepty - zbiór obiektów, symboli lub zjawisk zgrupowanych razem, ponieważ podzielają one pewną wspólną charakterystykę
-Procedury - krokowo realizowany ciąg akcji prowadzących do określonego celu. Procedury są stosowane w życiu codziennym oraz podczas rozwiązwania innych prawd
Komputery dobrze uczą się konceptów, które stanowią informację wyjściową z sesji drążenia danych. Narzędzia używane do drążenia danych determinują format nauczonych konceptów. Typowymi strukturami konceptów mogą być drzewa, reguły, sieci oraz równania matematyczne
Struktury drzewiaste (drzewa decyzji, drzewa binarne, drzewa k-d, drzewa semantyczne) oraz reguły (reguły składniowe, reguły decyzji, reguły wnioskowania, reguły produkcji) są łatwo zrozumiałe i niekłopotliwe w interpretacji. Sieci oraz równania matematyczne stanowią dla człowieka czarną skrzynkę w tym sensie, że wiedza w nich zgromadzona nie łatwo może być zrozumiana.
Trzy spojrzenia na koncepty
1.spojrzenie klasyczne: koncept jest wyraźnie i jednoznacznie zdefiniowany, nie ma tu miejsca na niewłaściwą interpretację. Zakłada się, że wszystkie przykłady ilustrujące dany koncept są jednakowo istotne dla zdefiniowania konceptu. Poniższa reguła wykorzystuje klasyczną definicję konceptu ryzyka nieubezpieczonego kredytu:
JEŻELI Roczny_przychód >= 100000 PLN
& Lata_pracy_na_aktualnym_stanowisku >= 5
&Kandydat_posiada_nieruchomość(Dom) = Prawda
TOOsoba_ubiegająca_się_o_nieubezpieczony_kredyt_jest_dobrym_kandydatem = Prawda
Klasyczna definicja konceptu zakłada, że wszystkie warunki reguły muszą być jednocześnie spełnione, aby można było wnioskować o kwalifikacjach pożyczkobiorcy.
2.Spojrzenie probabilistyczne: przyjmuje, że koncepty są reprezentowane przy pomocy właściwości będących prawdopodobieństwami czynników konceptu. Zakłada się bowiem, że ludzie gromadzą i przywołują koncepty jako uogólnienia utworzone na podstawie indywidualnych obserwacji przypadków. Probabilistyczne spojrzenie na poprzednio przedstawiony problem może wyglądać następująco:
-Roczny przychód osoby, systematycznie i terminowo spłacającej zadłużenie wynosi 100 000 PLN
-Większość osób, którym udzielono nieubezpieczoną pożyczkę pracuje w firmie co najmniej od 5 lat
-Większość pożyczkobiorców (nieubezpieczonych) jest właścicielami nieruchomości (domów)
Taka definicja formalnie nie może być bezpośrednio zastosowana by stwierdzić czy określona osoba może być dobrym pożyczkobiorcą jest jednak sensowną wskazówką w procesie podejmowania decyzji. Ponadto można łączyć prawdopodobieństwo przynależności ze specyfikacją klasyfikacji np. właściciel domu zarabiający rocznie 75 000 PLN zatrudniony u tego samego pracodawcy od 4 lat może być dobrym pożyczkobiorcą (bez konieczności ubezpieczenia kredytu) z prawdopodobieństwem 0,85.
3.Spojrzenie oparte na wzorcach: przyjmuje, że dany przypadek należy uznać za przykład określonego konceptu, jeśli rozpatrywany przypadek jest wystarczająco podobny do zbioru - jednego lub kilku - znanych przykładów ilustrujących koncept. To podejście przyjmuje, zatem, że ludzie gromadzą i przywołują przykłady konceptów a następnie
Wzorzec 2. Przychód_roczny = 150 000 PLN
Lata_pracy_na_tym_samym_stanowisku = 16
Rencista
Wzorzec 3. Przychód_roczny = 95 000 PLN
Lata_ pracy_na_tym_samym_stanowisku = 10
Właściciel nieruchomości
Podobnie jak w spojrzeniu probabilistycznym, omawiana definicja konceptu łączy prawdopodobieństwo przynależności poszczególnych warunków podczas każdej klasyfikacji
Uczenie nadzorowane
Od początku życia stosujemy indukcję celem zbudowania definicji podstawowych konceptów. Dotyczy to konceptów z różnych dziedzin np. zwierząt, roślin, budynków, złożonych struktur i innych. Uczymy się nazw (etykiet) indywidualnych obiektów dokonujemy wyboru cech, które wg. Naszego przekonania najlepiej definiują
zostanie opracowany, może zostać użyty do klasyfikacji nowych pokazanych (narzędzi do drążenia danych) przypadków o nieznanym pochodzeniu
Uczenie się to konstruowanie i zmiana reprezentacji doświadczalnych faktów
•W ocenie konstruowanych reprezentacji bierze się pod uwagę
-Wiarygodność
-Efektywność
-Poziom abstrakcji
Przy czym reprezentacja rozumiana jest jako np.: opis symboliczny, algorytmy, modele
•Problemy rozwiązywane przez systemy uczące się muszą mieć
-Jednoznacznie określone zadanie T
-Wybraną miarę oceny P (służącą do oceny poprawy działania systemu w rozwiązywaniu zadania T)
•Reprezentacje doświadczenia E w postaci zbioru przykładów uczących
Najczęstsze obszary zastosowań systemów uczących się to diagnostyka medyczna, rozpoznawanie mowy, analiza problemów, które są złożone i trudne do formalnego opisu (często nieposiadających wystarczających modeli teoretycznych), a także zadania eksploracji i analizy danych gdzie dwa rozmiary zbiorów danych uniemożliwiają ich analizę w sposób nie automatyczny.
Nazwy kolumn to atrybuty opisujące (zmienne niezależne)
Nazwa ostatniej kolumny to atrybuty decyzyjne (zmienne zależne).
Atrybuty nominalne (Stan_nieba - trzy wartości, Wiatr - dwie wartości, Decyzja - dwie wartości)
Atrybuty porządkowe (Wilgotność - dwie wartości)
Atrybuty liczbowe (Temperatura - różne liczby)
Algorytm budowy drzewa decyzji
1.Jeżeli wszystkie przykłady w zbiorze uczącym należą do jednej klasy utwórz węzeł terminalny oznaczony nazwą tej klasy i zakończ pracę.
2.W przeciwnym wypadku wybierz jeden atrybut i utwórz węzeł
3.Podziel zbiór uczący na tyle podzbiorów
Cechy (korzystne) drzew decyzji:
-są łatwo zrozumiałe dla człowieka
-zmienna zależna musi być dyskretna (są zatem narzędziem klasyfikacji obiektów)
-nie wymagają żadnej apriorycznej wiedzy o analizowanych danych
-działają zarówno na danych ciągłych jak i na danych dyskretnych (symbolicznych)
-można je łatwo mapować w reguły wnioskowania
Niedoskonałości danych (utrudniające generowanie decyzji)
-braki danych (także puste wiersze tablicy danych)
-błędne wartości atrybutów
-błędne przypisania klasy
-zbyt mała próbka danych
-zbyt duża próbka danych
Technika walidacji drzewa decyzji
-podział analizowanego zbioru na kilka części użycie pierwszej części do budowy drzewa
•drugiej części do walidacji drzewa
•trzeciej dla celów „obcinania”
-zastosowanie N-krotnej skośnej walidacji
Skupianie nienadzorowane - w odróżnieniu od nadzorowanego uczenia, skupianie nienadzorowane buduje modele na podstawie analizy danych bez predefiniowania klas (obiektów). Przypadki są grupowane na podstawie schematów
Załóżmy iż zamierzamy zastosować drążenie danych w odniesieniu do danych z powyższej tabeli, aby uzyskać pogląd na temat występujących tu wzorców. Realizując ten zamysł, można zadać następujące cztery pytania.
1.Czy można opracować ogólny profil inwentarza on-line? Jeśli tak to czym różni się charakterystyka inwestorów on-line od charakterystyki inwestorów maklerskich
2.Czy jest możliwe rozpoznanie klienta - który początkowo nie otwiera rachunku marginalnego - zdecyduje się na otwarcie go w przyszłości?
3.Czym różnią się charakterystyki inwestorów - kobiet oraz inwestorów mężczyzn.
Każde z tych pytań jest kandydatem do nadzorowanego drążenia danych ponieważ każde z nich wymienia określony atrybut, którego wartości reprezentują zbiór predefiniowanych klas wyjściowych.
Dla 1-go pytania, wyjściowym atrybutem jest metoda transakcji. Pytanie drugie opiera się na analizie, przyjmując za wyjściowy atrybut Rachunek marginalny. Atrybutem wyjściowym dla pytania 3-go będzie Transakcje/miesiąc, natomiast pytanie 4-te zostanie rozstrzygnięte przyjmując atrybut Płeć jako wyjściowy. Odpowiedzi na każde z pytań mogą być użyte do opracowania kampanii reklamowej w celu pozyskania nowych klientów oraz przyjęcia odpowiedniej strategii marketingowej w odniesieniu do klientów istniejących.
Można także zadać ogólne pytanie(a) dotyczące zgromadzonych danych. Poniżej mamy dwa pytania potencjalnie kandydujące do nienadzorowanego skupiania
1.Jakie podobieństwa atrybutów grupują klientów Acme Investors Inc?
2.Jakie różnice wartości atrybutów segmentują klientów firmy?
Wiele systemów informatycznych do nienadzorowanego skupiania wymaga wprowadzenia informacji o najlepszym początkowym oszacowaniu liczby skupisk obecnych w analizowanych danych. Natomiast inne systemy tego rodzaju wykorzystują wewnętrzne algorytmy do ustalenia tej liczby.
W każdym przypadku, system skupiania podejmuje próbę grupowania przypadków w skupisku o istotnym znaczeniu dla procesu drążenia danych. Załóżmy, iż dane firmy Acme Investors Investors zastosowano w procesie nienadzorowanego skupiania tworząc trzy skupiania tworząc trzy skupiska opisane odpowiednimi regułami:
JEŻELI Rachunek_marginalny = Tak & Wiek = 20-29 & Przychód = 80-90 tys. zł
TO Skupisko_nr_1
(dokładność = 0,80, pokrycie = 0,50)
JEŻELI Typ_rachunku = Powierniczy & Przychód = 130-140 tys. zł & Ulubiona_rekreacja = Narty
TO Skupisko_nr_2
(dokładność = 0,82, pokrycie = 0,65)
JEŻELI Typ_rachunku = Zbiorowy & Transakcje/miesiąc > 5 & Metoda_transakcji = On_line
TO Skupisko_nr_3
(dokładność = 0,82, pokrycie = 0,65)
Wartość współczynników dokładności i pokrycia reguły są wyliczane po wyznaczeniu warunku wyjściowego każdej reguły. Współczynniki te wnoszą ważną informację o zaufaniu do reguły i jej znaczeniu. Reguła dla skupiska nr_1 ma dokładność 0,80. inaczej mówiąc, w 20 % -ach przypadków, reguła będzie generowała błędne wnioski, (nawet) gdy wszystkie warunki poprzedzające są prawdziwe. Współczynnik pokrycia tej reguły (0,50) wskazuje, że połowa przypadków tego skupiska spełnia warunki poprzedzające reguły. Omawiana reguła nie jest dla nas zaskoczeniem, ponieważ można oczekiwać, że młodzi inwestorzy o znaczących dochodach będą się cechowali małym konserwatyzmem inwestycyjnym. Podobnie, reguła dla skupiska nr_3 nie wydaje się być odkrywcza. Natomiast reguła dla skupiska….
Czy drążenie danych jest właściwym rozwiązaniem dla moich problemów?
Podjęcie decyzji czy drążenie danych będzie właściwą strategią rozwiązywania własnych problemów nie jest zadaniem łatwym. Na początek podejmijmy próbę uzyskania odpowiedzi na poniższe pytania:
1.Czy można jasno i jednoznacznie zdefiniować problem?
2.Czy są dostępne dane o dużym potencjalnie znaczeniu?
3.Czy zgromadzone dane zawierają ukryte struktury?
Drążenie danych czy raczej wyszukiwanie danych?
Cztery ogólne rodzaje wiedzy można pomocnie zdefiniować, aby ułatwić rozważania o potencjalnym zastosowaniu drążenia danych:
-Wiedza płytka - ma naturę faktologiczną, można ją łatwo przechowywać w bazach danych i łatwo nią manipulować. Języki umożliwiające użytkownikowi generowanie zapytań do DBMS takie jak SQL, są doskonałym narzędziami do ekstrakcji płytkiej wiedzy z danych.-Wiedza wielowymiarowa - ma także naturę faktograficzną w swojej treści. Jednakże w tym przypadku dane są przechowywane w formacie o wielu wymiarach (zazwyczaj 3D). narzędzia informatyczne OLAP (On-line Analitical Processing) używa się do przetwarzania tego typu danych
-Wiedza ukryta - reprezentuje niejawne wzorce lub regularności w danych, trudne do wykrycia przy pomocy tradycyjnych narzędzi przeszukiwania baz danych, takich jak SQL. Natomiast algorytmy drążenia danych mogą z łatwością odkryć te wzorce lub regularności
-Wiedza głęboka - przechowuje się ją w bazach danych jednakże można ją wykryć jedynie wtedy gdy mamy pewne wskazówki na temat czego szukamy.
Drążenie danych vs. Zapytania do baz danych:
Poniższy przykład pomoże rozstrzygnąć czy drążenie danych będzie właściwą strategią rozwiązania istotnego dla nas problemu. Rozważmy ponownie hipotetyczne dane zawarte w tablicy 1. Z uwagi na fakt, że zbiór danych jest bardzo ograniczony, rozpatrywanie indywidualnych przypadków (pacjentów) w poszukiwaniu wzorców jest trywialne. Wyobraźmy jednak sobie, że dysponujemy bazą danych zawierającą ponad tysiąc rekordów, opisanych kilkunastoma atrybutami
W etapie pierwszym formułujemy ogólną hipotezę (hipotezę zerową) stwierdzającą co spodziewamy się znaleźć w zbiorze danych.
Hipoteza ta ma charakter
JEŻELI Spuchnięte_gruczoły = Tak
TO Diagnoza = Angina
{Definicja eksperta, def. Inżyniera wiedzy. Wspólne zastosowanie drążenia danych i systemów ekspertowych}
zwane systemami ekspertowymi które emulują (naśladują, działają jak) umiejętności rozwiązywania problemów przez ekspertów od wąskich dziedzin wiedzy. Emulowanie
Model prostego procesu drążenia danych
Prowadzenie sesji drążenia danych polega na:
1.Zgromadzeniu danych do analizy
2.Pokazaniu danych narzędziu do drążenia danych
3.Interpretacji uzyskanych wyników
4.Zastosowaniu wyników (modelu uczenia) do rozwiązania nowego problemu, lub oceny nowej sytuacji
Gromadzenie danych do analizy: istneją bardzo odmienne schematy - różne bazy (relacyjne) z setkami tysięcy rekordów, dane w jednej tylko bazie, płaskie tablice danych, dane wielowymiarowe. Powszechnym, błędnym poglądem jest wyobrażenie, że drążenie danych wymaga dostępu do setek tysięcy rekordów. W rzeczywistości większość narzędzi do drążenia danych najlepiej pracuje z pojemnościami danych rzędu kilkuset lub kilku tysięcy przypadków (rekordów). Dlatego po zdefiniowaniu problemu, pierwszym krokiem jest zgromadzenie podzbioru relewantnych danych do przetwarzania. Są trzy powszechnie stosowane drogi pozyskania danych do drążenia
-Dane można pozyskać z hurtowni danych
-Dane mogą zostać pozyskane z relacyjnej bazy danych
-Dane można pozyskać z płaskiej tablicy (pliku) lub arkusza kalkulacyjnego
są ekstrahowane z środowiska operacyjnego i przenoszone do hurtowni danych. Ten transfer jest zazwyczaj realizowany na zakończenie dnia (po zakończeniu dnia biznesowego) i może mieć miejsce z różnych baz relacyjnych. Przy podejściu do hurtowni danych każdy zręb informacji jest znakowany czasem, odpowiednio transformowany i sprawdzany w odniesieniu do błędów. Po przeniesieniu do hurtowni danych, rekordy przybierają postać „read-only”
Drążenie danych - zgodnie z modelem procesu zgłębiania danych pokazanym na rysunku kolejnym etapem jest samo drążenie danych. Przed pokazaniem danych narzędziu do drążenia mamy możliwości wyboru różnych opcji:
-Czy powinno się stosować uczenie nadzorowane czy nienadzorowane
-Które przypadki ze zbioru danych będą używane do generowania modelu, a które do jego testowania?
-Jakie atrybuty opisujące należy wybrać spośród całego zestawu atrybutów
-Narzędzia do dążenia danych wymagają zazwyczaj specyfikacji jednego lub kilku parametrów uczenia. Jaki zestaw parametrów sterowania narzędziem należy zatem przyjąć aby uzyskać model.