Example #1
0
    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))
Example #2
0
    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.)
Example #3
0
    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())