from scipy import sparse from regreg.algorithms import FISTA from regreg.atoms import positive_part from regreg.container import container from regreg.smooth import l2normsq n = 100 Y = np.random.standard_normal(n) Y[:-30] += np.arange(n - 30) * 0.2 D = (np.identity(n) - np.diag(np.ones(n - 1), -1))[1:] nisotonic = positive_part.linear(-sparse.csr_matrix(D), l=3) loss = l2normsq.shift(-Y, l=0.5) p = container(loss, nisotonic) solver = FISTA(p.problem()) vals = solver.fit(max_its=25000, tol=1e-05) soln = solver.problem.coefs.copy() nisotonic.atoms[0].l = 100. solver.fit(max_its=25000, tol=1e-05) soln2 = solver.problem.coefs.copy() nisotonic.atoms[0].l = 1000. solver.fit(max_its=25000, tol=1e-05) soln3 = solver.problem.coefs.copy() X = np.arange(n) pylab.clf()
from regreg.algorithms import FISTA from regreg.atoms import positive_part from regreg.container import container from regreg.smooth import l2normsq n = 100 Y = np.random.standard_normal(n) Y[:-30] += np.arange(n-30) * 0.2 D = (np.identity(n) - np.diag(np.ones(n-1),-1))[1:] nisotonic = positive_part.linear(-sparse.csr_matrix(D), l=3) loss = l2normsq.shift(-Y,l=0.5) p = container(loss, nisotonic) solver=FISTA(p.problem()) vals = solver.fit(max_its=25000, tol=1e-05) soln = solver.problem.coefs.copy() nisotonic.atoms[0].l = 100. solver.fit(max_its=25000, tol=1e-05) soln2 = solver.problem.coefs.copy() nisotonic.atoms[0].l = 1000. solver.fit(max_its=25000, tol=1e-05) soln3 = solver.problem.coefs.copy() X = np.arange(n) pylab.clf()
import pylab from scipy import sparse from regreg.algorithms import FISTA from regreg.atoms import l1norm from regreg.container import container from regreg.smooth import l2normsq Y = np.random.standard_normal(500); Y[100:150] += 7; Y[250:300] += 14 loss = l2normsq.shift(-Y, coef=0.5) sparsity = l1norm(len(Y), 1.4) # TODO should make a module to compute typical Ds D = sparse.csr_matrix((np.identity(500) + np.diag([-1]*499,k=1))[:-1]) fused = l1norm.linear(D, 25.5) problem = container(loss, sparsity, fused) solver = FISTA(problem.composite()) solver.fit(max_its=100, tol=1e-10) solution = solver.composite.coefs delta1 = np.fabs(D * solution).sum() delta2 = np.fabs(solution).sum() fused_constraint = l1norm.linear(D, bound=delta1) sparsity_constraint = l1norm(500, bound=delta2) constrained_problem = container(loss, fused_constraint, sparsity_constraint) constrained_solver = FISTA(constrained_problem.composite()) constrained_solver.composite.lipshitz = 1.01 vals = constrained_solver.fit(max_its=10, tol=1e-06, backtrack=False, monotonicity_restart=False)
import pylab from scipy import sparse from regreg.algorithms import FISTA from regreg.atoms import l1norm from regreg.container import container from regreg.smooth import signal_approximator Y = np.random.standard_normal(500); Y[100:150] += 7; Y[250:300] += 14 sparsity = l1norm(500, l=1.3) #Create D D = (np.identity(500) + np.diag([-1]*499,k=1))[:-1] D = sparse.csr_matrix(D) fused = l1norm.linear(D, l=25.5) loss = signal_approximator(Y) problem = container(loss, sparsity, fused) solver = FISTA(problem.problem()) solver.fit(max_its=800,tol=1e-10) soln = solver.problem.coefs #plot solution pylab.figure(num=1) pylab.clf() pylab.plot(soln, c='g') pylab.scatter(np.arange(Y.shape[0]), Y)
from regreg.algorithms import FISTA from regreg.atoms import l1norm from regreg.container import container from regreg.smooth import l2normsq Y = np.random.standard_normal(500) Y[100:150] += 7 Y[250:300] += 14 loss = l2normsq.shift(-Y, coef=0.5) sparsity = l1norm(len(Y), 1.4) # TODO should make a module to compute typical Ds D = sparse.csr_matrix((np.identity(500) + np.diag([-1] * 499, k=1))[:-1]) fused = l1norm.linear(D, 25.5) problem = container(loss, sparsity, fused) solver = FISTA(problem.composite()) solver.fit(max_its=100, tol=1e-10) solution = solver.composite.coefs delta1 = np.fabs(D * solution).sum() delta2 = np.fabs(solution).sum() fused_constraint = l1norm.linear(D, bound=delta1) sparsity_constraint = l1norm(500, bound=delta2) constrained_problem = container(loss, fused_constraint, sparsity_constraint) constrained_solver = FISTA(constrained_problem.composite()) constrained_solver.composite.lipshitz = 1.01 vals = constrained_solver.fit(max_its=10,
import pylab from scipy import sparse from regreg.algorithms import FISTA from regreg.atoms import l1norm from regreg.container import container from regreg.smooth import signal_approximator Y = np.random.standard_normal(500) Y[100:150] += 7 Y[250:300] += 14 sparsity = l1norm(500, l=1.3) #Create D D = (np.identity(500) + np.diag([-1] * 499, k=1))[:-1] D = sparse.csr_matrix(D) fused = l1norm.linear(D, l=25.5) loss = signal_approximator(Y) problem = container(loss, sparsity, fused) solver = FISTA(problem.problem()) solver.fit(max_its=800, tol=1e-10) soln = solver.problem.coefs #plot solution pylab.figure(num=1) pylab.clf() pylab.plot(soln, c='g') pylab.scatter(np.arange(Y.shape[0]), Y)