Update on Overleaf.
This commit is contained in:
parent
8f734d790a
commit
24329e389e
@ -13,31 +13,30 @@ Podczas gdy często spotykane są porównania poszczególnych algorytmów, zwykl
|
||||
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).
|
||||
\item jeżeli mam do wyboru wiele algorytmów, z~której grupy algorytmów 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}.
|
||||
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 dokładność (ang. \emph{accuracy}), ale w~przypadku używania niezbalansowanych zbiorów danych, zostanie też wzięta pod uwagę miara F1.
|
||||
|
||||
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
|
||||
Drugą częścią eksperymentu będzie wytrenowane i~podane ewaluacji większa grupa algorytmów. Podobnie jak w~pierwszej części ustalone zostaną dokładność, miara F1 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ń.
|
||||
|
||||
\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.
|
||||
W tym projekcie wszystkie eksperymenty i~wizualizacje dokonywane są za pomocą języka Python\footnote{\url{https://python.org/}}. 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.
|
||||
Do programowania użyta została aplikacja Jupyter Notebook\footnote{\url{https://jupyter.org/}}. 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.
|
||||
Scikit-learn\footnote{\url{https://scikit-learn.org/}} 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 brak wszystkich algorytmów w~bibliotece sklearn; zostanie użyta także skmultiflow\footnote{\url{https://scikit-multiflow.readthedocs.io/}}, 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.
|
||||
Do obróbki i~przygotowania danych do treningu szczególnie wykorzystane zostały biblioteki pandas\footnote{\url{https://pandas.pydata.org/}} i~nltk\footnote{\url{https://www.nltk.org/}}.
|
||||
|
||||
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.
|
||||
|
||||
@ -50,7 +49,7 @@ Do pierwszej części eksperymentów należało wybrać najbliższe sobie pary a
|
||||
\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.
|
||||
\item drzewa decyzyjne CART i~drzewa Hoeffdinga.
|
||||
\end{itemize}.
|
||||
|
||||
Do drugiej części eksperymentów zostały wybrane algorytmy:
|
||||
@ -59,13 +58,14 @@ Do drugiej części eksperymentów zostały wybrane algorytmy:
|
||||
\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).
|
||||
\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.
|
||||
@ -75,11 +75,11 @@ Generator z~biblioteki sklearn (oznaczany w~tabeli jako Sklearn Gen) pozwala na
|
||||
\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ść).
|
||||
\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.
|
||||
SEAGenerator\footnote{\url{https://scikit-multiflow.readthedocs.io/en/stable/api/generated/skmultiflow.data.SEAGenerator.html}} (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:
|
||||
|
||||
@ -92,7 +92,7 @@ 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).
|
||||
LEDGenerator\footnote{\url{https://scikit-multiflow.readthedocs.io/en/stable/api/generated/skmultiflow.data.LEDGenerator.html}} (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''.
|
||||
|
||||
@ -100,29 +100,34 @@ Zostało wygenerowane 500 tysięcy próbek, z~20\% udziałem próbek ,,zaszumion
|
||||
\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.
|
||||
\emph{Irish News}\cite{DVN/0U9Z9F_2018} 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.
|
||||
Zbiór danych \emph{Forest Coverage}\footnote{\url{https://archive.ics.uci.edu/ml/datasets/covertype}} (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)
|
||||
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ę.
|
||||
Kolejnym rzeczywistym zbiorem danych są tekstowe opinie na temat niemieckich uniwersytetów\footnote{\url{https://www.kaggle.com/longnguyen2306/germany-universities-reviews-and-recommendation}} (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.
|
||||
Cechą, na podstawie której dokonywana jest predykcja, jest kolumna ,,inhalt'', czyli 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}
|
||||
|
||||
\textcolor{white}{a}
|
||||
|
||||
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}
|
||||
\begin{table}[h]
|
||||
\caption{Porównanie wyników regresji logistycznej w~obu trybach: LG -- tryb wsadowy, SGD-LG -- tryb strumieniowy}
|
||||
\label{fig:log_tabel_comp}
|
||||
\centering
|
||||
\begin{tabular}{|c|cc|cc|cc|}
|
||||
\cline{2-7}
|
||||
@ -130,46 +135,48 @@ Na wykresach \ref{fig:lgvssgd_forest}, \ref{fig:lgvssgd_irish} i~\ref{fig:lgvssg
|
||||
\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} \\
|
||||
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} \\
|
||||
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} \\
|
||||
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 \\
|
||||
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 \\
|
||||
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} \\
|
||||
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)}
|
||||
\caption {Porównanie skalowalności obu trybów regresji logistycznej (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)}
|
||||
\caption {Porównanie skalowalności obu trybów regresji logistycznej (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}
|
||||
\caption {Porównanie skalowalności obu trybów regresji logistycznej (Universities dataset)}
|
||||
\includegraphics[scale=0.9]{Images/lgvssgd_univ_fixed.png}
|
||||
\label{fig:lgvssgd_univ}
|
||||
\end{figure}
|
||||
|
||||
\section{Porównanie maszyn wektorów nośnych w~trybie wsadowym i~strumieniowym}
|
||||
|
||||
\textcolor{white}{a}
|
||||
|
||||
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}
|
||||
\begin{table}[h]
|
||||
\caption{Porównanie wyników maszyn wektorów nośnych w~obu trybach: SVM -- tryb wsadowy, SGD-SVM -- tryb strumieniowy}
|
||||
\label{fig:svm_table_comp}
|
||||
\centering
|
||||
\begin{tabular}{|c|cc|cc|cc|}
|
||||
\hline
|
||||
@ -177,50 +184,50 @@ Testy maszyn wektorów nośnych zostały dokonane na tych samych zbiorach danych
|
||||
\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} \\
|
||||
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} \\
|
||||
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} \\
|
||||
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} \\
|
||||
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} \\
|
||||
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} \\
|
||||
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.
|
||||
Wyniki ewaluacji umiejętności predykcji dla obu trybów tego algorytmu są bardzo zbliżone (zarówno dokładności jak i~\emph{miary F1}. 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)}
|
||||
\caption {Porównanie skalowalności obu trybów maszyn wektorów nośnych (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)}
|
||||
\caption {Porównanie skalowalności obu trybów maszyn wektorów nośnych (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}
|
||||
\caption {Porównanie skalowalności obu trybów maszyn wektorów nośnych (Universities dataset)}
|
||||
\includegraphics[scale=0.9]{Images/svc_uni_fixed.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}.
|
||||
\section{Porównanie drzew decyzyjnych i~drzew Hoeffdinga}
|
||||
Klasyfikator drzew decyzyjnych (CART) i~drzewa Hoeffdinga 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}
|
||||
\begin{table}[h]
|
||||
\caption{Porównanie wyników drzew CART i~drzew Hoeffdinga}
|
||||
\label{fig:htc_dtc_results}
|
||||
\centering
|
||||
\begin{tabular}{|c|cc|cc|cc|}
|
||||
\hline
|
||||
@ -228,24 +235,22 @@ Klasyfikator drzew decyzyjnych (CART) i~Drzewa Decyzyjne zostały przetestowane
|
||||
\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 \\
|
||||
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 \\
|
||||
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} \\
|
||||
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} \\
|
||||
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.
|
||||
Podczas testów na rzeczywistym zbiorze danych, dokładność, \emph{miara F1} 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}
|
||||
\begin{figure}[H]
|
||||
\caption {Porównanie skalowalności HTC i~DTC (Forest dataset)}
|
||||
\includegraphics[scale=0.9]{Images/htc_dtc_forest.png}
|
||||
\label{fig:htc_dtc}
|
||||
@ -253,19 +258,21 @@ Skalowalność obu algorytmów została przedstawiona na wykresie \ref{fig:htc_d
|
||||
|
||||
\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}.
|
||||
\textcolor{white}{a}
|
||||
|
||||
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.
|
||||
Wyniki dokładności wszystkich algorytmów zostały przedstawione w~tabeli \ref{fig:accuracy_all}, miary F1 w~tabeli \ref{fig:f2score_all} i~czasowe w~tabeli \ref{fig:time_all}.
|
||||
|
||||
Ze względu na skuteczność predykcji (zarówno dokładności i miary F1) 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.
|
||||
Na niemal żadnym zbiorze algorytmy perceptron i pasywno agresywny klasyfikator 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.
|
||||
Algorytmy strumieniowe perceptron i pasywno agresywny klasyfikator 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.
|
||||
|
||||
@ -279,8 +286,8 @@ Klasyfikator drzew decyzyjnych osiągnał najlepszy wynik dla zbioru danych Fore
|
||||
|
||||
|
||||
|
||||
\begin{table}
|
||||
\caption{Wyniki celności dla wszystkich badanych algorytmów}
|
||||
\begin{table}[h]
|
||||
\caption{Wyniki dokładności dla wszystkich badanych algorytmów}
|
||||
\label{fig:accuracy_all}
|
||||
\centering
|
||||
\begin{tabular}{|c|c|c|c|c|c|c|c|c|}
|
||||
@ -289,23 +296,23 @@ Accuracy & SGD-LG & SGD-SVM & PERC & PAAG & HTC & LOG
|
||||
\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} \\
|
||||
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 \\
|
||||
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 \\
|
||||
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 \\
|
||||
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 \\
|
||||
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 \\
|
||||
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}
|
||||
\begin{table}[h]
|
||||
\caption{Wyniki miary F1 dla wszystkich badanych algorytmów}
|
||||
\label{fig:f2score_all}
|
||||
\centering
|
||||
\begin{tabular}{|c|c|c|c|c|c|c|c|c|}
|
||||
@ -314,69 +321,65 @@ F2\_score & \multicolumn{1}{l|}{SGD-LG} & \multicolumn{1}{l|}{SGD-SVM} & \mul
|
||||
\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} \\
|
||||
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 \\
|
||||
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 \\
|
||||
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 \\
|
||||
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 \\
|
||||
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 \\
|
||||
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}
|
||||
\begin{table}[h]
|
||||
\centering
|
||||
\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} \\
|
||||
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 \\
|
||||
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 \\
|
||||
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 \\
|
||||
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 \\
|
||||
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 \\
|
||||
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.
|
||||
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.
|
||||
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 (dokładność i miara F1) 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.
|
||||
|
||||
|
||||
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 pasywno agresywny klasyfikator i perceptron), tak aby sprawdzić, czy istnieją wzorce pozwalące stwierdzić, czy lepiej sprawują się algorytmy wsadowe czy strumieniowe.
|
||||
|
||||
Nowo badane algorytmy (perceptron i pasywno agresywny klasyfikator) 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.
|
BIN
Images/lgvssgd_univ_fixed.png
Normal file
BIN
Images/lgvssgd_univ_fixed.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 92 KiB |
BIN
Images/svc_uni_fixed.png
Normal file
BIN
Images/svc_uni_fixed.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 97 KiB |
@ -41,17 +41,17 @@ W uczeniu ze wzmacnianiem (w odróżnieniu od uczenia nadzorowanego i~nienadzoro
|
||||
\subsubsection{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. \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.
|
||||
Podczas trenowania wsadowego 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), musielibyśmy wyuczyć nowy model, a~następnie umieścić go w systemie w miejsce starego.
|
||||
|
||||
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ą 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. \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.
|
||||
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.
|
||||
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.
|
||||
|
||||
|
||||
|
||||
@ -71,7 +71,7 @@ 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.
|
||||
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. Bierzemy wtedy pod uwagę 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}
|
||||
|
||||
@ -83,7 +83,7 @@ Drzewa decyzyjne są kolejnym modelem, który w zależności od implementacji mo
|
||||
\includegraphics{Images/Small_tree.png}
|
||||
\end{figure}
|
||||
|
||||
Aby opisać działanie algorytmów musimy zdefiniować jedną z istotnych ich właściwości:
|
||||
Aby opisać działanie tych 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.
|
||||
|
||||
@ -105,12 +105,12 @@ Większość algorytmów, przy pomocy których tworzone są drzewa decyzyjne, wy
|
||||
\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ą:
|
||||
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 implementacjami są:
|
||||
|
||||
\begin{itemize}
|
||||
\item ID3 (\emph{Iterative Dichotomiser 3})
|
||||
\item C4.5 (następca ID3)
|
||||
\item CART (\emph{Classification And Regression Tree})
|
||||
\item ID3 (\emph{Iterative Dichotomiser 3}),
|
||||
\item C4.5 (następca ID3),
|
||||
\item CART (\emph{Classification And Regression Tree}).
|
||||
\end{itemize}
|
||||
|
||||
|
||||
@ -121,21 +121,21 @@ Wektorami nośnymi nazywane są współrzedne pojedynczych obserwacji znajdując
|
||||
|
||||
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
|
||||
O ile stochastyczny spadek gradient nie 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
|
||||
Wykorzystując wsadową implementację spadku gradientu, podczas obliczania kolejnych gradientów, wykorzystujemy wszystkie dostępne próbki. Obliczanie pochodnych od funkcji straty (TODO - może wyjaśnić to przy regresji logistycznej) dla wielu próbek może być bardzo czasochłonne. Z tego powodu wykorzystujemy stochastyczną (strumieniową) implementację. Wybierana jest losowa próbka (lub po prostu kolejna, gdy model jest douczany), następnie obliczana jest wartość kroku, o jaką musimy dopasować wagi parametrów funkcji.
|
||||
|
||||
Warto zwrócić uwagę na to, że pomimo zmniejszenia liczby obliczeń potrzebnych do wykonania kroku, samych kroków (dopasowań modelu) zwykle będzie znacznie więcej. Z tego powodu model często dostosowuje się do nauki przy pomocy pewnych mniejszych zbiorów próbek (ang. \emph{mini-batch}), co pozwala zachować optymalną ilość potrzebnych obliczeń.
|
||||
|
||||
\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.
|
||||
Perceptron jest przykładem najprostszej sieci neuronowej, składającej się z~jednego lub więcej neuronów. Zwykle używając pojęcia perceptronu, bierze się pod uwagę perceptron z jedną warstwą ukrytą (wielowarstwowy perceptron określany jest już terminem bardziej złożonej jednokierunkowej sieci neuronowej).
|
||||
|
||||
TODO: same thing here, matma.
|
||||
Sztuczny neuron jest matematyczną funkcją opartą na modelu biologicznego neuronu. Każdy taki neuron przyjmuje pewne dane na wejście, nadaje im wagi, sumuje, a następnie przekazuje tę sumę do funkcji aktywacji aby utworzyć pewne wyjście. Rolę funkcji aktywacji mogą przyjmować na przykład: funkcja logistyczna, liniowa czy progowa.
|
||||
|
||||
Dla perceptronu (zwłaszcza wielowarstwowego) proces nauczania oparty najczęściej jest na metodzie wstecznej propagacji błędu.
|
||||
|
||||
\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.
|
||||
@ -149,56 +149,56 @@ Algorytm zakłada wykorzystanie granicy Hoeffdinga do zagwarantowania jak najbar
|
||||
\end{displaymath}
|
||||
gdzie:
|
||||
|
||||
$R$ -zakres wartości estymowanej funkcji
|
||||
$R$ - zakres wartości estymowanej funkcji,
|
||||
|
||||
\textdelta - dopuszczalny błąd estymacji (wprowadzany ręcznie)
|
||||
\textdelta - dopuszczalny błąd estymacji (wprowadzany ręcznie),
|
||||
|
||||
$n$ - rozmiar próbki
|
||||
$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ę.
|
||||
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{passive} - jeżeli predykcja jest poprawna, nie zmieniaj nic w modelu,
|
||||
\item \emph{aggresive} - jeżeli predykcja jest niepoprawna, dokonaj zmian w modelu.
|
||||
\end{itemize}
|
||||
|
||||
TODO matematyka która za tym stoi
|
||||
Warto zwrócić uwagę, że przez taką strategię nauki, wagi mogą być bardzo dynamicznie zmieniane, reagując na niepoprawne predykcje. Może to prowadzić zmiany wektora wag w niepoprawnych kierunku, ignorując prawidłowe predykcje.
|
||||
|
||||
\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.
|
||||
Istotną częścią tworzenia modeli i~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ą przedstawione 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.
|
||||
Przetrzymanie (ang. \emph{hold-out}) - polega na jednokrotnym podziale zbioru na zbiory treningowy i~testowy. Zwykle podziału dokonuje się w proporcji $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}.
|
||||
Ocena krzyżowa (ang. \emph{cross validation}) polega na podziale zbiorów na $k$ części (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}
|
||||
\centering
|
||||
\caption[what]{Przykładowa ocena krzyżowa na $k$ częściach \footnotemark}
|
||||
\includegraphics[scale=0.2]{Images/cross.jpeg}
|
||||
\label{fig:crossval}
|
||||
\end{figure}
|
||||
|
||||
TODO naprawić ten podpis
|
||||
|
||||
\footnotetext{\url{https://medium.com/@eijaz/holdout-vs-cross-validation-in-machine-learning-7637112d3f8f.}}
|
||||
|
||||
\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}.
|
||||
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 właściwa wartość próbek, a~na 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}
|
||||
\caption[frog]{Macierz pomyłek \footnotemark}
|
||||
\includegraphics[scale=0.6]{Images/confus.png}
|
||||
\label{fig:confus}
|
||||
\end{figure}
|
||||
\footnotetext{\url{https://towardsdatascience.com/performance-metrics-confusion-matrix-precision-recall-and-f1-score-a8fe076a2262}}
|
||||
|
||||
|
||||
W takiej macierzy możemy wyróżnić wartości:
|
||||
@ -209,8 +209,8 @@ W takiej macierzy możemy wyróżnić wartości:
|
||||
\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:
|
||||
\subsubsection{Dokładność}
|
||||
Dokładność (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}
|
||||
@ -227,7 +227,7 @@ Zwrot (ang. \emph{recall}) - nazywany jest też czułością. Pozwala zmierzyć
|
||||
Recall = \frac {TP} {TP + FN}
|
||||
\end{displaymath}
|
||||
|
||||
\subsubsection{\emph{F1 Score}}
|
||||
\subsubsection{\emph{Miara F1}}
|
||||
Miara ta przedstawia średnią harmoniczną precyzji i zwrotu. Istotne jest używanie tej metryki podczas badania niezbalansowanych zbiorów danych.
|
||||
|
||||
\begin{displaymath}
|
||||
@ -235,8 +235,6 @@ 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 jedną z najważniejszych miar 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ść
|
||||
\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}.
|
@ -6,5 +6,5 @@ W~tej pracy skupiono się na porównaniu algorytmów strumieniowych i~wsadowych,
|
||||
|
||||
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.
|
||||
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.
|
||||
|
||||
|
@ -9,7 +9,7 @@ Celem tej pracy jest porównanie dwóch trybów uczenia się: wsadowego i~strumi
|
||||
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.
|
||||
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$.
|
||||
|
||||
@ -27,13 +27,11 @@ Przykładowo: model przewidujący pogodę może reagować w nieodpowiedni sposó
|
||||
|
||||
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}).
|
||||
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.
|
||||
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 znacznie szybciej retrenować wsadowe całe modele od nowa, zamiast douczać je 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}
|
||||
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.
|
||||
|
||||
|
||||
\subsection{Porównania algorytmów niezależnie od concept driftu}
|
||||
@ -42,12 +40,12 @@ 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.
|
||||
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 głęboka sieć przekonań (ang. \emph{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).
|
||||
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.
|
||||
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ł znacznie słabsze 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.
|
||||
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.
|
@ -1,7 +1,7 @@
|
||||
\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, kluczowe 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 (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.
|
||||
|
||||
|
@ -1 +1 @@
|
||||
Streszczenie po polsku (dla niektórych szablonów).
|
||||
Celem poniższej pracy jest porównanie skuteczności działania algorytmów wsadowych i strumieniowych; w szczegolności skupiając się na różnych implementacjach tych samych algorytmów. Dokonano przeglądu literatury, w której znajdowały się wcześniej przeprowadzane badania na ten temat. Na tej podstawie opracowano i przeprowadzono eksperymenty, które pozwoliły na zbadania skalowalności, czasu nauki i skuteczności predykcji algorytmów. Wykazano, że algorytmy strumieniowe uczą się zwykle znacznie szybciej, odnosząc podobne wyniki predykcji do ich wsadowych odpowiedników. Jednak różnica w czasie nauki jest może mocno zależeć od użytego zbioru danych; wsadowe algorytmy odnoszą lepsze wyniki czasowe dla niektórych typów danych.
|
@ -1 +1 @@
|
||||
Sample abstract.
|
||||
The aim of this thesis is to compare effectiveness of batch and streaming machine learning algorithms; in particular focusing on different implementations of the same algorithms. A literature was reviewed in order to find other research in on this topic. Based on that, experiments checking scalability, learning time and effectiveness were developed and carried out. It was found out, that streaming algorithms usually learn much faster while maintaining almost same prediction results as their batch counterparts. However, learning time difference can strongly depend on different datasets being used; sometimes batch algorithms get better time results for some types of datasets.
|
@ -134,4 +134,15 @@ title = {https://www.kaggle.com/longnguyen2306/germany-universities-reviews-and-
|
||||
title={Online Machine Learning Algorithms Review and Comparison in Healthcare},
|
||||
author={N. Jagirdar},
|
||||
year={2018}
|
||||
}
|
||||
|
||||
@data{DVN/0U9Z9F_2018,
|
||||
author = {Kulkarni, Rohit},
|
||||
publisher = {Harvard Dataverse},
|
||||
title = {{News Headlines of Ireland}},
|
||||
UNF = {UNF:6:Ce4G0lq6wePPaBv5MZ8D9w==},
|
||||
year = {2018},
|
||||
version = {V2},
|
||||
doi = {10.7910/DVN/0U9Z9F},
|
||||
url = {https://doi.org/10.7910/DVN/0U9Z9F}
|
||||
}
|
@ -50,15 +50,14 @@
|
||||
\begin{streszczenie}
|
||||
\input{abstract-pl}
|
||||
|
||||
\paragraph{Słowa kluczowe:} klasa
|
||||
\paragraph{Słowa kluczowe:} uczenie maszynowe, algorytmy strumieniowe, algorytmy wsadowe
|
||||
\end{streszczenie}
|
||||
|
||||
% Blok abstraktu w języku angielskim
|
||||
\begin{abstract}
|
||||
\input{abstract}
|
||||
\input{abstract}
|
||||
|
||||
\paragraph{Keywords:} klasa
|
||||
\paragraph{Keywords:} machine learning, streaming algorithms, stream algorithms, batch learning
|
||||
\end{abstract}
|
||||
|
||||
% Opcjonalny blok dedykacji
|
||||
|
Loading…
Reference in New Issue
Block a user