Home Dataset Methods and Results Analysis

Analysis

Interpreting the results

The following table shows attribute importance based on average impurity decrease (and number of nodes using that attribute). Only attributes with an average impurity decrease ≥ 50% are shown below. These values were generated by Weka. The table illustrates that key, mode, energy, and danceability are the most informative attributes for classifying genre. The t and p attributes (i.e. t2) represent different measures of timbre and pitch.
attributes

Attribute importance by the number of nodes that ues each attribute in our model

We also compared our model accuracy with human classification accuracy. We asked 5 people to classify genres of the same 100 songs. We took the majority answer for each song from the partipants and compared the responses with the correct genre from Wikipedia or iTunes. The people classified 84 of our 100 songs correctly, or 84%. Some hip-hop, country, and r&b songs were often confused for pop. Although we realize this is not representative of the whole population, this gives us an idea of human genre classification accuracy. We are excited to see that our model's classification can get close to that of humans.

Future Work

To expand our project, we could gather data from more genres to broaden the reach of our classifier. We could also look into training our model so that it is able to distinguish between subgenres, for example country rock and country pop within the general country genre. It would be cool to see how slight changes in attributes can shift a song from one subgenre to the next. Another area of research could be to explore whether metadata can be used to predict what culture a given song originates from.
For further exploration, we propose looking into natural language processing to see how lyrical content informs genre classification. Certain genres have very distinct word associations. For example, hip-hop/rap music has a high concentration of profanity. It would also be interesting to examine how other aspects of language, such as sentence structure, inform genre.

Contributions:

Kylie used the Spotify API to collect audio features, generated attribute graphs among genres, generated Weka data, surveyed for human classification, and wrote code to generate accuracy vs dataset size plot. Remy wrote the majority of the final report, collected some audio data, and implemented 10-fold cross-validation using Python's Scikit package. Rachel designed and built the website, surveyed for human classification, and also helped find the best model for classifying songs by genre. Corinne built the demo of our model using the Spotify API and Flask to deploy the app and also contributed to implementing the Random Forest model using Scikit.

Northwestern University EECS 349