示例#1
0
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
示例#2
0
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]
示例#3
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
示例#4
0
    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