Slide 29
Slide 29 text
Code: Fused Lasso
class FusedLassoADMM(GeneralizedLasso):
def __init__(self, alpha=1.0, sparse_coef=1.0, trend_coef=1.0, rho=1.0,
fit_intercept=True, normalize=False, copy_X=True, max_iter=1000, tol=1e-4):
super().__init__(alpha=alpha, rho=rho,
fit_intercept=fit_intercept,normalize=normalize, copy_X=copy_X, max_iter=max_iter,
tol=tol)
self.sparse_coef = sparse_coef
self.trend_coef = trend_coef
def generate_transform_matrix(self, n_features: int) -> np.ndarray:
fused = np.eye(n_features) - np.eye(n_features, k=-1)
fused[0, 0] = 0
return self.merge_matrix(n_features, fused)
def merge_matrix(self, n_features: int, trend_matrix: np.ndarray) -> np.ndarray:
generated = self.sparse_coef * np.eye(n_features) + self.trend_coef *
trend_matrix
return generated