{
  "id": 11401,
  "title": "Looking at/summarizing the data",
  "url": "/competitions/avazu-ctr-prediction/discussion/11401",
  "author_name": "",
  "post_date": "2014-12-31T21:23:19.890Z",
  "votes": 1,
  "comment_count": 5,
  "views": 1713,
  "content": "<p>Hey fellow Kagglers, how are you?</p>\n<p>First, Happy 2015!</p>\n<p>I would like to ask your opinion on summarizing and generally looking at the data before running an ML algorithm.</p>\n<p>I recently watched the lectures from the amazing &quot;Learning From Data&quot; course by Caltech, and a comment that the professor made stuck with me. It goes along the lines of &quot;do not look at the data before feeding it to the algorithm&quot;.</p>\n<p>In my experience, in and out of Kaggle, looking at the data, without contaminating it (data snooping), has some benefits.</p>\n<p>For example, at Kaggle, separating a training and a validation set, and then summarizing, exploring only the training set, to test after on the validation set, and then use the information to train on everything and make a submission.</p>\n<p>If on a real ML case, separate the test set, lock it somewhere, and then doing the above &quot;Kaggle approach&quot; with the rest of the data (cross validation when possible).</p>\n<p>Do you find that just looking at the training set to understand the features, plotting histograms, etc is bad? What about using the input only, or using the outputs too?</p>\n<p>Thank you!</p>",
  "messages": [
    {
      "id": "62149",
      "postDate": "12/31/2014 21:23:19",
      "content": "<p>Hey fellow Kagglers, how are you?</p>\n<p>First, Happy 2015!</p>\n<p>I would like to ask your opinion on summarizing and generally looking at the data before running an ML algorithm.</p>\n<p>I recently watched the lectures from the amazing &quot;Learning From Data&quot; course by Caltech, and a comment that the professor made stuck with me. It goes along the lines of &quot;do not look at the data before feeding it to the algorithm&quot;.</p>\n<p>In my experience, in and out of Kaggle, looking at the data, without contaminating it (data snooping), has some benefits.</p>\n<p>For example, at Kaggle, separating a training and a validation set, and then summarizing, exploring only the training set, to test after on the validation set, and then use the information to train on everything and make a submission.</p>\n<p>If on a real ML case, separate the test set, lock it somewhere, and then doing the above &quot;Kaggle approach&quot; with the rest of the data (cross validation when possible).</p>\n<p>Do you find that just looking at the training set to understand the features, plotting histograms, etc is bad? What about using the input only, or using the outputs too?</p>\n<p>Thank you!</p>",
      "rawMarkdown": "",
      "votes": null
    },
    {
      "id": "62161",
      "postDate": "01/01/2015 02:03:38",
      "content": "<p>I think it depends of the dataset. In general, if you are more concerned with&nbsp;feature engineering and minimizing model bias than with overfitting,&nbsp;than snooping&nbsp;at the data is probably more helpful than harmful.</p>",
      "rawMarkdown": "",
      "votes": null
    },
    {
      "id": "62162",
      "postDate": "01/01/2015 02:15:39",
      "content": "<p>It also depends on whether you are interested in a &quot;pure&quot; challenge (i.e., simulating what you might face in real life) or in winning a competition.</p>\n<p>Taking the time to understand the data can go a&nbsp;<em>long</em> way in improving your score.</p>\n<p>For example, you can discover and remove outliers. You may find a subset of the data that is better fit with different model parameters. etc.</p>",
      "rawMarkdown": "",
      "votes": null
    },
    {
      "id": "62163",
      "postDate": "01/01/2015 02:44:42",
      "content": "<p>I think they are referring to getting a baseline for the data that you start with to get a general idea of the error before you start trying to do anything crazy with feature engineering. It would be naive to never look at it, but to start with you'll need to have something to compare your new ideas to.</p>\n\n<p>Also, you could spend a lot of time analyzing the data before realizing that what you have isn't going to lead to any useful outcomes. You could probably argue that you'll have to do some analysis as well to convince others that the data isn't useful, but knowing that there could be this limitation is helpful to start out with. From there you can start to think about where else you'll need to pull data from just to solve the problem, if it's possible.</p>\n\n<p>This doesn't pertain to kaggle as I'd assume that all of the competitions will have a somewhat &quot;solvable&quot; dataset, but elsewhere&nbsp;knowing to focus your efforts in another direction can save a lot of time.</p>",
      "rawMarkdown": "",
      "votes": null
    },
    {
      "id": "62164",
      "postDate": "01/01/2015 03:08:59",
      "content": "<p><strong>Two days</strong> before the end of the &quot;Acquire Valued Shoppers&quot; challenge, I was about ~500 on the leader board (out of 950 competitors).</p>\n<p>Looking at the data, it was clear that certain loyalty card numbers had completely unrealistic amount of purchases.</p>\n<p>Just by splitting those out and training on them separately, I went from ~500 to 34th.</p>\n<p>I&nbsp;<em>really</em> wish I would have had that insight early on in the competition!</p>",
      "rawMarkdown": "",
      "votes": null
    },
    {
      "id": "62171",
      "postDate": "01/01/2015 13:02:36",
      "content": "<p>@dkay</p>\n<p>Yes, they're probably talking about the baseline score.</p>\n<p>@inversion</p>\n<p>This is what I am talking about, thanks for sharing.</p>",
      "rawMarkdown": "",
      "votes": null
    }
  ],
  "comments": [
    {
      "id": 62161,
      "author_name": "danielyoo",
      "author_url": "",
      "post_date": "01/01/2015 02:03:38",
      "content": "<p>I think it depends of the dataset. In general, if you are more concerned with&nbsp;feature engineering and minimizing model bias than with overfitting,&nbsp;than snooping&nbsp;at the data is probably more helpful than harmful.</p>",
      "votes": null,
      "replies": []
    },
    {
      "id": 62162,
      "author_name": "inversion",
      "author_url": "",
      "post_date": "01/01/2015 02:15:39",
      "content": "<p>It also depends on whether you are interested in a &quot;pure&quot; challenge (i.e., simulating what you might face in real life) or in winning a competition.</p>\n<p>Taking the time to understand the data can go a&nbsp;<em>long</em> way in improving your score.</p>\n<p>For example, you can discover and remove outliers. You may find a subset of the data that is better fit with different model parameters. etc.</p>",
      "votes": null,
      "replies": []
    },
    {
      "id": 62163,
      "author_name": "dkaylor",
      "author_url": "",
      "post_date": "01/01/2015 02:44:42",
      "content": "<p>I think they are referring to getting a baseline for the data that you start with to get a general idea of the error before you start trying to do anything crazy with feature engineering. It would be naive to never look at it, but to start with you'll need to have something to compare your new ideas to.</p>\n\n<p>Also, you could spend a lot of time analyzing the data before realizing that what you have isn't going to lead to any useful outcomes. You could probably argue that you'll have to do some analysis as well to convince others that the data isn't useful, but knowing that there could be this limitation is helpful to start out with. From there you can start to think about where else you'll need to pull data from just to solve the problem, if it's possible.</p>\n\n<p>This doesn't pertain to kaggle as I'd assume that all of the competitions will have a somewhat &quot;solvable&quot; dataset, but elsewhere&nbsp;knowing to focus your efforts in another direction can save a lot of time.</p>",
      "votes": null,
      "replies": []
    },
    {
      "id": 62164,
      "author_name": "inversion",
      "author_url": "",
      "post_date": "01/01/2015 03:08:59",
      "content": "<p><strong>Two days</strong> before the end of the &quot;Acquire Valued Shoppers&quot; challenge, I was about ~500 on the leader board (out of 950 competitors).</p>\n<p>Looking at the data, it was clear that certain loyalty card numbers had completely unrealistic amount of purchases.</p>\n<p>Just by splitting those out and training on them separately, I went from ~500 to 34th.</p>\n<p>I&nbsp;<em>really</em> wish I would have had that insight early on in the competition!</p>",
      "votes": null,
      "replies": []
    },
    {
      "id": 62171,
      "author_name": "mariofilho",
      "author_url": "",
      "post_date": "01/01/2015 13:02:36",
      "content": "<p>@dkay</p>\n<p>Yes, they're probably talking about the baseline score.</p>\n<p>@inversion</p>\n<p>This is what I am talking about, thanks for sharing.</p>",
      "votes": null,
      "replies": []
    }
  ],
  "raw_markdown_by_id": {
    "62149": "",
    "62161": "",
    "62162": "",
    "62163": "",
    "62164": "",
    "62171": ""
  },
  "source": "meta"
}