{
  "fetched_at": "2026-10-22T10:16:56Z",
  "source_url": "https://www.kaggle.com/competitions/adml-class/data",
  "pages": [
    {
      "name": "data-description",
      "content": "### Please refer to homework1 to see the raw data description.\n**You could also find a sample for your submission in this section. It shows how your csv should be look like, but it is just a simple, which means it is `not complete`, you should have 500 rows in your submission with repurchase_flag to be \"1\", while all others are \"0\" with their correlated unify_id. In this sample we cut down all the following data after 1000 rows, but in your data, it should contains whole 98555 rows as the training data.**",
      "isPublished": false,
      "hasIsPublished": false,
      "postTitle": "",
      "hasPostTitle": false,
      "mimeType": "",
      "hasMimeType": false
    },
    {
      "name": "Description",
      "content": "## Build and improve a series of consumer propensity models (who is likely to make the repeat purchase next week) using the dataset in the lecture</p>\n### *You can use the following data or the combination to train and validate the model*\n> (T)    X20210731\\_Y20210807\\_0827\\_mp\\_clean.csv\n> (T-1) X20210724\\_Y20210731\\_0827\\_mp\\_clean.csv\n> (T-2) X20210717\\_Y20210724\\_0827\\_mp\\_clean.csv\n> Use (T+1) X20210807\\_Y20210814\\_0827\\_mp\\_clean\\_wolabel.csv as the final prediction data, and submit the prediction \n\n\n### Based on your learning in question 1 to question 3, propose and build the best model based on T, T-1 and T-2 data, make the prediction for T+1 data, and submit the prediction!</p>",
      "isPublished": false,
      "hasIsPublished": false,
      "postTitle": "",
      "hasPostTitle": false,
      "mimeType": "",
      "hasMimeType": false
    },
    {
      "name": "Evaluation",
      "content": "# Evaluation Metric\n## You should use Top500 precision as the main factor to evaluate your model performance. *However, because the Kaggle doesn't support TopK precision as its metrics, we will use the simple categorical precision as our leaderboard metrics.*\n<p>You could see definition of relevant metrics regarding categorical accuracy from here <a href=\"https://towardsdatascience.com/keras-accuracy-metrics-8572eb479ec7\"> Categorical Accuracy</a>. \n\n\n# Submission Format\n### In this case, you should transform your result to fit into the sample submission in this Kaggle competition: set your Top500 customer's predict\\_prob to be \"1\", while all other customer's predict\\_prob to be \"0\".\n\n###  Example of how you transform your data (you could operate with your result in many ways, and here is just a reference for you).\n#### Suppose you trained your model and your predicted result are stored in DataFrame called:\n> df\\_result\\_test\\_output \n\nThen you could get the Top500 customers by sorted the probability:\n\n> df\\_result\\_test\\_output\\_sorted = df\\_result\\_test\\_output.sort\\_values(by=['predict\\_prob'],ascending=False) \n\nIn addition, use this sorted result to form the first 500 rows where all the repurchase_flag = \"1\":\n\n    df_result_id = pd.DataFrame(df_result_test_output_sorted['unify_id'][:500].values)\n    df_result_id.columns = ['unify_id']\n    df_result_flag = pd.DataFrame([1 for i in range(500)])\n    df_result_flag.columns = ['repurchase_flag']\n    df_result = pd.concat([df_result_id, df_result_flag], axis=1)\n\nFinally, generate all the remaining rows, where all the repurchase_flag = \"0\", it's very easy, just do it in your own way.",
      "isPublished": false,
      "hasIsPublished": false,
      "postTitle": "",
      "hasPostTitle": false,
      "mimeType": "",
      "hasMimeType": false
    },
    {
      "name": "rules",
      "content": "This is a page where you can include rules that participants must accept before joining. You may wish to include rules like:\n\n - Don't cheat!\n - Apply yourself!\n - Have fun!",
      "isPublished": false,
      "hasIsPublished": false,
      "postTitle": "",
      "hasPostTitle": false,
      "mimeType": "",
      "hasMimeType": false
    }
  ]
}