\section{Praktická část}

\subsection{Tvorba modelů strojového učení}
\subsubsection{Příprava datasetů, generování ECFP Fingerprintů}
Před samotným trénováním modelů je nutné připravit vhodný dataset. Námi použité datasety jsou pro QSAR ChEMBL a pro QSPR AqSolPred. Oba datasety  obsahují chemické látky reprezentované SMILES řetezci a k nim odpovídající hodnotu sledované vlastnosti, u AqSolDB to je rozpustnost ve vodě v jednotce log(S), u ChEMBL to jsou receptory na které daná chemická látka reaguje.

\begin{table}[h]
\centering
\begin{tabular}{ll}
\hline
SMILES & Rozpustnost ve vodě, $log(S)$ \\ 
\hline
CCO & 1.2336682179 \\
C=C & -0.4 \\
... &  \\
C=CCOCC=C & -0.0206 \\
\hline
\end{tabular}
\caption{Ukázka části datasetu AqSolDB obsahujícího SMILES reprezentaci molekul a~jejich experimentální hodnoty rozpustnosti ve vodě ($\log(S)$). \cite{aqsoldb}} 
\end{table}

Tyto vstupní údaje je nejprve potřeba převést do číselné reprezentace, které mohou algoritmy strojového učení rozumět. V této práci je k tomuto účelu použito ECFP, který převádí strukturu molekuly do binárního vektoru reprezentujícího přítomnost různých strukturních motivů. 

ECFP může vypadat například takto:
\texttt{[0,0,0,0,0,0,0,1,0,1,\dots]}.
\cite{ecfp_chemicbook_guide}

\begin{figure}[H]
    \centering
    \includegraphics[width=0.4\linewidth]{figures/smiles_CC_C_C_OC_O_NC_Cc1ccc_cc1_C_F_F_C_O_CO_motif_overlay.png}
    \caption{Vizualizace SMILES řetězce \texttt{CC(C(C)OC(=O)NC(Cc1ccc(cc1)C(F)F)C(O)=CO}}
\end{figure}

Dalším krokem je rozdělení datasetu na trénovací a testovací část. Trénovací data slouží k samotnému učení modelu, zatímco testovací data se používají k vyhodnocení jeho schopnosti zobecnění na dosud neviděná data. Toto rozdělení je důležité, protože umožňuje ověřit, zda model pouze nezapamatoval trénovací data, ale skutečně se naučil obecné vztahy mezi strukturou molekul a sledovanou vlastností.

\subsubsection{Mapování bitů fingerprintu na strukturní motivy pro pozdější vizualizaci}
\setcounter{secnumdepth}{4}
\paragraph{Princip mapování strukturních motivů}\mbox{}\\

Pro následnou interpretaci modelů a vizualizaci důležitých strukturních motivů je potřeba převést jednotlivé bity ECFP zpět na chemicky srozumitelnou reprezentaci. Přestože ECFP fingerprint představuje molekulu ve formě binárního vektoru, jednotlivé aktivované bity odpovídají lokálním atomovým okolím v~molekule, která jsou vytvářena podle zvoleného poloměru fingerprintu. U Morganových fingerprintů tedy každý bit reprezentuje určitý strukturní motiv odvozený z okolí vybraného atomu. \cite{rogers2010ecfp,rdkit_morgan_docs}

%Abychom zjistili, jaký motiv se pod daným bitem skrývá, využíváme možnost pro ukládání doplňujících informací. Díky tomu je možné získat metadata popisující, které části molekuly vedly k aktivaci jednotlivých bitů fingerprintu. Konkrétně je pro každý aktivovaný bit zaznamenán centrální atom a poloměr jeho okolí. Na základě těchto informací lze následně rekonstruovat odpovídající podstrukturu molekuly reprezentovanou daným bitem. \cite{rdkit_fpgen_docs,rdkit_morgan_docs}
Abychom zjistili jaké strukturní motivy se pod daným bitem skrývají, využíváme možnost pro ukládání doplňujících informací. Díky tomu je možné získat metadata popisující, které části molekuly vedly k aktivaci jednotlivých bitů fingerprintu. Konkrétně je pro každý aktivovaný bit zaznamenán centrální atom a poloměr jeho okolí. Na základě těchto informací lze následně rekonstruovat odpovídající podstrukturu molekuly reprezentovanou daným bitem. \cite{rdkit_fpgen_docs,rdkit_morgan_docs}

\setcounter{secnumdepth}{4}
\paragraph{Technické provedení a zpracování dat}\mbox{}\\

V této práci byl pro generování fingerprintů využit nástroj z knihovny RDKit. Pro všechny molekuly v datasetu byl vypočten fingerprint a z doplňujících metadat byla získána informace o aktivovaných bitech. Poté byla jednotlivá atomové okolí převedena do zápisu SMARTS, který umožňuje chemickou podstrukturu jednoznačně popsat a dále zobrazovat. Pro každý z bitů byla vytvořena množina odpovídajících podstruktur, aby bylo možné zaznamenat všechny různé motivy, které se mohou pod stejným bitem vyskytovat v důsledku hashování fingerprintu. Zároveň byl veden slovník četností, který u~každého SMARTS výrazu eviduje počet jeho výskytů v celém datasetu.

Výstupem této části je mapování, které ke každému bitu ukládá množinu odpovídajících SMARTS podstruktur, a rovněž jejich četnost v datasetu. Takto připravená data lze následně využít při interpretaci výsledků metod SHAP a Boruta-SHAP, protože významné bity fingerprintu lze převést na konkrétní chemické motivy a ty dále vizualizovat nebo chemicky interpretovat. \cite{rdkit_fpgen_docs,rdkit_draw_docs}

\subsubsection{Trénování modelů}
%Po přípravě datasetu může následovat samotné trénování modelu. V tomto kroku algoritmus analyzuje trénovací data a snaží se nalézt vztah mezi vstupními proměnnými, tedy například hodnotami fingerprintu, a cílovou veličinou, kterou chceme predikovat. Výsledkem tohoto procesu je model, který je schopný odhadnout hodnotu sledované vlastnosti i pro chemické, které nebyly součástí trénovacích dat.
Po přípravě datasetu následovalo samotné trénování modelu. V tomto kroku algoritmus analyzuje trénovací data a snaží se nalézt vztah mezi vstupními proměnnými, tedy například hodnotami fingerprintu, a cílovou veličinou, kterou chceme predikovat. Výsledkem tohoto procesu je model, který je schopný odhadnout hodnotu sledované vlastnosti i pro chemické, které nebyly součástí trénovacích dat.

Při trénování modelů je důležité také správné nastavení jejich hyperparametrů, které mohou významně ovlivnit výslednou přesnost predikce. U metod založených na rozhodovacích stromech, jako jsou Random Forest nebo XGBoost, jde například o počet stromů v modelu nebo maximální hloubku jednotlivých stromů. Vhodná volba těchto parametrů může zlepšit schopnost modelu zachytit vztahy v datech a zároveň omezit riziko přeučení.

\subsubsection{Cross-validace}
Po natrénování modelu je nutné ověřit, jak dobře dokáže pracovat s novými daty. Jednoduché rozdělení datasetu na trénovací a testovací část může být někdy nedostatečné, protože výsledky mohou výrazně záviset na konkrétním rozdělení dat. Proto se v praxi často používá metoda zvaná \textbf{cross-validation}, která umožňuje spolehlivější vyhodnocení modelu. \cite{cross_validation_gfg}

Nejčastěji používanou variantou je takzvaná \textbf{k-fold cross-validace}. Dataset je při ní rozdělen na $k$ stejně velkých částí (tzv. foldů). Model je následně opakovaně trénován na $k-1$ částech dat a testován na zbývající části. Tento proces se opakuje $k$-krát tak, aby každá část datasetu sloužila jednou jako testovací data. Výsledné hodnocení modelu je potom získáno zprůměrováním výsledků ze všech iterací. \cite{cross_validation_digitalocean}

Vzhledem k tomu, že QSAR modely v této práci řeší klasifikační úlohy, u kterých bývá chemický dataset často nevyvážený, byla pro ně využita \textbf{stratifikovaná k-fold křížová validace} (Stratified k-fold). Tato varianta navíc dbá na to, aby byl v každém foldu zachován stejný poměr zastoupení jednotlivých tříd jako v původním datasetu, čímž se předchází vzniku foldů s extrémním nedostatkem jedné ze tříd. \cite{stratified_cross_validation_gfg}

% pokud stihate tak asi preskalovat AUC na range ne od 0-1 ale na treba 0.8-1 at je na to trochu vic videt
\begin{figure}[H]
    \centering
    \begin{minipage}[b]{0.48\textwidth}
        \centering
        \includegraphics[width=\linewidth]{figures/rf_roc_auc_folds.png}
    \end{minipage}
    \hfill
    \begin{minipage}[b]{0.48\textwidth}
        \centering
        \includegraphics[width=\linewidth]{figures/xgb_roc_auc_folds.png}
    \end{minipage}

    \caption{Cross-validace pro všechny receptory: (vlevo) u Random Forest QSAR modelu a (vpravo) u XGBoost QSAR modelu}
    \label{fig:cv_comparison}
\end{figure}

\subsubsection{Ladění hyperparametrů}

V rámci této práce jsme se rovněž snažili nastavit náš model, tak aby byl co výpočetně nejefektivnější. Tohoto jsme docílili tím, že jsme testovali jak se přesnost modelu mění na základě počtu použitých estimátorů (počtu stromů). Při postupném zvyšování, na začátku přesnost modelu velmi rychle roste. Ale poté se dostane na pomyslné maximum, kde už přidávání stromů nemá na přesnost žádný pozitivní účinek. U QSAR jsme tohoto dosáhli, při 100 použitých stromech pro XGBoost a pro Random Forest stačilo pouze 50 stromů. Tímto jsme docílili toho, že modely nejsou zbytečně větší a výpočetně náročnější než by musely být.

\begin{figure}[H]
    \centering
    \begin{minipage}[b]{0.48\textwidth}
        \centering
        \includegraphics[width=\linewidth]{figures/rf_convergence.png}
    \end{minipage}
    \hfill
    \begin{minipage}[b]{0.48\textwidth}
        \centering
        \includegraphics[width=\linewidth]{figures/xgb_convergence.png}
    \end{minipage}

    \caption{Testování jak počet stromů ovlivňuje výkon pro všechny receptory: (vlevo) u~Random Forest QSAR modelu a (vpravo) u XGBoost QSAR modelu}
    \label{fig:convergence_comparison}
\end{figure}

Další parametr, který jsme ladili, je použitý rádius u ECFP fingerprintu.

\subsubsection{Vyhodnocení výkonu modelu}
Po natrénování a otestování modelu je potřeba vyhodnotit jeho přesnost pomocí vhodných metrik. Volba konkrétní metriky závisí na typu predikce. V případě QSPR modelů se jedná o regresi, zatímco QSAR modely v naší práci řeší klasifikační problém. \cite{james2013islr}

U regresních modelů, jako jsou QSPR modely predikující například rozpustnost, se často používají metriky jako odmocnina střední kvadratické chyby (Root Mean Squared Error, RMSE). RMSE udává průměrnou velikost chyby predikce. Tato metrika umožňuje posoudit, jak přesně model dokáže odhadovat hodnoty sledované vlastnosti. \cite{sklearn_metrics}

V případě klasifikačních QSAR modelů se často využívá ROC křivka (Receiver Operating Characteristic). Tato křivka znázorňuje vztah mezi hranicí pravdivé hodnoty modelu (true-positive rate) a mírou nesprávných výsledků (false-positive rate). Často se také používá plocha pod ROC křivkou (AUC), která shrnuje schopnost modelu správně rozlišovat mezi pozitivními a negativními případy. \cite{roc_curve_explained}

\begin{figure}[H]
    \centering
    \begin{minipage}[b]{0.48\textwidth}
        \centering
        \includegraphics[width=\linewidth]{figures/rf_roc_curves.png}
    \end{minipage}
    \hfill
    \begin{minipage}[b]{0.48\textwidth}
        \centering
        \includegraphics[width=\linewidth]{figures/xgb_roc_curves.png}
    \end{minipage}

    \caption{ROC křivky pro všechny receptory: (vlevo) u Random Forest QSAR modelu a (vpravo) u XGBoost QSAR modelu}
    \label{fig:roc_comparison}
\end{figure}

\begin{figure}[H]
    \centering
    \begin{minipage}[b]{0.48\textwidth}
        \centering
        \includegraphics[width=\linewidth]{figures/qspr_rf_cv_rmse.png}
    \end{minipage}
    \hfill
    \begin{minipage}[b]{0.48\textwidth}
        \centering
        \includegraphics[width=\linewidth]{figures/qspr_xgb_cv_rmse.png}
    \end{minipage}

    \caption{RMSE při 5-fold cross-validaci, (vlevo) u Random Forest QSAR modelu a~(vpravo) u XGBoost QSAR modelu}
    \label{fig:rmse_comparison}
\end{figure}

\subsection{Identifikace klíčových strukturních motivů}
Pro interpretaci rozhodování modelu lze využít metody vysvětlitelnosti, například SHAP nebo Boruta-SHAP. Tyto metody umožňují určit, které vstupní proměnné mají největší vliv na predikci modelu. 

V této práci jednotlivé vstupní proměnné odpovídají bitům ECFP fingerprintu. Každý bit reprezentuje přítomnost určitého strukturního motivu chemické látky, a proto lze pomocí těchto metod identifikovat strukturní motivy, které mají největší vliv na predikci dané vlastnosti chemické látky. \cite{ecfp_chemicbook_guide}

\subsubsection{Metody SHAP a Boruta-SHAP}

Metoda SHAP (SHapley Additive exPlanations) slouží k interpretaci predikcí modelu tím, že jednotlivým vstupním proměnným přiřazuje hodnotu vyjadřující jejich vliv na výslednou predikci. Umožňuje tak určit, které proměnné byly pro rozhodnutí modelu nejdůležitější, a to jak pro jednotlivé predikce, tak pro model jako celek. \cite{lundberg2017shap}

Boruta-SHAP je metoda určená pro výběr důležitých vstupních proměnných. Vychází z porovnání významu skutečných proměnných s náhodně vytvořenými proměnnými a ~využívá přitom hodnoty SHAP. Tím umožňuje určit, které proměnné mají pro rozhodování modelu skutečný význam a které naopak nepřinášejí podstatnou informaci. \cite{ekeany_borutashap_github}

V případě této práce odpovídají jednotlivé proměnné bitům ECFP fingerprintu. Pomocí metod SHAP a Boruta-SHAP je proto možné určit, které bity mají největší vliv na predikci modelu, a následně je přiřadit ke konkrétním strukturním motivům chemických látek.

\begin{figure}[H]
    \centering
    \includegraphics[width=1\linewidth]{figures/pzcoiameg.png}
    \caption{Heatmapa zobrazující důležitost jednotlivých bitů určena metodou SHAP při rozhodování QSAR modelů trénovaných pro jednotlivé receptory lidského těla}
\end{figure}


\subsubsection{Identifikace významných fingerprint bitů}

Na obrázku je znázorněna heatmapa zobrazující důležitost jednotlivých bitů ECFP fingerprintu pro rozhodování QSAR modelů typu Random Forest trénovaných na jednotlivých receptorech lidského těla. Důležitost jednotlivých bitů byla určena pomocí metody SHAP popsané v předchozí části. Na ose $x$ je uveden index bitu fingerprintu a na ose $y$ jednotlivé receptory. Světlejší zabarvení odpovídá vyšší důležitosti daného bitu pro predikci modelu pro konkrétní receptor.


\subsection{Vizualizace identifikovaných klíčových strukturních motivů}

Na základě důležitosti jednotlivých bitů určené metodou SHAP nebo Boruta-SHAP a~s~využitím bit-info mapy vytvořené při generování ECFP lze zpětně určit, kterým strukturním motivům tyto bity odpovídají. Tímto způsobem je možné lépe porozumět tomu, které části chemické látky mají největší vliv na rozhodování modelu.


\subsubsection{Výběr nejdůležitějších fingerprint bitů}

\begin{figure}[H]
    \centering
    \includegraphics[width=0.6\linewidth]{figures/random_forest_top_n_bits_by_boruta_importance.png}
    \caption{Top 15 bitů zvolených jako nejdůležitější metodou Boruta-SHAP}
    \label{fig:random_forest_top_n_bits_by_boruta_importance}
\end{figure}

Obrázek \ref{fig:random_forest_top_n_bits_by_boruta_importance} zobrazuje nejdůležitější fingerprint bity
identifikované metodou BorutaShap při trénování modelu Random Forest.
Na vodorovné ose je zobrazena průměrná hodnota důležitosti jednotlivých
bitů vypočtená během průběhu algoritmu.



Každý bit fingerprintu odpovídá určitému strukturnímu motivu v molekule. Bity s~vyšší důležitostí mají větší vliv na rozhodování modelu při predikci rozpustnosti chemických látek. Tyto bity byly následně přiřazeny zpět ke konkrétním částem chemické struktury pomocí bit-info mapy, vygenerované při tvorbě ECFP, která umožňuje jejich interpretaci prostřednictvím odpovídajících SMARTS vzorů.

\begin{figure}[H]
    \centering
    \includegraphics[width=0.4\linewidth]{figures/qspr_boruta-shap_smiles_CN_C_C1_CCCCC1_O_c2ccccc2Cl_similarity_map.png}
    \caption{Ukázka vizualizace klíčových strukturních motivů}
    \label{fig:random_forest_exampl}
\end{figure}


Na základě tohoto přiřazení bylo možné identifikovat strukturní fragmenty, které nejvíce ovlivňují výslednou predikci. Tyto fragmenty byly následně vizualizovány přímo ve struktuře molekuly, což umožňuje lépe pochopit, jak jednotlivé části molekuly přispívají k jejím vlastnostem.



\newpage
