{
  "id": 347889,
  "title": "Share your best single model scores?",
  "url": "/competitions/amex-default-prediction/discussion/347889",
  "author_name": "",
  "post_date": "2022-08-25T20:07:40.361651700Z",
  "votes": 13,
  "comment_count": 28,
  "views": 0,
  "content": "<p>Not so secretly a brag post, sorry. My best single model would've scored 49th overall. Oh right, it was my only model, and it did! 0.80798 private, 0.79889 pub. I'll post a little bit of details in the comments. </p>\n<p>Most medal winners did great ensembles, what were your best single model scores? </p>",
  "messages": [
    {
      "id": "1914188",
      "postDate": "08/25/2022 20:07:40",
      "content": "<p>Not so secretly a brag post, sorry. My best single model would've scored 49th overall. Oh right, it was my only model, and it did! 0.80798 private, 0.79889 pub. I'll post a little bit of details in the comments. </p>\n<p>Most medal winners did great ensembles, what were your best single model scores? </p>",
      "rawMarkdown": "Not so secretly a brag post, sorry. My best single model would've scored 49th overall. Oh right, it was my only model, and it did! 0.80798 private, 0.79889 pub. I'll post a little bit of details in the comments. \n\nMost medal winners did great ensembles, what were your best single model scores?",
      "votes": null
    },
    {
      "id": "1914194",
      "postDate": "08/25/2022 20:19:22",
      "content": "<p>That's a great single model Robert. Below are my best two single models. Each is 10 folds and the average of a few seeds:</p>\n<p>NN Transformer:<br>\nCV 0.7980, Public LB 0.7988, Private LB 0.8076</p>\n<p>LGBM Dart:<br>\nCV 0.7990, Public LB 0.7992, Private LB 0.8070</p>\n<p>Ensemble of above two models:<br>\nCV 0.8000, Public LB 0.8010, Private LB 0.80840</p>",
      "rawMarkdown": "That's a great single model Robert. Below are my best two single models. Each is 10 folds and the average of a few seeds:\n\nNN Transformer:\nCV 0.7980, Public LB 0.7988, Private LB 0.8076\n\nLGBM Dart:\nCV 0.7990, Public LB 0.7992, Private LB 0.8070\n\nEnsemble of above two models:\nCV 0.8000, Public LB 0.8010, Private LB 0.80840",
      "votes": null
    },
    {
      "id": "1914195",
      "postDate": "08/25/2022 20:19:43",
      "content": "<p>Model: XGB pyramid with 3098 features. 49th place. </p>\n<p>My 'single' model had a couple steps:</p>\n<ul>\n<li>train XGB pyramid predicting \"miss next payment\" on ~14 million rows (all except last row, 5 fold).<br>\n** For this step, couldn't use 3000*13mil for training. So did forward feature selection to build best 70 of 3000 feature. Then *grouped* forward feature selection to get to 280 features. Used float16 for all data to fit mem. <br>\nFrom the above, use oof preds as new feature. </li>\n<li>Train main model on the normal 450k rows, with 3098 features. Decided to approximate the best stopping point, so didn't do CV on final model, trained with all data. Did 4 seeds and very low learning rate (0.005). But since I didn't do folds that's only 4 models, I would've liked to have a few more. </li>\n</ul>",
      "rawMarkdown": "Model: XGB pyramid with 3098 features. 49th place. \n\nMy 'single' model had a couple steps:\n* train XGB pyramid predicting \"miss next payment\" on ~14 million rows (all except last row, 5 fold).\n** For this step, couldn't use 3000*13mil for training. So did forward feature selection to build best 70 of 3000 feature. Then *grouped* forward feature selection to get to 280 features. Used float16 for all data to fit mem. \nFrom the above, use oof preds as new feature. \n* Train main model on the normal 450k rows, with 3098 features. Decided to approximate the best stopping point, so didn't do CV on final model, trained with all data. Did 4 seeds and very low learning rate (0.005). But since I didn't do folds that's only 4 models, I would've liked to have a few more.",
      "votes": null
    },
    {
      "id": "1914200",
      "postDate": "08/25/2022 20:28:47",
      "content": "<p>My original plan was to finish the big days overdue prediction 1-2 weeks ago, get a .800, then approach a few top scorers about teaming up with evidence I could contribute. Instead I finished it at the 11th hour AND it didn't do that great on public. Shrug. </p>\n<p>I'll take good luck on private, bad luck on public any day, though! Either a great model or just a great seed, lol. </p>",
      "rawMarkdown": "My original plan was to finish the big days overdue prediction 1-2 weeks ago, get a .800, then approach a few top scorers about teaming up with evidence I could contribute. Instead I finished it at the 11th hour AND it didn't do that great on public. Shrug. \n\nI'll take good luck on private, bad luck on public any day, though! Either a great model or just a great seed, lol.",
      "votes": null
    },
    {
      "id": "1914205",
      "postDate": "08/25/2022 20:32:51",
      "content": "<p>My best single model:<br>\nLGBM DART with ~2000 features,<br>\nPrivate Score: 0.80759, Public Score: 0.79966</p>",
      "rawMarkdown": "My best single model:\nLGBM DART with ~2000 features,\nPrivate Score: 0.80759, Public Score: 0.79966",
      "votes": null
    },
    {
      "id": "1914207",
      "postDate": "08/25/2022 20:35:39",
      "content": "<p>In step 2 do you use the predictions from step 1? That's a cool idea.</p>",
      "rawMarkdown": "In step 2 do you use the predictions from step 1? That's a cool idea.",
      "votes": null
    },
    {
      "id": "1914218",
      "postDate": "08/25/2022 21:00:17",
      "content": "<p>Yes, I think it happened to be extra effective on the different population issues of the private leaderboard. The step one was given S_2_month (0-31) so had the ability if the model wanted to distinguish between the different datasets if it was helpful in predicting missed payments. </p>\n<p>I also predicted 0 balance next month (well, 0 days overdue D_39) independently as another step 1 model. But I am doubtful whether that mattered compared with the key prediction of going a month with no payment. And the model wasn't very good at predicting that one! Maybe if I had time to tune it would've gotten a little better, shrug. </p>\n<p>Those two prediction (do_1, do_2) were then fed into the aggregate features. 2*16 they became my last 32 features. </p>\n<p>(Last, min, max, mean, std, first, lag 1, last-mean, hull moving avg, 5 different exponential avgs, max-mean, last-min/max-min)</p>\n<p>I would've liked to try combos of megafeatures: p2+do_1, p2-do_1, maybe a few others. But ran out of time and GPU both :)</p>",
      "rawMarkdown": "Yes, I think it happened to be extra effective on the different population issues of the private leaderboard. The step one was given S_2_month (0-31) so had the ability if the model wanted to distinguish between the different datasets if it was helpful in predicting missed payments. \n\nI also predicted 0 balance next month (well, 0 days overdue D_39) independently as another step 1 model. But I am doubtful whether that mattered compared with the key prediction of going a month with no payment. And the model wasn't very good at predicting that one! Maybe if I had time to tune it would've gotten a little better, shrug. \n\nThose two prediction (do_1, do_2) were then fed into the aggregate features. 2*16 they became my last 32 features. \n\n(Last, min, max, mean, std, first, lag 1, last-mean, hull moving avg, 5 different exponential avgs, max-mean, last-min/max-min)\n\nI would've liked to try combos of megafeatures: p2+do_1, p2-do_1, maybe a few others. But ran out of time and GPU both :)",
      "votes": null
    },
    {
      "id": "1914222",
      "postDate": "08/25/2022 21:04:09",
      "content": "<p>Nice DART score! Silver medal with that alone :)</p>",
      "rawMarkdown": "Nice DART score! Silver medal with that alone :)",
      "votes": null
    },
    {
      "id": "1914227",
      "postDate": "08/25/2022 21:14:05",
      "content": "<p>I like this concept of meta features. I need to try this in my next comp. I guess the basic idea is to use the data to predict missing data or a variation of the given targets. Teams in 11th place <a href=\"https://www.kaggle.com/competitions/amex-default-prediction/discussion/347668\" target=\"_blank\">here</a> and 12th place <a href=\"https://www.kaggle.com/competitions/amex-default-prediction/discussion/347786\" target=\"_blank\">here</a> also predicted additional features for their models.</p>",
      "rawMarkdown": "I like this concept of meta features. I need to try this in my next comp. I guess the basic idea is to use the data to predict missing data or a variation of the given targets. Teams in 11th place [here][1] and 12th place [here][2] also predicted additional features for their models.\n\n[1]: https://www.kaggle.com/competitions/amex-default-prediction/discussion/347668\n[2]: https://www.kaggle.com/competitions/amex-default-prediction/discussion/347786",
      "votes": null
    },
    {
      "id": "1914236",
      "postDate": "08/25/2022 21:27:55",
      "content": "<p>My best single model:<br>\nLGBM DART<br>\nPrivate Score: 0.80711, Public Score: 0.79945</p>\n<p>My best ensemble (not selected as final unfortunately):<br>\n39 base models (mostly LGBMs, some CNNs, Transformers and even a Naive Bayes )<br>\n3 second  level models (MLPs) averaged<br>\nPrivate Score: 0.80849, Public Score: 0.80060</p>",
      "rawMarkdown": "My best single model:\nLGBM DART\nPrivate Score: 0.80711, Public Score: 0.79945\n\nMy best ensemble (not selected as final unfortunately):\n39 base models (mostly LGBMs, some CNNs, Transformers and even a Naive Bayes )\n3 second  level models (MLPs) averaged\nPrivate Score: 0.80849, Public Score: 0.80060",
      "votes": null
    },
    {
      "id": "1914255",
      "postDate": "08/25/2022 22:27:40",
      "content": "<p>There were a bunch of opportunities on this competition, for sure! I think more focus on that next competition will be a priority for me. At least if it shares some of the traits of this competition with lots of data, and really a ton of unlabeled data. </p>\n<p>Anything that helped create a feature based on the \"shape\" of the 13 statements seems really big. I wanted a KNN per column, for instance. </p>\n<p>The high level concept is the idea of ensemble diversity, but applied to single base features. \"last\" is one way to predict the relevant value of the 13 data points. \"mean\" is another. Ema (exponential average) is another. But meta features via model predictions like one team's LSTM(?) is yet another diverse way of trying to extract signal. </p>\n<p>I think doing it multiple diverse ways could get a top 10 score. Just a hunch. </p>",
      "rawMarkdown": "There were a bunch of opportunities on this competition, for sure! I think more focus on that next competition will be a priority for me. At least if it shares some of the traits of this competition with lots of data, and really a ton of unlabeled data. \n\nAnything that helped create a feature based on the \"shape\" of the 13 statements seems really big. I wanted a KNN per column, for instance. \n\nThe high level concept is the idea of ensemble diversity, but applied to single base features. \"last\" is one way to predict the relevant value of the 13 data points. \"mean\" is another. Ema (exponential average) is another. But meta features via model predictions like one team's LSTM(?) is yet another diverse way of trying to extract signal. \n\nI think doing it multiple diverse ways could get a top 10 score. Just a hunch.",
      "votes": null
    },
    {
      "id": "1914274",
      "postDate": "08/25/2022 23:34:55",
      "content": "<p>single Lgb private 8089</p>",
      "rawMarkdown": "single Lgb private 8089",
      "votes": null
    },
    {
      "id": "1914277",
      "postDate": "08/25/2022 23:43:44",
      "content": "<p>Excellent conversations are going on; I need to learn from the best solutions.</p>",
      "rawMarkdown": "Excellent conversations are going on; I need to learn from the best solutions.",
      "votes": null
    },
    {
      "id": "1914286",
      "postDate": "08/26/2022 00:24:03",
      "content": "<p>LGBM DART with ~3800 features<br>\nPrivate : 0.80796<br>\nPublic : 0.80010<br>\nI augmentated training data by deleting the first n of each customer's sequence and adding them as new training data.</p>\n<p>This single model had a higher private score than the ensemble model I chose last.</p>",
      "rawMarkdown": "LGBM DART with ~3800 features\nPrivate : 0.80796\nPublic : 0.80010\nI augmentated training data by deleting the first n of each customer's sequence and adding them as new training data.\n\nThis single model had a higher private score than the ensemble model I chose last.",
      "votes": null
    },
    {
      "id": "1914311",
      "postDate": "08/26/2022 01:36:05",
      "content": "<p>That's a great idea on training augmentation! </p>",
      "rawMarkdown": "That's a great idea on training augmentation!",
      "votes": null
    },
    {
      "id": "1914440",
      "postDate": "08/26/2022 05:25:22",
      "content": "<p>LGBM DART, private 0.80720</p>",
      "rawMarkdown": "LGBM DART, private 0.80720",
      "votes": null
    },
    {
      "id": "1914467",
      "postDate": "08/26/2022 05:41:27",
      "content": "<p>Wow <a href=\"https://www.kaggle.com/mahluo\" target=\"_blank\">@mahluo</a> that's amazing. I'm looking forward to reading your writeup and learning about your model.</p>",
      "rawMarkdown": "Wow @mahluo that's amazing. I'm looking forward to reading your writeup and learning about your model.",
      "votes": null
    },
    {
      "id": "1914522",
      "postDate": "08/26/2022 06:48:03",
      "content": "<p>Echo <a href=\"https://www.kaggle.com/cdeotte\" target=\"_blank\">@cdeotte</a> , great work. I was rooting for you before the big reveal, 802 was really impressive.</p>",
      "rawMarkdown": "Echo @cdeotte , great work. I was rooting for you before the big reveal, 802 was really impressive.",
      "votes": null
    },
    {
      "id": "1914708",
      "postDate": "08/26/2022 10:29:44",
      "content": "<ul>\n<li><strong>LGB DART 1955 features</strong><ul>\n<li>CV(OOF):0.7991086274424719</li>\n<li>Public:0.79968</li>\n<li>Private:0.80691<br>\n<a href=\"https://www.kaggle.com/code/hideyukizushi/amex-inf-single-zhc2-e-100-0-7991086274424719/notebook\" target=\"_blank\">https://www.kaggle.com/code/hideyukizushi/amex-inf-single-zhc2-e-100-0-7991086274424719/notebook</a></li></ul></li>\n</ul>\n<hr>\n<ul>\n<li><strong>LGB DART 3247 features</strong><ul>\n<li>CV(OOF):0.7993049449776155</li>\n<li>Public:0.79948</li>\n<li>Private:0.80652<br>\n<a href=\"https://www.kaggle.com/code/hideyukizushi/amex-inf-single-amex-dc-k-101-0-7993049449776155\" target=\"_blank\">https://www.kaggle.com/code/hideyukizushi/amex-inf-single-amex-dc-k-101-0-7993049449776155</a></li></ul></li>\n</ul>",
      "rawMarkdown": "* **LGB DART 1955 features**\n     * CV(OOF):0.7991086274424719\n     * Public:0.79968\n     * Private:0.80691\nhttps://www.kaggle.com/code/hideyukizushi/amex-inf-single-zhc2-e-100-0-7991086274424719/notebook\n\n---\n\n* **LGB DART 3247 features**\n     * CV(OOF):0.7993049449776155\n     * Public:0.79948\n     * Private:0.80652\nhttps://www.kaggle.com/code/hideyukizushi/amex-inf-single-amex-dc-k-101-0-7993049449776155",
      "votes": null
    },
    {
      "id": "1914847",
      "postDate": "08/26/2022 13:26:21",
      "content": "<p>So your final model is worse than that single model o:?</p>",
      "rawMarkdown": "So your final model is worse than that single model o:?",
      "votes": null
    },
    {
      "id": "1914868",
      "postDate": "08/26/2022 13:46:56",
      "content": "<p>Yeap! :)<br>\nI made a lot of mistakes that I learned lessons from. Hopefully I can use them for the next tabular competitions.<br>\n<img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F4392121%2F1c2831bfe9d90a9930cad8157d717a81%2FBestSingleModel.png?generation=1661521464020931&amp;alt=media\" alt=\"\"><br>\nI am attaching my best single model predictions just in case someone wants to blend it with another model (NN, CatBoost, etc.)<br>\n<a href=\"https://www.kaggle.com/datasets/rasoulmojtahedzadeh/amex-default-prediction-best-single-model\" target=\"_blank\">https://www.kaggle.com/datasets/rasoulmojtahedzadeh/amex-default-prediction-best-single-model</a></p>",
      "rawMarkdown": "Yeap! :)\nI made a lot of mistakes that I learned lessons from. Hopefully I can use them for the next tabular competitions.\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F4392121%2F1c2831bfe9d90a9930cad8157d717a81%2FBestSingleModel.png?generation=1661521464020931&alt=media)\nI am attaching my best single model predictions just in case someone wants to blend it with another model (NN, CatBoost, etc.)\nhttps://www.kaggle.com/datasets/rasoulmojtahedzadeh/amex-default-prediction-best-single-model",
      "votes": null
    },
    {
      "id": "1915223",
      "postDate": "08/26/2022 19:11:13",
      "content": "<p>I have a question here: since I started studying ML, I have always been told to avoid using too many features, so as not to increase the chances of overfitting. In other competitions, I have already noticed that after a certain amount of features, the performance of the model drops. Here I’m seeing over 3k features.</p>\n<p>How do I know what the ideal limit is? The more features, the more complex the model needs to be?</p>",
      "rawMarkdown": "I have a question here: since I started studying ML, I have always been told to avoid using too many features, so as not to increase the chances of overfitting. In other competitions, I have already noticed that after a certain amount of features, the performance of the model drops. Here I’m seeing over 3k features.\n\nHow do I know what the ideal limit is? The more features, the more complex the model needs to be?",
      "votes": null
    },
    {
      "id": "1915232",
      "postDate": "08/26/2022 19:26:16",
      "content": "<p>Not sure how to answer that. Tree boosting models, at least, should be robust even if given extra features.</p>\n<p>For this competition, my belief is that teaching the model the 13 statement \"shape\" of each base feature is the first key to the competition. By far the easiest way to teach the model is with a diverse set of features built from the (up to) 13 statements. So you have lots of features with minimal individual contribution, but help lead to smoother more accurate predictions, helping 'rank' the customers. 190 times X quickly becomes a large number!</p>",
      "rawMarkdown": "Not sure how to answer that. Tree boosting models, at least, should be robust even if given extra features.\n\nFor this competition, my belief is that teaching the model the 13 statement \"shape\" of each base feature is the first key to the competition. By far the easiest way to teach the model is with a diverse set of features built from the (up to) 13 statements. So you have lots of features with minimal individual contribution, but help lead to smoother more accurate predictions, helping 'rank' the customers. 190 times X quickly becomes a large number!",
      "votes": null
    },
    {
      "id": "1915253",
      "postDate": "08/26/2022 19:50:03",
      "content": "<p>Makes sense, <a href=\"https://www.kaggle.com/roberthatch\" target=\"_blank\">@roberthatch</a> . Thanks for your answer, and congratz!</p>",
      "rawMarkdown": "Makes sense, @roberthatch . Thanks for your answer, and congratz!",
      "votes": null
    },
    {
      "id": "1915376",
      "postDate": "08/26/2022 23:32:59",
      "content": "<p><a href=\"https://www.kaggle.com/chiakiichimura\" target=\"_blank\">@chiakiichimura</a> Great idea. How did you choose <code>N</code>? Did you pick one <code>N</code> and then apply it to all customers? Or did you pick a random <code>N</code> for each customer?</p>",
      "rawMarkdown": "chiakiichimura Great idea. How did you choose `N`? Did you pick one `N` and then apply it to all customers? Or did you pick a random `N` for each customer?",
      "votes": null
    },
    {
      "id": "1915377",
      "postDate": "08/26/2022 23:34:43",
      "content": "<p><a href=\"https://www.kaggle.com/roberthatch\" target=\"_blank\">@roberthatch</a> what is your single model's CV and LBs?</p>",
      "rawMarkdown": "roberthatch what is your single model's CV and LBs?",
      "votes": null
    },
    {
      "id": "1915414",
      "postDate": "08/27/2022 00:41:20",
      "content": "<p>0.80798 private, 0.79889 pub. 46th overall. I expect a few winning teams might've had multiple higher scoring single models, but so far in this thread only one single model fared better (far better 🙂)</p>\n<p>No CV! 😆 I got the meta feature model finished the day before, did a CV and leaderboard test with higher training rate… And then intentionally trained on all training data. GPU hours just reset, maybe I'll get that CV score. From similar models, should be low 797xx. If much higher than that, it would be very encouraging, actually. It would imply that public LB score was the unexpected one, and it wasn't JUST that my model happened to have some kind of private LB secret sauce. </p>",
      "rawMarkdown": "0.80798 private, 0.79889 pub. 46th overall. I expect a few winning teams might've had multiple higher scoring single models, but so far in this thread only one single model fared better (far better 🙂)\n\nNo CV! 😆 I got the meta feature model finished the day before, did a CV and leaderboard test with higher training rate... And then intentionally trained on all training data. GPU hours just reset, maybe I'll get that CV score. From similar models, should be low 797xx. If much higher than that, it would be very encouraging, actually. It would imply that public LB score was the unexpected one, and it wasn't JUST that my model happened to have some kind of private LB secret sauce.",
      "votes": null
    },
    {
      "id": "1915517",
      "postDate": "08/27/2022 03:23:17",
      "content": "<p>LGBM Dart:<br>\nCV 0.7976, Public LB 0.79924, Private LB 0.80690</p>",
      "rawMarkdown": "LGBM Dart:\nCV 0.7976, Public LB 0.79924, Private LB 0.80690",
      "votes": null
    },
    {
      "id": "1915634",
      "postDate": "08/27/2022 06:11:25",
      "content": "<p><a href=\"https://www.kaggle.com/cdeotte\" target=\"_blank\">@cdeotte</a> <br>\nThank you for your question.</p>\n<blockquote>\n  <p>How did you choose N?</p>\n</blockquote>\n<p>I tried several patterns (<code>N</code>=4~11) and chose the one (<code>N</code>=8) with the highest local CV and public LB rank.</p>\n<blockquote>\n  <p>Did you pick one N and then apply it to all customers? Or did you pick a random N for each customer?</p>\n</blockquote>\n<p>I picked one N and then applied it to customers. If I applied to all customers it would cause out of memory, so I sampled customers randomly and applied to those.</p>",
      "rawMarkdown": "cdeotte \nThank you for your question.\n\n> How did you choose N?\n\nI tried several patterns (`N`=4~11) and chose the one (`N`=8) with the highest local CV and public LB rank.\n\n> Did you pick one N and then apply it to all customers? Or did you pick a random N for each customer?\n\nI picked one N and then applied it to customers. If I applied to all customers it would cause out of memory, so I sampled customers randomly and applied to those.",
      "votes": null
    }
  ],
  "comments": [
    {
      "id": 1914194,
      "author_name": "cdeotte",
      "author_url": "",
      "post_date": "08/25/2022 20:19:22",
      "content": "<p>That's a great single model Robert. Below are my best two single models. Each is 10 folds and the average of a few seeds:</p>\n<p>NN Transformer:<br>\nCV 0.7980, Public LB 0.7988, Private LB 0.8076</p>\n<p>LGBM Dart:<br>\nCV 0.7990, Public LB 0.7992, Private LB 0.8070</p>\n<p>Ensemble of above two models:<br>\nCV 0.8000, Public LB 0.8010, Private LB 0.80840</p>",
      "votes": null,
      "replies": [
        {
          "id": 1914200,
          "author_name": "roberthatch",
          "author_url": "",
          "post_date": "08/25/2022 20:28:47",
          "content": "<p>My original plan was to finish the big days overdue prediction 1-2 weeks ago, get a .800, then approach a few top scorers about teaming up with evidence I could contribute. Instead I finished it at the 11th hour AND it didn't do that great on public. Shrug. </p>\n<p>I'll take good luck on private, bad luck on public any day, though! Either a great model or just a great seed, lol. </p>",
          "votes": null,
          "replies": []
        }
      ]
    },
    {
      "id": 1914195,
      "author_name": "roberthatch",
      "author_url": "",
      "post_date": "08/25/2022 20:19:43",
      "content": "<p>Model: XGB pyramid with 3098 features. 49th place. </p>\n<p>My 'single' model had a couple steps:</p>\n<ul>\n<li>train XGB pyramid predicting \"miss next payment\" on ~14 million rows (all except last row, 5 fold).<br>\n** For this step, couldn't use 3000*13mil for training. So did forward feature selection to build best 70 of 3000 feature. Then *grouped* forward feature selection to get to 280 features. Used float16 for all data to fit mem. <br>\nFrom the above, use oof preds as new feature. </li>\n<li>Train main model on the normal 450k rows, with 3098 features. Decided to approximate the best stopping point, so didn't do CV on final model, trained with all data. Did 4 seeds and very low learning rate (0.005). But since I didn't do folds that's only 4 models, I would've liked to have a few more. </li>\n</ul>",
      "votes": null,
      "replies": [
        {
          "id": 1914207,
          "author_name": "cdeotte",
          "author_url": "",
          "post_date": "08/25/2022 20:35:39",
          "content": "<p>In step 2 do you use the predictions from step 1? That's a cool idea.</p>",
          "votes": null,
          "replies": []
        },
        {
          "id": 1914218,
          "author_name": "roberthatch",
          "author_url": "",
          "post_date": "08/25/2022 21:00:17",
          "content": "<p>Yes, I think it happened to be extra effective on the different population issues of the private leaderboard. The step one was given S_2_month (0-31) so had the ability if the model wanted to distinguish between the different datasets if it was helpful in predicting missed payments. </p>\n<p>I also predicted 0 balance next month (well, 0 days overdue D_39) independently as another step 1 model. But I am doubtful whether that mattered compared with the key prediction of going a month with no payment. And the model wasn't very good at predicting that one! Maybe if I had time to tune it would've gotten a little better, shrug. </p>\n<p>Those two prediction (do_1, do_2) were then fed into the aggregate features. 2*16 they became my last 32 features. </p>\n<p>(Last, min, max, mean, std, first, lag 1, last-mean, hull moving avg, 5 different exponential avgs, max-mean, last-min/max-min)</p>\n<p>I would've liked to try combos of megafeatures: p2+do_1, p2-do_1, maybe a few others. But ran out of time and GPU both :)</p>",
          "votes": null,
          "replies": []
        },
        {
          "id": 1914227,
          "author_name": "cdeotte",
          "author_url": "",
          "post_date": "08/25/2022 21:14:05",
          "content": "<p>I like this concept of meta features. I need to try this in my next comp. I guess the basic idea is to use the data to predict missing data or a variation of the given targets. Teams in 11th place <a href=\"https://www.kaggle.com/competitions/amex-default-prediction/discussion/347668\" target=\"_blank\">here</a> and 12th place <a href=\"https://www.kaggle.com/competitions/amex-default-prediction/discussion/347786\" target=\"_blank\">here</a> also predicted additional features for their models.</p>",
          "votes": null,
          "replies": []
        },
        {
          "id": 1914255,
          "author_name": "roberthatch",
          "author_url": "",
          "post_date": "08/25/2022 22:27:40",
          "content": "<p>There were a bunch of opportunities on this competition, for sure! I think more focus on that next competition will be a priority for me. At least if it shares some of the traits of this competition with lots of data, and really a ton of unlabeled data. </p>\n<p>Anything that helped create a feature based on the \"shape\" of the 13 statements seems really big. I wanted a KNN per column, for instance. </p>\n<p>The high level concept is the idea of ensemble diversity, but applied to single base features. \"last\" is one way to predict the relevant value of the 13 data points. \"mean\" is another. Ema (exponential average) is another. But meta features via model predictions like one team's LSTM(?) is yet another diverse way of trying to extract signal. </p>\n<p>I think doing it multiple diverse ways could get a top 10 score. Just a hunch. </p>",
          "votes": null,
          "replies": []
        },
        {
          "id": 1915377,
          "author_name": "cdeotte",
          "author_url": "",
          "post_date": "08/26/2022 23:34:43",
          "content": "<p><a href=\"https://www.kaggle.com/roberthatch\" target=\"_blank\">@roberthatch</a> what is your single model's CV and LBs?</p>",
          "votes": null,
          "replies": []
        },
        {
          "id": 1915414,
          "author_name": "roberthatch",
          "author_url": "",
          "post_date": "08/27/2022 00:41:20",
          "content": "<p>0.80798 private, 0.79889 pub. 46th overall. I expect a few winning teams might've had multiple higher scoring single models, but so far in this thread only one single model fared better (far better 🙂)</p>\n<p>No CV! 😆 I got the meta feature model finished the day before, did a CV and leaderboard test with higher training rate… And then intentionally trained on all training data. GPU hours just reset, maybe I'll get that CV score. From similar models, should be low 797xx. If much higher than that, it would be very encouraging, actually. It would imply that public LB score was the unexpected one, and it wasn't JUST that my model happened to have some kind of private LB secret sauce. </p>",
          "votes": null,
          "replies": []
        }
      ]
    },
    {
      "id": 1914205,
      "author_name": "rasoulmojtahedzadeh",
      "author_url": "",
      "post_date": "08/25/2022 20:32:51",
      "content": "<p>My best single model:<br>\nLGBM DART with ~2000 features,<br>\nPrivate Score: 0.80759, Public Score: 0.79966</p>",
      "votes": null,
      "replies": [
        {
          "id": 1914222,
          "author_name": "roberthatch",
          "author_url": "",
          "post_date": "08/25/2022 21:04:09",
          "content": "<p>Nice DART score! Silver medal with that alone :)</p>",
          "votes": null,
          "replies": []
        },
        {
          "id": 1914868,
          "author_name": "rasoulmojtahedzadeh",
          "author_url": "",
          "post_date": "08/26/2022 13:46:56",
          "content": "<p>Yeap! :)<br>\nI made a lot of mistakes that I learned lessons from. Hopefully I can use them for the next tabular competitions.<br>\n<img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F4392121%2F1c2831bfe9d90a9930cad8157d717a81%2FBestSingleModel.png?generation=1661521464020931&amp;alt=media\" alt=\"\"><br>\nI am attaching my best single model predictions just in case someone wants to blend it with another model (NN, CatBoost, etc.)<br>\n<a href=\"https://www.kaggle.com/datasets/rasoulmojtahedzadeh/amex-default-prediction-best-single-model\" target=\"_blank\">https://www.kaggle.com/datasets/rasoulmojtahedzadeh/amex-default-prediction-best-single-model</a></p>",
          "votes": null,
          "replies": []
        }
      ]
    },
    {
      "id": 1914236,
      "author_name": "martasprg",
      "author_url": "",
      "post_date": "08/25/2022 21:27:55",
      "content": "<p>My best single model:<br>\nLGBM DART<br>\nPrivate Score: 0.80711, Public Score: 0.79945</p>\n<p>My best ensemble (not selected as final unfortunately):<br>\n39 base models (mostly LGBMs, some CNNs, Transformers and even a Naive Bayes )<br>\n3 second  level models (MLPs) averaged<br>\nPrivate Score: 0.80849, Public Score: 0.80060</p>",
      "votes": null,
      "replies": []
    },
    {
      "id": 1914274,
      "author_name": "mahluo",
      "author_url": "",
      "post_date": "08/25/2022 23:34:55",
      "content": "<p>single Lgb private 8089</p>",
      "votes": null,
      "replies": [
        {
          "id": 1914467,
          "author_name": "cdeotte",
          "author_url": "",
          "post_date": "08/26/2022 05:41:27",
          "content": "<p>Wow <a href=\"https://www.kaggle.com/mahluo\" target=\"_blank\">@mahluo</a> that's amazing. I'm looking forward to reading your writeup and learning about your model.</p>",
          "votes": null,
          "replies": []
        },
        {
          "id": 1914522,
          "author_name": "roberthatch",
          "author_url": "",
          "post_date": "08/26/2022 06:48:03",
          "content": "<p>Echo <a href=\"https://www.kaggle.com/cdeotte\" target=\"_blank\">@cdeotte</a> , great work. I was rooting for you before the big reveal, 802 was really impressive.</p>",
          "votes": null,
          "replies": []
        },
        {
          "id": 1914847,
          "author_name": "fritzcremer",
          "author_url": "",
          "post_date": "08/26/2022 13:26:21",
          "content": "<p>So your final model is worse than that single model o:?</p>",
          "votes": null,
          "replies": []
        }
      ]
    },
    {
      "id": 1914277,
      "author_name": "cv13j0",
      "author_url": "",
      "post_date": "08/25/2022 23:43:44",
      "content": "<p>Excellent conversations are going on; I need to learn from the best solutions.</p>",
      "votes": null,
      "replies": []
    },
    {
      "id": 1914286,
      "author_name": "chiakiichimura",
      "author_url": "",
      "post_date": "08/26/2022 00:24:03",
      "content": "<p>LGBM DART with ~3800 features<br>\nPrivate : 0.80796<br>\nPublic : 0.80010<br>\nI augmentated training data by deleting the first n of each customer's sequence and adding them as new training data.</p>\n<p>This single model had a higher private score than the ensemble model I chose last.</p>",
      "votes": null,
      "replies": [
        {
          "id": 1914311,
          "author_name": "roberthatch",
          "author_url": "",
          "post_date": "08/26/2022 01:36:05",
          "content": "<p>That's a great idea on training augmentation! </p>",
          "votes": null,
          "replies": []
        },
        {
          "id": 1915223,
          "author_name": "leandrodestefani",
          "author_url": "",
          "post_date": "08/26/2022 19:11:13",
          "content": "<p>I have a question here: since I started studying ML, I have always been told to avoid using too many features, so as not to increase the chances of overfitting. In other competitions, I have already noticed that after a certain amount of features, the performance of the model drops. Here I’m seeing over 3k features.</p>\n<p>How do I know what the ideal limit is? The more features, the more complex the model needs to be?</p>",
          "votes": null,
          "replies": []
        },
        {
          "id": 1915232,
          "author_name": "roberthatch",
          "author_url": "",
          "post_date": "08/26/2022 19:26:16",
          "content": "<p>Not sure how to answer that. Tree boosting models, at least, should be robust even if given extra features.</p>\n<p>For this competition, my belief is that teaching the model the 13 statement \"shape\" of each base feature is the first key to the competition. By far the easiest way to teach the model is with a diverse set of features built from the (up to) 13 statements. So you have lots of features with minimal individual contribution, but help lead to smoother more accurate predictions, helping 'rank' the customers. 190 times X quickly becomes a large number!</p>",
          "votes": null,
          "replies": []
        },
        {
          "id": 1915253,
          "author_name": "leandrodestefani",
          "author_url": "",
          "post_date": "08/26/2022 19:50:03",
          "content": "<p>Makes sense, <a href=\"https://www.kaggle.com/roberthatch\" target=\"_blank\">@roberthatch</a> . Thanks for your answer, and congratz!</p>",
          "votes": null,
          "replies": []
        },
        {
          "id": 1915376,
          "author_name": "cdeotte",
          "author_url": "",
          "post_date": "08/26/2022 23:32:59",
          "content": "<p><a href=\"https://www.kaggle.com/chiakiichimura\" target=\"_blank\">@chiakiichimura</a> Great idea. How did you choose <code>N</code>? Did you pick one <code>N</code> and then apply it to all customers? Or did you pick a random <code>N</code> for each customer?</p>",
          "votes": null,
          "replies": []
        },
        {
          "id": 1915634,
          "author_name": "chiakiichimura",
          "author_url": "",
          "post_date": "08/27/2022 06:11:25",
          "content": "<p><a href=\"https://www.kaggle.com/cdeotte\" target=\"_blank\">@cdeotte</a> <br>\nThank you for your question.</p>\n<blockquote>\n  <p>How did you choose N?</p>\n</blockquote>\n<p>I tried several patterns (<code>N</code>=4~11) and chose the one (<code>N</code>=8) with the highest local CV and public LB rank.</p>\n<blockquote>\n  <p>Did you pick one N and then apply it to all customers? Or did you pick a random N for each customer?</p>\n</blockquote>\n<p>I picked one N and then applied it to customers. If I applied to all customers it would cause out of memory, so I sampled customers randomly and applied to those.</p>",
          "votes": null,
          "replies": []
        }
      ]
    },
    {
      "id": 1914440,
      "author_name": "mohammadrahmati",
      "author_url": "",
      "post_date": "08/26/2022 05:25:22",
      "content": "<p>LGBM DART, private 0.80720</p>",
      "votes": null,
      "replies": []
    },
    {
      "id": 1914708,
      "author_name": "hideyukizushi",
      "author_url": "",
      "post_date": "08/26/2022 10:29:44",
      "content": "<ul>\n<li><strong>LGB DART 1955 features</strong><ul>\n<li>CV(OOF):0.7991086274424719</li>\n<li>Public:0.79968</li>\n<li>Private:0.80691<br>\n<a href=\"https://www.kaggle.com/code/hideyukizushi/amex-inf-single-zhc2-e-100-0-7991086274424719/notebook\" target=\"_blank\">https://www.kaggle.com/code/hideyukizushi/amex-inf-single-zhc2-e-100-0-7991086274424719/notebook</a></li></ul></li>\n</ul>\n<hr>\n<ul>\n<li><strong>LGB DART 3247 features</strong><ul>\n<li>CV(OOF):0.7993049449776155</li>\n<li>Public:0.79948</li>\n<li>Private:0.80652<br>\n<a href=\"https://www.kaggle.com/code/hideyukizushi/amex-inf-single-amex-dc-k-101-0-7993049449776155\" target=\"_blank\">https://www.kaggle.com/code/hideyukizushi/amex-inf-single-amex-dc-k-101-0-7993049449776155</a></li></ul></li>\n</ul>",
      "votes": null,
      "replies": []
    },
    {
      "id": 1915517,
      "author_name": "flat831",
      "author_url": "",
      "post_date": "08/27/2022 03:23:17",
      "content": "<p>LGBM Dart:<br>\nCV 0.7976, Public LB 0.79924, Private LB 0.80690</p>",
      "votes": null,
      "replies": []
    }
  ],
  "raw_markdown_by_id": {
    "1914188": "Not so secretly a brag post, sorry. My best single model would've scored 49th overall. Oh right, it was my only model, and it did! 0.80798 private, 0.79889 pub. I'll post a little bit of details in the comments. \n\nMost medal winners did great ensembles, what were your best single model scores?",
    "1914194": "That's a great single model Robert. Below are my best two single models. Each is 10 folds and the average of a few seeds:\n\nNN Transformer:\nCV 0.7980, Public LB 0.7988, Private LB 0.8076\n\nLGBM Dart:\nCV 0.7990, Public LB 0.7992, Private LB 0.8070\n\nEnsemble of above two models:\nCV 0.8000, Public LB 0.8010, Private LB 0.80840",
    "1914195": "Model: XGB pyramid with 3098 features. 49th place. \n\nMy 'single' model had a couple steps:\n* train XGB pyramid predicting \"miss next payment\" on ~14 million rows (all except last row, 5 fold).\n** For this step, couldn't use 3000*13mil for training. So did forward feature selection to build best 70 of 3000 feature. Then *grouped* forward feature selection to get to 280 features. Used float16 for all data to fit mem. \nFrom the above, use oof preds as new feature. \n* Train main model on the normal 450k rows, with 3098 features. Decided to approximate the best stopping point, so didn't do CV on final model, trained with all data. Did 4 seeds and very low learning rate (0.005). But since I didn't do folds that's only 4 models, I would've liked to have a few more.",
    "1914200": "My original plan was to finish the big days overdue prediction 1-2 weeks ago, get a .800, then approach a few top scorers about teaming up with evidence I could contribute. Instead I finished it at the 11th hour AND it didn't do that great on public. Shrug. \n\nI'll take good luck on private, bad luck on public any day, though! Either a great model or just a great seed, lol.",
    "1914205": "My best single model:\nLGBM DART with ~2000 features,\nPrivate Score: 0.80759, Public Score: 0.79966",
    "1914207": "In step 2 do you use the predictions from step 1? That's a cool idea.",
    "1914218": "Yes, I think it happened to be extra effective on the different population issues of the private leaderboard. The step one was given S_2_month (0-31) so had the ability if the model wanted to distinguish between the different datasets if it was helpful in predicting missed payments. \n\nI also predicted 0 balance next month (well, 0 days overdue D_39) independently as another step 1 model. But I am doubtful whether that mattered compared with the key prediction of going a month with no payment. And the model wasn't very good at predicting that one! Maybe if I had time to tune it would've gotten a little better, shrug. \n\nThose two prediction (do_1, do_2) were then fed into the aggregate features. 2*16 they became my last 32 features. \n\n(Last, min, max, mean, std, first, lag 1, last-mean, hull moving avg, 5 different exponential avgs, max-mean, last-min/max-min)\n\nI would've liked to try combos of megafeatures: p2+do_1, p2-do_1, maybe a few others. But ran out of time and GPU both :)",
    "1914222": "Nice DART score! Silver medal with that alone :)",
    "1914227": "I like this concept of meta features. I need to try this in my next comp. I guess the basic idea is to use the data to predict missing data or a variation of the given targets. Teams in 11th place [here][1] and 12th place [here][2] also predicted additional features for their models.\n\n[1]: https://www.kaggle.com/competitions/amex-default-prediction/discussion/347668\n[2]: https://www.kaggle.com/competitions/amex-default-prediction/discussion/347786",
    "1914236": "My best single model:\nLGBM DART\nPrivate Score: 0.80711, Public Score: 0.79945\n\nMy best ensemble (not selected as final unfortunately):\n39 base models (mostly LGBMs, some CNNs, Transformers and even a Naive Bayes )\n3 second  level models (MLPs) averaged\nPrivate Score: 0.80849, Public Score: 0.80060",
    "1914255": "There were a bunch of opportunities on this competition, for sure! I think more focus on that next competition will be a priority for me. At least if it shares some of the traits of this competition with lots of data, and really a ton of unlabeled data. \n\nAnything that helped create a feature based on the \"shape\" of the 13 statements seems really big. I wanted a KNN per column, for instance. \n\nThe high level concept is the idea of ensemble diversity, but applied to single base features. \"last\" is one way to predict the relevant value of the 13 data points. \"mean\" is another. Ema (exponential average) is another. But meta features via model predictions like one team's LSTM(?) is yet another diverse way of trying to extract signal. \n\nI think doing it multiple diverse ways could get a top 10 score. Just a hunch.",
    "1914274": "single Lgb private 8089",
    "1914277": "Excellent conversations are going on; I need to learn from the best solutions.",
    "1914286": "LGBM DART with ~3800 features\nPrivate : 0.80796\nPublic : 0.80010\nI augmentated training data by deleting the first n of each customer's sequence and adding them as new training data.\n\nThis single model had a higher private score than the ensemble model I chose last.",
    "1914311": "That's a great idea on training augmentation!",
    "1914440": "LGBM DART, private 0.80720",
    "1914467": "Wow @mahluo that's amazing. I'm looking forward to reading your writeup and learning about your model.",
    "1914522": "Echo @cdeotte , great work. I was rooting for you before the big reveal, 802 was really impressive.",
    "1914708": "* **LGB DART 1955 features**\n     * CV(OOF):0.7991086274424719\n     * Public:0.79968\n     * Private:0.80691\nhttps://www.kaggle.com/code/hideyukizushi/amex-inf-single-zhc2-e-100-0-7991086274424719/notebook\n\n---\n\n* **LGB DART 3247 features**\n     * CV(OOF):0.7993049449776155\n     * Public:0.79948\n     * Private:0.80652\nhttps://www.kaggle.com/code/hideyukizushi/amex-inf-single-amex-dc-k-101-0-7993049449776155",
    "1914847": "So your final model is worse than that single model o:?",
    "1914868": "Yeap! :)\nI made a lot of mistakes that I learned lessons from. Hopefully I can use them for the next tabular competitions.\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F4392121%2F1c2831bfe9d90a9930cad8157d717a81%2FBestSingleModel.png?generation=1661521464020931&alt=media)\nI am attaching my best single model predictions just in case someone wants to blend it with another model (NN, CatBoost, etc.)\nhttps://www.kaggle.com/datasets/rasoulmojtahedzadeh/amex-default-prediction-best-single-model",
    "1915223": "I have a question here: since I started studying ML, I have always been told to avoid using too many features, so as not to increase the chances of overfitting. In other competitions, I have already noticed that after a certain amount of features, the performance of the model drops. Here I’m seeing over 3k features.\n\nHow do I know what the ideal limit is? The more features, the more complex the model needs to be?",
    "1915232": "Not sure how to answer that. Tree boosting models, at least, should be robust even if given extra features.\n\nFor this competition, my belief is that teaching the model the 13 statement \"shape\" of each base feature is the first key to the competition. By far the easiest way to teach the model is with a diverse set of features built from the (up to) 13 statements. So you have lots of features with minimal individual contribution, but help lead to smoother more accurate predictions, helping 'rank' the customers. 190 times X quickly becomes a large number!",
    "1915253": "Makes sense, @roberthatch . Thanks for your answer, and congratz!",
    "1915376": "chiakiichimura Great idea. How did you choose `N`? Did you pick one `N` and then apply it to all customers? Or did you pick a random `N` for each customer?",
    "1915377": "roberthatch what is your single model's CV and LBs?",
    "1915414": "0.80798 private, 0.79889 pub. 46th overall. I expect a few winning teams might've had multiple higher scoring single models, but so far in this thread only one single model fared better (far better 🙂)\n\nNo CV! 😆 I got the meta feature model finished the day before, did a CV and leaderboard test with higher training rate... And then intentionally trained on all training data. GPU hours just reset, maybe I'll get that CV score. From similar models, should be low 797xx. If much higher than that, it would be very encouraging, actually. It would imply that public LB score was the unexpected one, and it wasn't JUST that my model happened to have some kind of private LB secret sauce.",
    "1915517": "LGBM Dart:\nCV 0.7976, Public LB 0.79924, Private LB 0.80690",
    "1915634": "cdeotte \nThank you for your question.\n\n> How did you choose N?\n\nI tried several patterns (`N`=4~11) and chose the one (`N`=8) with the highest local CV and public LB rank.\n\n> Did you pick one N and then apply it to all customers? Or did you pick a random N for each customer?\n\nI picked one N and then applied it to customers. If I applied to all customers it would cause out of memory, so I sampled customers randomly and applied to those."
  },
  "source": "meta"
}