def test_mcmc_sampler_zonotope(self): """ Test whether 'zonotope' MCMC sampling mode generates samples with the right 1 and 2 points inclusion probabilities when DPP defined by orthogonal projection correlation kernel K = A.T (A A.T)^-1 A """ A = rndm.randn(self.rank, self.N) dpp = FiniteDPP(kernel_type='correlation', projection=True, **{'A_zono': A}) dpp.sample_mcmc(mode='zonotope', **{'nb_iter': 1000}) self.assertTrue(self.singleton_adequation(dpp, dpp.list_of_samples[0])) self.assertTrue(self.doubleton_adequation(dpp, dpp.list_of_samples[0]))
def test_mcmc_sampler_basis_exchange(self): """ Test whether 'E' (basis_exchange) MCMC sampling mode generates samples with the right 1 and 2 points inclusion probabilities when DPP defined by orthogonal projection correlation kernel K from its eigendecomposition """ eig_vals = np.ones(self.rank) eig_vecs, _ = qr(rndm.randn(self.N, self.rank), mode='economic') dpp = FiniteDPP(kernel_type='correlation', projection=True, **{'K_eig_dec': (eig_vals, eig_vecs)}) dpp.sample_mcmc(mode='E', **{'size': self.rank, 'nb_iter': 1000}) self.assertTrue(self.singleton_adequation(dpp, dpp.list_of_samples[0])) self.assertTrue(self.doubleton_adequation(dpp, dpp.list_of_samples[0]))
def test_correlation_kernel_projection_A_zono(self): A = rndm.randn(self.rank, self.N) dpp = FiniteDPP(kernel_type='correlation', projection=True, **{'A_zono': A}) for mode in ('GS', 'GS_bis', 'KuTa12'): dpp.flush_samples() for _ in range(self.nb_samples): dpp.sample_exact(mode) self.check_right_cardinality(dpp, dpp.list_of_samples) for mode in ('zonotope', 'E'): dpp.flush_samples() dpp.sample_mcmc(mode, **{'size': self.rank, 'nb_iter': self.nb_samples}) self.check_right_cardinality(dpp, dpp.list_of_samples[0])
def test_likelihood_kernel_L_gram_factor(self): phi = rndm.randn(self.rank, self.N) dpp = FiniteDPP(kernel_type='likelihood', projection=False, **{'L_gram_factor': phi}) for mode in ('GS', 'GS_bis', 'KuTa12'): dpp.flush_samples() for _ in range(self.nb_samples): dpp.sample_exact(mode) self.check_right_cardinality(dpp, dpp.list_of_samples) for mode in ('AED', 'AD'): dpp.flush_samples() dpp.sample_mcmc(mode, **{'nb_iter': self.nb_samples}) self.check_right_cardinality(dpp, dpp.list_of_samples[0])
def test_correlation_kernel_projection_kernel_eig(self): eig_vals = np.ones(self.rank) eig_vecs, _ = qr(rndm.randn(self.N, self.rank), mode='economic') dpp = FiniteDPP(kernel_type='correlation', projection=True, **{'K_eig_dec': (eig_vals, eig_vecs)}) for mode in ('GS', 'GS_bis', 'KuTa12'): dpp.flush_samples() for _ in range(self.nb_samples): dpp.sample_exact(mode) self.check_right_cardinality(dpp, dpp.list_of_samples) for mode in ('E'): dpp.flush_samples() dpp.sample_mcmc(mode, **{'size': self.rank, 'nb_iter': self.nb_samples}) self.check_right_cardinality(dpp, dpp.list_of_samples[0])
def test_likelihood_kernel(self): eig_vals = 1 + rndm.geometric(p=0.5, size=self.rank) eig_vecs, _ = qr(rndm.randn(self.N, self.rank), mode='economic') dpp = FiniteDPP(kernel_type='likelihood', projection=False, **{'L': (eig_vecs * eig_vals).dot(eig_vecs.T)}) for mode in ('GS', 'GS_bis', 'KuTa12'): dpp.flush_samples() for _ in range(self.nb_samples): dpp.sample_exact(mode) self.check_right_cardinality(dpp, dpp.list_of_samples) for mode in ('AED', 'AD'): dpp.flush_samples() dpp.sample_mcmc(mode, **{'nb_iter': self.nb_samples}) self.check_right_cardinality(dpp, dpp.list_of_samples[0])
verbose=False) result.append({'n': n, 'alg': 'vfx', 'time': t_vfx.secs, 'k': len(S_vfx)}) with Timer(verbose=False) as t_vfx_resample: S_vfx_resample = vfx_dpp_sampler.sample_exact('vfx', rls_oversample_bless=5, rls_oversample_dppvfx=10, random_state=r, desired_expected_size=desired_k, verbose=False) result.append({'n': n, 'alg': 'vfx_resample', 'time': t_vfx_resample.secs,'k': len(S_vfx_resample)}) with Timer(verbose=False) as t_mc: exact_mcmc_sample = FiniteDPP(kernel_type='likelihood', L=dot_func(X_train) * vfx_dpp_sampler.intermediate_sample_info.alpha_star) S_mcmc = exact_mcmc_sample.sample_mcmc(mode='AED', s_init=r.permutation(I_train.shape[0])[:len(S_vfx_resample)].tolist(), nb_iter=I_train.shape[0] * len(S_vfx_resample)) result.append({'n': n, 'alg': 'mcmc', 'time': t_mc.secs, 'k': len(S_mcmc)}) if X_train.shape[0] <= 16000: with Timer(verbose=False) as t_exact: L = dot_func(X_train) * vfx_dpp_sampler.intermediate_sample_info.alpha_star E,U = np.linalg.eigh(L) exact_dpp_sample = FiniteDPP(kernel_type='likelihood', L_eig_dec=(E, U)) S_exact = exact_dpp_sample.sample_exact() result.append({'n': n, 'alg': 'exact', 'time': t_exact.secs, 'k': len(S_exact)}) with Timer(verbose=False) as t_exact_resample: exact_dpp_sample = FiniteDPP(kernel_type='likelihood', L_eig_dec=(E, U)) S_exact_resample = exact_dpp_sample.sample_exact() result.append({'n': n, 'alg': 'exact_resample', 'time': t_exact_resample.secs, 'k': len(S_exact_resample)})