-
-
Notifications
You must be signed in to change notification settings - Fork 25.8k
[MRG] Implement fitting intercept with sparse_cg
solver in Ridge regression
#13336
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[MRG] Implement fitting intercept with sparse_cg
solver in Ridge regression
#13336
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@btel Could you add an entry in what's new as well.
584709b
to
86248d1
Compare
@btel you have pep8 errors cf. circle lint |
1b8a2e8
to
c3c6e8f
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM (although the addition of _ridge_regression is ugly).
+1 for merge.
Merging.
@GaelVaroquaux I am happy to discuss/implement prettier solutions for propagating |
one solution would be to change the current design so Ridge just calls
ridge_regression and all prepare_data and set_intercept code is done in
ridge_regression not any more in the object.
… |
@agramfort sounds good, but it will require a good deal of refactoring. |
…gression (scikit-learn#13336) * add skeleton for fit_intercept with sparse_cg * fix sparse_cg solver with fit_intercept=True * fix test * linting * add what's new entry * remove X_scale and X_offset from public interface of ridge_regression * reformat if clause * fixed linting issues * add comments on about the conditions of different code branches * update warning * remove whitespace * add extra checks in the test of ridge with fit_intercept * remove unused argument
…Ridge regression (scikit-learn#13336)" This reverts commit 3ed0547.
…Ridge regression (scikit-learn#13336)" This reverts commit 3ed0547.
…gression (scikit-learn#13336) * add skeleton for fit_intercept with sparse_cg * fix sparse_cg solver with fit_intercept=True * fix test * linting * add what's new entry * remove X_scale and X_offset from public interface of ridge_regression * reformat if clause * fixed linting issues * add comments on about the conditions of different code branches * update warning * remove whitespace * add extra checks in the test of ridge with fit_intercept * remove unused argument
Reference Issues/PRs
See also #470
It follows the same trick as introduced in PR #13279 by @agramfort
What does this implement/fix? Explain your changes.
This implements fitting intercept with
sparse_cg
solver in Ridge regression (i.e. whenfit_intercept==True
) for sparse inputs. It also means that both sparse and dense cases give the same result.Any other comments?
Important: This PR changes the auto-selected solver (
solver='auto'
) fromsag
tosparse_cg
whenfit_intercept==True
and input is sparse.There are still problems with the code:
'auto' mode in ridge_regression function may trigger wrong solvers (for example, when inputs is sparse and sample_weight is passed)
Warning message about changing the solver is not fully informative/correct. For example, user might choose the
sparse_cg
solver instead of going thesag
way.The estimator object is not informed about the fact that the solver was changed (or which solver was selected by
auto
)They are not related to this PR and will be fixed in another PR.