Song Year Prediction on the Million Song Dataset

The sound of music has changed throughout the past century and continues to change. The Million Song Dataset collects song features from popular contemporary songs ranging from 1922 to 2010. By using the sound characteristics of songs, this project applies linear regression models, namely ordinary least squares and ridge regression, to the segments pitches and segments timbre features found in the dataset. These features are used to build a model matrix of predictors and to predict song release years using residual sum of squares and leave-one-out cross-validation.

Technologies

The project is programmed in Python using various libraries. NumPy is used to store data in narrays, compute covariance matrices for song data and for general computing. Pandas is used to create data frame structures for analysis, which are pickled as fast, serialized files that can easily be reloaded. Scikit-learn does the heavy lifting by supplying the machine learning models while Matplotlib graphs the results.

Song Year Predictions

histogram

The correct year is predicted for songs more often than any other year. The model is able to predict 75% of songs within a decade and 45% of songs within 5 years of their actual release year. The histogram is skewed right, representing more over predictions by the model. If the model is trusted, these over predictions contain songs that are futuristic. Further work can be done to analyze futuristic song patterns to shed light on future music trends and the characteristics that make future throwback songs.

Project Links

View my full research paper

Check out the GitHub repository

Written on July 1, 2018