{
  "fetched_at": "2026-10-19T23:59:29Z",
  "source_url": "https://www.kaggle.com/competitions/aalto-music-listening-prediction/data",
  "pages": [
    {
      "name": "data-description",
      "content": "<p>The data has been collected through Last.fm service. Below you can find descriptions for the relevant data files.</p>\r\n<h2>File descriptions</h2>\r\n<ul>\r\n<li><strong>user_artist_matrix_with_nans.mat</strong> - matrix in Matlab format where each row corresponds to one user (total of 1372 users) and each column to one artist (total of 4322 artists). Value (i,j) is the number of different songs user i has listened to from artist j. The matrix contains 35021 missing 'NaN' values for which you are expected to provide 0/1 recommendations. Predicted value 1 means that the user has listened to at least one song from the artist.</li>\r\n<li><strong>user_artist_matrix_with_nans.csv</strong> - the same as above but in csv format. Missing values are denoted by '?'.</li>\r\n<li><strong>metadata.mat</strong> - supplemental information about the artists (using this data is optional). When you load this file into Matlab you'll get the following variables</li>\r\n<ul>\r\n<li><strong>artist_names </strong>- cell array of all artist names. These are in the same order as the columns in the user-artist matrix.</li>\r\n<li><strong>artist_tagId_mat</strong> - tag information (e.g. 'indie', 'jazz', 'rock', etc.) for each artist. Value (i,j) is weight of tag j for artist i. The weights in each row sum up to one.</li>\r\n<li><strong>tag_names</strong> - cell array of tag names in the same order as the columns in the artist-tagId matrix appear.</li>\r\n</ul>\r\n<li><strong>sampleSubmission.csv</strong> - a sample submission file in the correct format.</li>\r\n<li><strong>prepare_submission.m</strong> - Matlab code which loads the matrix and generates a submission file with random predictions in the correct format.</li>\r\n</ul>",
      "isPublished": false,
      "hasIsPublished": false,
      "postTitle": "",
      "hasPostTitle": false,
      "mimeType": "",
      "hasMimeType": false
    },
    {
      "name": "Description",
      "content": "<p>In this competition, your task is to predict which music artists a user has listened to. You are given a user-artist matrix with some missing values and additionally, we provide some metadata about the artists which you can use if you want to.</p>",
      "isPublished": false,
      "hasIsPublished": false,
      "postTitle": "",
      "hasPostTitle": false,
      "mimeType": "",
      "hasMimeType": false
    },
    {
      "name": "Evaluation",
      "content": "<p>The evaluation metric for this competition is prediction accuracy (percentage of correctly classified missing values).</p>\r\n<h2>Submission Format</h2>\r\n<p><strong>For every missing value in the dataset</strong>, submission file should contain two columns: Id (integer) and Prediction (0/1). The Id is constructed as follows:</p>\r\n<p>\\[ Id = i+(j-1)*N_{rows}, \\]</p>\r\n<p>where i is the row index (ranging between 1 and N<sub>rows</sub>) and j is the column index. Matlab, for example, uses the same indexing. The resulting indexing should look like this if the matrix has 3 rows and 4 column</p>\r\n<p>\\[ \\left( \\begin{array}{cccc}<br />1 &amp; 4 &amp; 7 &amp; 10 \\\\<br />2 &amp; 5 &amp; 8 &amp; 11\\\\<br />3 &amp; 6 &amp; 9 &amp; 12 \\end{array} \\right)\\] </p>\r\n<p>Note that eventhough the provided user-artist matrix contains values &gt;1, you are expected to <strong>submit only 0/1 predictions</strong>! Value 1 means that you believe that the user has listened to at least one song from the artist.</p>\r\n<p>The file should contain a header and have the following format:</p>\r\n<pre>Id,Prediction<br />81,1<br /><span style=\"font-size: 14px; line-height: 1.4em;\">916,0<br />1138,1<br /></span><span style=\"font-size: 14px; line-height: 1.4em;\">1203,0<br /></span><span style=\"font-size: 14px; line-height: 1.4em;\">etc.</span></pre>",
      "isPublished": false,
      "hasIsPublished": false,
      "postTitle": "",
      "hasPostTitle": false,
      "mimeType": "",
      "hasMimeType": false
    },
    {
      "name": "rules",
      "content": "\r\n\t<!-- Begin Base Rules -->\r\n    <h3>One account per participant</h3>\r\n    <p>You cannot sign up to Kaggle from multiple accounts and therefore you cannot submit from multiple accounts.</p>\r\n    <h3>No private sharing outside teams</h3>\r\n    <p>\r\n        Privately sharing code or data outside of teams is not permitted.\r\n        It's okay to share code if made available to all participants on the forums.\r\n    </p>\r\n    <h3>Team Mergers</h3>\r\n    <p>Team mergers are not allowed in this competition.</p>\r\n\r\n    <h3>Team Limits</h3>\r\n    <p>There is no maximum team size.</p>\r\n    <h3>Submission Limits</h3>\r\n    <p>You may submit a maximum of 15 entries per day.</p>\r\n    <p>You may select up to 2 final submissions for judging.</p>\r\n    <h3>Competition Timeline</h3>\r\n    <p>Start Date: <strong>3/11/2014 1:50 PM UTC</strong></p>\r\n    <p>Merger Deadline: <strong>None</strong></p>\r\n    <p>Entry Deadline: <strong>None</strong></p>\r\n    <p>End Date: <strong>5/4/2014 11:59 PM UTC</strong></p>\r\n\t<!-- End Base Rules -->\r\n",
      "isPublished": false,
      "hasIsPublished": false,
      "postTitle": "",
      "hasPostTitle": false,
      "mimeType": "",
      "hasMimeType": false
    }
  ]
}