{
  "id": 11292,
  "title": "Neural Network Ensembles",
  "url": "/competitions/avazu-ctr-prediction/discussion/11292",
  "author_name": "",
  "post_date": "2014-12-18T12:49:40.440Z",
  "votes": 2,
  "comment_count": 5,
  "views": 3856,
  "content": "<p>Hi guys,</p>\n<p>i have a question regarding the ensembling of neural networks. <br>I tried a few things (different preprocessing/ architectures / weight initialization) but my ensembles seem to <br>saturate very quickly (only the first 3-4 Nets contribute).</p>\n<p>So my question is what is generally the most important point ot go for when ensembling many different neural networks?</p>\n<p>Thanks for your help!</p>",
  "messages": [
    {
      "id": "61478",
      "postDate": "12/18/2014 12:49:40",
      "content": "<p>Hi guys,</p>\n<p>i have a question regarding the ensembling of neural networks. <br>I tried a few things (different preprocessing/ architectures / weight initialization) but my ensembles seem to <br>saturate very quickly (only the first 3-4 Nets contribute).</p>\n<p>So my question is what is generally the most important point ot go for when ensembling many different neural networks?</p>\n<p>Thanks for your help!</p>",
      "rawMarkdown": "",
      "votes": null
    },
    {
      "id": "61479",
      "postDate": "12/18/2014 13:30:16",
      "content": "<p>Hello,</p>\n<p>Training on different parts of the trainset. (for instance leave 1-2 days out)</p>\n<p>Training on different parts of the feature set.(for instance leave device ip out)</p>\n<p>It's my belief that having a dropout layer also gives more varied nets..</p>\n<p>Overfitting a little doesn't hurt..</p>\n\n<p>This dataset is less &quot;rich&quot; than for instance Criteo so perhaps the NN has a hard time finding something &quot;new&quot;.</p>",
      "rawMarkdown": "",
      "votes": null
    },
    {
      "id": "61480",
      "postDate": "12/18/2014 13:50:41",
      "content": "<p>Thank you very much for your advise!</p>",
      "rawMarkdown": "",
      "votes": null
    },
    {
      "id": "61559",
      "postDate": "12/19/2014 23:39:54",
      "content": "<p>I think your best ensembling strategy&nbsp;might depend&nbsp;on your ensembling goals.&nbsp;Are you trying to reduce model bias or trying to reduce variance (overfitting)? Someone more mathematical than I could probably&nbsp;elaborate on this, but my intuition is that:</p>\n<ul>\n<li><span style=\"line-height: 1.4\">If you are trying to reduce overfitting, </span><span style=\"line-height: 1.4\">sub</span><span style=\"line-height: 1.4\">&nbsp;</span><span style=\"line-height: 1.4\">sampling&nbsp;might be more helpful.</span></li>\n<li><span style=\"line-height: 1.4\">If&nbsp;</span><span style=\"line-height: 1.4\">you are trying to reduce model bias, different architectures, initializations, etc., might be more helpful.</span></li>\n</ul>\n<p>Also, how are you ensembling the different networks? That can make a fairly large difference.</p>",
      "rawMarkdown": "",
      "votes": null
    },
    {
      "id": "61946",
      "postDate": "12/27/2014 18:54:33",
      "content": "<p>I'd be interested in how much improvement you're able to obtain in an ensemble compared to the single model performance specific to this competition (if that doesn't gives away too much of your solution of course). My experience is about ~0.005. I'm using the tipps from Julian and simply average the predictions. Is that a realistic value or do you guys get even stronger ensemble boost?</p>",
      "rawMarkdown": "",
      "votes": null
    },
    {
      "id": "61957",
      "postDate": "12/27/2014 22:19:30",
      "content": "<p>You might want to try saving some&nbsp;data for creating a weighted ensemble. One approach is to use a&nbsp;simple regression model to create weights for ensembles on the left out data. Simple averaging often isn't a bad approach, but it ignores&nbsp;that some models may have more or less correlation in their&nbsp;errors.</p>",
      "rawMarkdown": "",
      "votes": null
    }
  ],
  "comments": [
    {
      "id": 61479,
      "author_name": "juliandewit",
      "author_url": "",
      "post_date": "12/18/2014 13:30:16",
      "content": "<p>Hello,</p>\n<p>Training on different parts of the trainset. (for instance leave 1-2 days out)</p>\n<p>Training on different parts of the feature set.(for instance leave device ip out)</p>\n<p>It's my belief that having a dropout layer also gives more varied nets..</p>\n<p>Overfitting a little doesn't hurt..</p>\n\n<p>This dataset is less &quot;rich&quot; than for instance Criteo so perhaps the NN has a hard time finding something &quot;new&quot;.</p>",
      "votes": null,
      "replies": []
    },
    {
      "id": 61480,
      "author_name": "niklaskoehler",
      "author_url": "",
      "post_date": "12/18/2014 13:50:41",
      "content": "<p>Thank you very much for your advise!</p>",
      "votes": null,
      "replies": []
    },
    {
      "id": 61559,
      "author_name": "danielyoo",
      "author_url": "",
      "post_date": "12/19/2014 23:39:54",
      "content": "<p>I think your best ensembling strategy&nbsp;might depend&nbsp;on your ensembling goals.&nbsp;Are you trying to reduce model bias or trying to reduce variance (overfitting)? Someone more mathematical than I could probably&nbsp;elaborate on this, but my intuition is that:</p>\n<ul>\n<li><span style=\"line-height: 1.4\">If you are trying to reduce overfitting, </span><span style=\"line-height: 1.4\">sub</span><span style=\"line-height: 1.4\">&nbsp;</span><span style=\"line-height: 1.4\">sampling&nbsp;might be more helpful.</span></li>\n<li><span style=\"line-height: 1.4\">If&nbsp;</span><span style=\"line-height: 1.4\">you are trying to reduce model bias, different architectures, initializations, etc., might be more helpful.</span></li>\n</ul>\n<p>Also, how are you ensembling the different networks? That can make a fairly large difference.</p>",
      "votes": null,
      "replies": []
    },
    {
      "id": 61946,
      "author_name": "niklaskoehler",
      "author_url": "",
      "post_date": "12/27/2014 18:54:33",
      "content": "<p>I'd be interested in how much improvement you're able to obtain in an ensemble compared to the single model performance specific to this competition (if that doesn't gives away too much of your solution of course). My experience is about ~0.005. I'm using the tipps from Julian and simply average the predictions. Is that a realistic value or do you guys get even stronger ensemble boost?</p>",
      "votes": null,
      "replies": []
    },
    {
      "id": 61957,
      "author_name": "danielyoo",
      "author_url": "",
      "post_date": "12/27/2014 22:19:30",
      "content": "<p>You might want to try saving some&nbsp;data for creating a weighted ensemble. One approach is to use a&nbsp;simple regression model to create weights for ensembles on the left out data. Simple averaging often isn't a bad approach, but it ignores&nbsp;that some models may have more or less correlation in their&nbsp;errors.</p>",
      "votes": null,
      "replies": []
    }
  ],
  "raw_markdown_by_id": {
    "61478": "",
    "61479": "",
    "61480": "",
    "61559": "",
    "61946": "",
    "61957": ""
  },
  "source": "meta"
}