def test_subsampled_find_largest_singular_value(random_svd): s = random_svd[1] X = generate_matrix_from_svd(*random_svd) smax = _singular_values.find_largest_singular_value( X, subsampling_scheme="sqrt", random_state=np.random) assert (s[0] - smax) / max(smax, s[0]) < SUBSAMPLED_TOL
def test_find_largest_singular_value(random_svd): s = random_svd[1] X = generate_matrix_from_svd(*random_svd) smax = _singular_values.find_largest_singular_value(X, random_state=np.random) assert abs(smax - s[0]) / max(smax, s[0]) < TOL assert smax < s[0]
def _compute_lipschitz(self, X, y): num_rows, num_cols = X.shape if self.frobenius_lipchitz: return la.norm(X, "fro")**2 / (num_rows * num_cols) s_max = find_largest_singular_value( X, subsampling_scheme=self.subsampling_scheme, random_state=self.random_state_, ) SSE_lipschitz = 1.5 * s_max**2 return SSE_lipschitz / num_rows
def _estimate_lipschitz(self, X_aug, y): num_rows = X_aug.shape[0] if self.frobenius_lipchitz: if sparse.issparse(X_aug): return sparse.linalg.norm(X_aug, "fro") ** 2 / num_rows return la.norm(X_aug, "fro") ** 2 / num_rows s_max = find_largest_singular_value( X_aug, subsampling_scheme=self.subsampling_scheme, random_state=self.random_state_, ) SSE_lipschitz = 1.5 * s_max ** 2 return SSE_lipschitz / num_rows