Please follow these guidelines to avoid penalties. Have fun! [**This Starter Colab Notebook**](https://colab.research.google.com/drive/1nWFkEpk8v1gHi-dsvQkBkAwNXQCYfLiY?usp=sharing) produces baseline results.
 
# 𝕮𝖔𝖒𝖕𝖊𝖙𝖎𝖙𝖎𝖔𝖓 𝕽𝖚𝖑𝖊𝖘.
 
### **Rule 0:  If in doubt, just ask for clarity in our Piazza forum.**
 
## 𝓐𝓵𝓵𝓸𝔀𝓮𝓭 𝓜𝓸𝓭𝓮𝓵𝓼 𝓪𝓷𝓭 𝓔𝓷𝓰𝓲𝓷𝓮𝓮𝓻𝓲𝓷𝓰 (𝓟𝔂𝓽𝓱𝓸𝓷 𝓸𝓷𝓵𝔂):
1.  **Ok to use these models: RNN, LSTM, GRU, 1D Conv Layer**
1. Ok to use these DNN frameworks: [Keras](https://keras.io/api/), [TensorFlow](https://www.tensorflow.org/api_docs/python/tf), [PyTorch](https://pytorch.org/), [SKLearn](https://scikit-learn.org/stable/modules/generated/sklearn.neural_network.MLPClassifier.html)
1. You can also use clustering algorithms and dimensions reduction algorithms
1. Ok to engineer features, tune hyperparameters/optimizers, sub/oversample, regularize, do stepwise selection, reduce dimensions, use CPU/GPU/TPU.
 
## 𝓡𝓮𝓹𝓻𝓸𝓭𝓾𝓬𝓲𝓫𝓲l𝓲𝓽𝔂 𝓪𝓷𝓭 𝓡𝓾𝓷𝓽𝓲𝓶𝓮:
1. **Colab Runtime Limit (CRTL):** specified in Colab starter notebook
  1. 2 slowest Colabs are penalized in the range [CRTL, 2*CRTL]. 
  1. Colabs running over 2*CRTL will be penalized according to the severity.
  1. Students and instructors should use free Colab (with Tesla K80 GPU) to minimize timing discrepancies. 
  1. Try **subsampling** observations/features to stay within CRTL and avoid penalties
1. We will only check your private leaderboard (LB) score
1. Your LMS-submitted IPYNB code must reproduce your LB score. Seed all [RNG](https://en.wikipedia.org/wiki/Random_number_generation).
  1. LB score of a model built on GPU is allowed to deviate within 1 rank.
1. 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.
1. You can comment out your time-consuming grid-search use use optimal parameters and [EDA](https://en.wikipedia.org/wiki/Exploratory_data_analysis). 
1. Use Factory Reset and Restart Colab's Kernel often to ensure no errors in your code's execution
1. Run/test all your final code in Colab, not on your local PC/laptop, to ensure reproducibility.

## 𝓓𝓸𝓬𝓾𝓶𝓮𝓷𝓽𝓪𝓽𝓲𝓸𝓷:
1. Clean up and comment on your code. 
1. Clearly communicate your modeling ideas, decisions and pipeline.

## 𝓣𝓮𝓪𝓶𝔀𝓸𝓻𝓴:
1. Your Kaggle profile should have your photo and a full name (for authentication and getting to know your peers).
1. Name your Kaggle group/team as stated in Starter Colab.
1. Split the tasks among your assigned team members.
  1. Your Kaggle team members should match Moodle group members, so that grades are correctly allocated
1. 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)!
1. Students can only have a single account in this competition. Please do not cheat. It's not worth it.
1. Please do not share the competition URL link with others outside of our class. 
 
## 𝓓𝓪𝓽𝓪 𝓗𝓪𝓷𝓭l𝓲𝓷𝓰:
1. Do not hard code labeling in your code. This is cheating. The goal is to find the best model that abstracts away manual labeling.
1. Use only data files provided in Colab starter code

# 𝓖𝓻𝓪𝓭𝓲𝓷𝓰:
1. Your team must beat our baseline score in order to have a passing grade
1. Kaggle instantly ranks your submissions. We grade code, adherence to rules, and reproducibility of LB score.
1. LB grade calculation is done for ML course's graded students only: see grading rubric in Moodle's assignment
1. 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. 
  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
  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
1. Your LMS-submitted IPYNB code must reproduce your private LB score. Seed all [RNG](https://en.wikipedia.org/wiki/Random_number_generation).
1. Run/test all your final code in Colab, not on your local PC/laptop or your results are unlikely to reproduce.

# 𝓢𝓾𝓫𝓶𝓲𝓼𝓼𝓲𝓸𝓷 𝓲𝓷 𝓚𝓪𝓰𝓰l𝓮:
1. 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)
  1. We will load your team's IPYNB in Colab; run it; submit your output test file to Kaggle and verify your LB score
1. Hint: It helps to name your Colab and submission files with the same meaningful name such as *datetime+preprocessing+features+model+tricks+etc*.
 
# 𝓢𝓾𝓫𝓶𝓲𝓼𝓼𝓲𝓸𝓷 𝓽𝓸 𝓜𝓸𝓸𝓭l𝓮 𝓛𝓜𝓢:
1. Each team submits one IPYNB file only, but has all team members listed at the top of the notebook.
1. Export your Colab to IPYNB file and its PDF and submit via HW assignment