KIS instruction - Politechnika Warszawska

Transkrypt

KIS instruction - Politechnika Warszawska
KIS 1.0.55 – instrukcja użytkownika
Rafał Biedrzycki
[email protected]
Spis treści
1 Wprowadzenie
2
2 Formaty plików
2.1 Pliki wejściowe . . . . . . . . . . . . . . . . . . . . . . . . . .
2.2 Pliki wyjściowe . . . . . . . . . . . . . . . . . . . . . . . . . .
2
3
4
3 Parametry programu
5
4 Instalacja i uruchamianie
12
1
Wprowadzenie
KIS to skrót od Konstruktywna Indukcja w Sekwencjach, jest to program
który był narzędziem badawczym umożliwiającym powstanie rozprawy [1].
W niniejszej instrukcji znaleźć można tylko takie informacje, których nie zawarto we wspomnianej rozprawie, np. sposób instalacji programu, formaty
plików, parametry programu. W związku z tym, aby zrozumieć znaczenie
poszczególnych parametrów i zakres stosowalności omawianego tu oprogramowania konieczna jest uprzednia lektura fragmentów rozprawy [1].
KIS to dość duży program, o czym mogą zaświadczyć poniższe fakty
uzyskane za pomocą narzędzia CCCC [5]:
• LOC – ilość linii kodu (C++, nie licząc komentarzy): 11479;
• NOM – ilość nietrywialnych modułów: 102;
• MVG – liczba cyklomatyczna McCabe’a: 1627.
W ramach tego powstało m.in.:
• 3 algorytmy przeszukiwania przestrzeni dostępne w różnych wariantach,
• 6 różnych przestrzeni,
• 3 zestawy funkcji oceny,
• obsługa 3 rodzajów „sygnałów” spotykanych w sekwencjach DNA.
Powstały system w porównaniu z podejściami konkurencyjnymi jest uniwersalny, elastyczny i łatwy w rozbudowie.
KIS powstał w celu weryfikacji hipotezy naukowej, jest więc przeznaczony dla odpowiednio zaawansowanego użytkownika. Współpraca z użytkownikiem odbywa się przy pomocy wiersza polecenia, brak jest zabezpieczeń
przed nieprawidłowym formatem danych wejściowych, istnieje niewiele zabezpieczeń przed nieprawidłowym ustawieniem parametrów.
2
Formaty plików
KIS pobiera dane z plików w odpowiednim formacie. Do tworzenia danych
sztucznych lub konwersji pomiędzy formatami danych stworzono szereg skryptów napisanych w języku Perl bądź BioPerl. Skrypty te znajdują się w katalogu ’/KIS/src/Perl/’.
2
2.1
Pliki wejściowe
KIS obsługuje dwa formaty plików wejściowych jeden z nich nazwany jest
KIS, a drugi UCI. W formacie KIS jeden rekord danych wygląda następująco:
>Seq 0 Len:
53
AdditSignal1
8 18
AdditSignal2
Signal1
7 40
Signal0
AdditSignal3
Data
GCTGCCTCAGCACTGGGACCTCTCGCTCTCCGCTCCCTGCCACTCGCCTCCTC
W kolejnych liniach naprzemiennie znajdują się nazwa pola i jego wartość. I
tak kolejno: dla pola ’>Seq 0 Len:’ jego wartość to 53. Wspomniana nazwa
pola jako jedyna w KIS zmienia się w kolejnych rekordach danych, tj. po
napisie ’>Seq’ znajduje się zawsze aktualny numer rekordu. Zarówno sama
nazwa jak i jej wartość nie są wykorzystywane w obecnej wersji KIS, przydają się natomiast człowiekowi do analizy wyników. Pola ’AdditSignal1’,
’AdditSignal2’, ’AdditSignal3’ zawierają dodatkowe, opcjonalne informacje i w miejscu ich wartości może pojawić się pusta linia. W obecnej wersji KIS
wykorzystywane jest jedynie pole ’AdditSignal1’ przy poszukiwaniu IRE. W
takim przypadku, jeżeli w polu tym znajdzie się para liczb oznaczająca początek i koniec podsekwencji IRE w sekwencji umieszczonej w polu ’Data’, i
jeżeli włączony jest odpowiedni parametr programu, to w odpowiednim pliku
wyjściowym znajdą się obok siebie zestawione: sekwencja znalezionego sygnału i sekwencja IRE. Dane te przydatne są do analizy właściwości KIS oraz w
celu upewnienia się, że odnajdowany jest pożądany sygnał. Wartością pola
’Data’ jest analizowana sekwencja. Sekwencji tej dotyczą pary liczb w polach
’Signal0’, ’Signal1’. Każda para liczb w polu ’Signal0’ oznacza początek i
koniec przykładu negatywnego, natomiast każda para liczb w polu ’Signal1’
oznacza początek i koniec przykładu pozytywnego. W jednej linii może być
umieszczony ciąg par liczb rozdzielony spacjami.
W drugim formacie nazwanym UCI w pierwszej linii pliku występuje
liczba oznaczająca pozycję konsensusu w sekwencji. W przypadku donora
3
podaje się pozycję miejsca rozcięcia o sekwencji ’GT’ a w przypadku akceptora pozycję miejsca rozcięcia ’AG’. W kolejnych liniach podano na przemian:
kategorię przykładu (0 lub 1) i sekwencję przykładu. Przykładowy fragment
pliku w tym formacie można zobaczyć poniżej:
9
1
ATTGGACGGGTGAGTGCG
0
GGTGCCAACGTAAGTAAT
1
TCAGCTGGGGTAAGGCAT
1
AGGCTGCAAGTAAGTATG
0
TGGAGCGAGGTGAGGTGC
0
CAGGGCCAGGTGAGGGGC
Pliki z danymi mogą mieć dowolną nazwę, muszą jednak mieć rozszerzenie
’.dat’. W parze z każdym plikiem ’.dat’ musi istnieć plik ’.alp’, który to
zawiera napisane w jednej linii bez odstępów symbole alfabetu używanego w
pliku ’.dat’. Przykładowo, załóżmy że mamy plik z danymi sekwencjami DNA
i nazwaliśmy go ’IRE.dat’. Musimy zatem stworzyć plik ’IRE.alp’ zawierający
w pierwszej linii tekst ’ATCG’.
Jeżeli nie chcemy korzystać z procesu walidacji krzyżowej to musimy dostarczyć oddzielny zbiór testujący. Zbiór ten musi być w tym samym formacie
co zbiór trenujący, natomiast zamiast rozszerzenia .dat musi mieć rozszerzenie ’.tst’
2.2
Pliki wyjściowe
Po uruchomieniu KIS na standardowym wyjściu błędów pojawiają się nazwy wykonywanych właśnie operacji a po nich liczby (w %) świadczące o
postępie tych operacji. Oprócz tego na wyjściu standardowym KIS wypisywane są znalezione atrybuty, zbudowane i przycięte drzewa decyzyjne, jak
również podstawowe miary jakości uzyskanych klasyfikatorów. W systemach
linuksowych, w razie potrzeby, zarówno strumień błędów, jak i standardowy
strumień wyjściowy można przekierować do pliku.
Oprócz tego przy pierwszym uruchomieniu KIS dla danego zbioru danych,
powstaje plik zawierający wyniki klasyfikatorów wygenerowanych przez KIS
4
mierzone za pomocą różnych miar. Zawarte tam są wyniki najlepsze, najgorsze, średnie, jak również wyniki najlepszego modelu wytypowanego na
podstawie analizy wyników na zbiorze trenującym. Oprócz samych wyników,
w pliku tym zapisuje się również czas wykonania programu, jak również jego
parametry dla których uzyskano zapisane właśnie wyniki. Plik ten ma nazwę
podstawową taką jak plik z danymi, natomiast jego rozszerzenie to ’.csv’.
Plik ten jest w standardowym formacie CSV, dlatego można go otworzyć i
dalej obrabiać w każdym arkuszu kalkulacyjnym. Przy kolejnym uruchomieniu KIS dla tego samego pliku z danymi, kolejne wyniki dołączane są na
koniec odpowiedniego pliku ’.csv’.
Kolejny plik CSV generowany jest w przypadku wykorzystania algorytmu ewolucyjnego. Nazwa tego pliku powstaje z nazwy podstawowej pliku ze
zbiorem danych, do której dokleja się ka końcu człon ’EA.csv’. W pliku tym
zapisują się wartości funkcji dostosowania najlepszego osobnika w populacji
oraz średnia wartość tej funkcji w populacji w zależności od liczby generacji.
Dane te przydają się podczas analizy zachowania algorytmu ewolucyjnego.
Kolejny plik wyjściowy generowany jest w przypadku problemów takich
jak IRE o ile włączono odpowiedni parametr w pliku konfiguracyjnym i dostarczono dodatkowe dane w pliku wejściowym. Plik ten ma nazwę podstawową taką jak plik z danymi, natomiast jego rozszerzenie to ’.AdditInfo’. W
pliku tym podane są adresy w sekwencji sygnału znalezionego i prawdziwego
oraz odpowiadające im podsekwencje. Jest to ogromnie przydatne w procesie analizy i interpretacji wyników. W początkowej fazie badań szukając
IRE uzyskano bardzo dobrą jakość dzięki znalezieniu sygnałów pozwalających rozróżnić 5’UTR od 3’UTR. Na późniejszym etapie prac problem ten
udało się wyeliminować przez ulepszenie procesu tworzenia pliku trenującego.
Następne pliki wyjściowe, jeden z rozszerzeniem ’.roc’ a drugi z końcówką ’Pr.roc’, powstają jako dane wejściowe dla zewnętrznego programu obliczającego pola powierzchni pod krzywymi ROC i PRC. W pierwszym z
wymienionych plików znajdują się dane obliczone na nieprzyciętym klasyfikatorze, drugi plik zawiera dane klasyfikatora przyciętego. Na podstawie tych
plików program zewnętrzny tworzy kolejne pliki, przy czym plik z końcówką
’ROC.txt.roc’ zawiera dane potrzebne do narysowania krzywej ROC, a plik
z końcówką ’ROC.txt.pr’ zawiera dane potrzebne do narysowania krzywej
PRC.
3
Parametry programu
W tym samym katalogu co plik wykonywalny musi znajdować się plik nazwie
’KIS.param’ zawierający parametry programu. Przykładową zawartość tego
5
pliku przedstawiono poniżej:
Number_of_folds:
0
Number_of_runs:
10
How_many_attributes_generate:
3
Population_size:
20
Number_of_generations:
500
How_many_random_points:
10000
Search_algorithm:
1
Categ_in_node:
2
Number_of_analyzed_nucleotides_from_splice_site:
40
Program_working_mode:
1
Input_file_type:
1
Space_type:
7
Elitarity_in_EA:
1
Incrementally_build_tree:
0
Evaluator:
1
Search_4_attribute_type:
3
Min_number_of_examples_to_start_search:
10
Single_starting_points:
1
Percent_4_pruning:
30
EA_save_old_population:
6
1
Max_search_range_4_pos:
50
Opposite_class_influence:
50
Penalty_4_regexp_length:
1900
Penalty_4_regexp_flex:
1900
Penalty_4_variable:
4000
Alpha_in_penalty:
100
Min_Sup_4_simple_evaluator:
1
Window_size_for_generating_starting_points:
6
How_many_best_starting_points_generate:
10
Allowed_number_of_misclassified_examples:
4
Min_test_IC:
1
Min_information_gain:
1
Log_additional_signal:
0
Tak samo jak w plikach omawianych do tej pory w pliku tym w jednaj linii
znajduje się nazwa parametru a w drugiej jego wartość. Znaczenie poszczególnych parametrów jest następujące:
Number of folds – odpowiada za liczbę zbiorów danych powstałych w procesie walidacji krzyżowej. Wartość 0 tego parametru oznacza wyłączenie
procesu walidacji krzyżowej. W takim przypadku musi istnieć oddzielny zbiór testujący. Sensowne wartości tego parametru rozpoczynają się
od liczby 3, a najczęściej stosowaną wartością jest 10.
Number of runs – odpowiada za liczbę niezależnych uruchomień metody
KIS. Najczęściej stosowano tu wartość 10.
How many attributes generate – odpowiada za liczbę zwróconych atrybutów w pojedynczym procesie przeszukiwania przestrzeni. Najczęściej
7
stosowano tu wartość 3, sensowne wartości zawierają się w przedziale
od 1 do 4.
Population size – odpowiada za rozmiar populacji w algorytmie ewolucyjnym. Najczęściej stosowano tu wartość 20.
Number of generations – odpowiada za ilość generacji w algorytmie ewolucyjnym. Najczęściej stosowano tu wartość 500.
How many random points – odpowiada za ilość wylosowanych rozwiązań w algorytmie RW, spośród których How many attributes generate najlepszych zwracanych jest jako wynik procesu przeszukiwania
przestrzeni. Najczęściej stosowano tu wartość 10000.
Search algorithm – odpowiada za wybór algorytmu przeszukiwania przestrzeni i może przyjmować cztery wartości. Wartość 1 oznacza zastosowanie algorytmu zachłannego poruszającego się tylko w kierunku
uszczegóławiania, wartość 4 oznacza również algorytm zachłanny, który
tym razem poruszać się może również w kierunku uogólniania. Wartość
2 oznacza zastosowanie algorytmu ewolucyjnego, a wartość 3 metody
losowej nazwanej RW.
Categ in node – odpowiada za wybór sposobu określania kategorii w liściu
drzewa decyzyjnego. Możliwe są tu dwie wartości. Wartość 1 oznacza
wybór kategorii większościowej w węźle, natomiast wartość 2 oznacza,
że w przypadku dopasowania testu, za kategorię w liściu, odpowiadającym wynikowi testu true, uznaje się tę kategorię, dla której wyszukiwania test ten powstał.
Number of analyzed nucleotides from splice site – określa ile nukleotydów licząc od miejsca rozcięcia włączonych będzie do sekwencji przykładów negatywnych generowanych przez KIS. Parametr ten jest bardzo rzadko wykorzystywany. Jest on przydatny w przypadku poszukiwania donorów i akceptorów, kiedy w danych w formacie KIS nie ma
przykładów negatywnych i KIS musi je sam wygenerować.
Program working mode określa sposób traktowania danych wejściowych.
Ustawianie jego wartości na 1 włącza normalną pracę KIS, podczas której w przykładach pozytywnych należy znaleźć sygnał, który różni je od
przykładów negatywnych. Przykładowe zadania tego typu to: rozróżnianie intronów od eksonów, czy rozróżnianie sekwencji zawierających
IRE od innych. W przypadku ustawienia tego parametru na 2 lub 3,
w podanych sekwencjach trenujących znajduje się wyróżniona pozycja
8
wystąpienia sygnału, a podsekwencja znajdująca się przed tą pozycją
może mieć inny charakter niż ta znajdująca się za nią. Przykładem problemów tego typu są problemy znajdowania donora i akceptora. W obu
przypadkach dostępne są zbiory danych z sekwencjami o stałej długości,
w których na określonej pozycji występuje stały, krótki fragment DNA,
np. ’GT’ w przypadku donora. W takim przypadku pozycje wcześniejsze niż wyróżniona należą do eksonu, a pozycje późniejsze do intronu.
Rozróżnianie pomiędzy liczbą 2 i 3 ustawioną jako wartość omawianego
parametru ma sens jedynie wtedy, kiedy w danych w formacie KIS nie
ma przykładów negatywnych, a więc KIS musi je wygenerować. Wówczas ustawienie liczby 2 prowadzi do generacji donorów, a liczby 3 do
generacji akceptorów.
Input file type – określa w jakim formacie podano dane wyjściowe. Możliwe są tu dwie wartości 1 – zastosowano format KIS ; 2 – zastosowano
format UCI.
Space type określa numer przestrzeni, która ma zostać użyta podczas procesu wyszukiwania atrybutów. Możliwe wartości to 1, 3, 4, 5, 6, 7.
Liczby te odpowiadają liczbom użytym w oznaczeniach przyjętych w
rozprawie (1 – Sp1, 3 – Sp3, itd.).
Elitarity in EA – określa czy zastosowany ma być wariant algorytmu ewolucyjnego, w którym mamy pewność że aktualnie najlepszy osobnik
przeżyje selekcję (wartość 1), czy nie mamy takiej gwarancji (wartość
2).
Incrementally build tree – określa czy przeprowadzić standardowy proces indukcji drzewa decyzyjnego (0), czy przeprowadzić proces jego
inkrementacyjnej indukcji (1), czy proces indukcji inkrementacyjnej
z negacją (2). Ta ostatnia wartość nie była omawiana i używana w
rozprawie gdyż daje dobre wyniki tylko dla niektórych rzadko spotykanych problemów. W tej wersji algorytmu na poziomie pierwszym
drzewa wybierany jest test potwierdzający daną hipotezę (np. to jest
intron), natomiast na następnych poziomach testy wychwytujące wyjątki w stosunku do poziomu wyższego. Przykładowo dla wyniku true
testu zbudowanego do wykrywania intronów powstanie węzeł drzewa z
testem wychwytującym nie introny.
Evaluator – określa którą rodzinę funkcji oceny należy użyć. Może on przyjmować 3 wartości. Wartość 0 określa najprostszą rodzinę funkcji oceny
stosowaną wraz z przestrzenią Sp1. Wartości 1 i 2 można stosować począwszy od przestrzeni Sp3. Wybranie wartości 1 oznacza użycie w KIS
9
rodziny funkcji opartych na różnicy ilości dopasowań pomiędzy klasami,
natomiast użycie wartości 2 oznacza wybranie rodziny funkcji opartych
na entropii.
Search 4 attribute type – określa rodzaj atrybutów jakie powstaną w wyniku konstruktywnej indukcji. Możliwe wartości to: 1 – atrybuty pozycyjne; 2 – atrybuty częstościowe; 3 – atrybuty badające istnienie wzorca; 0 – wszystkie wcześniej wymienione (1+2+3).
Min number of examples to start search – określa minimalną liczbę przykładów w węźle drzewa decyzyjnego konieczną do rozpoczęcia procesu
indukcji atrybutów przy włączonej procedurze inkrementacyjnej indukcji klasyfikatora.
Single starting points – określa rodzaj stosowanych punktów startowych.
Wartość 1 oznacza zastosowanie punktów o długości 1, wartość 0 oznacza zastosowanie How many best starting points generate najlepszych punktów o długości Window size for generating startingpoints.
Percent 4 pruning – określa ile procent ze zbioru trenującego należy przeznaczyć na zbiór przycinający. Parametr ten ma zastosowanie tylko
przy ocenie klasyfikatora na wydzielonym zbiorze testującym. W przypadku zastosowania n-krotnej walidacji krzyżowej, do przycinania zastosowany będzie jeden z n podzbiorów zbioru trenującego uzyskanych
w danym momencie dzięki walidacji krzyżowej.
EA save old population – określa czy zastosowanej wersji algorytmu ewolucyjnego populacja przed mutacją ma być zachowana i brać udział w
procesie selekcji. Ustawienie tego parametru na 1 powoduje zachowanie
populacji sprzed mutacji, ustawienie tego parametru na zero powoduje
to, że osobnik zmutowany od razu zastępuje swojego rodzica.
Max search range 4 pos – działa tylko w przypadku atrybutów pozycyjnych i określa w jakim obszarze w odniesieniu do miejsca rozcięcia należy szukać optymalnej pozycji dopasowania. Ustawienie małego zakresu
przeszukiwań powoduje przyspieszenie pracy algorytmu.
Opposite class influence – stosowany jest w najprostszych funkcjach oceny (rodzina 0 i 1) i określa w procentach na ile jakość dopasowania do
klasy przeciwnej wpływa na jakość dopasowania dla klasy poszukiwanej (wartość tego parametru dzielona jest przez 100 przy wczytaniu
10
pliku konfiguracyjnego – w takiej postaci parametr ten to parametr α
ze wzoru na QPropEx w rozprawie [1]).
Penalty 4 regexp length – określa wartość kary doliczanej za dołożenie
atomu do wyrażenia. Podana wartość podczas wczytywania pliku konfiguracyjnego dzielona jest przez 100 tysięcy.
Penalty 4 regexp flex – określa wartość kary doliczanej za jednostkową
elastyczność. Podana wartość podczas wczytywania pliku konfiguracyjnego dzielona jest przez 100 tysięcy.
Penalty 4 variable – określa wartość kary doliczanej za użycie zmiennej
w wyrażeniu regularnym. Podana wartość podczas wczytywania pliku
konfiguracyjnego dzielona jest przez 100 tysięcy.
Alpha in penalty – określa wpływ kosztu testu na jego ocenę. Wartość ta
wyrażona jest w procentach i ma zastosowanie w funkcjach oceny opartych na entropii (QEntr* ). Wartość ta podzielona przez sto odpowiada
parametrowi α we wzorze 15 w rozprawie.
Min Sup 4 simple evaluator – parametr ten używany jest tylko przy zastosowaniu najprostszych funkcji oceny (Evaluator = 0). Określa on
w procentach minimalne wsparcie znalezionego testu, np. dla wartości jeden, znaleziony test aby był zaakceptowany, musi zwrócić wartość
true przynajmniej dla 1% przykładów trenujących.
Allowed number of misclassified examples – parametr ten używany jest
przy sprawdzaniu warunku zatrzymania procedury budowy drzewa decyzyjnego. Podana wartość oznacza akceptowalną liczbę pomyłek w
liściu drzewa decyzyjnego.
Min test IC – parametr ten używany jest tylko przy zastosowaniu rodziny
funkcji oceny opartej na entropii (Evaluator = 2). Oznacza on minimalną akceptowalną zawartość informacji w teście. Podana wartość
podczas wczytywania pliku konfiguracyjnego dzielona jest przez 100
tysięcy.
Min information gain – parametr ten używany jest tylko przy zastosowaniu rodziny funkcji oceny opartej na entropii (Evaluator = 2). Oznacza on minimalny akceptowalny przyrost informacji związany z danym
atrybutem. Podana wartość podczas wczytywania pliku konfiguracyjnego dzielona jest przez 100 tysięcy.
11
Log additional signal – parametr ten w większości przypadków ustawiony
jest na 0. Ustawienie go na 1 powoduje włączenie zapisywania do pliku ’.AdditInfo’ dodatkowych informacji przydatnych podczas interpretacji wyników KIS. Mechanizm ten stosowany był przy poszukiwaniu
sygnałów IRE do sprawdzenia czy znaleziony sygnał jest tym, o który chodziło. Aby zapisywanie to było możliwe, w pliku z danymi musi
zostać umieszczona odpowiednia informacja, co było już omawiane w
podrozdziale dotyczącym formatu plików wejściowych.
Oprócz niniejszej instrukcji w ustawianiu parametrów KIS pomocne są
ich hasłowe opisy znajdujące się w pliku konfiguracyjnym.
4
Instalacja i uruchamianie
KIS tworzony był w C++ w systemie operacyjnym Linux Debian [4]. Użyto kompilatora GCC w wersji 4.1.2. Wykorzystano elementy z biblioteki
standardowej, jak również moduł regexp (do obsługi wyrażeń regularnych)
z biblioteki Boost [2] w wersji 1.41. Funkcjonalność wspomnianego modułu
regexp została rozszerzona po to, aby umożliwić budowanie wyrażeń regularnych opisujących istotne dla DNA cechy. Aby skompilować KIS najlepiej skorzystać ze standardowego narzędzia scons wydając polecenie ’scons’
w katalogu w którym znajduje się plik ’SConstruct’ Po udanej kompilacji
zostanie utworzony program wykonywalny o nazwie ’KIS’. W przypadku
braku programu ’scons’ w systemie operacyjnym Linux wystarczy zainstalować odpowiedni pakiet (scons). W systemie operacyjnym Windows należy
zainstalować pythona (http://www.python.org/download/releases/2.6.5/) a
następnie scons (http://www.scons.org/). Należy również dodać ścieżkę do
’PYTHON PATH\Scripts’ do ścieżki systemowej ’PATH’.
Jedną z wielu miar jakości podawanych przez KIS są pola powierzchni pod
krzywymi ROC i PRC. Do ich obliczania wykorzystano zewnętrzny program
[3] napisany w języku Java. Plik z kodem tego programu nazywa się ’auc.jar’
i musi być w tym samym katalogu co plik wykonywalny i plik z parametrami.
Przykładowe uruchomienie: zakładamy że program nazywa się KIS, w
tym samym katalogu znajduje się plik z parametrami, plik ’auc.jar’ i pliki
z danymi (IRE.dat, IRE.tst, IRE.alp). Po odpowiednim ustawieniu parametrów programu obliczenia rozpoczynamy za pomocą komendy: ’./KIS IRE’
(należy zauważyć że nie podajemy rozszerzenia pliku z danymi).
12
Literatura
[1] Rafał Biedrzycki: Konstruktywna indukcja w zadaniu klasyfikacji sekwencji DNA. Praca doktorska, Politechnika Warszawska, 2009.
[2] Boost. http://www.boost.org/, [dostęp 01.02.2008].
[3] Jesse Davis and Mark Goadrich: The relationship between PrecisionRecall and ROC curves. ICML, 2006.
[4] Debian. http://www.debian.org/, [dostęp 01.02.2008].
[5] Tim Littlefair: CCCC. http://cccc.sourceforge.net/, [dostęp 01.02.2008].
13