From 93ed56eb9447307844c485158a3bf0da4e042779 Mon Sep 17 00:00:00 2001 From: mathurinm Date: Wed, 2 Mar 2022 13:49:53 +0100 Subject: [PATCH 01/11] Add inertially accelerated cd --- apcd.py | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 apcd.py diff --git a/apcd.py b/apcd.py new file mode 100644 index 00000000..b4593815 --- /dev/null +++ b/apcd.py @@ -0,0 +1,32 @@ +from celer import Lasso +from cd_solver import Problem +import cd_solver +from numpy.linalg import norm +import numpy as np +from benchopt.datasets import make_correlated_data + + +X, y, _ = make_correlated_data(random_state=1) + +n_samples, n_features = X.shape +alpha = norm(X.T @ y, ord=np.inf) / 10 / n_samples + + +f = ["square"] * n_samples +N = n_features +Af = X +bf = y +cf = [0.5 / n_samples] * n_samples +g = ["abs"] * n_features +cg = [alpha] * n_features +pb = Problem(N=N, f=f, Af=Af, bf=bf, cf=cf, g=g, cg=cg) + + +cd_solver.cd_solver_.coordinate_descent( + pb, max_iter=1000) + +print(pb.sol) + + +clf = Lasso(fit_intercept=False, alpha=alpha).fit(X, y) +print(clf.coef_) From c6ef8ce27c235cca2a84d2f4e00c3fc09df3030d Mon Sep 17 00:00:00 2001 From: mathurinm Date: Wed, 2 Mar 2022 13:57:22 +0100 Subject: [PATCH 02/11] add correct file --- apcd.py | 32 -------------------------------- solvers/apcd.py | 36 ++++++++++++++++++++++++++++++++++++ 2 files changed, 36 insertions(+), 32 deletions(-) delete mode 100644 apcd.py create mode 100644 solvers/apcd.py diff --git a/apcd.py b/apcd.py deleted file mode 100644 index b4593815..00000000 --- a/apcd.py +++ /dev/null @@ -1,32 +0,0 @@ -from celer import Lasso -from cd_solver import Problem -import cd_solver -from numpy.linalg import norm -import numpy as np -from benchopt.datasets import make_correlated_data - - -X, y, _ = make_correlated_data(random_state=1) - -n_samples, n_features = X.shape -alpha = norm(X.T @ y, ord=np.inf) / 10 / n_samples - - -f = ["square"] * n_samples -N = n_features -Af = X -bf = y -cf = [0.5 / n_samples] * n_samples -g = ["abs"] * n_features -cg = [alpha] * n_features -pb = Problem(N=N, f=f, Af=Af, bf=bf, cf=cf, g=g, cg=cg) - - -cd_solver.cd_solver_.coordinate_descent( - pb, max_iter=1000) - -print(pb.sol) - - -clf = Lasso(fit_intercept=False, alpha=alpha).fit(X, y) -print(clf.coef_) diff --git a/solvers/apcd.py b/solvers/apcd.py new file mode 100644 index 00000000..3716dfa4 --- /dev/null +++ b/solvers/apcd.py @@ -0,0 +1,36 @@ +from benchopt import BaseSolver, safe_import_context + +with safe_import_context() as ctx: + import cd_solver + + +class Solver(BaseSolver): + """Accelerated proximal coordinate descent by Fercoq and Bianchi.""" + name = 'APCD' + stop_strategy = 'iteration' + + install_cmd = "conda" + requirements = [ + "pip:git+https://bitbucket.org/mathurinm/" + "cd_solver.git@module_structure"] + + def set_objective(self, X, y, lmbd, fit_intercept): + self.X, self.y, self.lmbd = X, y, lmbd + self.fit_intercept = fit_intercept + + def run(self, n_iter): + n_samples, n_features = self.X.shape + f = ["square"] * n_samples + N = n_features + Af = self.X + bf = self.y + cf = [0.5] * n_samples + g = ["abs"] * n_features + cg = [self.lmbd] * n_features + pb = cd_solver.Problem(N=N, f=f, Af=Af, bf=bf, cf=cf, g=g, cg=cg) + cd_solver.cd_solver_.coordinate_descent( + pb, max_iter=n_iter) + self.w = pb.sol + + def get_result(self): + return self.w From f8d2419d1f0652e025ffd01235c265797f603d83 Mon Sep 17 00:00:00 2001 From: mathurinm Date: Wed, 2 Mar 2022 14:28:03 +0100 Subject: [PATCH 03/11] trigger_ci From 670db4d8fccff61866649ab1604ade2256281b04 Mon Sep 17 00:00:00 2001 From: mathurinm Date: Wed, 2 Mar 2022 14:54:48 +0100 Subject: [PATCH 04/11] ci trigger again From f0912b15e81cded4b897e0ef57e0b0757dcaa1b7 Mon Sep 17 00:00:00 2001 From: mathurinm Date: Wed, 2 Mar 2022 15:26:33 +0100 Subject: [PATCH 05/11] ci trigger again again From 2278cd29886bf32be8ba66691b84d6af928cfd17 Mon Sep 17 00:00:00 2001 From: mathurinm Date: Wed, 2 Mar 2022 15:37:43 +0100 Subject: [PATCH 06/11] more From 0c24444866d751f5867952511305ef978578da04 Mon Sep 17 00:00:00 2001 From: mathurinm Date: Wed, 2 Mar 2022 17:24:18 +0100 Subject: [PATCH 07/11] more From f2dd6696665b871cfcf11a2e90dfa192a3df2ad4 Mon Sep 17 00:00:00 2001 From: mathurinm Date: Wed, 2 Mar 2022 21:20:58 +0100 Subject: [PATCH 08/11] trigger after cd_solver update From 4ba71f8b96b44b00ef1203b733b0f85e7f7e6541 Mon Sep 17 00:00:00 2001 From: mathurinm Date: Thu, 3 Mar 2022 10:52:11 +0100 Subject: [PATCH 09/11] try out of context --- solvers/apcd.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/solvers/apcd.py b/solvers/apcd.py index 3716dfa4..fd41b41b 100644 --- a/solvers/apcd.py +++ b/solvers/apcd.py @@ -1,12 +1,12 @@ -from benchopt import BaseSolver, safe_import_context +# from benchopt import BaseSolver, safe_import_context +from benchopt import BaseSolver -with safe_import_context() as ctx: - import cd_solver +# with safe_import_context() as ctx: class Solver(BaseSolver): """Accelerated proximal coordinate descent by Fercoq and Bianchi.""" - name = 'APCD' + name = 'apcd' stop_strategy = 'iteration' install_cmd = "conda" @@ -27,6 +27,7 @@ def run(self, n_iter): cf = [0.5] * n_samples g = ["abs"] * n_features cg = [self.lmbd] * n_features + import cd_solver pb = cd_solver.Problem(N=N, f=f, Af=Af, bf=bf, cf=cf, g=g, cg=cg) cd_solver.cd_solver_.coordinate_descent( pb, max_iter=n_iter) From 165f155b5ac0967cd8940193acda70b13a53b625 Mon Sep 17 00:00:00 2001 From: mathurinm Date: Thu, 3 Mar 2022 18:41:05 +0100 Subject: [PATCH 10/11] trigger From 4bafafeb6331aa3b38cd6dfddf115bcec4597ac5 Mon Sep 17 00:00:00 2001 From: mathurinm Date: Wed, 13 Jul 2022 14:53:39 +0200 Subject: [PATCH 11/11] trigger