{"action":"created","issue":{"url":"https://api.github.com/repos/scikit-learn/scikit-learn/issues/8397","repository_url":"https://api.github.com/repos/scikit-learn/scikit-learn","labels_url":"https://api.github.com/repos/scikit-learn/scikit-learn/issues/8397/labels{/name}","comments_url":"https://api.github.com/repos/scikit-learn/scikit-learn/issues/8397/comments","events_url":"https://api.github.com/repos/scikit-learn/scikit-learn/issues/8397/events","html_url":"https://github.com/scikit-learn/scikit-learn/pull/8397","id":208668201,"number":8397,"title":"[MRG] Reduce default learning rate for tSNE to 200.0","user":{"login":"iosonofabio","id":1200640,"avatar_url":"https://avatars.githubusercontent.com/u/1200640?v=3","gravatar_id":"","url":"https://api.github.com/users/iosonofabio","html_url":"https://github.com/iosonofabio","followers_url":"https://api.github.com/users/iosonofabio/followers","following_url":"https://api.github.com/users/iosonofabio/following{/other_user}","gists_url":"https://api.github.com/users/iosonofabio/gists{/gist_id}","starred_url":"https://api.github.com/users/iosonofabio/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/iosonofabio/subscriptions","organizations_url":"https://api.github.com/users/iosonofabio/orgs","repos_url":"https://api.github.com/users/iosonofabio/repos","events_url":"https://api.github.com/users/iosonofabio/events{/privacy}","received_events_url":"https://api.github.com/users/iosonofabio/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":21,"created_at":"2017-02-18T20:09:23Z","updated_at":"2017-02-22T10:21:48Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/scikit-learn/scikit-learn/pulls/8397","html_url":"https://github.com/scikit-learn/scikit-learn/pull/8397","diff_url":"https://github.com/scikit-learn/scikit-learn/pull/8397.diff","patch_url":"https://github.com/scikit-learn/scikit-learn/pull/8397.patch"},"body":"#### Reference Issue\r\nFixes #6204 and may alleviate the need for #7215.\r\n\r\n#### What does this implement/fix? Explain your changes.\r\n- Changed the default learning rate of tSNE to 200.0 (from 1000.0)\r\n- Added a detailed description in the docstring of how artifacts of too high/low learning rates may look like.\r\n\r\n#### Any other comments?\r\nNote: 200 is the standard learning rate of the official tSNE as well:\r\n\r\nhttps://github.com/dominiek/python-bhtsne/blob/master/src/tsne.cpp#L72\r\nhttps://github.com/dominiek/python-bhtsne/blob/master/src/tsne.cpp#L158"},"comment":{"url":"https://api.github.com/repos/scikit-learn/scikit-learn/issues/comments/281628367","html_url":"https://github.com/scikit-learn/scikit-learn/pull/8397#issuecomment-281628367","issue_url":"https://api.github.com/repos/scikit-learn/scikit-learn/issues/8397","id":281628367,"user":{"login":"lesteve","id":1680079,"avatar_url":"https://avatars.githubusercontent.com/u/1680079?v=3","gravatar_id":"","url":"https://api.github.com/users/lesteve","html_url":"https://github.com/lesteve","followers_url":"https://api.github.com/users/lesteve/followers","following_url":"https://api.github.com/users/lesteve/following{/other_user}","gists_url":"https://api.github.com/users/lesteve/gists{/gist_id}","starred_url":"https://api.github.com/users/lesteve/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/lesteve/subscriptions","organizations_url":"https://api.github.com/users/lesteve/orgs","repos_url":"https://api.github.com/users/lesteve/repos","events_url":"https://api.github.com/users/lesteve/events{/privacy}","received_events_url":"https://api.github.com/users/lesteve/received_events","type":"User","site_admin":false},"created_at":"2017-02-22T10:21:48Z","updated_at":"2017-02-22T10:21:48Z","body":"It feels like having a default to 200 is the right thing to do even if there is a 2x-3x slowdown. Having a default value for which the algorithm does not converge is less than great. It would be interesting to have others opinion to make sure there is consensus on this @jnothman @ogrisel @GaelVaroquaux @amueller @agramfort.\r\n\r\nIn case there is consensus, I think what is left to do is how to handle the change of the default value. Here are a few ways I can see:\r\n\r\n* change the default to 200 and documenting prominently the change in the changelog. The easiest in term of maintenance but the most surprising to the users that probably do not read the changelog before upgrading.\r\n\r\n* learning_rate defaults to a sentinel value and warn only if `learning_rate==sentinel_value` for 2 releases. Getting rid of the warning is possible by setting learning_rate explicitly (maybe we can find a better mechanism of disabling the warning). Easy in term of maintenance. Encouraging users to set an explicit learning_rate may not be that great since it can be considered as an implementation detail that most users do not want to know about.\r\n\r\n* suggestion from @ogrisel: FutureWarning that the default will change in a future release. Leave the default to 1000 for 1 or 2 releases and then change it. Probably the cleanest way in term of not surprising users but it will take a while to reach users, which is not so great if we think 200 is the right default.\r\n\r\nAs usual this is a trade-off trying to balance many things among which user experience and cost of maintenance."}}
{"actor":{"display_login":"lesteve"}}