“Gallia est omnis divisa in partes tres (…)”
― Julius Caesar, Commentaries on the Gallic War
Performing iterative computations, computations on a graph, learning basic clustering algorithms.
We are using a dataset based on the metadata in the Million Song Dataset. The data can be found here:
Use the subset for development and testing. Use the full dataset for your final submission.
Description of the dataset can be found here. Watch out for dirty data!
Using Spark, perform hierarchical agglomerative clustering and k-means clustering as follows:
Use each method to perform each clustering task.
Compare the results, as well as the performance of the solutions.
Observe whether:
Let’s define popularity as the product of:
Let’s define trendsetters as the top 30 most popular artists.
Let’s define commonality between two artists as the number of terms shared between the artists.
Let’s define a commonality graph as an undirected graph. The nodes are artists. There is an edge between artists if they are similar. The weight on the edge is the commonality between the artists.
Cluster all artists using k-means in Spark, using the trendsetters as initial centroids and some definition of distance in the commonality graph as distance measure.
Discuss the results of the clustering and performance.
Assignment is performed in groups of 2 (assigned by TA). Authors are clearly marked on all deliverables.
Required files:
src/
(directory containing the sources of the implementation)README.md
(Markdown file containing the description of the implementations)Makefile
report.Rmd
(The report as described in the previous section)report.pdf
(A PDF rendering of report.Rmd
)input/
(A directory containing sample input files; please gzip
all text files to save space)Provide a Makefile with the following rules:
build
builds all the implementationsrun
runs the variantsreport
generates the reportsall
build, run, and reportPrepare the report in R Markdown and generate a PDF.
Evaluate your solution using your a local machine and AWS.
It is possible to get extra credit for the assignment by: