{
  "id": 388751,
  "title": "Is it Reasonable to Split One Session into Two Games?",
  "url": "/competitions/predict-student-performance-from-game-play/discussion/388751",
  "author_name": "",
  "post_date": "2023-02-19T10:00:13.806523400Z",
  "votes": 12,
  "comment_count": 2,
  "views": 0,
  "content": "<p>Hi everyone,</p>\n<p>There exist duplicated (<code>session_id</code>, <code>index</code>) pairs in <code>train.csv</code> due to some data errors. During the exploration, we also find out that <code>level</code> can go from high to low.</p>\n<p>Concretely, for those sessions with duplicated (<code>session_id</code>, <code>index</code>) pairs (65 sessions in total), there exist two sessions <code>20110509524426308</code> and <code>20110514230497096</code> having <code>level</code> goes from 22 (highest) to 0 (lowest), but <code>elapsed_time</code> continuously accumulated (as shown below). </p>\n<p><a href=\"https://postimg.cc/QBjK6wyb\" target=\"_blank\"><img src=\"https://i.postimg.cc/TPDjPXjZ/reverse-lv.png\" alt=\"reverse-lv.png\"></a></p>\n<p>We assume that it's because the corresponding student plays the game <strong>twice in a row</strong>.  To prove whether the assumption holds, we go to check <a href=\"https://github.com/fielddaylab/jo_wilder/blob/5082da4057f30dd0917c97a65f2aa7be13469f79/src/utils/simplelog.js\" target=\"_blank\">this file</a>. The code snippet below looks like the way how <code>session_id</code> is generated.</p>\n<pre><code>self. = ();\nself. = ();\n(!self.)\n{\n    self. = self.;\n    (,self.,);\n}\n</code></pre>\n<p>With this evidence, we think that students can play the game <strong>multiple times in a row</strong> with the same <code>session_id</code> if <code>persistent_session_id</code> has already existed.</p>\n<p>Hence, we're wondering if we can split this kind of session into multiple games.</p>\n<p>Thanks😊</p>",
  "messages": [
    {
      "id": "2150494",
      "postDate": "02/19/2023 10:00:13",
      "content": "<p>Hi everyone,</p>\n<p>There exist duplicated (<code>session_id</code>, <code>index</code>) pairs in <code>train.csv</code> due to some data errors. During the exploration, we also find out that <code>level</code> can go from high to low.</p>\n<p>Concretely, for those sessions with duplicated (<code>session_id</code>, <code>index</code>) pairs (65 sessions in total), there exist two sessions <code>20110509524426308</code> and <code>20110514230497096</code> having <code>level</code> goes from 22 (highest) to 0 (lowest), but <code>elapsed_time</code> continuously accumulated (as shown below). </p>\n<p><a href=\"https://postimg.cc/QBjK6wyb\" target=\"_blank\"><img src=\"https://i.postimg.cc/TPDjPXjZ/reverse-lv.png\" alt=\"reverse-lv.png\"></a></p>\n<p>We assume that it's because the corresponding student plays the game <strong>twice in a row</strong>.  To prove whether the assumption holds, we go to check <a href=\"https://github.com/fielddaylab/jo_wilder/blob/5082da4057f30dd0917c97a65f2aa7be13469f79/src/utils/simplelog.js\" target=\"_blank\">this file</a>. The code snippet below looks like the way how <code>session_id</code> is generated.</p>\n<pre><code>self. = ();\nself. = ();\n(!self.)\n{\n    self. = self.;\n    (,self.,);\n}\n</code></pre>\n<p>With this evidence, we think that students can play the game <strong>multiple times in a row</strong> with the same <code>session_id</code> if <code>persistent_session_id</code> has already existed.</p>\n<p>Hence, we're wondering if we can split this kind of session into multiple games.</p>\n<p>Thanks😊</p>",
      "rawMarkdown": "Hi everyone,\n\nThere exist duplicated (`session_id`, `index`) pairs in `train.csv` due to some data errors. During the exploration, we also find out that `level` can go from high to low.\n\nConcretely, for those sessions with duplicated (`session_id`, `index`) pairs (65 sessions in total), there exist two sessions `20110509524426308` and `20110514230497096` having `level` goes from 22 (highest) to 0 (lowest), but `elapsed_time` continuously accumulated (as shown below). \n\n[![reverse-lv.png](https://i.postimg.cc/TPDjPXjZ/reverse-lv.png)](https://postimg.cc/QBjK6wyb)\n\nWe assume that it's because the corresponding student plays the game **twice in a row**.  To prove whether the assumption holds, we go to check [this file](https://github.com/fielddaylab/jo_wilder/blob/5082da4057f30dd0917c97a65f2aa7be13469f79/src/utils/simplelog.js). The code snippet below looks like the way how `session_id` is generated.\n\n```javascript\nself.session_id = UUIDint();\nself.persistent_session_id = getCookie(\"persistent_session_id\");\nif(!self.persistent_session_id)\n{\n    self.persistent_session_id = self.session_id;\n    setCookie(\"persistent_session_id\",self.persistent_session_id,100);\n}\n```\n\nWith this evidence, we think that students can play the game **multiple times in a row** with the same `session_id` if `persistent_session_id` has already existed.\n\nHence, we're wondering if we can split this kind of session into multiple games.\n\nThanks😊",
      "votes": null
    },
    {
      "id": "2150691",
      "postDate": "02/19/2023 14:05:25",
      "content": "<p>I have also noticed this occurs in 2% of train users. How we deal with this depends on how Kaggle's API deals with this. For example, does Kaggle API give us both sessions? Or does Kaggle API remove the second session? I'm not sure how Kaggle API can give us both sessions without giving us information in the future (because Kaggle API currently gives all <code>level_group = '0-4'</code> which are both blue lines below and the second blue line is in the future of orange and green lines). I asked Kaggle <a href=\"https://www.kaggle.com/competitions/predict-student-performance-from-game-play/discussion/388479#2149959\" target=\"_blank\">here</a> to explain how their API handles this during inference.</p>\n<p><img src=\"https://raw.githubusercontent.com/cdeotte/Kaggle_Images/main/Feb-2023/leak_user2.png\" alt=\"\"></p>",
      "rawMarkdown": "I have also noticed this occurs in 2% of train users. How we deal with this depends on how Kaggle's API deals with this. For example, does Kaggle API give us both sessions? Or does Kaggle API remove the second session? I'm not sure how Kaggle API can give us both sessions without giving us information in the future (because Kaggle API currently gives all `level_group = '0-4'` which are both blue lines below and the second blue line is in the future of orange and green lines). I asked Kaggle [here][1] to explain how their API handles this during inference.\n\n![](https://raw.githubusercontent.com/cdeotte/Kaggle_Images/main/Feb-2023/leak_user2.png)\n\n[1]: https://www.kaggle.com/competitions/predict-student-performance-from-game-play/discussion/388479#2149959",
      "votes": null
    },
    {
      "id": "2150776",
      "postDate": "02/19/2023 15:20:49",
      "content": "<p>Hi <a href=\"https://www.kaggle.com/cdeotte\" target=\"_blank\">@cdeotte</a>,</p>\n<p>Let's wait for Kaggle's response. Thanks a lot for your quick reply😊.</p>",
      "rawMarkdown": "Hi @cdeotte,\n\nLet's wait for Kaggle's response. Thanks a lot for your quick reply😊.",
      "votes": null
    }
  ],
  "comments": [
    {
      "id": 2150691,
      "author_name": "cdeotte",
      "author_url": "",
      "post_date": "02/19/2023 14:05:25",
      "content": "<p>I have also noticed this occurs in 2% of train users. How we deal with this depends on how Kaggle's API deals with this. For example, does Kaggle API give us both sessions? Or does Kaggle API remove the second session? I'm not sure how Kaggle API can give us both sessions without giving us information in the future (because Kaggle API currently gives all <code>level_group = '0-4'</code> which are both blue lines below and the second blue line is in the future of orange and green lines). I asked Kaggle <a href=\"https://www.kaggle.com/competitions/predict-student-performance-from-game-play/discussion/388479#2149959\" target=\"_blank\">here</a> to explain how their API handles this during inference.</p>\n<p><img src=\"https://raw.githubusercontent.com/cdeotte/Kaggle_Images/main/Feb-2023/leak_user2.png\" alt=\"\"></p>",
      "votes": null,
      "replies": [
        {
          "id": 2150776,
          "author_name": "abaojiang",
          "author_url": "",
          "post_date": "02/19/2023 15:20:49",
          "content": "<p>Hi <a href=\"https://www.kaggle.com/cdeotte\" target=\"_blank\">@cdeotte</a>,</p>\n<p>Let's wait for Kaggle's response. Thanks a lot for your quick reply😊.</p>",
          "votes": null,
          "replies": []
        }
      ]
    }
  ],
  "raw_markdown_by_id": {
    "2150494": "Hi everyone,\n\nThere exist duplicated (`session_id`, `index`) pairs in `train.csv` due to some data errors. During the exploration, we also find out that `level` can go from high to low.\n\nConcretely, for those sessions with duplicated (`session_id`, `index`) pairs (65 sessions in total), there exist two sessions `20110509524426308` and `20110514230497096` having `level` goes from 22 (highest) to 0 (lowest), but `elapsed_time` continuously accumulated (as shown below). \n\n[![reverse-lv.png](https://i.postimg.cc/TPDjPXjZ/reverse-lv.png)](https://postimg.cc/QBjK6wyb)\n\nWe assume that it's because the corresponding student plays the game **twice in a row**.  To prove whether the assumption holds, we go to check [this file](https://github.com/fielddaylab/jo_wilder/blob/5082da4057f30dd0917c97a65f2aa7be13469f79/src/utils/simplelog.js). The code snippet below looks like the way how `session_id` is generated.\n\n```javascript\nself.session_id = UUIDint();\nself.persistent_session_id = getCookie(\"persistent_session_id\");\nif(!self.persistent_session_id)\n{\n    self.persistent_session_id = self.session_id;\n    setCookie(\"persistent_session_id\",self.persistent_session_id,100);\n}\n```\n\nWith this evidence, we think that students can play the game **multiple times in a row** with the same `session_id` if `persistent_session_id` has already existed.\n\nHence, we're wondering if we can split this kind of session into multiple games.\n\nThanks😊",
    "2150691": "I have also noticed this occurs in 2% of train users. How we deal with this depends on how Kaggle's API deals with this. For example, does Kaggle API give us both sessions? Or does Kaggle API remove the second session? I'm not sure how Kaggle API can give us both sessions without giving us information in the future (because Kaggle API currently gives all `level_group = '0-4'` which are both blue lines below and the second blue line is in the future of orange and green lines). I asked Kaggle [here][1] to explain how their API handles this during inference.\n\n![](https://raw.githubusercontent.com/cdeotte/Kaggle_Images/main/Feb-2023/leak_user2.png)\n\n[1]: https://www.kaggle.com/competitions/predict-student-performance-from-game-play/discussion/388479#2149959",
    "2150776": "Hi @cdeotte,\n\nLet's wait for Kaggle's response. Thanks a lot for your quick reply😊."
  },
  "source": "meta"
}