{
  "fetched_at": "2026-10-19T11:05:29Z",
  "source_url": "https://www.kaggle.com/competitions/21422netflix/data",
  "pages": [
    {
      "name": "data-description",
      "content": "The original dataset has been subsampled/oversampled and augmented. \n \n1. `XY_Netflix.csv`: Contains ~7.4 million movie ratings (with level 1,2,3,4,5) identified by user id (`uid`) and movie id (`mid`). The first 20K rows have NaN rating values, which need to be predicted and submitted to Kaggle with their IDs, which are computed from `uid` and `mid` (see Starter Colab).\n1. `XY_Netflix_matrix.csv` is a matrix of user rows and movie columns. It contains the same ratings as `XY_Netflix.csv` does, but because all other NaN values are also specified, ratings required for Kaggle submission are trickier to identify.\n1. `movie.csv` contains additional information on movies in the above datasets",
      "isPublished": false,
      "hasIsPublished": false,
      "postTitle": "",
      "hasPostTitle": false,
      "mimeType": "",
      "hasMimeType": false
    },
    {
      "name": "Description",
      "content": "In this [Netflix Prize](https://en.wikipedia.org/wiki/Netflix_Prize) assignment, participants need to predict a rating from a user (movie viewer) to a movie, i.e. rating|{user,movie}. See [&#127910;](https://youtu.be/ImpV70uLxyw), [&#127910;](https://youtu.be/8wLKuscyO9I). This problem is classified as a [**collaborative filtering**](https://en.wikipedia.org/wiki/Collaborative_filtering) and assumes latent dependency between users and movies. Recall that typically we build models which assume weak or no dependency between observations, unless we model time series, video frames, etc. \n \nThis problem is unique due to the high sparsity of ratings. In the original Netflix problem, ~99% of ratings were missing, but here we have a subsample with 85% sparsity (if measured as a fraction of NaN values in the user×movie matrix. So, the challenge might be viewed as missing value imputation. We can also apply clustering and dimensions reduction solutions, which classify this problem as unsupervised learning. Also, we can apply supervised learning techniques, which learn from rating labels and predict missing values. However, the challenge is to derive users' features, since users have no explicit features in this dataset.\n \n* HSE students model in R \n* JHU students model in Python. \n \nSee **Rules** tab for more details.\n \n## Acknowledgements\n1. The original dataset was derived from [Netflix Movie Rating Dataset](https://www.kaggle.com/rishitjavia/netflix-movie-rating-dataset?select=Netflix_Dataset_Movie.csv), [Netflix Prize data](https://www.kaggle.com/netflix-inc/netflix-prize-data), [Netflix Prize Shows Information (9000 Shows)](https://www.kaggle.com/akashguna/netflix-prize-shows-information?select=imdb_processed.csv), [TMDB](https://www.themoviedb.org/?language=en-US) and [IMDB](https://www.imdb.com/interfaces).\n1. The image is https://www.herox.com/blog/839-history-of-crowdsourcing-the-netflix-prize\n1. **Competition Authors**. [HSE](https://hse.ru/) [ML Teaching Team](https://www.hse.ru/edu/courses/?filial=22723&lecturer=409923484&year=2021): [Oleg Melnikov](https://www.linkedin.com/in/olegmelnikov/), [Alexey Boldyrev](https://www.hse.ru/org/persons/223985242), [Vladimir Kirillin](https://www.hse.ru/org/persons/499313273), [Sergey Chervontsev](https://www.hse.ru/org/persons/305134539), Margarita Lazareva, Tatyana Yazykova, Mike Ovyan, Lika Lomidze, Vladimir Novikov, Valeriya Rogovchenko",
      "isPublished": false,
      "hasIsPublished": false,
      "postTitle": "",
      "hasPostTitle": false,
      "mimeType": "",
      "hasMimeType": false
    },
    {
      "name": "Evaluation",
      "content": "The evaluation metric is [**accuracy score**](https://scikit-learn.org/stable/modules/generated/sklearn.metrics.accuracy_score.html), which is the default classification accuracy in `sklearn` library. There are 5 possible ratings. Target variable is has 1-based index which can is computed as a deterministic function of `uid` and `mid` (see Colab). Notice that this metric does not reward your predicted ratings for being close. You are rewarded for exact match of the rating. The submission format is:\n\n        id,rtg\n        1,1\n        382,2\n        763,3        \n        1144,4\n        1525,5\n\nFYI: the original competition used RMSE, which defines deviation from true rating. The teams had to beat 0.95 RMSE.",
      "isPublished": false,
      "hasIsPublished": false,
      "postTitle": "",
      "hasPostTitle": false,
      "mimeType": "",
      "hasMimeType": false
    },
    {
      "name": "rules",
      "content": "Please follow these guidelines to avoid penalties. Have fun! This notebook produces the baseline result [**Python Starter Colab**](https://colab.research.google.com/drive/1eUYYb6wWc1B9ZA-8IMbRlHsNrU_wA_I9?usp=sharing).\n\n# 𝕮𝖔𝖒𝖕𝖊𝖙𝖎𝖙𝖎𝖔𝖓 𝕽𝖚𝖑𝖊𝖘.\n \n### **Rule 0:  If in doubt, just ask for clarity in our forum.**\n \n## 𝓐𝓵𝓵𝓸𝔀𝓮𝓭 𝓜𝓸𝓭𝓮𝓵𝓼 𝓪𝓷𝓭 𝓔𝓷𝓰𝓲𝓷𝓮𝓮𝓻𝓲𝓷𝓰:\n1.  **Ok to use these models:**\n    1. **𝓗𝓢𝓔 and 𝓙𝓗𝓤: SKLearn's [matrix decompositions](https://scikit-learn.org/stable/modules/classes.html#module-sklearn.decomposition), [clustering](https://scikit-learn.org/stable/modules/classes.html#module-sklearn.cluster), [ensembles](https://scikit-learn.org/stable/modules/classes.html#module-sklearn.ensemble) based on the models we have used so far in the assignments**, [sklearn-surprise](https://surpriselib.com/)\n1. You can also use clustering algorithms and dimension reduction algorithms (`stats::pca()` in R, `PCA()` in SKL, etc.)\n1. Ok to engineer features, tune hyperparameters/optimizers, sub/oversample, regularize, do stepwise selection, reduce dimensions, use CPU/GPU/TPU.\n \n## 𝓡𝓮𝓹𝓻𝓸𝓭𝓾𝓬𝓲𝓫𝓲l𝓲𝓽𝔂 𝓪𝓷𝓭 𝓡𝓾𝓷𝓽𝓲𝓶𝓮:\n1. **Colab Runtime Limit (CRTL):** specified in Colab starter notebook\n  1. 2 slowest Colabs are penalized in the range [CRTL, 2*CRTL]. \n  1. Colabs running over 2*CRTL will be penalized according to the severity.\n  1. Students and instructors should use free Colab (with Tesla K80 GPU) to minimize timing discrepancies. \n  1. Try **subsampling** observations/features to stay within CRTL and avoid penalties\n1. We will only check your private leaderboard (LB) score\n1. Your LMS-submitted IPYNB code must reproduce your LB score. Seed all [RNG](https://en.wikipedia.org/wiki/Random_number_generation).\n  1. LB score of a model built on GPU is allowed to deviate within 1 rank.\n1. Your submitted **Colab notebook must run from start to end in < CRTL** (so it can be verified efficiently) without any error messages in Colab or **local** file dependencies.\n1. You can comment out your time-consuming grid-search use use optimal parameters and [EDA](https://en.wikipedia.org/wiki/Exploratory_data_analysis). \n1. Use Factory Reset and Restart Colab's Kernel often to ensure no errors in your code's execution\n1. Run/test all your final code in Colab, not on your local PC/laptop, to ensure reproducibility.\n\n## 𝓓𝓸𝓬𝓾𝓶𝓮𝓷𝓽𝓪𝓽𝓲𝓸𝓷:\n1. Clean up and comment on your code. \n1. Clearly communicate your modeling ideas, decisions and pipeline.\n\n## 𝓣𝓮𝓪𝓶𝔀𝓸𝓻𝓴:\n1. Your Kaggle profile should have your photo and a full name (for authentication and getting to know your peers).\n1. Name your Kaggle group/team as stated in Starter Colab\n1. Split the tasks among your assigned team members.\n  1. Your Kaggle team members should match LMS group members, so that grades are correctly allocated\n1. You (yourselves) should form your Kaggle team at least 1 day before the competition ends (or Kaggle may prevent you from doing so too late)!\n1. Students can only have a single account in this competition. Please do not cheat. It's not worth it.\n1. Please do not share the competition URL link with others outside of our class. \n \n## 𝓓𝓪𝓽𝓪 𝓗𝓪𝓷𝓭l𝓲𝓷𝓰:\n1. Do not hard code labeling in your code. This is cheating. The goal is to find the best model that abstracts away manual labeling.\n1. Use only data files provided in Colab starter code\n\n# 𝓖𝓻𝓪𝓭𝓲𝓷𝓰:\n1. Your team must beat our baseline score in order to have a passing grade\n1. Each school (HSE or JHU) is judged by its own baseline\n1. Kaggle instantly ranks your submissions. We grade code, adherence to rules, and reproducibility of LB score.\n1. LB grade calculation is done for ML course's graded students only: see grading rubric in LMS's assignment\n1. The grade also depends on your adherence to the rules, organized, legible and meaningfully-annotated code, use of markdown to explain what you have tried and how you derived the idea, and interesting modeling approaches. \n  1. Eg. if your team is at the top, but your code is poorly documented and runs overtime, it will likely result in lower grade\n  1. Likewise, if your team is at the bottom, but has a presentable/readable code with interesting and well documented techniques, we will bump up your grade\n1. Your LMS-submitted IPYNB code must reproduce your private LB score. Seed all [RNG](https://en.wikipedia.org/wiki/Random_number_generation).\n1. Run/test all your final code in Colab, not on your local PC/laptop or your results are unlikely to reproduce.\n\n# 𝓢𝓾𝓫𝓶𝓲𝓼𝓼𝓲𝓸𝓷 𝓲𝓷 𝓚𝓪𝓰𝓰l𝓮:\n1. Kaggle will ask you to choose your public LB's submissions for a private LB. Ensure that your private LB score is reproducible with IPYNB file, which you submit via LMS. Seed all [RNG](https://en.wikipedia.org/wiki/Random_number_generation)\n  1. We will load your team's IPYNB in Colab; run it; submit your output test file to Kaggle and verify your LB score\n1. Hint: It helps to name your Colab and submission files with the same meaningful name such as *datetime+preprocessing+features+model+tricks+etc*.\n \n# 𝓢𝓾𝓫𝓶𝓲𝓼𝓼𝓲𝓸𝓷 𝓽𝓸 𝓛𝓜𝓢:\n1. See instructions in LMS assignment. \n\n[comment]: <> (matrix decompositions, clustering methods, KNN, local regression, mixture models (see ESL6)) \n\n[comment]: <> ([**R Starter Colab**](https://colab.research.google.com/drive/1ntz3JjupEGKLuyjjSXDiHVEEpRcy95Uq?usp=sharing).)",
      "isPublished": false,
      "hasIsPublished": false,
      "postTitle": "",
      "hasPostTitle": false,
      "mimeType": "",
      "hasMimeType": false
    }
  ]
}