Η υλοποίησή μας αναπτύχθηκε σε γλώσσα Python και χρησιμοποιήθηκαν πληθώρα βιβλιοθηκών όπως η essentia για την εξαγωγή χαρακτηριστικών , η sklearn για την προεπεξεργασία δεδομένων
Η υλοποίησή αναπτύχθηκε σε γλώσσα Python και χρησιμοποιήθηκαν πληθώρα βιβλιοθηκών όπως η essentia για την εξαγωγή χαρακτηριστικών, η sklearn για την προεπεξεργασία δεδομένων
ενώ στην εκπαίδευση των μοντέλων χρησιμοποιήθηκε η numpy. Χρησιμοποιήθηκε επίσης η matplotlib για την εξαγωγή διαγραμμάτων και την οπτικοποίηση των χαρακτηριστικών. Τέλος, σε συνδυασμό με όλες αυτές χρησιμοποιήθηκαν και άλλες βιβλιοθήκες όπως η padas, η seaborn, η multiprocessing ,η οs, η pyaudio κα.
ενώ στην εκπαίδευση των μοντέλων χρησιμοποιήθηκε η numpy. Χρησιμοποιήθηκε επίσης η seaborn για την εξαγωγή διαγραμμάτων και την οπτικοποίηση των χαρακτηριστικών. Παράλληλα, σε συνδυασμό με όλες αυτές χρησιμοποιήθηκαν και άλλες βιβλιοθήκες όπως η pandas, η matplotlib, η multiprocessing, η οs, η pyaudio κα. Για την εκπαίδευση, δοκιμάστηκαν τα μοντέλα svm, decision trees, multilayer perceptron, Naive bayes και random forest, τα οποία θα αναπτυχθούν στα επόμενα κεφάλαια. Το dataset που χρησιμοποιήθηκε για την εκπαίδευση του μοντέλου είναι το προτινόμενο GTZAN dataset \footnote{http://opihi.cs.uvic.ca/sound/music\_speech.tar.gz}, το οποίο αποτελείται απο 120 αρχεία διάρκειας 30 δευτερολέπτων. Κάθε κλάση (μουσική/φωνή) αποτελείται από 60 αρχεία ενώ δεν υπάρχουν αρχεία που να περιέχουν και τις δύο κλάσεις. Όλα τα δείγματα είναι στα 22050 Hz, Mono 16-bit και σε αρχεία μορφής .wav. Τέλος, χρησιμοποιήθηκε 4-fold cross validation για την εκτίμηση της απόδοσης του μοντέλου.
\section{Χαρακτηριστικά και προεπεξεργασία δεδομένων}
\section{Χαρακτηριστικά και προεπεξεργασία δεδομένων}
Για την εξαγωγή των χαρακτηριστικών που φαίνονται στο από τα αρχεία ήχουν του σετ δεδομένων, αρχικά τμηματήσαμε κάθε σήμα αρχείου σε frames με μέγεθος 6144 δείγματα, το οποίο προέκυψε μετά από επαναλαμβανόμενες δοκιμές.
Για την εξαγωγή των χαρακτηριστικών που φαίνονται στο από τα αρχεία ήχουν του σετ δεδομένων, αρχικά τμηματήσαμε κάθε σήμα αρχείου σε frames με μέγεθος 6144 δείγματα, το οποίο προέκυψε μετά από επαναλαμβανόμενες δοκιμές.
Έπειτα, τα frames αυτά, παραθυροποιήθηκαν με παράθυρο τύπου Hamming, ίσου μεγέθους. Στη συνέχεια, έγινε η εξαγωγή των χαρακτηριστικών στο πεδίο του χρόνου, καθώς και στο πεδίο της συχνότητας.Παράλληλα, έγινε και η εξαγωγή των συντελεστών MFCC έτσι ώστε να είναι εφικτός ο υπολογισμός της διαμόρφωσης της ενέργειας σήματος στα 4 hz. Τα χαρακτηριστικά που εξήχθηκαν είναι 27 και θα αναλυθούν στη συνέχεια. Ως προεπεξεργασία, τα δεδομένα κλιμακοποιήθηκαν με την βοήθεια της συνάρτησης scale που ανήκει στο module preprocessing της βιβλιοθήκης sklearn, έτσι ώστε να έχουν μέσο 0 και τυπική απόκλιση ίση με 1 για κάθε συνιστώσα. Τέλος, δίνουμε την δυνατότητα στον κώδικά μας να εφαρμοστεί και η μέθοδος Principal Component Analysis - PCA,αν αυτή είναι αναγκαία, έτσι ώστε να μειωθούν οι τελικές διαστάσεις των χαρακτηριστικών. Στην δική μας υλοποίηση, μειώνουμε τις διαστάσεις από 27 σε 10, έτσι ώστε να έχουν αξιοσημείωτη μείωση και να ελέγξουμε τι γίνεται σε αυτήν την περίπτωση με την απόδοση.
Έπειτα, τα frames αυτά, παραθυροποιήθηκαν με παράθυρο τύπου Hamming, ίσου μεγέθους. Στη συνέχεια, έγινε η εξαγωγή των χαρακτηριστικών στο πεδίο του χρόνου, καθώς και στο πεδίο της συχνότητας.Παράλληλα, έγινε και η εξαγωγή των συντελεστών MFCC έτσι ώστε να είναι εφικτός ο υπολογισμός της διαμόρφωσης της ενέργειας σήματος στα 4 Ηz. Τα χαρακτηριστικά που εξήχθηκαν είναι 27 και θα αναλυθούν στη συνέχεια. Ως προεπεξεργασία, τα δεδομένα κλιμακοποιήθηκαν έτσι ώστε να έχουν μέσο 0 και τυπική απόκλιση ίση με 1 για κάθε ένα. Τέλος, δίνεται η δυνατότητα στον κώδικά να εφαρμοστεί και η μέθοδος Principal Component Analysis - PCA,αν αυτή είναι αναγκαία, έτσι ώστε να μειωθούν οι τελικές διαστάσεις των χαρακτηριστικών. Στην συγκεκριμένη υλοποίηση, μειώνονται οι διαστάσεις από 27 σε 10, έτσι ώστε η διαφορά να είναι αξιοσημείωτη και να ελεγθεί τι γίνεται σε αυτήν την περίπτωση με την απόδοση.
%pinakas me arxikes kai telikes diastaseis xarakthristikwn
%pinakas me arxikes kai telikes diastaseis xarakthristikwn
%\begin{center}
%\begin{center}
@ -103,23 +102,24 @@ To flatness ή αλλιώς επιπεδότητα του ήχου, είναι
%Leptomeries gia tin diki mas ulopoihsh, epilogh timwn ktl
%Leptomeries gia tin diki mas ulopoihsh, epilogh timwn ktl
Παρακάτω φαίνονται ενδεικτικά κάποια από τα παραπάνω χαρακτηριστικά και το πόσο αποτελεσματικά είναι στον διαχωρισμό:
\parΠαρακάτω φαίνονται ενδεικτικά κάποια από τα παραπάνω χαρακτηριστικά και το πόσο αποτελεσματικά είναι στον διαχωρισμό:
\caption{Αποτελεσματικότητα χαρακτηριστικών στον διαχωρισμό των κλάσεων}
\end{figure}
\end{figure}
Eπιπλέον, ελέγξαμε όλα τα χαρακτηριστικά ένα προς ένα έτσι ώστε να δούμε εάν υπάρχει τρόπος να φτάσουμε την πλήρη ακρίβεια του μοντέλου μας με λιγότερα ή να φτάσουμε αρκετά κοντά ίσως ακόμα και με μόνο ένα.
Eπιπλέον, ελέγξαμε όλα τα χαρακτηριστικά ένα προς ένα έτσι ώστε να δούμε εάν υπάρχει τρόπος να φτάσουμε την πλήρη ακρίβεια του μοντέλου μας με λιγότερα ή να φτάσουμε αρκετά κοντά ίσως ακόμα και με μόνο ένα χαρακτηριστικό.
Tα αποτελέσματα έδειξαν ότι κανένα χαρακτηριστικό από μόνο του δεν είναι ικανό να δώσει ικανοποιητικό ποσοστό απόδοσης στο μοντέλο. Αν πάρουμε το καλύτερο feature και το δοκιμάσουμε σε συνδυασμό με τα υπόλοιπα βλέπουμε ότι η ακρίβεια αυξάνεται λίγο αλλά όχι αρκετά.
Tα αποτελέσματα έδειξαν ότι κανένα χαρακτηριστικό από μόνο του δεν είναι ικανό να δώσει ικανοποιητικό ποσοστό ακρίβειας στο μοντέλο. Αν πάρουμε το καλύτερο σε όρους ακρίβειας και το δοκιμάσουμε σε συνδυασμό με τα επόμενα καλύτερα, φαίνεται ότι η ακρίβεια αυξάνεται λίγο αλλά όχι αρκετά.
Τέλος, αν συνδυάσουμε ξανά αυτά τα features με τα επόμενα καλύτερα βλέπουμε ότι έχουμε και πάλι μια μικρή αύξηση στην ακρίβεια,η οποία όμως είναι αρκετά μακρυά από την ακρίβεια που πετυχαίνουμε εν τέλει.
Τέλος, αν επαναληφθεί ακόμα μία φορά η διαδικασία, φαίνεται ότι έχουμε και πάλι μια μικρή αύξηση στην ακρίβεια,η οποία όμως είναι αρκετά μακρυά από την ακρίβεια που επιτυγχάνεται εν τέλει.
\begin{table}[h]
\begin{table}[H]
\begin{tabular}{llll}
\begin{tabular}{llll}
{\ul\textbf{Accuracy}}&{\ul\textbf{Individually}}&{\ul\textbf{with best 1}}&{\ul\textbf{with best 2}}\\
{\ul\textbf{Accuracy}}&{\ul\textbf{Individually}}&{\ul\textbf{with best 1}}&{\ul\textbf{with best 2}}\\
4Hz Mod & 0.58 & 0.66 & 0.73 \\
4Hz Mod & 0.58 & 0.66 & 0.73 \\
@ -150,10 +150,11 @@ mfcc10 & 0.54 & 0.65
mfcc11 & 0.51 & 0.66 & 0.73 \\
mfcc11 & 0.51 & 0.66 & 0.73 \\
mfcc12 & 0.54 & 0.67 & 0.73
mfcc12 & 0.54 & 0.67 & 0.73
\end{tabular}
\end{tabular}
\caption{Ακρίβεια μεμονωμένων χαρακτηριστικών και συνδυασμών τους}
\end{table}
\end{table}
%Διαγραμμα features-απόδοσης;
%Διαγραμμα features-απόδοσης;
Άρα, είναι προφανές ότι δεν είναι κάποιο συγκεκριμένο feature το οποίο ευθύνεται για το μεγαλύτερο ποσοστό της ακρίβειας του μοντέλου αλλά ο συνδυασμός τους.
Άρα, είναι προφανές ότι δεν είναι κάποιο συγκεκριμένο χαρακτηριστικό το οποίο ευθύνεται για το μεγαλύτερο ποσοστό της ακρίβειας του μοντέλου αλλά ο συνδυασμός τους.
Για την υλοποίηση του ταξινομητή δοκιμάστηκαν διάφορες μέθοδοι οι οποίες πετυχαίνουν διαφορετική ακρίβεια.Επίσης , για την μέτρηση της απόδοσης των μοντέλων εφαρμόστηκε η μέθοδος K-Fold cross validation.Στη συνέχεια αναφέρεται συνοπτικά η λειτουργία των μοντέλων που χρησιμοποιήθηκαν (Οι ορισμοί είναι σύμφωνα με την ιστοσελίδα της analytics vidhya \footnote{https://www.analyticsvidhya.com/}) ενώ στο τέλος παρατίθεται ένας πίνακας στο οποίο φαίνονται οι διάφορες μέθοδοι και οι ακρίβειες που πέτυχαν.
Στη συνέχεια αναφέρεται συνοπτικά η λειτουργία των μοντέλων που χρησιμοποιήθηκαν για την εκπαίδευση των δεδομένων(Οι ορισμοί είναι σύμφωνα με την ιστοσελίδα της analytics vidhya \footnote{https://www.analyticsvidhya.com/}) ενώ στο τέλος παρατίθεται ένας πίνακας στο οποίο φαίνονται οι διάφορες μέθοδοι και οι ακρίβειες που επιτεύχθησαν.
\subsection{Support Vector Machine - SVM}
\subsection{Support Vector Machine - SVM}
@ -24,18 +24,37 @@ O Random Forest είναι ένας αλγόριθμος τύπου Bootstrap,
\hfill
\hfill
Παρατίθεται στη συνέχει ο πίνακας στον οποίο φαίνονται οι ακρίβειες των μοντέλων για την ταξινόμηση.
Random Forest & 95.29\%& 94.36\%& 95.42\%& 95.33\%&\textbf{95.49}\%
{\ul\textbf{Method}}&{\ul\textbf{Αccuracy}}\\
SVM &\textbf{96.06}\\
Decision Tree & 86.51 \\
MultiLayer Perceptron & 90.34 \\
Naive Bayes & 70.25 \\
Random Forest & 95.49 \\
SVM (PCA(10)) & 90.02 \\
\end{tabular}
\end{tabular}
\caption{Ακρίβεια ταξινομητών}
\end{table}
\end{table}
Όπως φαίνεται παραπάνω, η καλύτερες μέθοδοι είναι τα Support Vector Machines και ο αλγόριθμος Random Forest με 96\% και 95\% ακρίβεια αντίστοιχα, ενώ κοντά βρίσκεται και ο αλγόριθμος του Multilayer perceptron. Τέλος, βλέπουμε ότι ο χειρότερος είναι ο Naive Bayes με περίπουτ 70\% ακρίβεια.
Όπως φαίνεται, η καλύτερες μέθοδοι είναι τα Support Vector Machines και ο αλγόριθμος Random Forest με 96\% και 95\% ακρίβεια αντίστοιχα, ενώ κοντά βρίσκεται και ο αλγόριθμος του Multilayer perceptron. Παράλληλα, βλέπουμε ότι ο χειρότερος είναι ο Naive Bayes με περίπουτ 70\% ακρίβεια. Τέλος, η εφαρμογή του PCA είναι φανερό ότι μείωσε αρκετά την ακρίβεια του μοντέλου και για αυτόν τον λόγο συνίσταται μόνο στην περίπτωση που υπάρχει κάποιος χρονικός περιορισμός καθώς σε αυτήν την περίπτωση, λόγω της μείωσης των χαρακτηριστικών από 27 σε 10, το μοντέλο θα εκτελείται πιο γρήγορα.
%αναλυση γενικα για τον κωδικα (διαφανειες wrapper και execution} για τις συναρτησεις 4hz modulation, random forest, kFCrossValid