############################################################################## # Weighted Lasso with sparse-ho. # We use the vanilla lassoCV coefficients as a starting point alpha0 = np.log(model_cv.alpha_) * np.ones(X_train.shape[1]) # Weighted Lasso: Sparse-ho: 1 param per feature estimator = Lasso(fit_intercept=False, max_iter=10, warm_start=True) model = WeightedLasso(X_train, y_train, estimator=estimator) criterion = HeldOutMSE(X_val, y_val, model, X_test=X_test, y_test=y_test) algo = ImplicitForward() monitor = Monitor() grad_search(algo, criterion, alpha0, monitor, n_outer=20, tol=1e-6) ############################################################################## ############################################################################## # MSE on validation set mse_sho_val = mean_squared_error(y_val, estimator.predict(X_val)) # MSE on test set, ie unseen data mse_sho_test = mean_squared_error(y_test, estimator.predict(X_test)) print("Sparse-ho: Mean-squared error on validation data %f" % mse_sho_val) print("Sparse-ho: Mean-squared error on test (unseen) data %f" % mse_sho_test) labels = ['WeightedLasso val', 'WeightedLasso test', 'Lasso CV'] df = pd.DataFrame(np.array([mse_sho_val, mse_sho_test, mse_cv]).reshape( (1, -1)), columns=labels) df.plot.bar(rot=0) plt.xlabel("Estimator") plt.ylabel("Mean square error")
algo = ImplicitForward() monitor = Monitor() grad_search(algo, criterion, model, X, y, log_alpha0, monitor, n_outer=20, tol=1e-6) ############################################################################## ############################################################################## # MSE on validation set mse_sho_val = mean_squared_error(y[idx_val], estimator.predict(X[idx_val, :])) # MSE on test set, ie unseen data mse_sho_test = mean_squared_error(y_test, estimator.predict(X_test)) print("Sparse-ho: Mean-squared error on validation data %f" % mse_sho_val) print("Sparse-ho: Mean-squared error on test (unseen) data %f" % mse_sho_test) labels = ['WeightedLasso val', 'WeightedLasso test', 'Lasso CV'] df = pd.DataFrame(np.array([mse_sho_val, mse_sho_test, mse_cv]).reshape( (1, -1)), columns=labels) df.plot.bar(rot=0) plt.xlabel("Estimator") plt.ylabel("Mean square error")