{
  "id": 9518,
  "title": "what's the limitation of Triskelion's features",
  "url": "/competitions/acquire-valued-shoppers-challenge/discussion/9518",
  "author_name": "",
  "post_date": "2014-06-23T01:51:17.520Z",
  "votes": 2,
  "comment_count": 9,
  "views": 3318,
  "content": "<p>All of our predictions are based on Triskelion's features, http://www.kaggle.com/c/acquire-valued-shoppers-challenge/forums/t/7688/feature-engineering-and-beat-the-benchmark-0-59347, and we stuck at 0.605 for quite a long time. I'm just wondering what's the limit if only Triskelion's features are used. What's the best score in that case? Maybe it's time for us to move on to look at the much larger data set. In general, I'm curious about how to find out whether it is the model or data set that is the bottleneck. Thank you very much and enjoy the world cup! We witnessed 10 goals today! Crazzzy!</p>",
  "messages": [
    {
      "id": "49389",
      "postDate": "06/23/2014 01:51:17",
      "content": "<p>All of our predictions are based on Triskelion's features, http://www.kaggle.com/c/acquire-valued-shoppers-challenge/forums/t/7688/feature-engineering-and-beat-the-benchmark-0-59347, and we stuck at 0.605 for quite a long time. I'm just wondering what's the limit if only Triskelion's features are used. What's the best score in that case? Maybe it's time for us to move on to look at the much larger data set. In general, I'm curious about how to find out whether it is the model or data set that is the bottleneck. Thank you very much and enjoy the world cup! We witnessed 10 goals today! Crazzzy!</p>",
      "rawMarkdown": "",
      "votes": null
    },
    {
      "id": "49410",
      "postDate": "06/23/2014 13:21:10",
      "content": "<p>I would suggest moving on.<br>Usually in my case, big leaderboard jumps occur just after implementing a new idea and any further optimizations to the new approach lead to only small additional improvements that saturate pretty quickly.</p>",
      "rawMarkdown": "",
      "votes": null
    },
    {
      "id": "49430",
      "postDate": "06/23/2014 19:05:38",
      "content": "<p>Achieving&nbsp; 0.605 using only&nbsp;Triskelion's features is amazing. what techniques&nbsp;have you used to achieve this. I am not able to move&nbsp;up from 0.583</p>\n\n<p>Thanks</p>",
      "rawMarkdown": "",
      "votes": null
    },
    {
      "id": "49445",
      "postDate": "06/24/2014 01:27:42",
      "content": "<p>[quote=Maverick;49430]</p>\n<p>Achieving&nbsp; 0.605 using only&nbsp;Triskelion's features is amazing. what techniques&nbsp;have you used to achieve this. I am not able to move&nbsp;up from 0.583</p>\n<p>Thanks</p>\n<p>[/quote]</p>\n<p>I trained a dozen of logistic regression models and average their predictions. Each model tweaks Triskelion's features differently. I'll share details if this method also gets good scores in private leaderboard after contest closes. : )</p>",
      "rawMarkdown": "",
      "votes": null
    },
    {
      "id": "49535",
      "postDate": "06/25/2014 06:07:33",
      "content": "<p>I did roughly the same using the idea of Random Forest with Logistic Regression as the base learner. It ends up ~0.607 with a few features from my side. What is really interesting is that, with these same features, the original Random Forest or Gradient Boosting Machine can yield higher local validation score than LR based Random Forest, but really worse LB score (also, quite a large diff between the LB and local validation of those sophisticated model). I suspect that it is due to the diff between the training and testing data, and thus RF/GBM suffer from overfitting.</p>\n\n<p>That being said, I quite wonder are there guys have success with Random Forest or Gradient Boosting Machine? Or these models are not good matches for this comp due to the diff between the training and testing data?</p>",
      "rawMarkdown": "",
      "votes": null
    },
    {
      "id": "49543",
      "postDate": "06/25/2014 08:24:46",
      "content": "<p>Logit is giving better performance on LB because you might be avoiding overfitting using regularization. That is not the case with RF or GBM.</p>\n\n<p>There are many categories/brands in TestHistory which are not present in TrainHistory.</p>\n\n<p>So as @BreakfastPirate noted in a separate thread, the challenge is also to &#8220;Figure out how I will respond to a discount on ice cream &#8211; given your response to a discount on deodorant.&#8221;</p>\n\n<p>If you split your training and validation set on brands/categories, the CV scores of RF/GBM are far worse.</p>",
      "rawMarkdown": "",
      "votes": null
    },
    {
      "id": "49581",
      "postDate": "06/25/2014 17:48:50",
      "content": "<p>I have&nbsp;0.60181 from a small subset of the Triskellion features. Even a very coarsely fitted gbm overfits. I had some success with glmboost, although it couldn't quite match my logistic regression approach. I think I need a new feature. I'm surprised that I can't get anything out of market or chain on the test set, although they do well on train.</p>",
      "rawMarkdown": "",
      "votes": null
    },
    {
      "id": "49585",
      "postDate": "06/25/2014 20:08:50",
      "content": "<p>[quote=yr;49535]</p>\n<p>That being said, I quite wonder are there guys have success with Random Forest or Gradient Boosting Machine? Or these models are not good matches for this comp due to the diff between the training and testing data?</p>\n<p>[/quote]</p>\n\n<p>I used Gradient Boosted Trees with very shallow trees as the base estimators&nbsp;(around 5 deep).</p>\n<p>but I like the random logistic regression idea, I think I'll try that too.</p>",
      "rawMarkdown": "",
      "votes": null
    },
    {
      "id": "49615",
      "postDate": "06/26/2014 11:13:55",
      "content": "<p>to Selfish Gene</p>\n<p>Can you tell more details about how you applied the Gradient Boosted Trees. I have tested this method using sklearn with the default parameters and the Trischlikons's feature but it is overfitted and the score is around 0.56. Many Thanks.</p>",
      "rawMarkdown": "",
      "votes": null
    },
    {
      "id": "49619",
      "postDate": "06/26/2014 12:57:39",
      "content": "<p>well, first, try changing the default parameters to smaller trees.</p>\n<p>you can control that by 'max_depth' or 'min_samples_leaf'. also, I would suggest changing 'subsample' to around 0.7. another parameter you should try and keep small relative to the amount of features used is 'max_features'.<br><br></p>\n<p>secondly, what I used for final prediction is probably far from optimal since I don't invest much of my time in that direction. so in that regard, the 'random logistic regression' approach described above sounds a little more promising.<br><br></p>\n<p>mind you, I didn't try GBT with Triskelion's features, but rather I've tried a large amount of other feature sets I've concocted. but for all feature sets I did try, I was forced to use very simple learners to achieve reasonable results.<br><br>Also, on a more general note, in my humble and inexperienced opinion, the final prediction phase is not very important at almost any learning problem. almost all 'standard' learners (SVM, shallow NNs, Decision Trees) have practically identical hypothesis spaces, and while the training process is somewhat different for each one, I think that until recently (until the emergence of deep learning), the training algorithms for them were relatively poor at their tasks of choosing the 'best hypothesis' from that space (&quot;best&quot; in statistical generalization terms, not in optimization loss terms).<br>Also, from my limited practical experience, when hyper parameters are optimized for each of the standard learners separately, the performances they achieve are approximately the same. this is why optimizing the final learner is usually one of the last things I do, and most of my time is dedicated to trying to view the data in a different way, and extract useful features accordingly.</p>",
      "rawMarkdown": "",
      "votes": null
    }
  ],
  "comments": [
    {
      "id": 49410,
      "author_name": "selfishgene",
      "author_url": "",
      "post_date": "06/23/2014 13:21:10",
      "content": "<p>I would suggest moving on.<br>Usually in my case, big leaderboard jumps occur just after implementing a new idea and any further optimizations to the new approach lead to only small additional improvements that saturate pretty quickly.</p>",
      "votes": null,
      "replies": []
    },
    {
      "id": 49430,
      "author_name": "anshul",
      "author_url": "",
      "post_date": "06/23/2014 19:05:38",
      "content": "<p>Achieving&nbsp; 0.605 using only&nbsp;Triskelion's features is amazing. what techniques&nbsp;have you used to achieve this. I am not able to move&nbsp;up from 0.583</p>\n\n<p>Thanks</p>",
      "votes": null,
      "replies": []
    },
    {
      "id": 49445,
      "author_name": "jiweiliu",
      "author_url": "",
      "post_date": "06/24/2014 01:27:42",
      "content": "<p>[quote=Maverick;49430]</p>\n<p>Achieving&nbsp; 0.605 using only&nbsp;Triskelion's features is amazing. what techniques&nbsp;have you used to achieve this. I am not able to move&nbsp;up from 0.583</p>\n<p>Thanks</p>\n<p>[/quote]</p>\n<p>I trained a dozen of logistic regression models and average their predictions. Each model tweaks Triskelion's features differently. I'll share details if this method also gets good scores in private leaderboard after contest closes. : )</p>",
      "votes": null,
      "replies": []
    },
    {
      "id": 49535,
      "author_name": "chenglongchen",
      "author_url": "",
      "post_date": "06/25/2014 06:07:33",
      "content": "<p>I did roughly the same using the idea of Random Forest with Logistic Regression as the base learner. It ends up ~0.607 with a few features from my side. What is really interesting is that, with these same features, the original Random Forest or Gradient Boosting Machine can yield higher local validation score than LR based Random Forest, but really worse LB score (also, quite a large diff between the LB and local validation of those sophisticated model). I suspect that it is due to the diff between the training and testing data, and thus RF/GBM suffer from overfitting.</p>\n\n<p>That being said, I quite wonder are there guys have success with Random Forest or Gradient Boosting Machine? Or these models are not good matches for this comp due to the diff between the training and testing data?</p>",
      "votes": null,
      "replies": []
    },
    {
      "id": 49543,
      "author_name": "hrishi",
      "author_url": "",
      "post_date": "06/25/2014 08:24:46",
      "content": "<p>Logit is giving better performance on LB because you might be avoiding overfitting using regularization. That is not the case with RF or GBM.</p>\n\n<p>There are many categories/brands in TestHistory which are not present in TrainHistory.</p>\n\n<p>So as @BreakfastPirate noted in a separate thread, the challenge is also to &#8220;Figure out how I will respond to a discount on ice cream &#8211; given your response to a discount on deodorant.&#8221;</p>\n\n<p>If you split your training and validation set on brands/categories, the CV scores of RF/GBM are far worse.</p>",
      "votes": null,
      "replies": []
    },
    {
      "id": 49581,
      "author_name": "jfkingiii",
      "author_url": "",
      "post_date": "06/25/2014 17:48:50",
      "content": "<p>I have&nbsp;0.60181 from a small subset of the Triskellion features. Even a very coarsely fitted gbm overfits. I had some success with glmboost, although it couldn't quite match my logistic regression approach. I think I need a new feature. I'm surprised that I can't get anything out of market or chain on the test set, although they do well on train.</p>",
      "votes": null,
      "replies": []
    },
    {
      "id": 49585,
      "author_name": "selfishgene",
      "author_url": "",
      "post_date": "06/25/2014 20:08:50",
      "content": "<p>[quote=yr;49535]</p>\n<p>That being said, I quite wonder are there guys have success with Random Forest or Gradient Boosting Machine? Or these models are not good matches for this comp due to the diff between the training and testing data?</p>\n<p>[/quote]</p>\n\n<p>I used Gradient Boosted Trees with very shallow trees as the base estimators&nbsp;(around 5 deep).</p>\n<p>but I like the random logistic regression idea, I think I'll try that too.</p>",
      "votes": null,
      "replies": []
    },
    {
      "id": 49615,
      "author_name": "qiujiqiong",
      "author_url": "",
      "post_date": "06/26/2014 11:13:55",
      "content": "<p>to Selfish Gene</p>\n<p>Can you tell more details about how you applied the Gradient Boosted Trees. I have tested this method using sklearn with the default parameters and the Trischlikons's feature but it is overfitted and the score is around 0.56. Many Thanks.</p>",
      "votes": null,
      "replies": []
    },
    {
      "id": 49619,
      "author_name": "selfishgene",
      "author_url": "",
      "post_date": "06/26/2014 12:57:39",
      "content": "<p>well, first, try changing the default parameters to smaller trees.</p>\n<p>you can control that by 'max_depth' or 'min_samples_leaf'. also, I would suggest changing 'subsample' to around 0.7. another parameter you should try and keep small relative to the amount of features used is 'max_features'.<br><br></p>\n<p>secondly, what I used for final prediction is probably far from optimal since I don't invest much of my time in that direction. so in that regard, the 'random logistic regression' approach described above sounds a little more promising.<br><br></p>\n<p>mind you, I didn't try GBT with Triskelion's features, but rather I've tried a large amount of other feature sets I've concocted. but for all feature sets I did try, I was forced to use very simple learners to achieve reasonable results.<br><br>Also, on a more general note, in my humble and inexperienced opinion, the final prediction phase is not very important at almost any learning problem. almost all 'standard' learners (SVM, shallow NNs, Decision Trees) have practically identical hypothesis spaces, and while the training process is somewhat different for each one, I think that until recently (until the emergence of deep learning), the training algorithms for them were relatively poor at their tasks of choosing the 'best hypothesis' from that space (&quot;best&quot; in statistical generalization terms, not in optimization loss terms).<br>Also, from my limited practical experience, when hyper parameters are optimized for each of the standard learners separately, the performances they achieve are approximately the same. this is why optimizing the final learner is usually one of the last things I do, and most of my time is dedicated to trying to view the data in a different way, and extract useful features accordingly.</p>",
      "votes": null,
      "replies": []
    }
  ],
  "raw_markdown_by_id": {
    "49389": "",
    "49410": "",
    "49430": "",
    "49445": "",
    "49535": "",
    "49543": "",
    "49581": "",
    "49585": "",
    "49615": "",
    "49619": ""
  },
  "source": "meta"
}