\chapter{Řešení}
\section{Datasety}

Datasety byly využity v~rámci spolupráce s~Ostravskou univerzitou a Univerzitou Hradec Králové. Jedná se o~části datasetů z~projektu „Healthy Aging in Industrial Environment (HAIE) CZ.02.1.01/0.0/0.0/16\_019/0 000798“, který je spolufinancován Evropskou unií.

\subsection{Soubor se základními informacemi} 
Obsahuje základní informace o~uživatelích: id, stav aktivity, pohlaví, výška, váha a datum narození. V~souboru se nachází informace o~497 uživatelích.

\subsection{Soubory s~aktivitou} 
Každý uživatel má svůj soubor s~jeho zaznamenanou aktivitou po dobu jednoho roku. Soubor je tvořen maticí, ve které řádky reprezentují dny a sloupce minuty dne. Za každou minutu daného dne je zapsaná hodnota z~následující škály: 

\begin{itemize}
  \item NaN -- hodnota nebyla zaznamenaná
  \item 1 -- spánek
  \item 2 -- sedavost
  \item 3 -- nízká aktivita
  \item 4 -- střední aktivita
  \item 5 -- vysoká aktivita

\end{itemize}

\subsection{Soubor s~kategorizací uživatelů}

Obsahuje typově stejné informace jako první soubor: id, věk, pohlaví, výška, váha, bmi, vfat  mass. Tento dataset obsahuje informace o~324 uživatelích, bylo možné pracovat pouze s~297 z~důvodu duplicitních záznamů a předčasně ukončených měření. Navíc obsahuje klasifikaci uživatelů do kategorií (0 = active, 1 = inactive, 2 = obese).

\section{Použité metody}

\subsection{K-means algoritmus}
Tento algoritmus má spoustu výhod. Dá se dobře škálovat na velké množství vzorků. Garantuje konvergenci, což znamená, že po konečném počtu iterací vždy dospěje k~ustálenému řešení, kde se přiřazení bodů ke klastrům a jejich centroidy již nemění, ačkoli může skončit v~lokálním minimu. Má jednoduchou implementaci a rychlý výpočet pro dobře definované shluky.

Algoritmus má i své zápory. Požaduje předem specifikovat počet shluků, do kterých se mají body zařadit. Špatně reaguje na protáhlé či nepravidelné tvary. Výsledky silně závisí na inicializaci centrodů, při jejich změně to může vést k~různým výsledkům. Inercie, jejíž hodnotu algoritmus optimalizuje směrem k~jejímu minimu, nemusí být vždy vhodná pro všechny typy datasetů. Dále je náchylný k~zachycení v~lokálních minimech a citlivý na šum a odlehlé hodnoty. Vyžaduje numerické hodnoty, a tak ho nelze použít přímo na kategorie či binární data.

\subsection{DBSCAN} 
Výhodou použití algoritmu DBSCAN je, že umí identifikovat klastry libovolného tvaru, na rozdíl od K-means, který předpokládá konvexní tvary. Není nutné předem specifikovat počet shluků, je nutné předem nastavit pouze parametry eps a min samples.

Na druhou stranu se algoritmus potýká i s~nevýhodami. Mezi ně patří citlivost výsledků na výběr parametrů eps a min samples. U~parametru eps vznikají největší potíže se správným výběrem, pokud se zvolí příliš malé, většina datasetu nebude zařazena do shluků a bude označena jako šum. Při zvolení naopak příliš velkého eps dochází ke slučování blízkých klastrů, případně k~vytvoření jednoho velkého shluku pro celý dataset. Je nevhodný pro velmi velké datové soubory, kvůli jeho výpočetní náročnosti.

\subsection{Agglomerative algoritmus} 

Tento algoritmus poskytuje hierarchii shluků, která umožňuje analyzovat data na různých úrovních detailu. Není třeba předem specifikovat počet klastrů, protože hierarchický strom (dendrogram) lze prořezat na libovolné úrovni, což umožňuje dodatečné rozhodování o~počtu shluků. Další výhodou je schopnost pracovat i s~nekonvexními tvary shluků.

Metoda je výpočetně náročná – její časová složitost je O(n³) a paměťová složitost O(n²), což ji činí nevhodnou pro velmi velké datasety. Odlehlé hodnoty mohou negativně ovlivnit výsledky, zejména při použití metrik citlivých na vzdálenost. Pro dosažení kvalitních výsledků je také důležité mít dobře škálovaná data, aby různé rozsahy hodnot v~datasetu neovlivnily analýzu.

\section{Metriky pro optimalizaci počtu klastrů} 

\subsection{Silhouette skóre}

Metrika hodnotí kohezi, tedy jak blízko jsou body k~ostatním bodům ve stejném shluku, což odráží vnitřní soudržnost. Dále hodnotí separaci, tedy jak daleko jsou body od bodů v~jiných klastrech, což vyjadřuje mezishlukovou separaci.

Pokud je výsledkem skóre blízké 1, znamená to, že body jsou dobře přiřazeny ke svým klastrům. Naopak skóre blízké -1 naznačuje, že body jsou přiřazeny špatně. Pokud je skóre rovno 0, znamená to, že body se nacházejí na hranici mezi dvěma shluky.

\subsection{Davies-Bouldin skóre} 

Hodnotí kompatibilitu shluků, tedy jak dobře jsou klastry oddělené. Při hodnocení se zohledňuje velikost a variabilita jednotlivých klastrů.

Nižší hodnoty skóre znamenají lepší klastrování, protože naznačují, že shluky jsou dobře oddělené a mají malou variabilitu uvnitř.

\subsection{Calinski-Harabasz skóre} 

Skóre hodnotí mezishlukovou separaci a vnitřní kohezi, tedy jak homogenní jednotlivé shluky jsou. Tento ukazatel pomáhá posoudit kvalitu shlukování na základě rozdílů mezi klastry a jejich vnitřní soudržností.

Výsledky vyšších hodnot indikují lepší klastrování, protože naznačují, že klastry jsou dobře oddělené a zároveň kompaktní.

\subsection{PCA (Principal Component Analysis)}

PCA je metoda, která efektivně snižuje počet dimenzí dat, čímž zlepšuje výpočetní náročnost a eliminuje redundantní informace. Klíčovou výhodou je, že maximální možná část variability dat je zachována v~prvních několika hlavních komponentách. Díky tomu lze PCA využít i k~vizualizaci vysokodimenzionálních dat ve 2D nebo 3D prostoru, což usnadňuje jejich analýzu.

Na druhou stranu snížení dimenzí může vést ke ztrátě některých informací, zejména pokud je použito příliš málo komponent. Další nevýhodou je výpočetní náročnost. Výpočet vlastních čísel a vlastních vektorů velkých matic může být časově náročný, zejména pro velmi rozsáhlé datasety.

\newpage

\section{Použití metod}
\subsection{Klastrová analýza}
Nejprve bylo provedeno předzpracování dat. Klastrovou analýzu jsem dělala na jednotlivých uživatelích a při pouhém nahrazení NaN hodnot nulou byla vždy část shluků nepoužitelná (u~K-means a Agglomerative algoritmu při nastavení 11 klastrů, které vyšlo pro oba algoritmy u~vybraného uživatele jako optimální dle výše uvedených metrik, jsou nepoužitelné 4 shluky), a tak jsem zvolila přístup odstranění řádků, které obsahují NaN hodnotu. V~tomto případě nastal problém s~nedostatkem dat. V~nejlepším případě zbyla jednomu uživateli 1/4 řádků (přibližně 80 z~350), a tak jsem zmírnila podmínky pro odstranění řádků a odstranila jsem dny, kde byla zapsána více než 5krát NaN hodnota. Za této podmínky zůstanou v~nejlepším případě 2/3 řádků jednoho uživatele (přibližně 250 z~350), kde již bude možné najít trendy ve všech řádcích uživatele a tím pádem i ve všech klastrech, do kterých tyto řádky jednotlivé algoritmy zařadí.

Dále bylo důležité vybrat počet shluků u~K-means a Agglomerative algoritmů. Byly použity 3 metriky (Silhouette skóre, Davies-Bouldin skóre a Calinski-Harabasz) a v~nich jsem hledala optimální počet klastrů mezi čísly 10 -- 15. Rozhodla jsem se tak, ačkoli metriky 
\newline
preferovaly nižší počet, protože při vyšším počtu je možné sledovat podrobné vzorce chování uživatele.

Pro výběr optimálnějších hodnot u~parametrů min samples a eps probíhal iterativní experimentací s~cílem najít kombinaci hodnot, u~kterých algoritmus rozdělí data do více než jednoho klastru.

\subsection{Neuronové sítě}
\subsubsection{Dopad velikosti trénovací množiny na přesnost modelu}
Pro tento problém se snižoval počet uživatelů zastoupených v~každé kategorii. Model klasifikoval každý den uživatelů do kategorie (aktivní, neaktivní, obézní). Nejdříve byli vybráni náhodní uživatelé z~každé kategorie, dle specifikovaného počtu, a poté se jejich data dělila na trénovací a validační sadu v~poměru 90 : 10. 

Architektura modelu:
\begin{lstlisting}[language=Python, caption={Architektura modelu}, label={lst:python_example}]

 model = Sequential([
    Input(shape=(X_train.shape[1], 1)),
    Conv1D(8, 2, activation='relu'),
    MaxPooling1D(2),
    Conv1D(16, 2, activation='relu'),
    MaxPooling1D(2),
    Conv1D(16, 2, activation='relu'),
    MaxPooling1D(2),
    Conv1D(32, 2, activation='relu'),
    MaxPooling1D(2),
    Conv1D(32, 2, activation='relu'),
    MaxPooling1D(2),
    Flatten(),
    Dense(32, activation='relu'),
    Dropout(0.3),
    Dense(3, activation='softmax')
])

model.compile(Adam(0.004), 'sparse_categorical_crossentropy', metrics=['accuracy'])
early_stop = EarlyStopping(monitor='val_loss', patience=3, restore_best_weights=True)

model.fit(
    X_train, y_train,
    epochs=30,
    batch_size=64,
    validation_split=0.2,
    callbacks=[early_stop]
)

\end{lstlisting}

\subsubsection{Klasifikace uživatelů}
Pro problém klasifikování uživatelů do kategorií byla neuronová síť natrénována na datech klasifikovaných uživatelů. Po tréninku model obdržel data pouze jednoho uživatele a výsledkem bylo kategorizování jednotlivých dnů (řádků) a poté označení uživatele do kategorie s~největším zastoupením.

Model byl natrénován na náhodně vybraných 60 lidech z~každé kategorie a byla vybrána stejná architektura modelu jako pro předchozí problém.


\chapter{Výsledky}
\section{Klastrová analýza}
\subsection{Výběr optimálního počtu klastrů u~K-means algoritmu}
V~rámci analýzy klastrování metodou K-means pro uživatele s~identifikátorem 1289 byly použity tři validační metriky k~určení optimálního počtu klastrů v~rozsahu 2–20. Výsledky ukazují odlišné 
preference jednotlivých metrik, což vyžadovalo pečlivé vyhodnocení.

Hodnoty Silhouette Score zůstaly celkově nízké, avšak s~relativní stabilitou v~oblasti 10–20 shluků. V~tomto rozsahu nebyly zaznamenány výrazné změny, což naznačuje omezenou schopnost algoritmu výrazně zlepšit separaci datových bodů při vyšším počtu klastrů. Mírné 
zlepšení metriky bylo pozorováno v~intervalu 12–14 shluků, což naznačuje potenciálně lepší vnitroshlukovou homogenitu v~tomto pásmu.

Davies-Bouldin Index, který preferuje nižší hodnoty jako indikátor kvality, identifikoval jako optimální počet 16 klastrů. Tento výsledek odráží nejlepší poměr mezi vnitřní podobou klastrů a jejich vzájemnou odlišností podle této metriky. Naproti tomu Calinski-Harabasz Index vykazoval klesající trend s~rostoucím počtem klastrů, přičemž vyšší relativní hodnoty v~rozmezí 12–14 shluků signalizovaly lepší poměr mezi mezishlukovou rozptýleností a vnitřní kompaktností.

Závěrečné rozhodnutí o~volbě 13 shluků vychází ze syntézy všech tří metrik. Ačkoli Davies-Bouldin Index upřednostňoval vyšší počet klastrů, kombinace stabilního Silhouette Score a lokálního 
maxima Calinski-Harabasz Indexu v~oblasti 12–14 vedla k~volbě kompromisního řešení. Tento přístup umožňuje zachovat dostatečnou granularitu klastrování při respektování trendů ve vývoji validačních kritérií.

\begin{figure}[H]
	\centering
	\includegraphics[width=1\linewidth]{img/results_kmeans/kmeans_metrics.png}
	\caption{Výsledky metrik pro hledání optimálního počtu klastrů u~K-means algoritmu.}
\end{figure}

\subsection{Analýza časového rozložení klastrů K-means algoritmu pomocí heatmapy}

Heatmapa s~vertikální barevnou legendou při levém okraji vizualizuje rozložení shluků v~časové ose podle příslušnosti jednotlivých dní. Primárním cílem této analýzy je detekovat rozsáhlé bloky po sobě jdoucích dní přiřazených ke stejnému shluku. Tyto bloky by mohly naznačovat výkyvy od standardního chování v~daném časovém období.

Výsledná vizualizace však tuto situaci nepotvrzuje. Jednotlivé klastry jsou v~časové řadě nespojitě rozptýleny bez vytvoření výrazných souvislých sekvencí. Dny spadající do 
\newline
stejných skupin pocházejí z~různých období měření, což naznačuje, že identifikované vzorce chování nejsou vázány na konkrétní časové úseky. 

\begin{figure}[H]
	\centering
	\includegraphics[width=1\linewidth]{img/results_kmeans/all_days_kmeas.png}
	\caption{Heatmapa s~rozložením klastrů K-means algoritmu}
\end{figure}

\subsection{Zobrazení jednotlivých klastrů K-means algoritmu}
Číslování klastrů není určeno na základě jakýchkoli faktorů, je zcela náhodné, nenaznačuje žádné vlastnosti klastrů ani dat v~nich.

\begin{figure}[H]
	\centering
	\includegraphics[width=1\linewidth]{img/results_kmeans/kmeans0.png}
	\caption[Heatmapa K-means -- klastr 0]{Shluk 0 zahrnuje dny, kdy uživatel obvykle vstával kolem 8. hodiny ranní. Po zbytek dne střídal sedavé aktivity s~převážně nízkou aktivitou, doplněné občasnými epizodami střední a vysoké aktivity. Tyto vyšší úrovně aktivity se nejčastěji objevovaly v~odpoledních hodinách, zejména mezi 14. a 17. hodinou. }
\end{figure}

\begin{figure}[H]
	\centering
	\includegraphics[width=1\linewidth]{img/results_kmeans/kmeans1.png}
	\caption[Heatmapa K-means -- klastr 1]{V~klastru 1 jsou zahrnuty dny, kdy uživatel obvykle vstával velmi brzy, kolem 4:30 ráno. Dopolední hodiny byly charakteristické převážně mírnou aktivitou, která byla často přerušována sedavými činnostmi. Na rozdíl od dopoledne se odpolední hodiny vyznačovaly výraznějším podílem sedavosti, která převažovala nad ostatními typy aktivit.}
\end{figure}

\begin{figure}[H]
	\centering
	\includegraphics[width=1\linewidth]{img/results_kmeans/kmeans2.png}
	\caption[Heatmapa K-means -- klastr 2]{V~klastru 2 se nacházejí dny, kdy uživatel obvykle začínal svůj den kolem 7. hodiny ranní. Po většinu dne dominovala mírná aktivita, která se pravidelně střídala se sedavostí. Občas byly zaznamenány také krátké epizody střední nebo vysoké aktivity, které však byly spíše výjimečné.}
\end{figure}

\begin{figure}[H]
	\centering
	\includegraphics[width=1\linewidth]{img/results_kmeans/kmeans3.png}
	\caption[Heatmapa K-means -- klastr 3]{Shluk 3 zahrnuje dny, kdy uživatel vstával až kolem 9. hodiny ranní, což je patrné z~převládající hodnoty 1, jež označuje spánek, v~časných ranních hodinách. V~průběhu dne dominuje sedavost, přičemž jen výjimečně byly zaznamenány krátké úseky nízké nebo střední aktivity, zejména odpoledne a podvečer. Hodnoty vysoké aktivity se v~tomto klastru téměř nevyskytují.}
\end{figure}

\begin{figure}[H]
	\centering
	\includegraphics[width=1\linewidth]{img/results_kmeans/kmeans4.png}
	\caption[Heatmapa K-means -- klastr 4]{Shluk 4 zahrnuje dny, kdy uživatel vstával kolem 7. hodiny ranní, což je vidět na přechodu od hodnoty 1, spánku, k~vyšším hodnotám. Během dne převládá kombinace sedavosti a nízké aktivity, s~občasnými úseky střední aktivity, zejména v~odpoledních a večerních hodinách. Hodnoty vysoké aktivity se vyskytují jen výjimečně.}
\end{figure}

\begin{figure}[H]
	\centering
	\includegraphics[width=1\linewidth]{img/results_kmeans/kmeans5.png}
	\caption[Heatmapa K-means -- klastr 5]{Do klastru 5 spadají dny, kdy byl uživatel aktivní i v~pozdních nočních hodinách, konkrétně až do 2. hodiny ranní. Následně vstával kolem 10. hodiny dopoledne. Během dne jeho aktivita převážně odpovídala sedavému režimu, s~občasnými úseky mírné fyzické aktivity.}
\end{figure}

\begin{figure}[H]
	\centering
	\includegraphics[width=1\linewidth]{img/results_kmeans/kmeans6.png}
	\caption[Heatmapa K-means -- klastr 6]{Shluk 6 charakterizují dny, kdy uživatel začínal den v~8 hodin ráno a následně v~9 hodin ráno vykazoval přibližně hodinovou střední až vysokou aktivitu. Během zbytku dne převládala mírná aktivita nad sedavým chováním.}
\end{figure}

\begin{figure}[H]
	\centering
	\includegraphics[width=1\linewidth]{img/results_kmeans/kmeans7.png}
	\caption[Heatmapa K-means -- klastr 7]{Shluk 7 zahrnuje dny, kdy uživatel vstával brzy ráno, přibližně ve 4:30, a během celého dopoledne vykazoval převážně mírnou aktivitu. V~odpoledních hodinách se začaly objevovat hodnoty sedavého chování, které převažovaly, avšak byly příležitostně přerušovány krátkými obdobími vysoké aktivity.}
\end{figure}

\begin{figure}[H]
	\centering
	\includegraphics[width=1\linewidth]{img/results_kmeans/kmeans8.png}
	\caption[Heatmapa K-means -- klastr 8]{Klastr 8 zahrnuje dny, kdy uživatel vstával kolem 7. hodiny ráno. V~některých z~těchto dnů vykazoval krátce po probuzení vysokou úroveň aktivity. Večer uživatel obvykle chodil spát poměrně brzy, přibližně kolem 23. hodiny.}
\end{figure}

\begin{figure}[H]
	\centering
	\includegraphics[width=1\linewidth]{img/results_kmeans/kmeans9.png}
	\caption[Heatmapa K-means -- klastr 9]{Klastr 9 zahrnuje dny, kdy uživatel obvykle vstával kolem 8. hodiny ráno. Během dne převládalo sedavé chování a mírná aktivita, avšak v~některých dnech byla zaznamenána vysoká aktivita, která se objevovala především během několika hodin po probuzení.}
\end{figure}

\begin{figure}[H]
	\centering
	\includegraphics[width=1\linewidth]{img/results_kmeans/kmeans10.png}
	\caption[Heatmapa K-means -- klastr 10]{Shluk 10 zahrnuje dny, kdy byl uživatel velmi aktivní již během první hodiny po probuzení. Úroveň aktivity dosahovala až vysokých hodnot. Po zbytek dne se střídala mírná aktivita se sedavým chováním, což naznačuje dynamický začátek dne následovaný klidnějším průběhem.}
\end{figure}

\begin{figure}[H]
	\centering
	\includegraphics[width=1\linewidth]{img/results_kmeans/kmeans11.png}
	\caption[Heatmapa K-means -- klastr 11]{Klastr 11 zahrnuje dny, kdy byl uživatel aktivní v~brzkých ranních hodinách, konkrétně mezi půlnocí a 3. hodinou. Následně si šel odpočinout a kolem 10. hodiny ráno vstal. Zbytek dne byl charakterizován převážně sedavým chováním a mírnou aktivitou. Večer uživatel obvykle chodil spát kolem 23. hodiny, což naznačuje pravidelný režim s~noční aktivitou a klidnějším průběhem dne.}
\end{figure}

\begin{figure}[H]
	\centering
	\includegraphics[width=1\linewidth]{img/results_kmeans/kmeans12.png}
	\caption[Heatmapa K-means -- klastr 12]{Shluk 12 zahrnuje dny, kdy byl uživatel vzhůru od 8. hodiny ranní. Kolem 17. hodiny odpoledne vykazoval vysokou úroveň aktivity, jež se výrazně odlišovala od zbytku dne. Svůj den obvykle zakončoval spánkem již kolem 22. hodiny večer.}
\end{figure}

\break

\subsection{Vybrané parametry pro DBSCAN algoritmus}
Pro analýzu dat uživatele s~ID 1289 byl použit algoritmus DBSCAN s~parametry eps = 22 a min samples = 6. U~tohoto algoritmu není nutné sledovat, zda se shluky skládají pouze z~několika po sobě jdoucích dní. 

\subsection{Zobrazení jednotlivých klastrů algoritmu DBSCAN}

\begin{figure}[H]
	\centering
	\includegraphics[width=1\linewidth]{img/results_dbscan/dbscan0.png}
	\caption[Heatmapa DBSCAN -- klastr -1]{Klastr s~číslem -1 je obvykle označován jako klastr s~šumem (outliery), protože nezachycuje čisté nebo konzistentní vzorce chování. Nicméně, v~rámci tohoto shluku lze rozlišit dva typy trendů: jeden, kde uživatel zůstával vzhůru dlouho do noci, a druhý, kde vstával velmi brzy ráno. Tyto rozdílné vzorce naznačují, že data v~tomto shluku jsou rozmanitější a méně strukturovaná než v~ostatních shlucích.}
\end{figure}

\begin{figure}[H]
	\centering
	\includegraphics[width=1\linewidth]{img/results_dbscan/dbscan1.png}
	\caption[Heatmapa DBSCAN -- klastr 0]{Shluk 0 zahrnuje dny, kdy uživatel nebyl dlouho do noci vzhůru a svůj den obvykle začínal mezi 8. a 10. hodinou ranní. Tento shluk tak zachycuje dny s~relativně pozdním ranním režimem a absencí pozdních nočních aktivit.}
\end{figure}

\begin{figure}[H]
	\centering
	\includegraphics[width=1\linewidth]{img/results_dbscan/dbscan2.png}
	\caption[Heatmapa DBSCAN -- klastr 1]{Klastr 1 vykazuje velmi specifické chování uživatele, charakterizované tím, že uživatel vstával ve velmi brzkých ranních hodinách a to vždy ve stejný čas. Tento klastr tak zachycuje dny s~vysoce pravidelným ranním režimem.}
\end{figure}

\subsection{Výběr optimálního počtu klastrů u~Agglomerative algoritmu}

V~rámci analýzy agglomerativního klastrování pro uživatele s~ID 1289 byly použity tři validační metriky k~určení optimálního počtu shluků v~rozsahu 2–20. Výsledky ukazují odlišné preference jednotlivých metrik.

Hodnoty Silhouette Score zůstaly celkově nízké, zejména mezi 10 a 15 shluky. Nicméně, nejvyšší relativní hodnota byla pozorována u~10 klastrů. Poté skóre klesá a zůstává nízké, což naznačuje, že 10 klastrů je relativně dobrá volba z~hlediska vnitřní soudržnosti shluků.

Davies-Bouldin Index, který preferuje nižší hodnoty jako indikátor kvality, identifikoval jako optimální počet klastrů 11. Poté index osciluje, avšak žádná z~následujících hodnot nebyla výrazně lepší než tato. To naznačuje, že rozdělení na 11 shluků je relativně dobré z~hlediska separace shluků.

Calinski-Harabasz Index vykazoval klesající trend s~rostoucím počtem shluků. Relativně vyšší hodnota byla pozorována u~10 shluků, poté prudce klesá. To signalizuje, že rozdělení na 10 klastrů je efektivní z~hlediska meziklastrové variability.

Závěrečné rozhodnutí o~volbě 10 klastrů je založeno na kombinované analýze všech tří validačních metrik. Tato volba je podporována všemi třemi metrikami, což naznačuje, že rozdělení na 10 klastrů poskytuje dobrý kompromis mezi vnitřní soudržností shluků a jejich separací.

\begin{figure}[H]
	\centering
	\includegraphics[width=1\linewidth]{img/results_agglo/agglo_metrics.png}
	\caption{Výsledky metrik pro hledání optimálního počtu klastrů u~Agglomerative algoritmu.}
\end{figure}

\subsection{Analýza časového rozložení klastrů Agglomerative algoritmu pomocí heatmapy}

\begin{figure}[H]
	\centering
	\includegraphics[width=1\linewidth]{img/results_agglo/all_days_agglo.png}
	\caption[Heatmapa s~rozložením klastrů Agglomerative algoritmu]{I~u~tohoto algoritmu můžeme na levém pruhu vedle dat pozorovat, že klastry se neskládají ze dnů jdoucích bezprostředně po sobě.}
\end{figure}

\subsection{Zobrazení jednotlivých klastrů Agglomerative algoritmu}

Číslování klastrů není určeno na základě jakýchkoli faktorů, je zcela náhodné, nenaznačuje žádné vlastnosti klastrů ani dat v~nich.

\begin{figure}[H]
	\centering
	\includegraphics[width=1\linewidth]{img/results_agglo/agglo0.png}
	\caption[Heatmapa Agglomerative -- klastr 0]{Klastr 0 zahrnuje dny, kdy byl uživatel aktivní v~brzkých ranních hodinách, konkrétně mezi půlnocí a v~některých případech až do 4. hodiny ranní. Následně si uživatel šel odpočinout a vstal mezi 10. a 11. hodinou dopoledne. Po zbytek dne, až do 23. hodiny večer, se jeho aktivita pohybovala převážně mezi sedavým chováním a mírnou aktivitou. Tento klastr tak zachycuje dny s~noční aktivitou a klidnějším průběhem dne.}
\end{figure}

\begin{figure}[H]
	\centering
	\includegraphics[width=1\linewidth]{img/results_agglo/agglo1.png}
	\caption[Heatmapa Agglomerative -- klastr 1]{Shluk 1 zahrnuje dny, kdy uživatel vstával v~8 hodin ráno. Během dne převládala mírná aktivita, která se pravidelně střídala se sedavým chováním. Ojediněle se objevovaly epizody vysoké aktivity, jež však nebyly dominantní. Tento klastr tak zachycuje dny s~vyváženým mixem mírné aktivity a odpočinku, doplněné příležitostnými intenzivními aktivitami.}
\end{figure}

\begin{figure}[H]
	\centering
	\includegraphics[width=1\linewidth]{img/results_agglo/agglo2.png}
	\caption[Heatmapa Agglomerative -- klastr 2]{Klastr 2 zahrnuje dny, kdy uživatel vstával v~7 hodin ráno. Během dne se jeho aktivita pravidelně střídala mezi sedavým chováním a mírnou aktivitou. V~ojedinělých případech se objevovala i vysoká aktivita, která však nebyla pravidelná ani dominantní. Tento klastr tak zachycuje dny s~vyváženým režimem, kde převažuje klidná až mírná aktivita, doplněná příležitostnými intenzivními momenty.}
\end{figure}

\begin{figure}[H]
	\centering
	\includegraphics[width=1\linewidth]{img/results_agglo/agglo3.png}
	\caption[Heatmapa Agglomerative -- klastr 3]{Klastr 3 zahrnuje dny, kdy uživatel vstával mezi 8. a 10. hodinou ráno. Během dne převažovala sedavost, která se pravidelně střídala s~mírnou aktivitou. Hodnoty střední a vysoké aktivity byly zaznamenány pouze velmi zřídka a nebyly dominantní. Tento klastr tak zachycuje dny s~převážně klidným režimem, kde mírná aktivita a odpočinek tvoří hlavní charakteristiky dne.}
\end{figure}

\begin{figure}[H]
	\centering
	\includegraphics[width=1\linewidth]{img/results_agglo/agglo4.png}
	\caption[Heatmapa Agglomerative -- klastr 4]{Shluk 4 zahrnuje dny, kdy uživatel vstával vždy přesně v~4:30 ráno. Následovala souvislá mírná aktivita, jež trvala až do poledních hodin. V~odpoledních hodinách převažovalo sedavé chování, avšak v~některých dnech se objevily i epizody vysoké aktivity. Tento klastr tak zachycuje dny s~výrazným ranním režimem a převážně klidným odpolednem, doplněným příležitostnými intenzivními aktivitami.}
\end{figure}

\begin{figure}[H]
	\centering
	\includegraphics[width=1\linewidth]{img/results_agglo/agglo5.png}
	\caption[Heatmapa Agglomerative -- klastr 5]{Shluk 5 zahrnuje dny s~podobným režimem jako klastr 4, avšak s~jedním klíčovým rozdílem v~aktivitě během odpoledních a večerních hodin. Zatímco v~klastru 4 uživatel obvykle chodil spát mezi 21. a 23. hodinou, v~klastru 5 zůstával aktivní až do půlnoci. Tento rozdíl vyzdvihuje odlišné večerní chování, které odlišuje tyto dva klastry navzdory podobnosti jejich ranního režimu.}
\end{figure}

\begin{figure}[H]
	\centering
	\includegraphics[width=1\linewidth]{img/results_agglo/agglo6.png}
	\caption[Heatmapa Agglomerative -- klastr 6]{Klastr 6 zahrnuje dny, kdy uživatel vykazoval vysokou aktivitu krátce po probuzení. Po zbytek dne se jeho aktivita pohybovala převážně mezi sedavým chováním a mírnou aktivitou. Tento klastr tak zachycuje dny s~intenzivním začátkem, po němž následoval klidnější průběh dne.}
\end{figure}

\begin{figure}[H]
	\centering
	\includegraphics[width=1\linewidth]{img/results_agglo/agglo7.png}
	\caption[Heatmapa Agglomerative -- klastr 7]{Shluk 7 zahrnuje dny, kdy uživatel vstával nepravidelně a obvykle nechodil spát před půlnocí. Během dne se jeho aktivita pohybovala převážně mezi mírnou aktivitou a sedavým chováním. Tento shluk tak zachycuje dny s~nepravidelným režimem a převážně klidným průběhem dne.}
\end{figure}

\begin{figure}[H]
	\centering
	\includegraphics[width=1\linewidth]{img/results_agglo/agglo8.png}
	\caption[Heatmapa Agglomerative -- klastr 8]{Klastr 8 zahrnuje dny, kdy uživatel vykazoval pravidelnou vysokou aktivitu kolem 18. hodiny. Tento klastr tak zachycuje dny se specifickým večerním vrcholem aktivity, jenž se opakoval pravidelně.}
\end{figure}

\begin{figure}[H]
	\centering
	\includegraphics[width=1\linewidth]{img/results_agglo/agglo9.png}
	\caption[Heatmapa Agglomerative -- klastr 9]{Shluk 9 zahrnuje dny, kdy uživatel vykazoval vysokou aktivitu již hodinu po probuzení. Tento klastr tak zachycuje dny s~intenzivním začátkem, který následoval krátce po ranním vstávání.}
\end{figure}

\section{Základní analýza kategorií}
\subsection{Distribuce hodnot průměrného dne v~kategoriích (průměr řádků)}

Mediány průměrné aktivity jsou pro všechny skupiny téměř shodné a pohybují se okolo hodnoty 2. Toto zjištění naznačuje, že většina uživatelů ve všech skupinách má podobnou úroveň průměrné aktivity.
Rozpětí hodnot

Šířka boxů je ve všech třech skupinách podobná, což ukazuje, že variabilita průměrné aktivity mezi uživateli v~jednotlivých skupinách je srovnatelná. To naznačuje, že rozdíly v~aktivitě uvnitř každé skupiny nejsou výrazně odlišné.
Odlehlé hodnoty

Ve všech skupinách lze pozorovat odlehlé hodnoty, reprezentované kruhy nad a pod boxy. Tyto hodnoty představují uživatele s~výjimečně vysokou nebo nízkou úrovní aktivity. Je zajímavé, že odlehlé hodnoty jsou častější u~vyšších hodnot průměrné aktivity, což může naznačovat přítomnost vysoce aktivních jedinců.
Rozsah dat

Aktivita uživatelů se ve všech třech skupinách pohybuje mezi hodnotami 1 a 4,5. Maximální a minimální hodnoty, reprezentované krajními vodorovnými čárami, jsou podobné ve všech skupinách, což potvrzuje konzistenci rozsahu aktivity napříč skupinami.

\begin{figure}[H]
	\centering
	\includegraphics[width=1\linewidth]{img/analysis_of_groups/value_distribution.png}
	\caption{Distribuce hodnot průměrného dne v~kategoriích (průměr řádků)}
\end{figure}

\subsection{Graf průměrného dne kategorie (průměr sloupců)}

Průměrná aktivita dosahuje svého vrcholu kolem 10:00 hodin. Následuje propad aktivity kolem 13:00 hodin, po němž se aktivita opět zvyšuje na vyšší hodnoty kolem 14:00 hodin. Skupina aktivní vykazuje konzistentně vyšší průměrnou aktivitu ve srovnání se skupinami neaktivní a obézní, což zdůrazňuje rozdíly v~úrovni aktivity mezi těmito skupinami.

\begin{figure}[H]
	\centering
	\includegraphics[width=1\linewidth]{img/analysis_of_groups/average_day.png}
	\caption{Distribuce hodnot průměrného dne v~kategoriích (průměr řádků)}
\end{figure}

\section{Neuronové sítě}
\subsection{Dopad velikosti trénovací množiny na přesnost modelu} 

\begin{figure}[H]
	\centering
	\includegraphics[width=1\linewidth]{img/results_nn/train_sizes_big.png}
	\caption[Graf závislosti přesnosti modelu na velikost trénovací sady 5--60]{V~tomto grafu osa x reprezentuje počet lidí, kteří byli náhodně vybráni z~každé kategorie. Osa y představuje průměrnou přesnost. Pro každý počet lidí bylo provedeno 5 pokusů, jejichž výsledky pak byly zprůměrovány. V~grafu lze vidět i rozptyl přesností pro danou velikost trénovací sady. Nejlepší výsledky byly naměřeny u~nejmenších sad.}
\end{figure}

\begin{figure}[H]
	\centering
	\includegraphics[width=1\linewidth]{img/results_nn/train_sizes_small.png}
	\caption[Graf závislosti přesnosti modelu na velikost trénovací sady 1--5]{Na tomto grafu můžeme vidět tento pokus znovu, avšak vybrané velikosti trénovací sady jsou velmi malé. V~grafu lze pozorovat nejvyšší přesnost u~pouze 1 člověka v~kategorii.}
\end{figure}

\subsection{Klasifikace uživatelů}

V~problému klasifikace jednotlivých řádků uživatelů neuronová síť dosáhla 51 \%. Když jsem tuto síť použila ke klasifikaci uživatele jako celku, dosáhla 62 \%. 

Níže zobrazená matice záměn zobrazuje výsledky klasifikace. Řádky reprezentují skutečné kategorie uživatelů, zatímco sloupce ukazují kategorie, do kterých model uživatele zařadil.

Na hlavní diagonále jsou správné predikce. Model správně zařadil 33 uživatelů do kategorie aktivní, 16 uživatelů do kategorie neaktivní a 23 uživatelů do kategorie obézní. Chybné predikce se nacházejí mimo hlavní diagonálu.

\begin{figure}[H]
	\centering
	\includegraphics[width=1\linewidth]{img/results_nn/confm.png}
	\caption{Matice záměn}
\end{figure}

\section{Diskuze nad výsledky}

\subsection{Diskuze nad kvalitou klastrů}

Vytvořené klastry ukazují jasně odlišitelné vzorce chování uživatele během dne. Kvalita klastrování se projevuje v~konzistentních časových vzorcích aktivit v~rámci jednotlivých klastrů, což umožňuje efektivní identifikaci typických denních rutin.

\subsection{Zhodnocení klasifikačního modelu}

Model nebyl zvolen dostatečně složitý pro tato nesourodá data, a tak jsou jeho přesnosti při klasifikacích nízké.

Celkově model vykazuje nejlepší výkon při klasifikaci uživatelů do kategorie aktivní, kde má nejvyšší počet správných predikcí a relativně nízký počet chybných. Největší problémy má model s~rozlišením mezi kategoriemi neaktivní a ostatními kategoriemi, což je patrné z~vyššího počtu chybných zařazení.

\subsection{Zhodnocení vlivu velikosti trénovací sady na přesnost neuronové sítě}

Kvůli složitosti dat se modelu dařilo lépe při zvolení menšího počtu uživatelů. Model byl schopen se naučit menší množství trendů, avšak při velkém množství trénovacích dat selhal rozeznat odlišnosti kategorií. 

\subsection{Potenciální limity použitých metod}

Mezi hlavní limity použitých metod patří závislost na kvalitě vstupních dat, kde chybějící nebo nepřesná měření mohou významně ovlivnit výsledky analýzy. Dalším omezením je potenciální neschopnost modelu zachytit komplexní vzorce chování, které se mohou měnit v~čase nebo být ovlivněny externími faktory. Model také může být citlivý na odlehlé jenž a nemusí dostatečně zohledňovat individuální charakteristiky uživatelů, které nejsou zachyceny v~dostupných datech. 
Do budoucna by mohla práce pokračovat zaměřením se na optimalizaci architektury neuronové sítě. Tento krok může vést k~lepší schopnosti modelu odhalovat dlouhodobé trendy a vzorce v~chování, čímž se zvýší kvalita analýzy a predikcí.