def test_rank_update_mean_covariance_cholesky_lmbda_cholupdate_equals_naive(): if not low_rank_update_available: raise SkipTest("cholupdate not available") D = 3 N = 100 X = np.random.randn(N, D) mean = np.mean(X, 0) Sigma = np.cov(X.T) L = np.linalg.cholesky(Sigma) assert_allclose(np.dot(L, L.T), Sigma) # update with one more vector u = np.random.randn(D) lmbda = 0.1 nu2 = 0.2 gamma2 = 0.3 m_test_naive, L_test_naive = rank_update_mean_covariance_cholesky_lmbda_naive( u, lmbda, mean, L, nu2=nu2, gamma2=gamma2) m_test, L_test = rank_update_mean_covariance_cholesky_lmbda_naive( u, lmbda, mean, L, nu2=nu2, gamma2=gamma2) assert_allclose(m_test_naive, m_test) assert_allclose(L_test_naive, L_test)
def test_rank_update_mean_covariance_cholesky_lmbda_naive(): D = 3 N = 100 X = np.random.randn(N, D) mean = np.mean(X, 0) Sigma = np.cov(X.T) L = np.linalg.cholesky(Sigma) assert_allclose(np.dot(L, L.T), Sigma) # update with one more vector u = np.random.randn(D) lmbda = 0.1 nu2 = 0.2 gamma2 = 0.3 updated_mean = (1 - lmbda) * mean + lmbda * u updated_Sigma = (1 - lmbda) * Sigma + lmbda * nu2 * np.outer( u - mean, u - mean) + np.eye(D) * gamma2 updated_L = np.linalg.cholesky(updated_Sigma) m_test, L_test = rank_update_mean_covariance_cholesky_lmbda_naive( u, lmbda, mean, L, nu2=nu2, gamma2=gamma2) assert_allclose(updated_mean, m_test) assert_allclose(updated_L, L_test)
def test_rank_update_mean_covariance_cholesky_lmbda_cholupdate_equals_naive(): if not low_rank_update_available: raise SkipTest("cholupdate not available") D = 3 N = 100 X = np.random.randn(N, D) mean = np.mean(X, 0) Sigma = np.cov(X.T) L = np.linalg.cholesky(Sigma) assert_allclose(np.dot(L, L.T), Sigma) # update with one more vector u = np.random.randn(D) lmbda = 0.1 nu2 = 0.2 gamma2 = 0.3 m_test_naive, L_test_naive = rank_update_mean_covariance_cholesky_lmbda_naive(u, lmbda, mean, L, nu2=nu2, gamma2=gamma2) m_test, L_test = rank_update_mean_covariance_cholesky_lmbda_naive(u, lmbda, mean, L, nu2=nu2, gamma2=gamma2) assert_allclose(m_test_naive, m_test) assert_allclose(L_test_naive, L_test)
def test_rank_update_mean_covariance_cholesky_lmbda_naive(): D = 3 N = 100 X = np.random.randn(N, D) mean = np.mean(X, 0) Sigma = np.cov(X.T) L = np.linalg.cholesky(Sigma) assert_allclose(np.dot(L, L.T), Sigma) # update with one more vector u = np.random.randn(D) lmbda = 0.1 nu2 = 0.2 gamma2 = 0.3 updated_mean = (1 - lmbda) * mean + lmbda * u updated_Sigma = (1 - lmbda) * Sigma + lmbda * nu2 * np.outer(u - mean, u - mean) + np.eye(D) * gamma2 updated_L = np.linalg.cholesky(updated_Sigma) m_test, L_test = rank_update_mean_covariance_cholesky_lmbda_naive(u, lmbda, mean, L, nu2=nu2, gamma2=gamma2) assert_allclose(updated_mean, m_test) assert_allclose(updated_L, L_test)