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

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.

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.

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.

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

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.

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.

