\section{Machine Learning Model}

Στη συνέχεια αναφέρεται συνοπτικά η λειτουργία των μοντέλων που χρησιμοποιήθηκαν για την εκπαίδευση των δεδομένων (Οι ορισμοί είναι σύμφωνα με την ιστοσελίδα της analytics vidhya \footnote{https://www.analyticsvidhya.com/}) ενώ στο τέλος παρατίθεται ένας πίνακας στο οποίο φαίνονται οι διάφορες μέθοδοι και οι ακρίβειες που επιτεύχθησαν.

\subsection{Support Vector Machine - SVM}

Τα SVMs ανήκουν στα μοντέλα επιβλεπόμενης μάθησης, και ο σκοπός τους είναι η εύρεση ενός γραμμικού υπερεπιπέδου (σύνορο απόφασης) το οποίο θα διαχωρίσει τα δεδομένα. Σε αυτόν τον αλγόριθμο, σχεδιάζουμε κάθε δεδομένο ως ένα σημείο σε έναν ν-διάστατο χώρο (όπου ν είναι ο αριθμός των features) με την τιμή κάθε feature να είναι η τιμή της εκάστοτε συντεταγμένης. Έπειτα, κατηγοριοποιούμε βρίσκοντας ένα υπερεπίπεδο το οποίο διαχωρίζει τις 2 κλάσεις καλύτερα.

\subsection{Decision Trees}

Τα δένδρα απόφασης ή decision trees ανήκουν στα μοντέλα επιβλεπόμενης μάθησης και εφαρμόζονται τόσο σε κατηγορικά όσο και συνεχή δεδομένα. Σε αυτόν τον αλγόριθμο, χωρίζουμε τα δείγματα σε πιο ομοιογενείς υποομάδες βασιζόμενοι στο χαρακτηριστικό που τα διαχωρίζει καλύτερα κάθε φορά.

\subsection{Multilayer Perceptron}

Ένα perceptron, μπορεί να κατανοηθεί ως οτιδήποτε δέχεται πολλαπλές εισόδους και παράγει μία έξοδο. Ο τρόπος όμως με τον οποίο συσχετίζεται η είσοδος την έξοδο εμφανίζει ενδιαφέρον. Αρχικά σε κάθε είσοδο προστίθεται ένα βάρος, το οποίο σημαίνει ουσιαστικά το πόσο σημασία να δοθεί σε κάθε μία ενώ στην έξοδο ένα κατώφλι.Τέλος, προστίθεται και μία πόλωση η οποία μπορεί να θεωηθεί ως το ποσό ευελιξίας του perceptron.Για λόγους απόδοσης, χρησιμοποιούνται πολλά perceptrons σε layers, τα οποία είναι πλήρως συνδεδεμένα μεταξύ τους.   

\subsection{Naive Bayes}

Είναι μία τεχνική ταξινόμησης η οποία βασίζεται στο θεώρημα του Bayes\footnote{https://en.wikipedia.org/wiki/Bayes\%27\_theorem}με την υπόθεση ανεξαρτησίας ανάμεσα στους προβλέπτες. Με απλά λόγια, ο ταξινομητής Naive Bayes, υποθέτει ότι η ύπαρξη ενός συγκεκριμένου feature σε μια κλάση είναι ασυσχέτιστη με την υπάρξη οποιουδήποτε άλλου. 

\subsection{Random Forest}

O Random Forest είναι ένας αλγόριθμος τύπου Bootstrap, με δένδρα απόφασης. Αυτό που πορσπαθεί να κάνει, είναι να φτιάξει δίαφορα δένδρα με διαφορετικά δείγματα και διαφορετικές αρχικές τιμές. Επαναλαμβάνει την διαδικασία και κάνει μια τελική πρόβλεψη για κάθε παρατήρηση, η οποία είναι συνάρτηση όλων των προβλέψεων.

\hfill


% \begin{table}[h]
% \begin{tabular}{llllll}
% {\ul \textbf{Method}} & {\ul \textbf{Fold-0}}   & {\ul \textbf{Fold-1}}   & {\ul \textbf{Fold-2}}   & {\ul \textbf{Fold-3}}   & {\ul \textbf{Fold-4}}  \\
% SVM                   & 95.47\%                 & 95.05\%                 & 95.60\%                 & 95.44\%                 & \textbf{96.06}\% \\
% Decision Tree         & 85.96\%                 & 86.15\%                 & 86.40\%                 & \textbf{86.51}\%        & 86.20\% \\
% MultiLayer Perceptron & 90.22\%                 & \textbf{90.34}\%        & 88.65\%                 & 89.83\%                 & 90.34\% \\
% Naive Bayes           & \textbf{70.25}\%        & 69.83\%                 & 69.59\%                 & 69.39\%                 & 68.75\% \\
% Random Forest         & 95.29\%                 & 94.36\%                 & 95.42\%                 & 95.33\%                 & \textbf{95.49}\%
% \end{tabular}
% \end{table}



\section{Αξιολόγηση μοντέλων}

Για την αξιολόγηση των μοντέλων, δοκιμάστηκαν πολλοί τρόποι για τις διάφορες μεθόδους ταξινόμησης μέχρι να βρεθεί ο βέλτιστος. Στον πίνακα \ref{table:tab1} φαίνονται ενδεικτικά για καποιους ταξινομητές οι τρόποι αξιολόγησης που δοκιμάστηκαν και οι αντίστοιχες ακρίβειες τους.


\begin{table}[H]
\begin{tabular}{|l|l|l|}
\hline
\textbf{Μέθοδος}               & \textbf{Τρόπος αξιολόγησης}                   & \textbf{Ακρίβεια}         \\ \hline
\multirow{4}{*}{SVM}           & Κλιμακοποίηση + τυχαίο split                  & 0.94                      \\ \cline{2-3} 
                               & Κλιμακοποίηση + k-fold cross validation       & \textbf{0.96} (best fold) \\ \cline{2-3} 
                               & Κλιμακοποίηση + PCA + τυχαίο split            & 0.92                      \\ \cline{2-3} 
                               & Κλιμακοποίηση + PCA + k-fold cross validation & 0.93(best fold)           \\ \hline
\multirow{2}{*}{Random Forest} & Κλιμακοποίηση + k-fold cross validation       & 0.95(best fold)   		   \\ \cline{2-3} 
                               & Κλιμακοποίηση + PCA + k-fold cross validation & 0.94(best fold)           \\ \hline
\end{tabular}
\caption{Τρόποι αξιολόγησης για διάφορα μοντέλα}
\label{table:tab1}
\end{table}

Είναι φανερό ότι η καλύτερη ακρίβεια που επιτυγχάνεται είναι 0.96 με κλιμακοποίηση και k-fold cross validation. Συνεπώς, επιλέχθηκαν για την τελική υλοποίηση ενώ χρησιμοποιήθηκε για το k-fold cross validation, k=4.

\section{Συμπεράσματα}

Παρατίθεται στη συνέχεια ο πίνακας στον οποίο φαίνονται οι ακρίβειες των μοντέλων για την ταξινόμηση.

\begin{table}[H]
\begin{tabular}{|l|l|}
\hline
\textbf{Method}             & \textbf{Αccuracy}\\\hline
SVM                         & \textbf{96.06}   \\\hline
Decision Tree               & 86.51 \\\hline
MultiLayer Perceptron       & 90.34 \\\hline
Naive Bayes                 & 70.25 \\\hline 
Random Forest               & 95.49 \\\hline
SVM (PCA(10))               & 90.02 \\\hline
\end{tabular}
\caption{Ακρίβεια ταξινομητών}
\end{table}

Όπως φαίνεται, η καλύτερες μέθοδοι είναι τα Support Vector Machines και ο αλγόριθμος Random Forest με 96\% και 95\% ακρίβεια αντίστοιχα, ενώ  κοντά βρίσκεται και ο αλγόριθμος του Multilayer perceptron. Παράλληλα, βλέπουμε ότι ο χειρότερος είναι ο Naive Bayes με περίπουτ 70\% ακρίβεια.Τέλος, η εφαρμογή του PCA είναι φανερό ότι μείωσε αρκετά την ακρίβεια του μοντέλου και για αυτόν τον λόγο συνίσταται μόνο στην περίπτωση που υπάρχει κάποιος χρονικός περιορισμός καθώς σε αυτήν την περίπτωση, λόγω της μείωσης των χαρακτηριστικών από 27 σε 10, το μοντέλο θα εκτελείται πιο γρήγορα.  


%αναλυση γενικα για τον κωδικα (διαφανειες wrapper και execution} για τις συναρτησεις 4hz modulation, random forest, kFCrossValid 