From 213eebe9283577245d52ffb4c31b552740b6371c Mon Sep 17 00:00:00 2001 From: Austin Barton <101911867+abarton51@users.noreply.github.com> Date: Mon, 4 Dec 2023 22:24:01 -0500 Subject: [PATCH] final changes --- assets/rf_confusion_matrix.png | Bin 30604 -> 32954 bytes src/musicNet/main.py | 32 ++++++++++++++++++++++++++------ tabs/final_report.md | 21 +++++++++++++++++---- 3 files changed, 43 insertions(+), 10 deletions(-) diff --git a/assets/rf_confusion_matrix.png b/assets/rf_confusion_matrix.png index e3a88a526d966aff93ad600650a81733346e55a0..4f5ea3d054ae925073d146fa469fe5980fc6f95d 100644 GIT binary patch literal 32954 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
luNVSFIG!&; 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
    8ycFg5zfwQ-PvgEd3 z!A2C3KbVTH**+k787F{3ICS~)erea=CR_pcCXLtv`(+p^@>p00fvROe(@l|h{oodK zDi#()FdqqNkD6IX1>6{PLEf+|2U^!Rh1DwQypMSl^xbA$RSV+Xa?mOB zKbgHoKP9~b?Y`^T_mDmfKix_>*KRgy&+eL_EN_NQG3Ur0_9MhQ^dU2T@_ly7hhs1Qz8*Cwr6R=AX?@6gMTw0;R z_K8?{VIDcQ?U3gEYCxYL>#014Jr=TY} zIJUz7;YCd_@;apNOG+O6k|h5M<4iMc%{4`>b)WjvdJaW~bgl@*!sSqH(4YaQ`iHT} zy+ER>@Rqrs^!b|Zuf|$W8U@5UGrsC7^5TFxbY1n7HtaK}A$H8*<6Y#BzhQH_tY z(B+eB(GZ}F?wj%xVc!hd8b2@RZyKP)K|_b?@(q+yywJ3eO>!P0LgzMYnFFML^I|Rg za7w~e9G;DgLeR>GDQ)1FqP=%e;xM*{ccLR|%#f{Hw^|2OrWT}8DQn{M(6v_=L=}ln zQfdILj9=bwCW;3nWW6~PQ)fhhbwriErFsgLSvP^7(>(5Sc!lz4I9Rmp)v4-@YBE}4 z5E(^qVmB}fVc;C&hJaifow3l2>OKioih(4lkPkwfy*2^|!+>|1{OsPF6Qo{V8p!2H zz*ToJq>XtSzSQ$rGbE&x1L%;)cJ6&3nH~GTvL1!!iBs_!je&hOt=()cHqk0NJ@0C1 zS(7JfH+5>ftG;p-GS7aZaWUP8+}G3qMxY>cg&5RaZ|w(EB6Q)$0$*GY$Usyi6rM7H z==hd4-zRwNBF6$7iEdB!E+%mAaAFlT+duKcI$#EuCH+aH0;ph=d&Cp)>VK#U(051R2TKEqJ+b`v5r=L3Kd1f{AwC;MWGnR!y-Zz znZ?M{V>L)Pzj&uud*Klg=b-AOOfgd%>Hq%c?*xXF`2xswC7_3M!L;BLLPG-R7I!=_z`p z-Y8|mwA&96bQf!2eSsrMv}r@UxQns%(yB%NZ!Wc`Zx;ekfUstapG$f?9-*ov@ltB) zlMl(F>OdNfq6n17;}EP@o+?0nT}3SQ0*^8MfETYv3nyI*CQ|f=WiQC%m!La{m&3SK z#Czm$>K=^dWFqNhXu-4M -A note on F1-Score: For this section, we use a weighted average F1 score since this is a multi-class classification task and we believe this method of aggregated pairwise F1-scores is best for our imbalanced dataset. +**A note on F1-Score and AUC:** For this section, we use a weighted average F1-score and weighted average Area Under the receiver operating Curve (AUC). The reason we weight these scores is due to the imbalance in the classes for this dataset. The F1-score metric is the harmonic mean of precision and reall. Thus, it acts as an aggregated metric for both precision and recall. Because it's defined on a binary case of true/false postive/negatives, each class has its corresponding F1-score. These values are then aggregated by a weighted average into one value, as reported below. The AUC metric is an aggregate measurement of true and false positive rates derived from the ROC plot, which plots the true positive rate (TPR) against the false positive rate (FPR) at each threshold setting. Similarly to the F1-score, this is a binary classification statistics. Therefore, each class has their own AUC score which is aggregated into a single reported AUC. We use both the 1 vs Rest and 1 vs 1 methods. 1 vs Rest divides the data into two classes as the 1 class we are measuring (positive), and the rest (negatives). The 1 vs 1 method only looks at pairwise comparisons between each class as the positives and negatives. Both of the metrics for measuring classification performance are highly regarded and tend to perform better than accuracy alone, especially in imbalanced datasets such as this one [[5.]](#references), [[6.]]. Decision Tree Classifier Results: - Training Accuracy: 1.0 - Test Accuracy: 0.6458333333333334 - Test F1-Score: 0.6475694444444445 +- Test 1v1 AUC-Score: 0.7684729549963925 +- Test 1vRest AUC-Score: 0.7462224419541492 We can see the model does actually quite well for how little training data there is and how poorly the data is distributed. This landmark shows that our processing algorithm for the MIDI is effective to at least some extent in distinguishing certain composers from others. @@ -221,8 +223,10 @@ Random Forest Classifier Results: - Training Accuracy: 1.0 - Test Accuracy: 0.8541666666666666 - Test F1-Score: 0.8519282808470453 +- Test 1v1 AUC-Score: 0.9701817279942282 +- Test 1vRest AUC-Score: 0.9668985078283857 -We can see that random forests drastically improve classification results. Since random forests are highly interpretable and cost efficient we would opt for this model over other less interpretable and cost ineffecitve models. This idea is showcased in the subsequent section with the introduction of gradient-boosted trees. +We can see that random forests drastically improve classification results. Since random forests are highly interpretable and cost efficient, we would opt for this model over other less interpretable and cost ineffecitve models. This idea is showcased in the subsequent section with the introduction of gradient-boosted trees. #### Gradient-Boosted Trees @@ -255,7 +259,9 @@ Model 1 Training Table: XGBoost Model 1 Results: - Training Accuracy: 0.9652777777777778 - Test Accuracy: 0.8541666666666666 -- Test F1-Score: 0.8519282808470453 +- Test F1-Score: 0.7749568668046929 +- Test 1v1 AUC-Score: 0.9282258973665223 +- Test 1vRest AUC-Score: 0.936447444831591 drawing @@ -288,7 +294,9 @@ Model 2 Training Table: XGBoost Model 2 Results: - Training Accuracy: 0.9930555555555556 - Test Accuracy: 0.8541666666666666 -- Test F1-Score: 0.8519282808470453 +- Test F1-Score: 0.7664231763068972 +- Test 1v1 AUC-Score: 0.9095452290764792 +- Test 1vRest AUC-Score: 0.910000647424428 drawing @@ -360,3 +368,8 @@ Link to Gantt Chart: [Gantt Chart](https://gtvault-my.sharepoint.com/:x:/g/perso [3.] Pál, T., & Várkonyi, D.T. (2020). Comparison of Dimensionality Reduction Techniques on Audio Signals. Conference on Theory and Practice of Information Technologies. +[4.] (https://www.kaggle.com/code/imsparsh/gtzan-genre-classification-deep-learning-val-92-4) Gupta, S. (2021). GTZAN-Genre Classification-Deep Learning-Val-92.4%. + +[5.] Ferrer, L. (n.d.). Analysis and comparison of classification metrics - arxiv.org. Arxiv. https://arxiv.org/pdf/2209.05355.pdf + +[6.] Brownlee, J. (2021, April 30). Tour of evaluation metrics for imbalanced classification. MachineLearningMastery.com. https://machinelearningmastery.com/tour-of-evaluation-metrics-for-imbalanced-classification/