def test_reduce_lambda(self): N, d = 100, 5 lam = 11 lam_new = 10 rng = check_random_state(self.seed) X_data = rng.randn(N, d) L_data = example_eval_L_polynomial(X_data) rls_exact = la.solve(L_data + lam * np.eye(N), L_data).diagonal() dict_approx = self.__create_lambda_acc_dictionary(X_data, example_eval_L_polynomial, lam, rng) rls_estimates = estimate_rls_bless(dict_approx, X_data, example_eval_L_polynomial, lam) np.testing.assert_allclose(rls_estimates, rls_exact, rtol=0.5) dict_reduced = reduce_lambda(X_data, example_eval_L_polynomial, dict_approx, lam_new, rng) rls_estimates_reduced = estimate_rls_bless(dict_reduced, X_data, example_eval_L_polynomial, lam_new) rls_exact_reduced = la.solve(L_data + lam_new * np.eye(N), L_data).diagonal() np.testing.assert_allclose(rls_estimates_reduced, rls_exact_reduced, rtol=0.5) self.assertTrue(len(dict_reduced.idx) <= len(dict_approx.idx))
def test_estimate_rls_bless(self): N, d = 100, 5 lam = 11 lam_new = 10 rng = check_random_state(self.seed) X_data = rng.randn(N, d) L_data = example_eval_L_polynomial(X_data) rls_exact = la.solve(L_data + lam_new * np.eye(N), L_data).diagonal() dict_exact = self.__create_lambda_acc_dictionary( X_data, example_eval_L_polynomial, 0.0, rng) dict_approx = self.__create_lambda_acc_dictionary( X_data, example_eval_L_polynomial, lam, rng) rls_estimates_exact = estimate_rls_bless(dict_exact, X_data, example_eval_L_polynomial, lam_new) rls_estimates_approx = estimate_rls_bless(dict_approx, X_data, example_eval_L_polynomial, lam_new) np.testing.assert_almost_equal(rls_estimates_exact, rls_exact) np.testing.assert_allclose(rls_estimates_approx, rls_exact, rtol=1 / 2.)
def test_bless(self): N, d = 100, 5 lam = 11 rng = check_random_state(self.seed) X_data = rng.randn(N, d) L_data = example_eval_L_polynomial(X_data) rls_exact = la.solve(L_data + lam * np.eye(N), L_data).diagonal() dict_reduced = bless(X_data, example_eval_L_polynomial, lam_final=lam, rls_oversample_param=5, random_state=rng, verbose=False) rls_estimates = estimate_rls_bless(dict_reduced, X_data, example_eval_L_polynomial, lam) np.testing.assert_allclose(rls_estimates, rls_exact, rtol=1 / 2.) self.assertTrue(len(dict_reduced.idx) <= 5 * rls_exact.sum())