{
  "fetched_at": "2026-10-24T03:07:05Z",
  "source_url": "https://www.kaggle.com/competitions/cisc873-dm-f21-a4/data",
  "pages": [
    {
      "name": "data-description",
      "content": "Data is also available at: \n\nhttps://github.com/CISC-873/Information-2021/releases/download/data/a4.zip\n",
      "isPublished": false,
      "hasIsPublished": false,
      "postTitle": "",
      "hasPostTitle": false,
      "mimeType": "",
      "hasMimeType": false
    },
    {
      "name": "Description",
      "content": "### Airbnb price category prediction\n\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-user-content/o/inbox%2F4409738%2F229f8a04bb84f4474b43b63a2a1da38d%2Fred-airbnb%20(1).png?generation=1606092019652707&alt=media)\n(meme source: People Are Having a Lot of Fun With the New Airbnb Logo)\n\nOne of the biggest problems when people prepare to post a new listing on airbnb is, how much should one ask for? Of course the most intuitive way is to check how other similar postings price their apartment/house. So in this assignment, we are going to predict the listing price based on the listing characteristics 🔥🔥, in this way to optimize user experience and lower the bar to be a new host😍 ! \n\nPredicting the actual price could be simple (well you can just go search online 👍), so we cut the pricing into three different bins for classification 😂. For each listing, we recommend a pricing range to the new host rather than a fix price (how nice is that!). So we define three categories: `beginner, plus, premium` based on the created listing. Respectively we use `0, 1, 2` to denote these three categories. \n\nThe dataset contains listings of different areas in Montreal during 2019. It comes with rich information for each listing, including a link to the thumbnails etc. As discussed in the last lecture, we will follow a multi-objective (multi-task) multi-modality solution.\n\nEnjoy! \n\n\n\n### Tasks:\n\n✔️ Meme competition:\nInclude/find a MEME that you liked related to data science/data mining/machine learning\n\n✔️ Understand the template:\nPut detailed comment on each line of the code to show your understanding of the template (you can find it at the Data tab). Then describe: What is the experimental protocol used and how was it carried out? How did we tune hyper-parameters in the template? What is the search space and what is the criteria to determine good/bad hyper-parameters? \n\n✔️ Problem Formulation:\nDefine the problem. What is the input? What is the output? What data mining function is required? What could be the challenges?  What is the impact? What is an ideal solution?\n\n✔️ Model Tuning and Documentation:\nNow based on the template, try to improve the model's performance on the public leaderboard by following the data science life-cycle for tuning. You can try different features, different hyperparameters/configurations of the model, and even a different model. For each trial, document the reason why you want to make the certain change and the expected outcome, before running the code. Record the observed performance and your thought on it. Recall that we have a DS life-cycle and we should know what to do when underfit/overfit. The final result is not important, but the process is. Documentation of your thought process is very important, since most people forgot why they test certain model/hyperparameter after they got the result (it takes time). It also helps a lot when you got stuck. You can organize the notebook by listing \n\n- thoughts and observations for trial 0, plan for trial 1\n- code for trial 1\n- thoughts and observations for trial 1, plan for trial 2\n- code for trial 2\n...\n\nYou have to tune at least 10 times. All the tried solutions should be different (e.g. different feature sets/different preprocessing). The tried solutions should cover at least:\n- Text layers. Swap the original reduce_mean layer with a GRU/LSTM layer.\n- Text layers. Try [BiDirectional](https://www.tensorflow.org/api_docs/python/tf/keras/layers/Bidirectional) Recurrent layer.\n- Text layers. Try Attention to aggregate the time dimension.\n- Image layers. The original layers for image contains one convolution layer. Try to customize those layers and add[ drop out layer](https://www.tensorflow.org/api_docs/python/tf/keras/layers/Dropout) for regularization. \n\n\n✔️ Answer the questions below (**briefly**):\n\n🌈What is the default model for text data in the template? Is it a good one for sequential data? Why?\n🌈What is gradient vanishing and gradient explosion, and how GRU/LSTM tries to mitigate this problem?\n🌈What is multi-objective/multi-task learning? What is multi-modality learning? How this assignment fits into those paradigm? \n🌈How attention mechanism can help with the learning process? \n🌈In the template, we use early stopping. What is the purpose? \n\n\n### Deliverable:\n\n🔥 A python notebook containing the documentation of how you reach the final design as well as the answers to the questions. \n\n\n### Marking:\n\n👍 1 for technical soundness of the final script (whether you did things right e.g. not using ID as a feature, tuning ranges reasonable e.g. not a giant search space for grid search)\n👍 2 for clarity, organization and soundness of the documentation (how & why you adjust your design to improve the performance) (example deduction: decision tree with observed high bias -> trim more, linear model with observed high bias in testing set -> more regularizations)\n👍 1 for the clarity of your own code (all the template code and **new** code should have comments)\n👍 4 for meeting the requirements (what to cover) for all the trials.\n👍 2 your answers to the questions (deductions based on errors)\n\n1 bonus point if you do transfer learning and up-training  \nNote: Emoji allowed and encouraged so it will be more fun for us to grade it.\n",
      "isPublished": false,
      "hasIsPublished": false,
      "postTitle": "",
      "hasPostTitle": false,
      "mimeType": "",
      "hasMimeType": false
    },
    {
      "name": "Evaluation",
      "content": "We will use accuracy as the evaluation criteria. ",
      "isPublished": false,
      "hasIsPublished": false,
      "postTitle": "",
      "hasPostTitle": false,
      "mimeType": "",
      "hasMimeType": false
    },
    {
      "name": "rules",
      "content": " - Don't cheat!\n - Apply yourself!\n - Have fun!",
      "isPublished": false,
      "hasIsPublished": false,
      "postTitle": "",
      "hasPostTitle": false,
      "mimeType": "",
      "hasMimeType": false
    }
  ]
}