fused = l1norm(D, l=20) penalty = seminorm(sparsity,fused) Y = np.random.standard_normal(500); Y[100:150] += 7; Y[250:300] += 14 loss = l2normsq.shift(-Y, l=0.5) problem = loss.add_seminorm(penalty) solver = FISTA(problem) solver.fit(max_its=100, tol=1e-10) solution = solver.problem.coefs import pylab pylab.scatter(np.arange(Y.shape[0]), Y, c='r') pylab.plot(solution, color='yellow', linewidth=5) l1_fused = np.fabs(D * solution).sum() l1_sparsity = np.fabs(solution).sum() new_fused = l1norm(D, l=l1_fused) new_sparsity = l1norm(500, l=l1_sparsity) conjugate = l2normsq.shift(Y, l=0.5) from regreg.constraint import constraint loss_constraint = constraint(conjugate, new_fused, new_sparsity) constrained_solver = FISTA(loss_constraint.dual_problem()) constrained_solver.debug = True constrained_solver.fit(max_its=2000, tol=1e-10) constrained_solution = loss_constraint.primal_from_dual(constrained_solver.problem.coefs) pylab.plot(constrained_solution, color='black', linewidth=3)
loss = quadratic.shift(-Y, l=0.5) penalty = l1norm(D, l=20) problem = loss.add_seminorm(seminorm(penalty)) solver = FISTA(problem) solver.fit(max_its=100, tol=1e-10) solution = solver.problem.coefs l1_soln = np.fabs(D * solution).sum() tfocs_penalty = maxnorm(499, l=l1_soln) tfocs_loss = quadratic.affine(DT, -Y, l=0.5) tfocs_loss.coefs = np.zeros(499) tfocs_problem = tfocs_loss.add_seminorm(tfocs_penalty) tfocs_solver = FISTA(tfocs_problem) tfocs_solver.debug = True tfocs_solver.fit(max_its=1000, tol=1e-10) tfocs_dual_solution = tfocs_problem.coefs tfocs_primal_solution = Y - DT * tfocs_dual_solution import pylab pylab.scatter(np.arange(Y.shape[0]), Y, c='r') pylab.plot(solution, color='yellow', linewidth=5) pylab.plot(tfocs_primal_solution, color='black', linewidth=3) newl1 = l1norm(D, l=l1_soln) conjugate = quadratic.shift(Y, l=0.5) from regreg.constraint import constraint loss_constraint = constraint(conjugate, newl1) new_solver = FISTA(loss_constraint.dual_problem())
loss = l2normsq.shift(-Y, l=0.5) penalty = l1norm(D, l=20) problem = loss.add_seminorm(seminorm(penalty)) solver = FISTA(problem) solver.fit(max_its=100, tol=1e-10) solution = solver.problem.coefs l1_soln = np.fabs(D * solution).sum() tfocs_penalty = maxnorm(499, l=l1_soln) tfocs_loss = l2normsq.affine(DT, -Y, l=0.5) tfocs_loss.coefs = np.zeros(499) tfocs_problem = tfocs_loss.add_seminorm(tfocs_penalty) tfocs_solver = FISTA(tfocs_problem) tfocs_solver.debug = True tfocs_solver.fit(max_its=1000, tol=1e-10) tfocs_dual_solution = tfocs_problem.coefs tfocs_primal_solution = Y - DT * tfocs_dual_solution import pylab pylab.scatter(np.arange(Y.shape[0]), Y, c='r') pylab.plot(solution, color='yellow', linewidth=5) pylab.plot(tfocs_primal_solution, color='black', linewidth=3) newl1 = l1norm(D, l=l1_soln) conjugate = l2normsq.shift(Y, l=0.5) from regreg.constraint import constraint loss_constraint = constraint(conjugate, newl1) new_solver = FISTA(loss_constraint.dual_problem()) new_solver.debug = True
import numpy as np import pylab from scipy import sparse from regreg.algorithms import FISTA from regreg.atoms import nonnegative from regreg.container import container from regreg.smooth import signal_approximator, smooth_function 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:] isotonic = nonnegative.linear(sparse.csr_matrix(D)) loss = signal_approximator(Y) p = container(loss, isotonic) solver = FISTA(p.problem(initial=np.zeros(n))) solver.debug = True vals = solver.fit(max_its=25000, tol=1e-08, backtrack=True) soln = solver.problem.coefs X = np.arange(n) pylab.clf() pylab.scatter(X, Y) pylab.step(X, soln, 'r--')
import numpy as np import pylab from scipy import sparse from regreg.algorithms import FISTA from regreg.atoms import nonnegative from regreg.container import container from regreg.smooth import signal_approximator, smooth_function 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:] isotonic = nonnegative.linear(sparse.csr_matrix(D)) loss = signal_approximator(Y) p = container(loss, isotonic) solver=FISTA(p.problem(initial=np.zeros(n))) solver.debug=True vals = solver.fit(max_its=25000, tol=1e-08, backtrack=True) soln = solver.problem.coefs X = np.arange(n) pylab.clf() pylab.scatter(X, Y) pylab.step(X, soln, 'r--')