Commit Graph

7 Commits

Author SHA1 Message Date
Christian Lorentzen dda6337b2c
ENH scaling of LogisticRegression loss as 1/n * LinearModelLoss (#26721)
Co-authored-by: Guillaume Lemaitre <g.lemaitre58@gmail.com>
2023-10-06 23:49:37 +02:00
Adrin Jalali 42173fdb34
MNT add isort to ruff's rules (#26649) 2023-06-21 17:50:07 +02:00
Yaroslav Halchenko b680a9e78e
DOC codespell fixes (#26422)
Co-authored-by: adrinjalali <adrin.jalali@gmail.com>
2023-06-01 12:40:23 +00:00
Christian Lorentzen ff9344f3d8
FEA add (single) Cholesky Newton solver to GLMs (#24637)
* FEA add NewtonSolver, CholeskyNewtonSolver and QRCholeskyNewtonSolver

* ENH better singular hessian special solve

* CLN fix some typos found by reviewer

* TST assert ConvergenceWarning is raised

* MNT add BaseCholeskyNewtonSolver

* WIP colinear design in GLMs

* FIX _solve_singular

* FIX false unpacking in

* TST add tests for unpenalized GLMs

* TST fix solutions of glm_dataset

* ENH add SVDFallbackSolver

* CLN remove SVDFallbackSolver

* ENH use gradient step for singular hessians

* ENH print iteration number in warnings

* TST improve test_linalg_warning_with_newton_solver

* CLN LinAlgWarning fron scipy.linalg

* ENH more robust hessian

* ENH increase maxls for lbfgs to make it more robust

* ENH add hessian_warning for too many negative hessian values

* CLN some warning messages

* ENH add lbfgs_step

* ENH use lbfgs_step for hessian_warning

* TST make them pass

* TST tweek rtol for lbfgs

* TST add rigoros test for GLMs

* TST improve test_warm_start

* ENH improve lbfgs options for better convergence

* CLN fix test_warm_start

* TST fix assert singular values in datasets

* CLN address most review comments

* ENH enable more vebosity levels for lbfgs

* DOC add whatsnew

* CLN remove xfail and clean a bit

* CLN docstring about minimum norm

* More informative repr for the glm_dataset fixture cases

* Forgot to run black

* CLN remove unnecessary filterwarnings

* CLN address review comments

* Trigger [all random seeds] on the following tests:
test_glm_regression
test_glm_regression_hstacked_X
test_glm_regression_vstacked_X
test_glm_regression_unpenalized
test_glm_regression_unpenalized_hstacked_X
test_glm_regression_unpenalized_vstacked_X
test_warm_start

* CLN add comment for lbfgs ftol=64 * machine precision

* CLN XXX code comment

* Trigger [all random seeds] on the following tests:

test_glm_regression
test_glm_regression_hstacked_X
test_glm_regression_vstacked_X
test_glm_regression_unpenalized
test_glm_regression_unpenalized_hstacked_X
test_glm_regression_unpenalized_vstacked_X
test_warm_start

* CLN link issue and remove code snippet in comment

* Trigger [all random seeds] on the following tests:

test_glm_regression
test_glm_regression_hstacked_X
test_glm_regression_vstacked_X
test_glm_regression_unpenalized
test_glm_regression_unpenalized_hstacked_X
test_glm_regression_unpenalized_vstacked_X
test_warm_start

* CLN add catch_warnings

* Trigger [all random seeds] on the following tests:

test_glm_regression
test_glm_regression_hstacked_X
test_glm_regression_vstacked_X
test_glm_regression_unpenalized
test_glm_regression_unpenalized_hstacked_X
test_glm_regression_unpenalized_vstacked_X
test_warm_start

* Trigger [all random seeds] on the following tests:

test_glm_regression
test_glm_regression_hstacked_X
test_glm_regression_vstacked_X
test_glm_regression_unpenalized
test_glm_regression_unpenalized_hstacked_X
test_glm_regression_unpenalized_vstacked_X
test_warm_start

* [all random seeds]

test_glm_regression
test_glm_regression_hstacked_X
test_glm_regression_vstacked_X
test_glm_regression_unpenalized
test_glm_regression_unpenalized_hstacked_X
test_glm_regression_unpenalized_vstacked_X
test_warm_start

* Trigger with -Werror [all random seeds]

test_glm_regression
test_glm_regression_hstacked_X
test_glm_regression_vstacked_X
test_glm_regression_unpenalized
test_glm_regression_unpenalized_hstacked_X
test_glm_regression_unpenalized_vstacked_X
test_warm_start

* ENH increase maxls to 50

* [all random seeds]

test_glm_regression
test_glm_regression_hstacked_X
test_glm_regression_vstacked_X
test_glm_regression_unpenalized
test_glm_regression_unpenalized_hstacked_X
test_glm_regression_unpenalized_vstacked_X
test_warm_start

* Revert "Trigger with -Werror [all random seeds]"

This reverts commit 99f4cf99ca.

* TST add catch_warnings to filterwarnings

* TST adapt tests for newton solvers

* CLN cleaner gradient step with gradient_times_newton

* DOC add whatsnew

* ENH always use lbfgs as fallback

* TST adapt rtol

* TST fix test_linalg_warning_with_newton_solver

* CLN address some review comments

* Improve tests related to convergence warning on collinear data

* overfit -> fit

* Typo in comment

* Apply suggestions from code review

* ENH fallback_lbfgs_solve
- Do not use lbfgs steps, fall back complete to lbfgs

* ENH adapt rtol

* Improve test_linalg_warning_with_newton_solver

* Better comments

* Fixed Hessian casing and improved warning messages

* [all random seeds]

test_linalg_warning_with_newton_solver

* Ignore ConvergenceWarnings for now if convergence is good

* CLN remove counting of warnings

* ENH fall back to lbfgs if line search did not converge

* DOC better comment on performance bottleneck

* Update GLM related examples to use the new solver

* CLN address reviewer comments

* EXA improve some wordings

* CLN do not pop "solver in parameter constraints

* CLN fix typos

* DOC fix docstring

* CLN remove solver newton-qr-cholesky

* DOC update PR number in whatsnew

* CLN address review comments

* CLN remove unnecessary catch_warnings

* CLN address some review comments

* DOC more precise whatsnew

* CLN use init_zero_coef

* CLN use and test init_zero_coef

* CLN address some review comments

* CLN mark NewtonSolver as private by leading underscore

* CLN exact comments for inner_solve

* TST add test_newton_solver_verbosity

* TST extend test_newton_solver_verbosity

* TST logic in test_glm_regression_unpenalized

* TST use count_nonzero

* CLN remove super rare line search checks

* MNT move Newton solver to new file _newton_solver.py

Co-authored-by: Olivier Grisel <olivier.grisel@ensta.org>
Co-authored-by: Julien Jerphanion <git@jjerphan.xyz>
2022-10-24 22:16:45 +02:00
Tom Dupré la Tour 59473a91d4
FIX logistic regression with newton_cg solver, a single feature, and an intercept (#23608) 2022-06-15 11:44:46 +02:00
Christian Lorentzen 75a94f518f
ENH migrate GLMs / TweedieRegressor to linear loss (#22548)
Co-authored-by: Olivier Grisel <olivier.grisel@ensta.org>
Co-authored-by: Thomas J. Fan <thomasjpfan@gmail.com>
2022-03-28 19:20:01 -04:00
Christian Lorentzen d8d5637cfe
ENH Loss module LogisticRegression (#21808)
* ENH replace loss in linear logistic regression

* MNT remove logistic regression's own loss functions

* CLN remove comment

* DOC add whatsnew

* DOC more precise whatsnew

* CLN restore improvements of #19571

* ENH improve fit time by separating mat-vec in multiclass

* DOC update whatsnew

* not only a bit ;-)

* DOC note memory benefit for multiclass case

* trigger CI

* trigger CI

* CLN rename variable to hess_prod

* DOC address reviewer comments

* CLN remove C/F for 1d arrays

* CLN rename to gradient_per_sample

* CLN rename alpha to l2_reg_strength

* ENH respect F-contiguity

* TST fix sag tests

* CLN rename to LinearModelLoss

* CLN improve comments according to review

* CLN liblinear comment

* TST add / move test to test_linear_loss.py

* CLN comment placement

* trigger CI

* CLN add comment about contiguity of raw_prediction

* DEBUG debian-32

* DEBUG test only linear_model module

* Revert "DEBUG test only linear_model module"

This reverts commit 9d6e6987ff.

* DEBUG test -k LogisticRegression

* Revert "DEBUG test -k LogisticRegression"

This reverts commit c203167041.

* Revert "DEBUG debian-32"

This reverts commit ef0b98f232.

* DEBUG set n_jobs=1

* Revert "DEBUG set n_jobs=1"

This reverts commit c7f6f72a8c.

* CLN always use n_threads=1

* CLN address review

* ENH avoid array copy

* CLN simplify L2 norm

* CLN rename w to weights

* CLN rename to hessian_sum and hx_sum

* CLN address review

* CLN rename to init arg and attribute to base_loss

* CLN apply review suggestion

Co-authored-by: Alexandre Gramfort <alexandre.gramfort@m4x.org>

* CLN base_loss instead of _loss attribute

Co-authored-by: Olivier Grisel <olivier.grisel@ensta.org>
Co-authored-by: Alexandre Gramfort <alexandre.gramfort@m4x.org>
2022-02-14 11:55:17 +01:00