{
  "id": 10848,
  "title": "Few thoughts about \"device_id\"",
  "url": "/competitions/avazu-ctr-prediction/discussion/10848",
  "author_name": "",
  "post_date": "2014-11-06T00:20:15.997Z",
  "votes": 1,
  "comment_count": 8,
  "views": 2658,
  "content": "<p>Hi All,</p>\n<p>Just a quick check about my understanding of the field &quot;device_id&quot; . I suppose its a unique identifier of the device from which the website&nbsp;and the ads were viewed.</p>\n<p>A device&nbsp;might&nbsp;be a desktop, laptop, tablet, mobile ph. etc.</p>\n<p>So if &quot;device_id&quot; is indicative of a device, I'm just wondering how a particular &quot;device_id&quot; can show up a very large number of&nbsp;times in the test dataset, which is just one day's history from the website unless my interpretation of &quot;device_id&quot; is different from what it actually represents.</p>\n<p>I would appreciate if contest organizers or other participants can share their views about &quot;device_id&quot;.</p>\n<p>Thanks,</p>\n<p>Avi</p>",
  "messages": [
    {
      "id": "57367",
      "postDate": "11/06/2014 00:20:15",
      "content": "<p>Hi All,</p>\n<p>Just a quick check about my understanding of the field &quot;device_id&quot; . I suppose its a unique identifier of the device from which the website&nbsp;and the ads were viewed.</p>\n<p>A device&nbsp;might&nbsp;be a desktop, laptop, tablet, mobile ph. etc.</p>\n<p>So if &quot;device_id&quot; is indicative of a device, I'm just wondering how a particular &quot;device_id&quot; can show up a very large number of&nbsp;times in the test dataset, which is just one day's history from the website unless my interpretation of &quot;device_id&quot; is different from what it actually represents.</p>\n<p>I would appreciate if contest organizers or other participants can share their views about &quot;device_id&quot;.</p>\n<p>Thanks,</p>\n<p>Avi</p>",
      "rawMarkdown": "",
      "votes": null
    },
    {
      "id": "57368",
      "postDate": "11/06/2014 00:33:53",
      "content": "<p>Could be a bot. (i.e., click fraud)</p>",
      "rawMarkdown": "",
      "votes": null
    },
    {
      "id": "57377",
      "postDate": "11/06/2014 04:16:25",
      "content": "<p>Good theory. If that's the case, then the number of records for a particular device on a particular day might be a good feature.</p>",
      "rawMarkdown": "",
      "votes": null
    },
    {
      "id": "57382",
      "postDate": "11/06/2014 05:14:55",
      "content": "<p>There's similar patterns in training set as well. I plotted pie and bar charts for each of the variable on a sample (~1M rows) data, and one single device_id makes ~70% of the samples. Considering the 2nd most frequent device_id takes only 0.05%, I suspect deeply that it's indeed a fraud.</p>\n<p>If that's true, and it's&nbsp;70% of the data, I literally don't know what to do next.</p>\n<p>I am not sure if I can throw 70% of the data away.</p>\n<p>Or maybe I can train two different classifiers for it and the rest 30% separately.</p>\n<p><strong>Edit:</strong></p>\n<p>I am sorry. It's 80%.</p>\n<p>The value counts are sorted in descending order.</p>\n<p><img src=\"https://storage.googleapis.com/kaggle-forum-message-attachments/57382/1724/download.png?sv=2012-02-12&se=2014-11-09T05:24:57Z&sr=b&sp=r&sig=w3sco%2B01YtNH37m%2BgLfvM2xVfphlqWzStN4OsB7MyrI%3D\" alt width=\"384\" height=\"349\"></p>\n<pre>d41d8cd9    819422\n5e2208cc       505\n53371cec       472\nrest        179600\ndtype: int64</pre>",
      "rawMarkdown": "",
      "votes": null
    },
    {
      "id": "57387",
      "postDate": "11/06/2014 06:30:52",
      "content": "<p>d41d8cd9 is the hash value of NULL</p>",
      "rawMarkdown": "",
      "votes": null
    },
    {
      "id": "57388",
      "postDate": "11/06/2014 06:34:16",
      "content": "<p>[quote=Steve Wang;57387]</p>\n<p>d41d8cd9 is the hash value of NULL</p>\n<p>[/quote]</p>\n<p>Thank you, that's very helpful. I mistakenly think null values should be all '-1' like discovered in C23.</p>",
      "rawMarkdown": "",
      "votes": null
    },
    {
      "id": "58120",
      "postDate": "11/15/2014 18:09:11",
      "content": "<p>between the _id, _ip, and _geo values there should be enough data to mathematically lower the potential fraud% which the industry estimates is between 20-40%. &nbsp;cd9 may be NULL, but suspect that is where you 20-40% fraud is. &nbsp;70% seems high.</p>",
      "rawMarkdown": "",
      "votes": null
    },
    {
      "id": "58124",
      "postDate": "11/16/2014 01:54:20",
      "content": "<p>[quote=iamondialup;58120]</p>\n<p>between the _id, _ip, and _geo values there should be enough data to mathematically lower the potential fraud% which the industry estimates is between 20-40%. &nbsp;cd9 may be NULL, but suspect that is where you 20-40% fraud is. &nbsp;70% seems high.</p>\n<p>[/quote]</p>\n\n<p>Anyway, in order to win the Kaggle competition, take into account that click-fraud implies that there is a click, so if your approach is going in the direction of somehow not taking these fraud-clicks&nbsp;into account, my feeling is that you will not succeed in the competition, since these 'fraud-clicks' will also be in the test set.</p>\n<p>On the other hand, if your plan is to try to be able to identify which impressions are shown to&nbsp;people/bots with fraudulent intent, I think that pattern would&nbsp;be very&nbsp;useful for the competition, although to my knowledge, many click-fraud-bots are pretty sophisticated and hard to trace.</p>",
      "rawMarkdown": "",
      "votes": null
    },
    {
      "id": "58126",
      "postDate": "11/16/2014 03:22:11",
      "content": "<p>[quote=F_Constantino;58124]</p>\n<p>Anyway, in order to win the Kaggle competition, take into account that click-fraud implies that there is a click, so if your approach is going in the direction of somehow not taking these fraud-clicks&nbsp;into account, my feeling is that you will not succeed in the competition, since these 'fraud-clicks' will also be in the test set.</p>\n<p>[/quote]</p>\n<p>That's a great point. In the Acquire Valued Shoppers Challenge, figuring out which &quot;shoppers&quot; were actually just the default store card swipes (i.e., for the shoppers without a loyalty card) placed me 34 out of 952.&nbsp;</p>",
      "rawMarkdown": "",
      "votes": null
    }
  ],
  "comments": [
    {
      "id": 57368,
      "author_name": "inversion",
      "author_url": "",
      "post_date": "11/06/2014 00:33:53",
      "content": "<p>Could be a bot. (i.e., click fraud)</p>",
      "votes": null,
      "replies": []
    },
    {
      "id": 57377,
      "author_name": "alkhwarizmi",
      "author_url": "",
      "post_date": "11/06/2014 04:16:25",
      "content": "<p>Good theory. If that's the case, then the number of records for a particular device on a particular day might be a good feature.</p>",
      "votes": null,
      "replies": []
    },
    {
      "id": 57382,
      "author_name": "",
      "author_url": "",
      "post_date": "11/06/2014 05:14:55",
      "content": "<p>There's similar patterns in training set as well. I plotted pie and bar charts for each of the variable on a sample (~1M rows) data, and one single device_id makes ~70% of the samples. Considering the 2nd most frequent device_id takes only 0.05%, I suspect deeply that it's indeed a fraud.</p>\n<p>If that's true, and it's&nbsp;70% of the data, I literally don't know what to do next.</p>\n<p>I am not sure if I can throw 70% of the data away.</p>\n<p>Or maybe I can train two different classifiers for it and the rest 30% separately.</p>\n<p><strong>Edit:</strong></p>\n<p>I am sorry. It's 80%.</p>\n<p>The value counts are sorted in descending order.</p>\n<p><img src=\"https://storage.googleapis.com/kaggle-forum-message-attachments/57382/1724/download.png?sv=2012-02-12&se=2014-11-09T05:24:57Z&sr=b&sp=r&sig=w3sco%2B01YtNH37m%2BgLfvM2xVfphlqWzStN4OsB7MyrI%3D\" alt width=\"384\" height=\"349\"></p>\n<pre>d41d8cd9    819422\n5e2208cc       505\n53371cec       472\nrest        179600\ndtype: int64</pre>",
      "votes": null,
      "replies": []
    },
    {
      "id": 57387,
      "author_name": "stevewang0",
      "author_url": "",
      "post_date": "11/06/2014 06:30:52",
      "content": "<p>d41d8cd9 is the hash value of NULL</p>",
      "votes": null,
      "replies": []
    },
    {
      "id": 57388,
      "author_name": "",
      "author_url": "",
      "post_date": "11/06/2014 06:34:16",
      "content": "<p>[quote=Steve Wang;57387]</p>\n<p>d41d8cd9 is the hash value of NULL</p>\n<p>[/quote]</p>\n<p>Thank you, that's very helpful. I mistakenly think null values should be all '-1' like discovered in C23.</p>",
      "votes": null,
      "replies": []
    },
    {
      "id": 58120,
      "author_name": "iamondialup",
      "author_url": "",
      "post_date": "11/15/2014 18:09:11",
      "content": "<p>between the _id, _ip, and _geo values there should be enough data to mathematically lower the potential fraud% which the industry estimates is between 20-40%. &nbsp;cd9 may be NULL, but suspect that is where you 20-40% fraud is. &nbsp;70% seems high.</p>",
      "votes": null,
      "replies": []
    },
    {
      "id": 58124,
      "author_name": "fernandoconstantino",
      "author_url": "",
      "post_date": "11/16/2014 01:54:20",
      "content": "<p>[quote=iamondialup;58120]</p>\n<p>between the _id, _ip, and _geo values there should be enough data to mathematically lower the potential fraud% which the industry estimates is between 20-40%. &nbsp;cd9 may be NULL, but suspect that is where you 20-40% fraud is. &nbsp;70% seems high.</p>\n<p>[/quote]</p>\n\n<p>Anyway, in order to win the Kaggle competition, take into account that click-fraud implies that there is a click, so if your approach is going in the direction of somehow not taking these fraud-clicks&nbsp;into account, my feeling is that you will not succeed in the competition, since these 'fraud-clicks' will also be in the test set.</p>\n<p>On the other hand, if your plan is to try to be able to identify which impressions are shown to&nbsp;people/bots with fraudulent intent, I think that pattern would&nbsp;be very&nbsp;useful for the competition, although to my knowledge, many click-fraud-bots are pretty sophisticated and hard to trace.</p>",
      "votes": null,
      "replies": []
    },
    {
      "id": 58126,
      "author_name": "inversion",
      "author_url": "",
      "post_date": "11/16/2014 03:22:11",
      "content": "<p>[quote=F_Constantino;58124]</p>\n<p>Anyway, in order to win the Kaggle competition, take into account that click-fraud implies that there is a click, so if your approach is going in the direction of somehow not taking these fraud-clicks&nbsp;into account, my feeling is that you will not succeed in the competition, since these 'fraud-clicks' will also be in the test set.</p>\n<p>[/quote]</p>\n<p>That's a great point. In the Acquire Valued Shoppers Challenge, figuring out which &quot;shoppers&quot; were actually just the default store card swipes (i.e., for the shoppers without a loyalty card) placed me 34 out of 952.&nbsp;</p>",
      "votes": null,
      "replies": []
    }
  ],
  "raw_markdown_by_id": {
    "57367": "",
    "57368": "",
    "57377": "",
    "57382": "",
    "57387": "",
    "57388": "",
    "58120": "",
    "58124": "",
    "58126": ""
  },
  "source": "meta"
}