Update on Overleaf.

This commit is contained in:
micmac9 2021-09-21 07:55:36 +00:00 committed by node
parent cc8ee91c5f
commit 8f734d790a
22 changed files with 749 additions and 35 deletions

View File

@ -0,0 +1,382 @@
\chapter{Eksperymenty porównujące skuteczność algorytmów}
\section{Cel i~przebieg eksperymentów}
\subsection{Cel}
We współczesnym świecie coraz częściej używana jest technologia uczenia maszynowego. Z tego powodu należy dobierać odpowiednie algorytmy do konkretnych zadań. W~obecnej literaturze brak jest wciąż pełnej analizy, w~jakiej sytuacji, które algorytmy działają najbardziej.
Podczas gdy często spotykane są porównania poszczególnych algorytmów, zwykle dotyczą one konkretnego trybu działania: wsadowego lub strumieniowego. Celem eksperymentów jest porównanie skuteczności działania algorytmów w~obu trybach.
\subsection{Przebieg eksperymentów}
Kluczowym dla skutecznego wyboru odpowiedniego algorytmu są dwie opcje:
\begin{itemize}
\item jeżeli mam do wyboru jeden algorytm działający w~dwóch trybach, który tryb powinienem wybrać,
\item jeżeli mam do wyboru wiele algorytmów, z~której dziedziny powinienem szukać najlepszego (wsadowych czy strumieniowych).
\end{itemize}
Z tego powodu najpierw algorytmy zostaną porównane w~parach --- algorytm działający w~trybie wsadowym i~najbardziej zbliżona do niego strumieniowa implementacja. Zostanie porównana ich skuteczność predykcji po treningu oraz czas nauki. Główną miarą braną pod uwagę będzie celność, ale w~przypadku używania niezbalansowanych zbiorów danych, zostanie też wzięty pod uwagę \emph{F1-score}.
Następnie zostanie przebadane, jak dobrze te algorytmy skalują się wraz z~rozmiarem zbioru treningowego. Na rzeczywistych zbiorach danych, algorytmy będą trenowane, od najmniejszych rozmiarów wsadów próbek po cały zbiór danych. Zależnie od szybkości wzrastania czasu nauki będziemy mogli rozpoznać, który algorytmów z~pary lepiej się skaluje.
Drugą częścią eksperymentu będzie wytrenowane i~podane ewaluacji większa grupa algorytmów. Podobnie jak w~pierwszej części ustalone zostaną celność, \emph{F1-score} i~czas nauki. Na tej podstawie bedzie można określić, czy któraś grupa algorytmów (wsadowa czy strumieniowa) lepiej nadaje się do pewnych zadań.
TODO: zdanie do zmiany, brzydkie strasznie
\section{Wykorzystane technologie}
\subsection{Python}
W tym projekcie wszystkie eksperymenty i~wizualizacje dokonywane są za pomocą języka Python. Pomimo braków w~szybkości działania, duża liczba gotowych bibliotek sprawia, że Python doskonale nadaje się do zadań związanych z~badaniem algorytmów.
Do programowania użyta została aplikacja Jupyter Notebook. Pozwala ona na wygodną wizualizację kolejnych kroków eksperymentu, interaktywne programowanie oraz na prezentację projektów.
\subsection{Scikit-learn i~skmultiflow}
Scikit-learn jest prostą bibliotekę zawierającą implementacje wielu podstawowych algorytmów uczenia maszynowego oraz metod ich ewaluacji. Skupia się głównie na algorytmach wsadowych, ale daje dostęp także do algorytmów strumieniowych. Pozwala ona na zaimportowanie między innymi regresji logistycznej, maszyn wektorów nośnych i~drzew decyzyjnych.
Ze względu na brak wszystkich algorytmów w~bibliotece sklearn; zostanie użyta także skmultiflow, zawierający potrzebną implementację algorytmu Drzew Hoeffdinga. Warto zwrócić uwagę, że sposób nauki w~skmultiflow różnie się od implementacji w~sklearn. W~tej bibliotece znacznie bardziej skupiono się na strumiowym napływie danych - algorytmy są do nich lepiej przystosowane (przez metodę \emph{partial fit} akceptującą pojedyncze próbki).
Ze względu na różnicę w~prędkościach różnych bibliotek, do zimportowania modeli zostały użyte tylko powyższe dwie biblioteki. Wykorzystanie różnych bibliotek dla różnych algorymtów mogłoby znacznie zaważyć na wiarygodności porównania.
\subsection{Pandas i~nltk}
Do obróbki i~przygotowania danych do treningu szczególnie wykorzystane zostały biblioteki pandas i~nltk.
Pandas jest biblioteką o wysokiej wydajności pozwalającą na szybką manipulację danymi i~ich prostą wizualizację. Pozwala na przygotowanie danych, dzięki łatwej możliwości edycji kolumn, co jest konieczne przy wybieraniu, tworzeniu i~usuwaniu wymaganych dla nauki cech próbek.
W zadaniach z~przetwarzania języka naturalnego przydatna jest biblioteka nltk (ang. \emph{Natural Language Toolkit}). Przy pomocy tzw. stop list, tokenizatorów i~narzędź do lematyzacji pozwala na odpowiednie przygotowanie danych tekstowych do nauki. Razem z~narzędziami do wektoryzacji z~biblioteki sklearn tworzy zespół narzędź, które pozwalają na przygotowanie --- od początku do końca --- tekstu do treningu.
\section{Wybrane algorytmy}
Do pierwszej części eksperymentów należało wybrać najbliższe sobie pary algorytmów.
\begin{itemize}
\item regresja logistyczna i~jej inkrementalna wersja ze stochastycznym spadkiem gradientu,
\item maszyny wektorów nośnych i~ich inkrementalna wersja ze stochastycznym spadkiem gradientu,
\item Drzewa Decyzyjne CART i~Drzewa Hoeffdinga.
\end{itemize}.
Do drugiej części eksperymentów zostały wybrane algorytmy:
\begin{itemize}
\item regresja logistyczna (oznaczenie w~tabelach LG),
\item regresja logistyczna ze stochastycznym spadkiem gradientu (oznaczenie w~tabelach SGD-LG),
\item maszyny wektorów nośnych (oznaczenie w~tabelach SVM),
\item maszyny wektorów nośnych ze stochastycznym spadkiem gradientu (oznaczenie w~tabelach SGD-SVM),
\item Percepetron (oznaczenie w~tabelach PERC),
\item Drzewa Hoeffdinga (oznaczenie w~tabelach HTC),
\item Pasywno Agresywno Klasyfikator (oznaczenie w~tabelach PAAG).
\end{itemize}.
\section{Użyte zbiory danych}
\subsection{Syntetyczne zbiory danych}
Ze względu na proste generowanie dużych ilości danych, a także sprawowanie kontroli nad trudnością nauki dla algorytmów, użyte zostały syntetyczne zbiory danych. Zostały wygenerowane dwa zbiory z~biblioteki skmultiflow i~jeden z~sklearn.
\subsubsection{Sklearn \emph{make classification generator}}
Generator z~biblioteki sklearn (oznaczany w~tabeli jako Sklearn Gen) pozwala na kontrolowanie poszczególnych cech generowanego zbioru danych. Zostało wygenerowane 500 tysięcy próbek, o 100 cechach. Dane zostały wygenerowane tak, aby:
\begin{itemize}
\item liczba cech informatywnych (relewantnych) wynosiła 5,
\item liczba przewidywanych klas wynosiła 4,
\item wartość \emph{flipy}, czyli siła szumu, wynosiła 0.15 (względnie wysoka wartość).
\end{itemize}
\subsubsection{SEAGenerator}
SEAGenerator (oznaczany w~tabeli jako SEA Gen) pozwala na wygenerowanie danych opartych na funkcji matematycznej. Generuje on 3 numeryczne cechy, których wartość znajduje się pomiędzy 0 a 10, i~tylko dwie są relewantne dla klasyfikacji. Wybierana jest funkcja klasyfikacji spośród czterech dostępnych. Funkcje te, porównują sumę dwóch atrybutów z~wartością z~pewną wartością progu (unikalną dla każdej funkcji). W zależności od wyniku porównania, generator klasyfikuje próbkę jedną z~dwóch etykiet.
Została wybrana funkcja:
wygeneruj 0, jeżeli:
\begin{displaymath}
att_1 + att_2 <= 8
\end{displaymath}
w innym przypadku wygeneruj 1.
Zostało wygenerowane 500 tysięcy próbek, z~20\% udziałem próbek ,,zaszumionych''.
\subsubsection{LEDGenerator}
LEDGenerator (oznaczany w~tabeli jako LED Gen) oparty jest na analogowym wyświetlaczu LED. Każda z~7 cech jest wartością pokazującą, czy dany ,,bit'' świeci się czy nie. Na tej podstawie przewidywane jest, jaka cyfra świeci się na wyświetlaczu. Każdy atrybut ma 10\% szansę na posiadanie odwróconej (fałszywej wartości).
Zostało wygenerowane 500 tysięcy próbek, z~20\% udziałem próbek ,,zaszumionych''.
\subsection{Rzeczywiste zbiory danych}
\subsubsection{Irish News}
\emph{Irish News} jest zbiorem danych z~dziedziny przetwarzania języka naturalnego. Dane zostały zebrane z~gazet od 1996 do 2019 roku i~zawierają teksty nagłówków gazet. Celem algorytmów jest określenie kategorii nagłówka.
Przed nauką kategorie zostały pogrupowane w~kilka mniejszych grup. Wcześniej liczba kategorii wynosiła 102, i~została pogrupowana w~sześć ogólniejszych kategorii (\emph{news, sport, lifestyle, opinion culture, business}). Z tekstów usunięto słowa ze stop listy, podane je lematyzacji, następnie zostały one zwektoryzowane. W teście wszystkich wybranych algorytmów wykorzystano 500 tysięcy losowo wybranych próbek.
\subsubsection{Forest Coverage Dataset}
Zbiór danych \emph{Forest Coverage} (w tabelach w~skrócie opisywany jako Forest) zawiera 581012 próbek, obserwacji zebranych w~\emph{Roosevelt National Forest} w~Colorado.
Wśród cech znajdują się między innymi: nachylenie, typ gleby, dystans do wody czy dród. Przewidywaną wartością jest okrycie lasu - to znaczy takiego typu drzewa, który zajmuje większą część lasu (oznaczony jest numerem od 0 do 6)
\subsubsection{Text reviews of German universities}
Kolejnym rzeczywistym zbiorem danych są tekstowe opinie na temat niemieckich uniwersytetów (w skrócie będą oznaczane jako "Universities"). Zawiera on 221721 próbek danych. Zadaniem na tym zbiorze danych jest przewidzenie wartości ,,weiter empfehlung'' - wartości boolowskiej oznaczającej, czy student wystawiający opinię poleca uczelnię.
Cechą ,,inhalt'' jest opinia ucznia w~jego natywnym języku. Przed nauką z~tekstów usunięto słowa ze stop listy, podane je lematyzacji, następnie zostały one zwektoryzowane.
\section{Porównanie regresji logistycznej w~trybie wsadowym i~strumieniowym}
Regresję logistyczną wytrenowano w~obu trybach na sześciu zbiorach danych. Wyniki zamieszczone są w~tabeli \ref{fig:log_tabel_comp}
Można zaobserwować, że regresja logistyczna działająca w~trybie wsadowym odnosi nieco lepsze wyniki. Często jednak różnica ta jest statystycznie nieistotna. Duża różnica natomiast pojawia się, jeżeli weźmie się pod uwagę czas nauki. Jest on zwykle znacznie dłuższy (zwłaszcza w~zadaniach związanych z~NLP). Stochastyczny spadek gradientu odnosi nieco lepsze wyniki w~pracy z~dwoma ze syntetycznych zbiorów - dane wygenerowane w~nich są proste do nauki i~przewidywania. Wyjątkiem jest zbiór LED, który miał większy współczynnik hałasu - tutaj tryb wsadowy działa znacznie lepiej.
Na wykresach \ref{fig:lgvssgd_forest}, \ref{fig:lgvssgd_irish} i~\ref{fig:lgvssgd_univ}, została pokazana skalowalność modeli regresji liniowej w~obu trybach. Można zaobserwować, że tryb wsadowy skaluje się znacznie gorzej od trybu strumieniowego. Jest to widoczne zwłaszcza w~zadaniach z~przetwarzania języka naturalnego, gdzie różnica we wzroście czasu nauki jest bardzo duża.
\begin{table}
\centering
\begin{tabular}{|c|cc|cc|cc|}
\cline{2-7}
\multicolumn{1}{c|}{} & \multicolumn{1}{c|}{LG} & SGD-LG & \multicolumn{1}{c|}{LG} & SGD-LG & \multicolumn{1}{c|}{LG} & SGD-LG \\
\cline{2-7}
\multicolumn{1}{c|}{} & \multicolumn{2}{c|}{Accuracy} & \multicolumn{2}{c|}{F1 score} & \multicolumn{2}{c|}{Time [s]} \\
\hline
Forest & \textbf{0.754} & 0.676 & \textbf{0.426} & 0.331 & 84.40 & \textbf{52.049} \\
\hline
Irish News & \textbf{0.6025} & 0.594 & \textbf{0.432} & 0.274 & 463.438 & \textbf{5.911} \\
\hline
Universities & 0.909 & 0.909 & \textbf{0.653} & 0.64 & 5.481 & \textbf{1.384} \\
\hline
Sklearn Gen & \textbf{0.523} & 0.51 & \textbf{0.519} & 0.506 & \textbf{2.753} & 13.231 \\
\hline
SEA Gen & \textbf{0.809} & 0.782 & \textbf{0.791} & 0.761 & \textbf{0.568} & 1.289 \\
\hline
LED Gen & 0.531 & \textbf{0.532} & \textbf{0.529} & 0.528 & 22.298 & \textbf{7.321} \\
\hline
\end{tabular}
\caption{Porównanie wyników regresji logitycznej w~obu trybach}
\label{fig:log_tabel_comp}
\end{table}
\begin{figure}[H]
\caption {Porównanie skalowalności obu trybów (Forest dataset)}
\includegraphics[scale=0.9]{Images/lgvssgd_forest.png}
\label{fig:lgvssgd_forest}
\end{figure}
\begin{figure}[H]
\caption {Porównanie skalowalności obu trybów (Irish News dataset)}
\includegraphics[scale=0.9]{Images/lgvssgd_irish.png}
\label{fig:lgvssgd_irish}
\end{figure}
\begin{figure}[H]
\caption {Porównanie skalowalności obu trybów (Universities dataset)}
\includegraphics[scale=0.9]{Images/lgvssgd_univ.png}
\label{fig:lgvssgd_univ}
\end{figure}
\section{Porównanie maszyn wektorów nośnych w~trybie wsadowym i~strumieniowym}
Testy maszyn wektorów nośnych zostały dokonane na tych samych zbiorach danych, co w~przypadku regresji logistycznej. Wyniki zostały przedstawione w~tabeli \ref{fig:svm_table_comp}. Podobnie jak w~przypadku regresji logistycznej, wsadowa wersja algorytmu maszyn wektorów nośnych skaluje się znacznie gorzej od strumieniowej wersji.
\begin{table}
\centering
\begin{tabular}{|c|cc|cc|cc|}
\hline
& \multicolumn{1}{c|}{SVM} & SGD-SVM & \multicolumn{1}{c|}{SVM} & SGD-SVM & \multicolumn{1}{c|}{SVM} & SGD-SVM \\
\hline
& \multicolumn{2}{c|}{Accuracy} & \multicolumn{2}{c|}{F1 score} & \multicolumn{2}{c|}{Time} \\
\hline
Forest & 0.681 & \textbf{0.683} & \textbf{0.325} & 0.291 & 122.532 & \textbf{47.278} \\
\hline
Irish News & \textbf{0.652} & 0.643 & \textbf{0.317} & 0.295 & 237.667 & \textbf{5.359} \\
\hline
Universities & \textbf{0.909} & 0.906 & \textbf{0.618} & 0.558 & 76.343 & \textbf{1.416} \\
\hline
Sklearn Gen & \textbf{0.528} & 0.485 & \textbf{0.518} & 0.47 & 1061.678 & \textbf{18.55} \\
\hline
SEA Gen & \textbf{0.52} & 0.497 & \textbf{0.532} & 0.478 & 301.151 & \textbf{6.379} \\
\hline
LED GEN & 0.492 & \textbf{0.502} & 0.463 & \textbf{0.485} & 6.785 & \textbf{6.972} \\
\hline
\end{tabular}
\caption{Porównanie wyników maszyn wektorów nośnych w~obu trybach}
\label{fig:svm_table_comp}
\end{table}
Wyniki ewaluacji umiejętności predykcji dla obu trybów tego algorytmu są bardzo zbliżone (zarówno celności jak i~\emph{F1-score}. Tryb iteracyjny był jednak znacznie szybszy we wszystkich (poza danymi ze zbioru LED) przypadkach.
Porównanie skalowalności algorytmów przedstawiono na wykresach \ref{fig:svc_forest}, \ref{fig:svc_irish} i~\ref{fig:svc_univ}. Podobnie jak w~przypadku regresji logistycznej, szczególnie widoczna jest różnica dla danych z~zadań NLP.
\begin{figure}[H]
\caption {Porównanie skalowalności obu trybów (Forest dataset)}
\includegraphics[scale=0.9]{Images/svc_forest.png}
\label{fig:svc_forest}
\end{figure}
\begin{figure}[H]
\caption {Porównanie skalowalności obu trybów (Irish News dataset)}
\includegraphics[scale=0.9]{Images/svc_irish.png}
\label{fig:svc_irish}
\end{figure}
\begin{figure}[H]
\caption {Porównanie skalowalności obu trybów (Universities dataset)}
\includegraphics[scale=0.9]{Images/svc_uni.png}
\label{fig:svc_univ}
\end{figure}
\section{Porównanie drzew decyzyjnych i~Drzew Hoeffdinga}
Klasyfikator drzew decyzyjnych (CART) i~Drzewa Decyzyjne zostały przetestowane na jednym rzeczywistym zbiorze danych i~trzech syntetycznych. Nie zostały wykorzystane dwa zbiory danych, dotyczące problemu NLP (implementacja Drzew Hoeffdinga nie była przygotowana do zwektoryzowanego formatu danych). Wyniki znajdują się w~tabeli \ref{fig:htc_dtc_results}.
\begin{table}
\centering
\begin{tabular}{|c|cc|cc|cc|}
\hline
& \multicolumn{1}{c|}{DTC} & HTC & \multicolumn{1}{c|}{DTC} & HTC & \multicolumn{1}{c|}{DTC} & HTC \\
\hline
& \multicolumn{2}{c|}{Accuracy} & \multicolumn{2}{c|}{F1 score} & \multicolumn{2}{c|}{Time} \\
\hline
Forest & \textbf{0.924} & 0.787 & \textbf{0.844} & 0.572 & \textbf{1.032} & 141.280 \\
\hline
Sklearn Gen & 0.628 & \textbf{0.661} & 0.628 & \textbf{0.66} & \textbf{132.929} & 653.505 \\
\hline
SEA Gen & \textbf{0.686} & 0 & \textbf{0.669} & 0 & 5.65 & \textbf{1.5} \\
\hline
LED Gen & \textbf{0.362} & 0.1 & \textbf{0.362} & 0.018 & 2.634 & \textbf{1.418} \\
\hline
\end{tabular}
\caption{Porównanie wyników Drzew CART i~Drzew Hoeffdinga}
\label{fig:htc_dtc_results}
\end{table}
Podczas testów na rzeczywistym zbiorze danych, celność, \emph{F1-score} oraz czas nauki były znacznie lepsze dla Drzew CART. Przy pracy z~syntetycznymi danymi Drzewa Hoeffdinga osiągały bardzo słabe rezultaty (praktycznie zerowe) - kończąc naukę w~bardzo krótkim czasie.
Skalowalność obu algorytmów została przedstawiona na wykresie \ref{fig:htc_dtc}. Drzewa Hoeffdinga znacznie gorzej skalują się z~dużą ilością danych.
\begin{figure}
\caption {Porównanie skalowalności HTC i~DTC (Forest dataset)}
\includegraphics[scale=0.9]{Images/htc_dtc_forest.png}
\label{fig:htc_dtc}
\end{figure}
\section{Porównanie wszystkich wybranych algorytmów strumieniowych i~wsadowych}
Wyniki celności wszystkich algorytmów zostały przedstawione w~tabeli \ref{fig:accuracy_all}, F1-score w~tabeli \ref{fig:f2score_all} i~czasowe w~tabeli \ref{fig:time_all}.
Ze względu na skuteczność predykcji (zarówno celności i F1-score) najlepsze wyniki w zadaniach z przetwarzania języka naturalnego (Irish News i Universities Reviews) odniosła regresja logistyczna w trybie wsadowym. Ten sam algorytm w trybie strumieniowym i maszyny wektorów nośnych w obu trybach osiągnęły bardzo zbliżone wyniki w tym zadaniu.
Podczas pracy na zbiorach Forest i Sklearn Gen (wygenerowanym sztucznie zbiorzez przez scikit-learn) najlepsze wyniki predykcji osiągnęły implementacje drzew decyzyjnych. Na zbiorze rzeczywistym wyraźnie lepsze wyniki osiągnęły wsadowy klasyfikator drzew decyzyjnych, natomiast na sztucznym zbiorze, nieco lepsze wyniki osiągnęły drzewa Hoeffdinga. Maszyny wektorów nośnych i regresja logistyczna osiągały podobne wyniki w obu trybach (zwykle nieco lepsze dla trybu wsadowego).
Na wygenerowanym zbiorze SEA Gen wersje wsadowe regresji logistycznej i maszyn wektorów nośnych osiągnęły delikatnie lepsze wyniki; na zbiorze LED Gen wersje wsadowe gwarantowały lepszą predykcję. Algorytmy drzew decyzyjnych znacznie gorzej radziły sobie z tymi zadaniami (drzewa Hoeffdinga nie osiągnęły praktycznie żadnych istotnych rezultatów).
Na niemal żadnym zbiorze algorytmy Perceptron i Klasyfikator Pasywno Agresywny nie osiągnęły wystarczająco dobrych wyników. Jedynie na zbiorze Universities (względnie prostym --- co można wnioskować po wynikach pozostałych algorytmów --- do nauki) osiągnęły porównywalne z innymi algorytmami rezultaty.
Biorąc pod uwagę wyniki czasowe algorytmów, drzewa Hoeffdinga uczyły się wyjątkowo wolno. Z powodu tego, że nie radziły sobie z zwektoryzowanymi danymi, a dla zbiorów SEA i LED nie osiągnęły akceptowalnych wyników, nie będą one brane pod uwagę przy porównaniu.
Algorytmy strumieniowe Perceptrow i Klasyfikator Pasywno Agresywny osiągały najlepsze lub niemal najlepsze wyniki na każdym zbiorze danych, niezależnie czy zbiory były rzeczywiste, czy sztucznie wygenerowane.
Na rzeczywistych zbiorach danych znacznie lepsze wyniki osiągały strumiowe wersje regresji logistycznej i maszyn wektorów nośnych --- nawet trzy- i czterokrotnie szybsze czasy nauki od ich wsadowych odpowiedników.
Podczas treningu na sztucznych zbiorach danych taki stosunek znacznie się zmienił. Podczas nauki na zbiorach Sklearn Gen i SEA Gen, regresja logistyczna w trybie wsadowym uczyła się znacznie szybciej od jej wsadowej implementacji. Odwrotnie wyglądała sytuacja dla maszyn wektorów nośnych - tutaj implementacja strumieniowa uczyła się niemal 50 razy krócej od wsadowej dla zbioru wygenerowanego przez sklearn, i ponad 70 razy krócej dla zbioru SEA Gen.
Na zbiorze LED Gen strumieniowa regresja uczyła się szybciej od wersji wsadowej, natomiast implementacje maszyn wektorów nośnych osiągnęły niemal takie same wyniki.
Klasyfikator drzew decyzyjnych osiągnał najlepszy wynik dla zbioru danych Forest (w tym samym zbiorze, na którym osiągał najlepsze wyniki predykcji) i drugi najlepszy wynik dla zbioru LED Gen. W pozostałych przypadkach odnosił jedne z najgorszych wyników (zwłaszcza w porównaniu z algorytmami strumieniowymi).
\begin{table}
\caption{Wyniki celności dla wszystkich badanych algorytmów}
\label{fig:accuracy_all}
\centering
\begin{tabular}{|c|c|c|c|c|c|c|c|c|}
\hline
Accuracy & SGD-LG & SGD-SVM & PERC & PAAG & HTC & LOG & SVM & DTC \\
\hline
& \multicolumn{5}{c|}{Stream} & \multicolumn{3}{c|}{Batch} \\
\hline
Forest & 0.719 & 0.708 & 0.697 & 0.612 & 0.787 & 0.753 & 0.607 & \textbf{0.939} \\
\cline{1-1}
Irish & 0.617 & 0.629 & 0.544 & 0.56 & - & \textbf{0.644} & 0.64 & 0.573 \\
\cline{1-1}
Universities & 0.909 & 0.907 & 0.877 & 0.877 & - & \textbf{0.91} & 0.909 & 0.854 \\
\cline{1-1}
Sklearn Gen & 0.51 & 0.482 & 0.359 & 0.37 & \textbf{0.662} & 0.523 & 0.528 & 0.629 \\
\cline{1-1}
SEA Gen & 0.783 & 0.797 & 0.649 & 0.589 & 0 & 0.81 & \textbf{0.811} & 0.686 \\
\cline{1-1}
LED Gen & \textbf{0.532} & 0.503 & 0.423 & 0.3 & 0.101 & 0.531 & 0.492 & 0.362 \\
\hline
\end{tabular}
\end{table}
\begin{table}
\caption{Wyniki F1-score dla wszystkich badanych algorytmów}
\label{fig:f2score_all}
\centering
\begin{tabular}{|c|c|c|c|c|c|c|c|c|}
\hline
F2\_score & \multicolumn{1}{l|}{SGD-LG} & \multicolumn{1}{l|}{SGD-SVM} & \multicolumn{1}{l|}{PERC} & \multicolumn{1}{l|}{PAAG} & \multicolumn{1}{l|}{HTC} & \multicolumn{1}{l|}{LG} & \multicolumn{1}{l|}{SVM} & \multicolumn{1}{l|}{DTC} \\
\hline
& \multicolumn{5}{c|}{Stream} & \multicolumn{3}{c|}{Batch} \\
\hline
Forest & 0.332 & 0.293 & 0.214 & 0.278 & 0.573 & 0.438 & 0.381 & \textbf{0,868} \\
\cline{1-1}
Irish & 0.25 & 0.306 & 0.329 & 0.346 & - & \textbf{0.378} & 0.337 & 0.369 \\
\cline{1-1}
Universities & 0.648 & 0.575 & 0.62 & 0.621 & - & \textbf{0.653} & 0.62 & 0.589 \\
\cline{1-1}
Sklearn Gen & 0.506 & 0.458 & 0.357 & 0.37 & \textbf{0.66} & 0.519 & 0.519 & 0.629 \\
\cline{1-1}
SEA Gen & 0.762 & 0.78 & 0.492 & 0.588 & 0 & 0.791 & \textbf{0.793} & 0.67 \\
\cline{1-1}
LED Gen & \textbf{0.529} & 0.485 & 0.393 & 0.254 & 0.018 & \textbf{0.529} & 0.463 & 0.363 \\
\hline
\end{tabular}
\end{table}
\begin{table}
\caption{Wyniki czasu nauki (w sekundach) dla wszystkich badanych algorytmów}
\label{fig:time_all}
\centering
\begin{tabular}{|c|c|c|c|c|c|c|c|c|}
\hline
Time [s] & SGD-LG & SGD-SVM & PERC & PAAG & HTC & LG & SVM & DCT \\
\cline{2-9}
& \multicolumn{5}{c|}{Stream} & \multicolumn{3}{c|}{Batch} \\
\hline
Forest & 103.397 & 108.539 & 7.414 & 3.708 & 141.28 & 131.562 & 313.307 & \textbf{2.111} \\
\cline{1-1}
Irish & \textbf{1.567} & 4.142 & 2.821 & 3.668 & - & 80.25 & 147.123 & 127.8 \\
\cline{1-1}
Universities & 0.964 & 0.99 & \textbf{0.506} & 0.63 & - & 4.225 & 55.904 & 132.26 \\
\cline{1-1}
Sklearn Gen & 13.232 & 18.102 & 4.169 & 5.038 & 653.506 & \textbf{2.753} & 944.836 & 132.93 \\
\cline{1-1}
SEA Gen & 1.289 & 1.278 & 0.567 & \textbf{0.391} & 0 & 0.568 & 79.245 & 5.65 \\
\cline{1-1}
LED Gen & 7.321 & 6.973 & 4.021 & 4.113 & 1.419 & 22.298 & 6.785 & 2.635 \\
\hline
\end{tabular}
\end{table}
\section{Wnioski z~eksperymentów}
W pierwszym eksperymencie, zbadano skalowalność algorytmów podczas nauki na rzeczywistych zbiorach danych. Algorytmy regresji logistycznej i maszyny wektorów nośnych zostały porównane w odniesieniu do swoich strumieniowych odpowiedników (takich, które używają stochastycznego spadku gradientu do odnalezienia najlepszych wag).
Można zauważyć, że tryb strumieniowy --- dla obu algorytmów ---skaluje się znacznie lepiej. Czas nauki w zależności od ilości próbek rośnie szybciej dla trybu wsadowego. Jest to szczególnie widoczne podczas testów na zbiorach danych związanych z przetwarzaniem języka naturalnego (Irish News i Universities).
Odwrotny trend zaobserwowano na zbiorze Forest, na którym porównano klasyczny Klasyfikator Drzew Decyzyjnych i Drzewa Hoeffdinga. Inkrementalna implementacja skalowała się tutaj znacznie gorzej. Powodem takiej różnicy jest tutaj potrzeba przęglądania drzewa przy potrzebie zmiany go po pewnej ilości próbek.
Podczas kolejnego etapu porównano ze sobą algorytmy również w parach - w analogiczny sposób, jak w pierwszym etapie, sprawdzając umiejętność predykcji (celność i F1-score) oraz czas nauki, używając całych zbiorów danych. Umiejętność predykcji jest zbliżona dla obu trybów (dla obu algorytmów) algorytmów regresji logistycznej oraz maszyn wektorów nośnych. Wyniki często są delikatnie wyższe dla trybów wsadowych, co zgadza się z przypadkami opisywanymi w literaturze. Wynika to z niemal identycznego sposobu działania algorytmów w trybie wsadowym i strumieniowym, tej samej funkcji straty. Różnica w metodzie optymalizacji zdaje się nie sprawiać znacznej różnicy w skuteczności predykcji.
Wyraźna natomiast różnica pojawia się, kiedy bierzemy pod uwagę czas nauki algorytmów. Podczas testów dla maszyn wektorów nośnych zaobserwowaną wyraźną przewagę dla trybu strumieniowego. Tylko na jednym zbiorze danych oba tryby osiągnęły niemal identyczny wynik. Biorąc pod uwagę powyższe obserwacje i przypadki znane z literatury, możemy wnioskować, że tryb strumieniowy będzie niemal zawsze korzystniejszy dla tego algorytmu (jeżeli tylko możliwe jest takie wykorzystanie jego implementacji, a także pominiemy potrzebę reakcji na concept drift, który nie jest badany w tej pracy).
Mniej zdecydowaną przewagę pokazuje tryb strumieniowy w regresji logistycznej. Na dwóch sztucznych zbiorach danych tryb strumieniowy wykazywał dłuższy czas nauki. Na tylko jednym rzeczywistym zbiorze danych tryb wsadowy pokazał, że jest znacznie korzystniejszy pod tym względem do nauki, na pozostałych przewaga była także wyraźna, choć często nie tak znacząca, jak dla maszyn wektorów nośnych.
Podczas testów dla algorytmów drzew decyzyjnych zauważono, że Drzewa Hoeffdinga często nie radzą sobie z niektórymi zbiorami danych. Ich czas nauki jest znacznie dłuższy, a wyniki predykcji osiąga niższe od Klasyfikatora Drzew Decyzyjnych. Warto jednak zwrócić uwagę, że Drzewa Hoeffdinga pozwalają na douczanie (i przebudowywanie drzewa), co nie jest opcją dla Klasyfikatora Drzew Decyzyjnych; stąd można znaleźć zastosowania, w których wykorzystanie ich jest optymalne.
Ostatnim etapem było porównanie wszystkich wcześniejszych algorytmów (dodając do badanych algorytmów Klasyfikator Pasywno Agresywny i Perceptron), tak aby sprawdzić, czy istnieją wzorce pozwalące stwierdzić, czy lepiej sprawują się algorytmy wsadowe czy strumieniowe.
Nowo badane algorytmy (Perceptron i Klasyfikator Pasywno Agresywny) odnosiły zwykle dosyć niskie bądź porównywalne z wsadowymi algorytmami wyniki. Czasowo jednak przedstawiały jedne z najlepszych rezultatów, co zgadza się z ukazywanym często w literaturze podejściem "szybciej ale gorzej".
Podobne rezultaty możemy zaobserwować dla pozostałych algorytmów; wsadowe często uczą się wolniej lub znacznie wolniej od strumieniowych. Osiągają przy tym zwykle jednak nieco lepsze wyniki predykcji. Warto jednak zwrócić uwagę, że --- zwłaszcza biorąc pod uwagę czas nauki --- nie jest to zasadą. Istnieją zbiory, na których niektóre algorytmy wsadowe uczyły się szybciej. Pokazuje to, jak istotne jest przebadanie przede wszystkim różnych trybów jednego algorytmu pomiędzy sobą. Sytuacja, w której tryb wsadowy regresji logistycznej uczy się szybciej od strumieniowego, nie zawsze będzie taka sama dla maszyn wektorów nośnych.

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

BIN
Images/Small_tree.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

BIN
Images/confus.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.3 KiB

BIN
Images/cross.jpeg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 180 KiB

BIN
Images/htc_dtc_forest.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 62 KiB

BIN
Images/lgvssgd_forest.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 91 KiB

BIN
Images/lgvssgd_irish.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 82 KiB

BIN
Images/lgvssgd_univ.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 81 KiB

BIN
Images/log-reg-sigmoid.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.3 KiB

BIN
Images/svc_forest.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 87 KiB

BIN
Images/svc_irish.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 90 KiB

BIN
Images/svc_uni.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 86 KiB

View File

@ -1,27 +1,26 @@
\chapter{Podstawy teoretyczne}
\section{Uczenie maszynowe i jego rodzaje}
\subsection{O uczeniu maszynowym}
Jedną z definicji, dobrze oddającą charakter uczenia maszynowego możemy znaleźć w pracy "An overview of Machine Learning and its Applications": "Machine learning, by its definition, is a field of computer science that evolved from studying pattern recognition and computational learning theory in artificial intelligence. It is the learning and building of algorithms that can learn from and make predictions on data sets."\cite{Overview}
Jedną z definicji, dobrze oddającą charakter uczenia maszynowego, możemy znaleźć w pracy ,,An overview of Machine Learning and its Applications'': Uczenie maszynowe [...] to dział informatyki, który wyewoluował z~rozpoznawania wzorców i~teorii uczenia obliczeniowego w sztucznej inteligencji. To uczenie i~budowanie algorytmów, które uczą się i~tworzą predykcje na podstawie zbiorów danych.''\cite{Overview}
Uczenie maszynowe (ang. machine learning) to jednym z najważniejszych współcześnie działów informatyki. Wykorzystuje ono dostarczane dane empiryczne do tworzenia modeli predykcyjnych. Modele uczenia maszynowego stają się integralną częścią otaczającego nas świata, są wykorzystywane w coraz szerszej gamie aplikacji. Wraz ze wzrostem użytku uczenia maszynowego, wzrasta potrzeba tworzenia coraz lepiej działających i szybciej uczących się modeli.
Uczenie maszynowe (ang. \emph{machine learning}) to jeden z~najważniejszych współcześnie działów informatyki. Wykorzystuje ono dostarczane dane empiryczne do tworzenia modeli predykcyjnych. Modele uczenia maszynowego stają się integralną częścią otaczającego nas świata, są wykorzystywane w~coraz szerszej gamie aplikacji. Wraz ze wzrostem użytku uczenia maszynowego, wzrasta potrzeba tworzenia coraz lepiej działających i~szybciej uczących się modeli.
\subsubsection{Podział na uczenie nadzorowane, nienadzorowane i ze wzmacnianiem}
Algorytmy uczenia maszynowego możemy wyróżnić według różnych kryteriów. Jednym ze sposobów jest dzielenie biorąc pod uwagę rodzaj wykorzystywanych danych i informacji, jakie są w nich zawarte. Biorąc pod uwagę to kryterium możemy wyszczególnić trzy typy:
Algorytmy uczenia maszynowego możemy wyróżnić według różnych kryteriów. Jednym ze sposobów jest podział biorący pod uwagę rodzaj wykorzystywanych danych i~informacji, jakie są w nich zawarte. Biorąc pod uwagę to kryterium możemy wyszczególnić trzy typy:
\subsubsection{Uczenie nadzorowane}
W uczeniu nadzorowanym dane treningowe składają się z par - wejściowego obiektu uczącego (wektora X) i pożądanej odpowiedzi (etykiety) Y. Celem nauki jest znalezienie takiej reguły, która odpowiednio mapuje wejścia do wyjść.
W uczeniu nadzorowanym dane treningowe składają się z~par: wejściowego obiektu uczącego (wektora $X$) i~pożądanej odpowiedzi (etykiety) $Y$. Celem nauki jest znalezienie takiej reguły, która odpowiednio mapuje wejścia do wyjść.
Y = f(X)
\[Y = f(X)\]
Na podstawie takiej funkcji mapującej, kiedy otrzymamy nowe dane jesteśmy w stanie przewidzieć ich etykietę.
Na podstawie takiej funkcji mapującej, kiedy otrzymamy nowe dane jesteśmy w~stanie przewidzieć ich etykietę.
Typowymi problemami dla uczenia nadzorowanego są:
\begin{itemize}
\item regresja - przewidywana odpowiedź (etykieta) przedstawiana jest za pomocą liczby rzeczywistej. Przykładowym zadaniem regresji może być np. przewidywanie ceny akcji na giełdzie (za wektor cech przyjmując ceny pozostałych akcji), przewidywana odpowiedź
\item klasyfikacja - przewidywana jest klasa danego obiektu w postaci wartości dyskretnej. Typowym zadaniem klasyfikacji jest wykrywanie spamu.
\item regresja - przewidywana odpowiedź (etykieta) przedstawiana jest za pomocą liczby rzeczywistej. Przykładowym zadaniem regresji może być np. przewidywanie ceny akcji na giełdzie (za wektor cech przyjmując ceny pozostałych akcji),
\item klasyfikacja - przewidywana jest klasa danego obiektu w~postaci wartości dyskretnej. Typowym zadaniem klasyfikacji jest wykrywanie spamu.
\end{itemize}
Przykładami algorytmów reprezentujących uczenie nadzorowane są:
\begin{itemize}
@ -34,39 +33,210 @@ Przykładami algorytmów reprezentujących uczenie nadzorowane są:
\subsubsection{Uczenie nienadzorowane}
W uczeniu nienadzorowanym dostarczone dane są nieetykietowane, a zadaniem algorytmów jest wyszukiwanie wzorców i struktur wśród danych. Model próbuje się wyuczyć bez żadnej metody nadzorującej. Przykładowymi zadaniami takiego modelu mogą być analiza skupień czy analiza składowych głównych.
W uczeniu nienadzorowanym dostarczone dane są nieetykietowane, a~zadaniem algorytmów jest wyszukiwanie wzorców i~struktur wśród danych. Model próbuje się wyuczyć bez żadnej metody nadzorującej. Przykładowymi zadaniami takiego modelu mogą być analiza skupień czy analiza składowych głównych.
\subsubsection{Uczenie ze wzmacnianiem}
W uczeniu ze wzmacnianiem (w odróżnieniu od uczenia nadzorowanego i nienadzorowanego) modelowi nie przygotowuje się danych. Zamiast tego, przygotowywane jest (potecjalnie złożone) środowisko, z którego model automatycznie pobiera dane. Takie podejście oparte jest na metodzie prób i błędów. Zadaniem programisty tworzącego model, jest utworzenie systemu nagród i kar, na podstawie których model będzie podejmował decyzje (jego celem jest zmaksymalizowanie nagród). Poza tym człowiek nie daje żadnych wskazówek ani sugestii jak wykonać zadanie. To zadaniem modelu jest wymyślenie, jak wykonywać zadanie, aby otrzymywać jak największe nagrody; zaczynając od całkowicie losowych prób po bardzo złożone rozwiązania.
W uczeniu ze wzmacnianiem (w odróżnieniu od uczenia nadzorowanego i~nienadzorowanego) modelowi nie przygotowuje się danych. Zamiast tego, przygotowywane jest (potecjalnie złożone) środowisko, z~którego model automatycznie pobiera dane. Takie podejście oparte jest na metodzie prób i~błędów. Zadaniem programisty tworzącego model, jest utworzenie systemu nagród i~kar, na podstawie których model będzie podejmował decyzje (jego celem jest zmaksymalizowanie nagród). Poza tym człowiek nie daje żadnych wskazówek ani sugestii jak wykonać zadanie. To zadaniem modelu jest wymyślenie, jak wykonywać zadanie, aby otrzymywać jak największe nagrody; zaczynając od całkowicie losowych prób po bardzo złożone rozwiązania.
\subsubsection{Podział na uczenie wsadowe i strumieniowe}
Innym sposobem klasyfikacji algorytmów uczenia maszynowego jest podział na uczenie wsadowe i strumieniowe.
Innym sposobem klasyfikacji algorytmów uczenia maszynowego jest podział na uczenie wsadowe i~strumieniowe.
Podczas trenowania wsadowe model uczony jest na wszystkich dostępnych w danej chwili danych (ang. batch learning). Zwykle trenowanie modelu w taki sposób, zajmuje dużo czasu i pochłania olbrzymie ilości zasobów - z tego powodu takie modele są zwykle trenowane w trybie offline. W przypadku gdybyśmy chcieli przystosować model do nowych danych (np. przystosować do rozpoznawania nowego typu spamu), musimy wyczuć nowy model, a następnie umieścić go w systemie w miejsce starego.
Podczas trenowania wsadowe model uczony jest na wszystkich dostępnych w~danej chwili danych (ang. \emph{batch learning}). Zwykle trenowanie modelu w~taki sposób, zajmuje dużo czasu i~pochłania olbrzymie ilości zasobów --- z~tego powodu takie modele są zwykle trenowane w trybie offline. W przypadku gdybyśmy chcieli przystosować model do nowych danych (np. przystosować do rozpoznawania nowego typu spamu), musimy wyczuć nowy model, a~następnie umieścić go w systemie w miejsce starego.
W dużym skrócie możemy więc powiedziec, że przy uczeniu wsadowym, żeby douczyć model, należy go trenować w całości od nowa.
Upraszczając możemy więc powiedziec, że przy uczeniu wsadowym, żeby douczyć model, należy go trenować w całości od nowa.
Przeciwnym podejściem do uczenia wsadowego jest uczenie strumieniowe (zwane także inkrementalnym). Algorytmy strumieniowe pozwalają na douczanie już wytrenowanego modelu, stąd znacznie częściej wykorzystywane są w one podczas uczenia w trybie online.
Przeciwnym podejściem do uczenia wsadowego jest uczenie strumieniowe (zwane także inkrementalnym). Algorytmy strumieniowe pozwalają na douczanie już wytrenowanego modelu, stąd znacznie częściej wykorzystywane są w~one podczas uczenia w trybie online.
W algorytmach strumieniowych model uczony jest na każdej próbce po kolei, a wagi poszególnych cech uaktualniane są na każdym kroku. Pośrednim rozwiązaniem pomiędzy oboma trybami jest uczenie na mniejszych grupkach danych (ang. mini batches), jednak z powodu możliwości douczania takich modeli, rozwiązanie to może być zaliczane do trybu strumieniowego.
W algorytmach strumieniowych model uczony jest na każdej próbce po kolei, a~wagi poszególnych cech uaktualniane są na każdym kroku. Pośrednim rozwiązaniem pomiędzy oboma trybami jest uczenie na mniejszych grupkach danych (ang. \emph{mini batches}), jednak z~powodu możliwości douczania takich modeli, rozwiązanie to może być zaliczane do trybu strumieniowego.
Uczenie strumieniowe doskonale nadaje sie do systemów, w których dane dostarczane są w sposób ciągły, a ten musi adaptować się do zmieniającej się sytuacji. Dodatkową zaletą jest brak potrzeby przetrzymywania danych, z których model już się nauczył. Algorytmy takie uczą się zwykle szybciej - aktualizacja modelu następuje po każdej próbce.
Warto jednak zwrócić uwagę, że niektóre algorytmy uczenia maszynowego można zakwalifikować do jednego z dwóch trybów zależnie od użytej funkcji straty. Przykładowo regresja logistyczna działa w trybie strumieniowym, gdy użyty jest stochastyczny spadek gradientu, natomiast w trybie wsadowym używamy spadku gradientu (optymalizacji dla wszystkich próbek). Podobna sytuacja występuje w przypadku Drzew Hoeffdinga, będących inkrementalną odmianą Drzew Decyzyjnych.
Uczenie strumieniowe doskonale nadaje sie do systemów, w~których dane dostarczane są w~sposób ciągły, a~ten musi adaptować się do zmieniającej się sytuacji. Dodatkową zaletą jest brak potrzeby przetrzymywania danych, z~których model już się nauczył. Algorytmy takie uczą się zwykle szybciej --- aktualizacja modelu następuje po każdej próbce.
Warto jednak zwrócić uwagę, że niektóre algorytmy uczenia maszynowego można zakwalifikować do jednego z dwóch trybów zależnie od użytej funkcji optymalizacji. Przykładowo regresja logistyczna działa w trybie strumieniowym, gdy użyty jest stochastyczny spadek gradientu, natomiast w trybie wsadowym używamy spadku gradientu (optymalizacji dla wszystkich próbek). Podobna sytuacja występuje w przypadku Drzew Hoeffdinga, będących inkrementalną odmianą Drzew Decyzyjnych.
\subsection{Wsadowe algorytmy uczenia maszynowego}
\subsubsection{Regresja logistyczna}
Regresja logistyczna jest jedną z metod statystycznych, skupiającą się na analizie niezależnych zmiennych. Za pomocą funkcji sigmoidalnej (logistycznej), model oblicza prawdopodobieństwo, że próbka należy do jednej z klas. Trening modelu, polega na wyznaczeniu sigmoidy, która najlepiej odzwierciedlałaby dane. Regresja logistyczna zwykle jest głównie używana analizy zmiennych, które determinują wynik znajdujący się na skali dychotomicznej, ale może być także używana do rozwiązywania problemów wieloklasowych.
Regresja logistyczna jest jedną z metod statystycznych, skupiającą się na analizie niezależnych zmiennych. Za pomocą funkcji sigmoidalnej (logistycznej), model oblicza prawdopodobieństwo, że próbka należy do jednej z~klas. Trening modelu polega na wyznaczeniu sigmoidy, która najlepiej odzwierciedlałaby dane. Regresja logistyczna zwykle jest używana do analizy zmiennych, które determinują wynik znajdujący się na skali dychotomicznej, ale może być także używana do rozwiązywania problemów wieloklasowych.
% Z założenia funkcja logistyczna może być trenowana zarówno w trybie wsadowym i strumieniowym.
\begin{figure}
\caption{Przykład funkcji sigmoidalnej}
\label{wykres_regresji}
\includegraphics[scale=0.65]{Images/log-reg-sigmoid.png}
\end{figure}
Wykres \ref{wykres_regresji} reprezentuje przykładową funkcję sigmoidalną. Wzór takiej funkcji ma postać:
\begin{displaymath}
y(x) = 1 / (1 + e ^{-x})
\end{displaymath}
gdzie $x$ jest wartością liczbową powstałą z~iloczynu wag i~wartości cech (plus obciążenie - ang. \emph{bias}). Wartości wag są dopasowywane w~trakcie treningu modelu za pomocą algorytmu optymalizacyjnego, który stara się zminimalizować funkcję straty.
Z założenia funkcja logistyczna może być trenowana zarówno w trybie wsadowym i~strumieniowym. Wybór odpowiedniego algorytmu optymalizacji przystosowuje funkcję do nauki w~jednym z tych trybów. Użycie algorytmu Spadku Gradientu (ang. \emph{Gradient Descent}) zwykle używane jest przy wsadowym trybie nauki. Sumujemy wtedy błędy dla wszystkich próbek danych przy każdej iteracji podczas aktualizowania wag ---stąd też szersza nazwa Batch Stochastic Gradient. Przy dużych zbiorach danych może się jednak zdarzyć, że czas aktualizacji w tym trybie będzie zbyt długi.
\subsubsection{Drzewa decyzyjne}
% Podobnie do modelu regresji logistycznej, drzewa decyzyjne wykorzystywane są zarówno w trybie wsadowym jak i strumieniowym. Ze wzg
Drzewa decyzyjne są kolejnym modelem, który w zależności od implementacji może występować w trybie wsadowym i strumieniowym. W tym modelu węzły reprezentują testy na cechach (np. ,,czy na niebie są chmury''), gałęzie wyniki tych testów (,,są chmury'' lub ,,nie ma chmur''), a~liść etykietę klasy (,będzie padać''/,,nie będzie'').
\begin{figure}
\centering
\caption{Przykład prostego drzewa decyzyjnego}
\includegraphics{Images/Small_tree.png}
\end{figure}
Aby opisać działanie algorytmów musimy zdefiniować jedną z istotnych ich właściwości:
Miara czystości - jest to wybrana metryka, która pozwala na odnalezienie ,,najlepszego'' (najbardziej optymalnego) podziału danych w drzewie. Co w danym przypadku oznacza ,,najlepszy'' podział, będzie zależało od użytego algorytmu.
Przykładem może być takiej miary jest miara zanieczyszczeń Giniego.
Miarę zanieczyszczeń Giniego możemy przedstawić wzorem:
\begin{displaymath}
Gini = \sum_{i=1}^J P(i) * (1 - P(i))
\end{displaymath}
gdzie P(i) jest prawdopodobieństwem pewnej klasyfikacji i.
Większość algorytmów, przy pomocy których tworzone są drzewa decyzyjne, wykorzystuje strategię TDIFD \cite{drzewadecyzyjne}, czyli strategię ,,z~góry na dół'' (ang. \emph{top down induction of decision trees}), opartą na zasadzie ,,dziel i~rządź''. Taką strategię w~skrócie można opisać w dany sposób:
\begin{enumerate}
\item Na wejście przyjmij cały zbiór danych
\item Znajdź taki podział danych na podstawie atrybuty, która zmaksymalizuje przybraną miarę czystości
\item Dokonaj podziału na danych wejściowych (tworząc nowe zbiory)
\item Powtarzaj kroki 1 i~2 na nowych zbiorach.
\item Przytnij drzewo, aby uniknąć przeuczania.
\end{enumerate}
Różne implementacje drzew decyzyjnych będą wykorzystywały inne metody znalezienia najlepszego podziału, metryki i~stosowały (bądź nie) przycinanie drzewa. Najpopularniejszymi algorytmami są:
\begin{itemize}
\item ID3 (\emph{Iterative Dichotomiser 3})
\item C4.5 (następca ID3)
\item CART (\emph{Classification And Regression Tree})
\end{itemize}
\subsubsection{Maszyny wektorów nośnych}
Algorytm SVM (ang. \emph{support vector machines}) jest wydajnym i~szybkim algorytmem używanym głównie do zadań klasyfikacji (ale także regresji). Oparty jest na odnajdywaniu hiperprzestrzeni, która najlepiej dzieliłaby dane na dwie (lub więcej) klasy.
Wektorami nośnymi nazywane są współrzedne pojedynczych obserwacji znajdujące się najbliżej hiperpłaszczyzny, których usunięcie spowodowałoby przesunięcie pozycji dzielącej dane hiperpłaszczyzny.
W dwuwymiarowym modelu (czyli na przykład takim, w którym dane opisane są za pomocą tylko dwóch cech) możemy opisać hiperpłaszczyznę jako linię, która dzieli dane na dwie części. Im dalej od linii znajdowałyby się dane, tym pewniejsi możemy być, że dane zostały poprawnie sklasyfikowane. Celem algorytmów SVM jest znalezienie takiej hiperpłaszczyzny, która maksymalizuje odległość do najbliższej obserwacji danych z~każdej klasy.
TODO: Może matmę tutaj wrzucić, jest dosyć podstawowo opisane
\subsection{Strumieniowe algorytmy uczenia maszynowego}
\subsubsection{Stochastyczny spadek gradientu}
O ile stochastyczny spadek gradientu nie nazywany jest bezpośrednio algorytmem uczenia maszynowego; jest on metodą optymalizacji, która pozwala wielu algorytmom na działanie w trybie strumieniowym
TODO: zostawiam tę matmę na koniec, boli mnie głowa na samą myśl
\subsubsection{Perceptron}
Perceptron jest przykładem najprostszej sieci neuronowej, składającej się z~jednego lub więcej neuronów.
Sztuczny neuron jest matematyczną funkcją opartą na modelu biologicznego neuronu, gdzie każdy neuron przyjmuje pewne dane na wejście, nadaje im wagi, sumuje, a następnie przekazuje tę sumę do funkcji nieliniowej aby utworzyć pewne wyjście.
TODO: same thing here, matma.
\subsubsection{Drzewa Hoeffdinga}
Drzewa Hoeffdinga są inkrementalną implementacją algorytmu drzew decyzyjnych; zamiast używać do nauki wiele razy tych samych danych, algorytm korzysta z pojawiących się nowych przykładów. Są zdolne do nauki na olbrzymich ilości danych, zakładając, że ich dystrybucja nie zmienia się znacząco w czasie.
Podobnie jak w rozwiązaniu wsadowym --- raz utworzony węzeł nie może już zostać zmieniony, nie wykazują więc odporności na tzw. \emph{concept drift}. Drzewa Hoeffdinga --- tak jak w klasycznych rozwiązaniach --- opierają algorytm swojej budowy na podziale atrybutów. W~odróżnieniu od algorytmu wsadowego zakładają, że nawet mała próbka wystarcza, aby wybrać odpowiednie atrybuty do podziału. \cite{Srimani2015PerformanceAO}
Algorytm zakłada wykorzystanie granicy Hoeffdinga do zagwarantowania jak najbardziej optymalnego wyboru atrybutu podziału. Wzór na obliczenie granicy Hoeffdinga przedstawia się następująco:
\begin{displaymath}
\epsilon = \sqrt{ \frac{R^{2} ln(1/\delta)}{2n} }
\end{displaymath}
gdzie:
$R$ -zakres wartości estymowanej funkcji
\textdelta - dopuszczalny błąd estymacji (wprowadzany ręcznie)
$n$ - rozmiar próbki
Wzór ten pozwala wyznaczyć liczbę przykładów niezbędnych do uzyskania najlepszego podziału na każdym węźle. \cite{Jagirdar2018OnlineML}
\subsubsection{Passive Aggresive Clasifier}
Klasyfikator pasywno agresywny (ang. \emph{Passive Aggresive Clasifier} jest jednym z~algorytmów często używanych podczas nauki na dużych zbiorach danych. Podobnie jak w przypadku Perceptronu, nie wykorzystywany jest tutaj współczynnik uczenia. Używany natomiast jest parametr regularyzacji, mówiący jak dużą karę będzie otrzymywał model za niepoprawną predykcję.
Nazwa algorytmu, pochodzi od jego sposobu nauki:
\begin{itemize}
\item \emph{passive} - jeżeli predykcja jest poprawna, nie zmieniał nic w modelu,
\item \emph{aggresive} - jeżeli predykcja jest niepoprawna, dokonaj zmian w modelu.
\end{itemize}
TODO matematyka która za tym stoi
\subsection{Metody ewaluacji algorytmów uczenia maszynowego}
Istotną częścią tworzenia modeli i~ich analizy ich predykcji jest odpowiednia ewaluacja. Dobór odpowiednich metryk ewaluacji jest kluczowy w~ocenie predykcji modelu --- skupiając się na konkretnej metryce, możemy trenować model w~kierunku konkretnych zastosowań. Poniżej zostaną przedstiawione metody i~metryki stosowane podczas ewaluacji modelu.
\subsubsection{Przetrzymanie}
Przetrzymanie (ang. \emph{hold-out}) - polega na jednokrotnym podziale zbioru na zbiory treningowy i~testowy. Zwykle podziału dokonuje się w propocji $2/3$ i~$1/3$ (ewentualnie 80\% i 20\%). W~zależności jednak od rozmiaru danych, potrzeby dokładniejszej ewaluacji bądź dłuższego treningu; proporcje te mogą być zmieniane.
\subsubsection{Ocena krzyżowa}
Ocena krzyżowa (ang. \emph{cross validation}) polega na podziale zbiorów na $k$ częśći (stąd często używana nazwa ,,ocena krzyżowa na k-częściach''). Jedna z~części używana jest jako zbiór testowy, pozostałe odgrywają rolę zbioru treningowego. Trening i ewaluacja powtarzane są $k$ razy, za każdym razem zmieniając zbiór testowy, aż każdy z~nich zostanie wykorzystany w tej roli. Końcowy wynik często jest po prostu średnią z~każdej ewaluacji, natomiast takie badanie pozwala na sprawdzanie odchyłu od średniej, dlatego zapisuje się wyniki z~każdej ewaluacji. Przykładowa ocena krzyżowa została przedstawiona na rysunku \ref{fig:crossval}.
\begin{figure}[H]
\caption Przykładowa ocena krzyżowa na $k$ częściach\cite{cross_val}
\includegraphics[scale=0.2]{Images/cross.jpeg}
\label{fig:crossval}
\end{figure}
TODO naprawić ten podpis
\subsubsection{Macierz pomyłek}
Macierz pomyłek (ang. \emph{confussion matrtix}) jest macierzą o~rozmiarze dwa na dwa używaną podczas klasyfikacji. Na jednej osi (zwykle poziomej) przedstawiona jest wartość właściwej wartości, a~drugiej (pionowej) wartość przewidziana przez klasyfikator. Przykładowa macierz przedstawiona jest na rysunku \ref{fig:confus}.
\begin{figure}[H]
\caption{Macierz pomyłek}
\footnote{https://towardsdatascience.com/performance-metrics-confusion-matrix-precision-recall-and-f1-score-a8fe076a2262}
\includegraphics[scale=0.6]{Images/confus.png}
\label{fig:confus}
\end{figure}
W takiej macierzy możemy wyróżnić wartości:
\begin{itemize}
\item prawdziwie negatywne (TF - \emph{True False}) - model prawidłowo przewidział negatywną klasę,
\item prawdziwie pozytywne (TP - \emph{True Positive}) - model prawidłowo przewidział pozytywną klasę (obie wartości są pozytywne),
\item fałszywie negatywne (FN - \emph{False Negative}) - model nieprawidłowo przewidział wartość negatywnej klasy,
\item fałszywe pozytywne (FP - \emph{False Positive}) - model nieprawidłowo przewidział wartość negatywnej klasy.
\end{itemize}
\subsubsection{Trafność}
Trafność (ang. \emph{accuracy}) - przedstawia liczbę prawidłowo przewidzianych predykcji podzieloną przez liczbę wszystkich predykcji. Dobrze spisuje się przy ocenianiu zbalansowanych klas, ale przy znacznej przewadze jednej z klas może prowadzić do nieprawidłowej interpretacji skuteczności modelu. Za pomocą macierzy pomyłek możemy określić ją wzorem:
\begin{displaymath}
Accuracy = \frac {TP + TN}{TP + FP + TN + FN}
\end{displaymath}
\subsubsection{Precyzja}
Precyzja (ang. \emph{precission}) - za jej pomocą możemy sprawdzić ile spośród poprawnie przewidzianych pozytywnie klas w rzeczywistości jest pozytywne. Przedstawiamy ją wzorem:
\begin{displaymath}
Precission = \frac {TP} {TP + FP}
\end{displaymath}
\subsubsection{Zwrot}
Zwrot (ang. \emph{recall}) - nazywany jest też czułością. Pozwala zmierzyć ile sklasyfikowano pozytywnie przykładów względem wszystkich przykładów prawdziwie pozytywnych. Metryka ta jest szczególnie istotna, kiedy klas pozytywnych jest mało i~zależy nam na poprawnym jej wykryciu.
\begin{displaymath}
Recall = \frac {TP} {TP + FN}
\end{displaymath}
\subsubsection{\emph{F1 Score}}
Miara ta przedstawia średnią harmoniczną precyzji i zwrotu. Istotne jest używanie tej metryki podczas badania niezbalansowanych zbiorów danych.
\begin{displaymath}
F1 score = \frac {2 * Precission * Recall} {Precission + Recall}
\end{displaymath}
\subsubsection{\emph{Log loss}}
\emph{Log loss} jest jedną z najważniejszych funkcji klasyfikacji, oparta jest jednak na prawdopodobieństwach przy przewidywaniu klas (nie sprawdzi się więc w~niektórych algorytmach). Znacznie ciężej jest ją bezpośrednio interpretować, jednak znacznie lepiej od poprzednio przedstawionych metryk sprawuje się przy porównywaniu modelów.
\emph{Log loss jest} wskaźnikiem, który pokazuje, jak blisko przewidziane prawdopodobieństwa klas są dla prawdziwych wartości klas. Im bardziej przewidziane prawdopodobieństwa odbiegają od wartości tym większa jest wartość \emph{log loss}.
TODO: może matma :/. Tylko to może cała strona wyjść

10
Podsumowanie.tex Normal file
View File

@ -0,0 +1,10 @@
\chapter{Podsumowanie}
Coraz częściej we współczesnym świecie wykorzystywane jest uczenie maszynowe, coraz częściej także pojawia się także potrzeba odnajdywania takich algorytmów, aby zadania zostały wykonywane z~najlepszymi rezultatami i~w jak najszybszy sposób.
W~tej pracy skupiono się na porównaniu algorytmów strumieniowych i~wsadowych, zbadano także różne tryby działania (metody optymalizacji) dla tych samych algorytmów. Najpierw zostały przedstawione algorytmy, które poźniej uczestniczyły w~testach. Następnie dokonano analizy istniejących już w~literaturze badań porównujących oba tryby. W pracach badawczych często można odnaleźć błędne bądź niewystarczające analizy; często także prace faworyzują jedną ze stron, stawiając tezy, według których jedna ze stron jest zdecydowanie pod pewnym względem lepsza.
Z~tych powodów w~tej pracy dokonano badania porównującego algorytmy wsadowe i~strumieniowe. Jego celem nie było zanegowanie prawdziwości badań przedstawionych wcześniej przez inne zespoły badawcze, a~jedynie ich rozwinięcie.
W~szczegolności skupiono tutaj się na porównaniu algorytmów w parach --- algorytmów wsadowych i jego strumieniowych odpowiedników. Wykazano --- w odróżnieniu od częstego przekonania w~literaturze naukowej, skupiającego się na pokazaniu przewagi jednego z typów algorytmu --- że przewaga jednego z trybów w kwestii umiejętności predykcji lub czasu nauki może zależeć w~dużej mierze od użytego zbioru danych. Pomimo tego, że często algorytmy inkrementalne są znacznie szybsze, a wsadowe uczą się delikatnie lepiej; można było zaobserwować, że nie jest to zawsze prawdziwą zasadą. Często sytuacja odwraca się, co pokazuje, że pozostało jeszcze wiele do zbadania i~odnalezienia, od czego dokładnie zależy przewaga algorytmów w~konkretnych sytuacjach.

View File

@ -0,0 +1,53 @@
\chapter{Porównania modeli w literaturze}
\section{Wstęp}
\subsection{Cele porównania}
Wraz z~rozwojem uczenia maszynowego jako praktykowanej technologii znacznie wzrosło zapotrzebowanie na badania sprawdzające skuteczność rozwiązań w tej dziedzinie. Wybór odpowiednich algorytmów do konkretnych zadań jest kluczowy dla osiągania jak najlepszych wyników (zdolności do szybkiego uczenia się i dokładnego przewidywania).
Celem tej pracy jest porównanie dwóch trybów uczenia się: wsadowego i~strumieniowego. Z tego powodu należy wpierw przeanalizować inne badania i~źródła naukowe, aby odnaleźć czy znajdują się w nich błędy, które mogłyby na przykład podważyć skuteczność badań. Część oficjalnych opracowań korzysta z nieodpowiednich metodyk, źle klasyfikuje algorytmy, bądź po prostu niewystarczająco dokładnie je analizuje (brak różnych typów danych, zbyt mała liczba algorytmów, porównywanie algorytmów różnego typu). Z tego powodu poniżej zostaną przedstawione opracowania znalezione w~naukowej literaturze, zawierające błędy, których uniknięcie w~tej pracy, pozwoli na uzyskanie bardziej wiarygodnych wyników.
Warto zwrócić uwagę, że przedstawione błędy nie podważają prawdziwości prac czy ich istotności przy badaniu algorytmów. Znalezione problemy mają na celu stworzenie takiego badania, które sumplementując pozostałe, stworzy szerszy i~bardziej wiarygodny obraz na porównanie trybów strumieniowych i~wsadowych.
\subsection{Concept drift}
Część z opracowań przy swoich badaniach stara się uwzględnić tzw. \emph{concept drift} i~sprawdzić pewną odporność algorytmów na jego obecność. Analiza takiej metodyki znajdzie się przy sprawdzaniu konkretnych badań, tutaj jednak zostanie opisane czym \emph{concept drift} jest.
Tworzenie modelu można określić jako zmapowanie funkcji $f$ przy pomocy danych wejściowych $X$, aby przewidzieć wynik wyjściowych $Y$.
\[Y = f(X)\]
Często zakładane jest, że takie mapowanie jest statyczne. Znaczy to, że raz wyuczone z pewnych danych jest prawdziwe (i~skuteczne) dla danych, które pojawią się w~przyszłości, a~związek pomiędzy danymi wejściowymi i~wyjściowymi nie będzie się zmieniał.
W niektórych przypadkach może następować wyraźna (mniej lub bardziej) wyraźna zmiana w relacji danych wejściowych i~wejściowych. Zmiany takie należy wykrywać i~w odpowiedni sposób aktualizować model, aby ciągle był w stanie poprawnie dokonywać predykcji.
Przykładowo: model przewidujący pogodę może reagować w nieodpowiedni sposób, niezależnie od tego, jak dobrze nauczył się mapować pogodę przy pomocy prądów powietrza, poprzedniej temperatury i~innych właściwości. Po kilku latach może być on zupełnie bezużyteczny, bo nie uwzględni on zmian klimatycznych, istotnie wpływających na pogodę, które mogą sprawić, że ciepły prąd wcześniej oznaczał letni deszcz, a za parę lat może oznaczać suszę.
\section{Analiza literatury}
\subsection{Badanie skuteczność algorytmów przy wystąpowaniu \emph{concept driftu}}
Artykuły dotyczące inkrementalnych metod uczenia maszynowego czesto zwracają szczególną uwagę na zalety nauki w takim trybie, natomiast artykuły oparte na wsadowych metodach opisują możliwość przystosowania sie do danych napływających w trybie strumieniowym. Nie ma jednak wystarczającej ilości opracowań, porównujących te metody. Do tego problemu nawiązuje praca ,,Batch-Incremental versus Instance-Incremental Learning in Dynamic and Evolving Data'' \cite{inproceedings}.
Autorzy tej pracy porównują skuteczność i~czas nauki kilku klasyfikatorów --- między innymi wykorzystując klasyfikator Bayesa, drzewa Hoeffdinga, regresję logistyczną, maszyny wektorów nośnych czy algorytm k-najbliższych sąsiadów. Dbając o~wiarygodność wyników i uniwersalność w różnych poddziedzinach uczenia maszynowego, dokonują oni treningów na kilku różnych zbiorach: rzeczywistych i syntetycznych. Wśród zbiorów danych brak jednak zadań z przetwarzania języka naturalnego (NLP --- ang. \emph{Natural Language Processing}).
W artykule przy tworzeniu metodyki do porównania algorytmów poświęcono dużą uwagę do \emph{concept driftu} w~danych. Algorytmy wsadowe uczone są na pewnym oknie danych (określonej ilości próbek). Rozmiar okna dobierany jest na podstawie precyzji, czasie nauki i~kosztu obliczeniowego --- dla różnych danych może mieć inny rozmiar. Warto jednak zwrócić uwagę, że dobór okna może być w~istotny sposób zależny od używanego sprzętu badawczego. Duże rozmiary okna mogą być odrzucane ze względu na duży nakład czasowy pomimo osiągania znacznie lepszych wyników jakościowych. Wraz z~polepszaniem się technologii dopuszczalny rozmiar okna może się zmieniać, z czasem stawiając algorytmy inkrementalne w znacznie gorszej sytuacji --- nieskończenie szybki procesor może woleć retrenować wsadowe całe modele od nowa, zamiast douczać inkrementalnie.
Autorzy w~podsumowaniu, wnioskują, że algorytmy inkrementalne osiągają podobne wyniki do swoich wsadowych odpowiedników; robiąc to jednak szybciej i~z mniejszą ilością zasobów. Wcześniej szczegółowo opisane jest porówananie wsadowych Drzew Decyzyjnych i Drzew Hoeffdinga --- zależnie od typu danych, jedne lub drugie działają znacznie oszczędniej zużywając zasoby. Brak jednak takich bezpośrednich porównań dla innych algorytmów: nie wiadomo z jakim klasyfikatorem używany jest Stochastyczny Spadek Gradientu, nie można więc go porównać z wsadową regresją logistyczną czy maszyną wektorów nośnych.
DO DOKOŃCZENIA! TODO: \cite{conceptdrift}
\subsection{Porównania algorytmów niezależnie od concept driftu}
Dobrą metodologię porównania algorytmów obu trybów przedstawiono w ,,An Investigation on Online versus Batch
Learning in Predicting User Behaviour``\cite{comparision}
Porównano tutaj 5 wsadowych algorytmów i 3 najpopularniejsze strumieniowe algorytmy, sprawdzając ich złożoność czasową i zdolność predykcji. Treningu i predykcji dokonano na dwa sposoby: powszechnie używany algorytm k-fold (używając 5 ,,złożeń``) oraz używając nowego podejścia przypominającego działanie w trybie strumieniowym (podobna metoda pomiaru podziału nauka/predykcja zostanie użyta w późniejszych eksperymentach).
W tej pracy wykazano, że algorytmy strumieniowe uczą się znacznie szybciej i często osiągają podobne rezultaty w przypadku predykcji (w tej dziedzinie przoduje Deep belief network, jednocześnie bedąc zdecydowanie najwolniejszym ze wszystkich badanych algorytmów). Badania zostały jednak przeprowadzone tylko na jednym zbiorze danych, ciężko więc o wnioskowanie, czy takie wyniki będą prawdziwe dla innych typów danych.
Inną pracą, w której porównywano algorytmy wsadowe i strumieniowe jest \emph{,,Single-Pass Online Learning: Performance, Voting Schemes and Online Feature Selection''}\cite{comp}. Poruszono tutaj istotną kwestię \emph{simple-pass}, występującą często podczas nauki w trybie inkrementalnym - każda próbka wykorzystywana jest tylko raz (nie przechowujemy jej do późniejszej nauki).
Skupiono się głównie na dostosowaniu algorytmu ,,Winnow'' tak, aby wykazać, że nawet działając w trybie \emph{single pass}, może on przewyższyć wynikami algorytmy wsadowe. Dla zbiorów związanych z przetwarzaniem języka naturalnego odnosił on zdecydowanie najlepsze wyniki sposród wszystkich badanych algorytmów; jednak dla zbiorów spoza tej dziedziny osiągał niekompetetywne wyniki. Jest to szczególnie istotne i zwraca uwagę na użycie różnych zbiorów danych przed wyciągnięciem wniosków na temat działania algorytmu.
Obrębne porównanie różnych algorytmów uczenia maszynowego zostało dokonane w "A Comparison of Prediction Accuracy, Complexity, and Training Time of Thirty-three Old and New Classification Algorithms"\cite{Lim2004ACO}.
Zostało tutaj wykorzystane trzydzieści trzy algorytmów do nauki na trzydziestu dwóch zbiorach danych. Nie zostały jednak przebadane algorytmy strumieniowe (praca ich nie dotyczy). Podczas analizy wyników zauważono, że często róznice w trafności predykcji są statystycznie nieistotne. O wiele większą uwagę należałoby w takich przypadkach przyłożyć do czasu nauki poszczególnych modeli. Z~powodu takiego podejścia praca ta przytaczana jest w tym miejscu --- szczególne zwracanie uwagi na czas treningu zostanie wykorzystane podczas kolejnych eksperymentów.

View File

@ -1,23 +1,23 @@
\chapter{Wstęp}
\section{Problematyka}
Podczas tworzenia systemów uczenia maszynowego, kluczowym jest dobranie odpowiednich algorytmów nauki takich, które najlepiej nadają się do konkretnych zadań, a także nie spowodują przeciążania zasobów. Z tego powodu, porównanie skuteczności algorytmów jest częstym i szeroko opisywanym tematem w pracach i tekstach badawczych.
Podczas tworzenia systemów uczenia maszynowego, kluczowym jest dobranie odpowiednich algorytmów nauki, takich, które najlepiej nadają się do konkretnych zadań, a~także nie spowodują przeciążania zasobów. Z~tego powodu, porównanie skuteczności algorytmów jest częstym i~szeroko opisywanym tematem w pracach i~tekstach badawczych.
W tradycyjnych systemach uczenia maszynowego najczęściej trzeba dokonać wyboru, w jaki sposób model będzie trenowany. Wybór pomiędzy trybem wsadowym (batch) a strumieniowym (streaming) może być kluczowy dla optymalnego działania modelu, a tym samym osiągania najlepszych wyników. O ile algorytmy działające w tym samym trybie są często porównywane między sobą, brak jest wystarczających i prawidłowych badań porównujących między sobą algorytmy wsadowe i strumieniowe.
W~tradycyjnych systemach uczenia maszynowego najczęściej trzeba dokonać wyboru, w~jaki sposób model będzie trenowany. Wybór pomiędzy trybem wsadowym (ang. \emph{batch}) a~strumieniowym (ang. \emph{streaming}) może być kluczowy dla optymalnego działania modelu, a~tym samym osiągania najlepszych wyników. O~ile algorytmy działające w tym samym trybie są często porównywane między sobą, brak jest wystarczających i~prawidłowych badań porównujących między sobą algorytmy wsadowe i~strumieniowe.
Algorytmy strumieniowe często oceniane są jako skuteczniejsze, gdy w danych występuje duży concept drift. Nie wymagają one trenowania modelu od nowa, czym oszczędzają czas i zasoby. Problemem takich porównań jest trudność wybrania odpowiedniego sprzętu do testów. Zbyt silne i pojemne zasoby będą faworyzowały algorytmy wsadowe (wytrenowanie modelu od nowa potrwa bardzo krótko), natomiast w przeciwnym wypadku to algorytmy strumieniowe otrzymają nieuczciwą przewagę (wyuczenie wsadowego modelu będzie trwało zbyt długo). Z tego powodu, testy takie można przeprowadzać tylko dla konkretnych sytuacji.
Algorytmy strumieniowe często oceniane są jako skuteczniejsze, gdy w~danych występuje duży \emph{concept drift}. Nie wymagają one trenowania modelu od nowa, czym oszczędzają czas i~zasoby. Problemem takich porównań jest trudność wybrania odpowiedniego sprzętu do testów. Zbyt silne i~pojemne zasoby będą faworyzowały algorytmy wsadowe (wytrenowanie modelu od nowa potrwa bardzo krótko), natomiast w przeciwnym wypadku to algorytmy strumieniowe otrzymają nieuczciwą przewagę (wyuczenie wsadowego modelu będzie trwało zbyt długo). Z tego powodu testy takie można przeprowadzać tylko dla konkretnych sytuacji.
W tej pracy skupiono się na porównaniu strumieniowych i wsadowych algorytmów uczenia maszynowego, niezależnie od concept driftu (brak porównania potrzeby retrenowania modelów wsadowych z ciągłym działaniem strumieniowych). Algorytmy zostały poddane testom na różnych typach danych (syntetycznych, tradycyjnych i NLP). Następnie za pomocą ustalonych metryk została porównanana ich szybkość i skuteczność nauki.
W tej pracy skupiono się na porównaniu strumieniowych i wsadowych algorytmów uczenia maszynowego, niezależnie od \emph{concept driftu} (brak porównania potrzeby retrenowania modelów wsadowych z ciągłym działaniem strumieniowych). Algorytmy zostały poddane testom na różnych typach danych (syntetycznych, tradycyjnych i NLP). Następnie za pomocą ustalonych metryk została porównanana ich szybkość i~skuteczność nauki.
\section{Cel i zakres pracy}
Celem niniejszej pracy jest porównanie strumieniowych i wsadowych algorytmów uczenia maszynowego. Porównane zostało parę najczęściej używanych klasyfikatorów. Dla zwalidowania wyników - użyte zostały różne rodzaje danych - zarówno rzeczywiste jak i syntetyczne.
Celem niniejszej pracy jest porównanie strumieniowych i~wsadowych algorytmów uczenia maszynowego. Porównane zostało parę najczęściej używanych klasyfikatorów. Dla zwalidowania wyników użyte zostały różne rodzaje danych - zarówno rzeczywiste jak i syntetyczne.
Rozdział drugi zawiera podstawy teoretyczne niezbędne do zrozumienia porównywanych algorytmów. Zostały w nim opisane różnice pomiędzy różnymi typami algorytmów, a także przedstawione algorytmy użyte później w eksperymentach.
Rozdział drugi zawiera podstawy teoretyczne niezbędne do zrozumienia porównywanych algorytmów. Zostały w~nim opisane różnice pomiędzy różnymi typami algorytmów, a~także przedstawione algorytmy użyte później w~eksperymentach.
Rodział trzeci dotyczy dokonanych eksperymentów i porównań przez inne osoby i grupy badawcze. Zostały tutaj przedstawione najistotniejsze prace, a także pokazane zostały błędy w rozumowaniu podczas przeprowadzania eksperymentów.
Rodział trzeci dotyczy dokonanych eksperymentów i porównań przez inne osoby i~grupy badawcze. Zostały tutaj przedstawione najistotniejsze prace, a także pokazane zostały błędy w rozumowaniu podczas przeprowadzania eksperymentów.
Rozdział czwarty zawiera opis przeprowadzanego eksperymentu w ramach tej pracy. Przedstawia on zastosowane technologie, implementację systemu porównującego oraz przebieg eksperymentów. Na końcu dokonano przedstawienia wyników w formie wykresów oraz przedstawiono wnioski z nich płynące.
Rozdział czwarty zawiera opis przeprowadzanego eksperymentu w ramach tej pracy. Przedstawia on zastosowane technologie, implementację systemu porównującego oraz przebieg eksperymentów. Na końcu dokonano przedstawienia wyników w~formie wykresów oraz przedstawiono wnioski z~nich płynące.
Rozdział piąty jest podsumowaniem, pozwalającym na przedstawienie kluczowych rezultatów płynących z porównania algorytmów.
Rozdział piąty jest podsumowaniem, pozwalającym na przedstawienie kluczowych rezultatów płynących z~porównania algorytmów.

View File

@ -45,3 +45,93 @@ title = {Batch-Incremental versus Instance-Incremental Learning in Dynamic and E
isbn = {978-3-642-34155-7},
doi = {10.1007/978-3-642-34156-4_29}
}
@article{drzewadecyzyjne,
author = {Rokach, Lior and Maimon, Oded},
year = {2005},
month = {12},
pages = {476 - 487},
title = {Top-Down Induction of Decision Trees Classifiers—A Survey},
volume = {35},
journal = {Systems, Man, and Cybernetics, Part C: Applications and Reviews, IEEE Transactions on},
doi = {10.1109/TSMCC.2004.843247}
}
@article{Srimani2015PerformanceAO,
title={Performance analysis of Hoeffding trees in data streams by using massive online analysis framework},
author={P. Srimani and Malini M. Patil},
journal={Int. J. Data Min. Model. Manag.},
year={2015},
volume={7},
pages={293-313}
}
@article{Lim2004ACO,
title={A Comparison of Prediction Accuracy, Complexity, and Training Time of Thirty-Three Old and New Classification Algorithms},
author={T. Lim and W. Loh and Yu-Shan Shih},
journal={Machine Learning},
year={2004},
volume={40},
pages={203-228}
}
@article{conceptdrift,
author = {Hashmani, Manzoor and Syed, Muslim and Rehman, Mobashar and Inoue, Atsushi},
year = {2020},
month = {01},
pages = {1-16},
title = {Concept Drift Evolution In Machine Learning Approaches: A Systematic Literature Review},
volume = {13},
journal = {International Journal on Smart Sensing and Intelligent Systems},
doi = {10.21307/ijssis-2020-029}
}
@InProceedings{comparision,
author="Burlutskiy, Nikolay
and Petridis, Miltos
and Fish, Andrew
and Chernov, Alexey
and Ali, Nour",
editor="Bramer, Max
and Petridis, Miltos",
title="An Investigation on Online Versus Batch Learning in Predicting User Behaviour",
booktitle="Research and Development in Intelligent Systems XXXIII",
year="2016",
publisher="Springer International Publishing",
address="Cham",
pages="135--149",
abstract="An investigation on how to produce a fast and accurate prediction of user behaviour on the Web is conducted. First, the problem of predicting user behaviour as a classification task is formulated and then the main problems of such real-time predictions are specified: the accuracy and time complexity of the prediction. Second, a method for comparison of online and batch (offline) algorithms used for user behaviour prediction is proposed. Last, the performance of these algorithms using the data from a popular question and answer platform, Stack Overflow, is empirically explored. It is demonstrated that a simple online learning algorithm outperforms state-of-the-art batch algorithms and performs as well as a deep learning algorithm, Deep Belief Networks. The proposed method for comparison of online and offline algorithms as well as the provided experimental evidence can be used for choosing a machine learning set-up for predicting user behaviour on the Web in scenarios where the accuracy and the time performance are of main concern.",
isbn="978-3-319-47175-4"
}
@inproceedings{comp,
author = {Carvalho, Vitor and Cohen, William},
year = {2006},
month = {01},
pages = {548-553},
title = {Single-pass online learning: Performance, voting schemes and online feature selection},
volume = {2006},
journal = {Proceedings of the ACM SIGKDD International Conference on Knowledge Discovery and Data Mining},
doi = {10.1145/1150402.1150466}
}
@image{cross_val,
title = {https://medium.com/@eijaz/holdout-vs-cross-validation-in-machine-learning-7637112d3f8f},
url = {https://medium.com/@eijaz/holdout-vs-cross-validation-in-machine-learning-7637112d3f8f}
}
@image{confus,
title = {https://towardsdatascience.com/performance-metrics-confusion-matrix-precision-recall-and-f1-score-a8fe076a2262},
url = {https://towardsdatascience.com/performance-metrics-confusion-matrix-precision-recall-and-f1-score-a8fe076a2262}
}
@article{univ_kaggle,
title = {https://www.kaggle.com/longnguyen2306/germany-universities-reviews-and-recommendation},
url = {https://www.kaggle.com/longnguyen2306/germany-universities-reviews-and-recommendation}
}
@inproceedings{Jagirdar2018OnlineML,
title={Online Machine Learning Algorithms Review and Comparison in Healthcare},
author={N. Jagirdar},
year={2018}
}

BIN
lgvssgd_forest.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

View File

@ -1,4 +1 @@
\input{Wstep}
\input{Podstawy_teoretyczne}

View File

@ -63,7 +63,7 @@
% Opcjonalny blok dedykacji
\begin{dedykacja}
Tu możesz umieścić swoją dedykację.
\end{dedykacja}
% Spis treści
@ -79,5 +79,15 @@ Tu możesz umieścić swoją dedykację.
\bibliography{bibliography}
\input{Wstep}
\input{Podstawy_teoretyczne}
\input{Porównania modeli w literaturze}
\input{Eksperymenty porównujące skuteczność algorytmów}
\input{Podsumowanie}
\end{document}

View File

@ -2,3 +2,5 @@
% extra packages and definitions
\usepackage{amsmath}
\usepackage{textgreek}
\usepackage{float}