{"action":"created","issue":{"url":"https://api.github.com/repos/apache/spark/issues/14547","repository_url":"https://api.github.com/repos/apache/spark","labels_url":"https://api.github.com/repos/apache/spark/issues/14547/labels{/name}","comments_url":"https://api.github.com/repos/apache/spark/issues/14547/comments","events_url":"https://api.github.com/repos/apache/spark/issues/14547/events","html_url":"https://github.com/apache/spark/pull/14547","id":170038582,"number":14547,"title":"[SPARK-16718][MLlib] gbm-style treeboost","user":{"login":"vlad17","id":5834964,"avatar_url":"https://avatars.githubusercontent.com/u/5834964?v=3","gravatar_id":"","url":"https://api.github.com/users/vlad17","html_url":"https://github.com/vlad17","followers_url":"https://api.github.com/users/vlad17/followers","following_url":"https://api.github.com/users/vlad17/following{/other_user}","gists_url":"https://api.github.com/users/vlad17/gists{/gist_id}","starred_url":"https://api.github.com/users/vlad17/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/vlad17/subscriptions","organizations_url":"https://api.github.com/users/vlad17/orgs","repos_url":"https://api.github.com/users/vlad17/repos","events_url":"https://api.github.com/users/vlad17/events{/privacy}","received_events_url":"https://api.github.com/users/vlad17/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":35,"created_at":"2016-08-08T22:14:59Z","updated_at":"2016-10-23T00:34:49Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/apache/spark/pulls/14547","html_url":"https://github.com/apache/spark/pull/14547","diff_url":"https://github.com/apache/spark/pull/14547.diff","patch_url":"https://github.com/apache/spark/pull/14547.patch"},"body":"## What changes were proposed in this pull request?\r\n\r\n#### TreeBoost\r\nThis change adds TreeBoost functionality to `GBTClassifer` and `GBTRegressor`. The main change is that leaf nodes now make a prediction which optimizes the loss function, rather than always using the mean label (which is only optimal in the case of variance-based impurity).\r\n\r\n#### Changes: L2 and Logistic loss-based impurities\r\n\r\nThis changes the defaults to use the loss-based impurity rather than the required variance.\r\n\r\nI made this change only for L2 loss and logistic loss (adding some aliases to the names as well for parity with R's implementation, GBM). These two functions have leaf predictions that can be computed within the framework of the current impurity API. Other loss functions will require API modification, which should be its own change, SPARK-16728.\r\n\r\nNote that because loss-based impurity with L1 loss is NOT supported, the default behavior for the GBTRegressor is to use the variance-based impurity (since the aformentioned combination throws).\r\n\r\n## How was this patch tested?\r\n\r\n#### Correctness\r\n\r\nI tested defaults parameter values and new settings for the parameters with new unit tests.\r\n\r\n#### Accuracy\r\n\r\nExample prediction problem with [UCI half of million-song dataset](http://archive.ics.uci.edu/ml/datasets/YearPredictionMSD). \r\n\r\nThis code is a pretty aesthetic change: the only algorithm that differed is the logistic loss one, and the accuracy is identical to that of variance. The difference could only visible in the raw prediction (and thus AUC), since leaf predictions for minimal logistic loss and the mean produced equivalent outcomes after thresholding.\r\n\r\nWith 700 trees and 0.001 shrinkage, runtime is nearly equivalent (within 2%) [script and output here](https://gist.github.com/vlad17/c22bb4e6679c9e65fcc3e93a92bd3c30).\r\n\r\n[GBM run for comparison](https://gist.github.com/vlad17/eb71cdbcc5e4f1ad891e482a84c8d82b) Everything run on my machine\r\n\r\n\r\n"},"comment":{"url":"https://api.github.com/repos/apache/spark/issues/comments/255562397","html_url":"https://github.com/apache/spark/pull/14547#issuecomment-255562397","issue_url":"https://api.github.com/repos/apache/spark/issues/14547","id":255562397,"user":{"login":"AmplabJenkins","id":4031291,"avatar_url":"https://avatars.githubusercontent.com/u/4031291?v=3","gravatar_id":"","url":"https://api.github.com/users/AmplabJenkins","html_url":"https://github.com/AmplabJenkins","followers_url":"https://api.github.com/users/AmplabJenkins/followers","following_url":"https://api.github.com/users/AmplabJenkins/following{/other_user}","gists_url":"https://api.github.com/users/AmplabJenkins/gists{/gist_id}","starred_url":"https://api.github.com/users/AmplabJenkins/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/AmplabJenkins/subscriptions","organizations_url":"https://api.github.com/users/AmplabJenkins/orgs","repos_url":"https://api.github.com/users/AmplabJenkins/repos","events_url":"https://api.github.com/users/AmplabJenkins/events{/privacy}","received_events_url":"https://api.github.com/users/AmplabJenkins/received_events","type":"User","site_admin":false},"created_at":"2016-10-23T00:34:49Z","updated_at":"2016-10-23T00:34:49Z","body":"Test FAILed.\nRefer to this link for build results (access rights to CI server needed): \nhttps://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/67400/\nTest FAILed."}}
{"actor":{"display_login":"AmplabJenkins"}}