{
  "id": 18916,
  "title": "Solutions",
  "content": "<p>Hi,</p>\n\n<p>Ah! Almost after an year I am participating here. Feels good :)\nLets share the approach to understand what could have been done more to better our result. What I tried for this competition was concentrating on ensembling approach rather tuning my individual models as I joined in late. I will share a brief of my approach</p>\n\n<p>Feature engineering</p>\n\n<ol>\n<li>Build frequency matrix of user with number of times each event was done ( Gave me the biggest gains). Apply PCA over it and pick top 7 features.</li>\n<li>Frequency matrix of user with average time per event ( Not part of final model )</li>\n<li>Filtering ages less than 14 and greater than 100</li>\n<li>Remove date of first booking (of course)</li>\n<li>Breaking Date of account created into day, month and year</li>\n</ol>\n\n<p>Note: Did not use country.csv and age.csv</p>\n\n<p>Types of model</p>\n\n<ol>\n<li>XGBoost for python ( best score individually )</li>\n<li>Random forest from h2o (oxdata)</li>\n<li>Deep learning from h2o (oxdata)</li>\n<li>Gradient boosting from h2o (oxdata)</li>\n</ol>\n\n<p>Note: I did not try to tune hyperparamters much</p>\n\n<p>Ensembling:</p>\n\n<p>I actually struggled to get the right type of ensembling which I aimed for this competition</p>\n\n<ol>\n<li><p>Simple voting </p></li>\n<li><p>Dividing the train set into 30 and 70%. Train all models on 70% data and predict on 30%. Use RF to build another over these prediction. ( Score dropped here significantly probably because I overfitted)</p></li>\n<li><p>Add all the probabilities from different models ( per class ) and then come up with final ranking. ( This again did not give me significant advantage probably if my 1 model was screwed my final result will be skewed towards that )</p></li>\n<li><p>Getting ranks from each model and then adding up those ranks to get final ranking. ( This worked out best compared to others probably because I was giving equal importance to each model )</p></li>\n</ol>\n\n<p>I still struggled to improve on single model of xgboost. A simple voting of 2 xgboost model gave best result.</p>\n\n<p>Most of the model building is direct adaptation of @sandro \nMy code is available at <a href=\"https://github.com/hiransuvrat/machinelearning/tree/master/airbnb\">https://github.com/hiransuvrat/machinelearning/tree/master/airbnb</a></p>",
  "comments": [],
  "comment_count": 0,
  "messages": [
    {
      "id": 107721,
      "postDate": "2016-02-12T05:17:17.670Z",
      "content": "<p>Hi,</p>\n\n<p>Ah! Almost after an year I am participating here. Feels good :)\nLets share the approach to understand what could have been done more to better our result. What I tried for this competition was concentrating on ensembling approach rather tuning my individual models as I joined in late. I will share a brief of my approach</p>\n\n<p>Feature engineering</p>\n\n<ol>\n<li>Build frequency matrix of user with number of times each event was done ( Gave me the biggest gains). Apply PCA over it and pick top 7 features.</li>\n<li>Frequency matrix of user with average time per event ( Not part of final model )</li>\n<li>Filtering ages less than 14 and greater than 100</li>\n<li>Remove date of first booking (of course)</li>\n<li>Breaking Date of account created into day, month and year</li>\n</ol>\n\n<p>Note: Did not use country.csv and age.csv</p>\n\n<p>Types of model</p>\n\n<ol>\n<li>XGBoost for python ( best score individually )</li>\n<li>Random forest from h2o (oxdata)</li>\n<li>Deep learning from h2o (oxdata)</li>\n<li>Gradient boosting from h2o (oxdata)</li>\n</ol>\n\n<p>Note: I did not try to tune hyperparamters much</p>\n\n<p>Ensembling:</p>\n\n<p>I actually struggled to get the right type of ensembling which I aimed for this competition</p>\n\n<ol>\n<li><p>Simple voting </p></li>\n<li><p>Dividing the train set into 30 and 70%. Train all models on 70% data and predict on 30%. Use RF to build another over these prediction. ( Score dropped here significantly probably because I overfitted)</p></li>\n<li><p>Add all the probabilities from different models ( per class ) and then come up with final ranking. ( This again did not give me significant advantage probably if my 1 model was screwed my final result will be skewed towards that )</p></li>\n<li><p>Getting ranks from each model and then adding up those ranks to get final ranking. ( This worked out best compared to others probably because I was giving equal importance to each model )</p></li>\n</ol>\n\n<p>I still struggled to improve on single model of xgboost. A simple voting of 2 xgboost model gave best result.</p>\n\n<p>Most of the model building is direct adaptation of @sandro \nMy code is available at <a href=\"https://github.com/hiransuvrat/machinelearning/tree/master/airbnb\">https://github.com/hiransuvrat/machinelearning/tree/master/airbnb</a></p>",
      "rawMarkdown": "Hi,\r\n\r\nAh! Almost after an year I am participating here. Feels good :)\r\nLets share the approach to understand what could have been done more to better our result. What I tried for this competition was concentrating on ensembling approach rather tuning my individual models as I joined in late. I will share a brief of my approach\r\n\r\nFeature engineering\r\n\r\n1. Build frequency matrix of user with number of times each event was done ( Gave me the biggest gains). Apply PCA over it and pick top 7 features.\r\n2. Frequency matrix of user with average time per event ( Not part of final model )\r\n3. Filtering ages less than 14 and greater than 100\r\n4. Remove date of first booking (of course)\r\n5. Breaking Date of account created into day, month and year\r\n\r\nNote: Did not use country.csv and age.csv\r\n\r\nTypes of model\r\n\r\n1. XGBoost for python ( best score individually )\r\n2. Random forest from h2o (oxdata)\r\n3. Deep learning from h2o (oxdata)\r\n4. Gradient boosting from h2o (oxdata)\r\n\r\nNote: I did not try to tune hyperparamters much\r\n\r\nEnsembling:\r\n\r\nI actually struggled to get the right type of ensembling which I aimed for this competition\r\n\r\n1. Simple voting \r\n\r\n2. Dividing the train set into 30 and 70%. Train all models on 70% data and predict on 30%. Use RF to build another over these prediction. ( Score dropped here significantly probably because I overfitted)\r\n\r\n3. Add all the probabilities from different models ( per class ) and then come up with final ranking. ( This again did not give me significant advantage probably if my 1 model was screwed my final result will be skewed towards that )\r\n\r\n4. Getting ranks from each model and then adding up those ranks to get final ranking. ( This worked out best compared to others probably because I was giving equal importance to each model )\r\n\r\n\r\nI still struggled to improve on single model of xgboost. A simple voting of 2 xgboost model gave best result.\r\n\r\nMost of the model building is direct adaptation of @sandro \r\nMy code is available at https://github.com/hiransuvrat/machinelearning/tree/master/airbnb\r\n",
      "votes": 1
    }
  ],
  "complete": true,
  "source": "live",
  "fetched_at": "2026-10-19T13:52:09Z",
  "competition_id": 4651,
  "competition_slug": "airbnb-recruiting-new-user-bookings",
  "team_id": 266156,
  "solution_url": "/competitions/airbnb-recruiting-new-user-bookings/writeups/suvrat-hiran-solutions"
}