Пример #1
0
def create(m, n, d):
    Xp = problem_util.normalized_data_matrix(m, d, 1)
    Xn = problem_util.normalized_data_matrix(n, d, 1)
    lam = 1

    theta = cp.Variable(d)
    f = ep.infinite_push(theta, Xp, Xn) + lam * cp.sum_squares(theta)

    f_eval = lambda: f.value
    return cp.Problem(cp.Minimize(f)), f_eval
Пример #2
0
def create(m, n, d):
    Xp = problem_util.normalized_data_matrix(m, d, 1)
    Xn = problem_util.normalized_data_matrix(n, d, 1)
    lam = 1

    theta = cp.Variable(d)
    f = ep.infinite_push(theta, Xp, Xn) + lam*cp.sum_squares(theta)

    f_eval = lambda: f.value
    return cp.Problem(cp.Minimize(f)), f_eval
Пример #3
0
def create(**kwargs):
    # m>k
    k = kwargs['k']  #class
    m = kwargs['m']  #instance
    n = kwargs['n']  #dim
    p = 5   #p-largest
    q = 10
    X = problem_util.normalized_data_matrix(m,n,1)
    Y = np.random.randint(0, k-1, (q,m))

    Theta = cp.Variable(n,k)
    t = cp.Variable(q)
    texp = cp.Variable(m)
    f = cp.sum_largest(t, p)+cp.sum_entries(texp) + cp.sum_squares(Theta)
    C = []
    C.append(cp.log_sum_exp(X*Theta, axis=1) <= texp)
    for i in range(q):
        Yi = one_hot(Y[i], k)
        C.append(-cp.sum_entries(cp.mul_elemwise(X.T.dot(Yi), Theta)) == t[i])

    t_eval = lambda: np.array([
        -cp.sum_entries(cp.mul_elemwise(X.T.dot(one_hot(Y[i], k)), Theta)).value for i in range(q)])
    f_eval = lambda: cp.sum_largest(t_eval(), p).value \
        + cp.sum_entries(cp.log_sum_exp(X*Theta, axis=1)).value \
        + cp.sum_squares(Theta).value
    
    return cp.Problem(cp.Minimize(f), C), f_val
Пример #4
0
def create(m, n):
    mu = 1
    rho = 1
    sigma = 0.1

    A = problem_util.normalized_data_matrix(m, n, mu)
    x0 = sp.rand(n, 1, rho)
    x0.data = np.random.randn(x0.nnz)
    x0 = x0.toarray().ravel()

    b = np.sign(A.dot(x0) + sigma * np.random.randn(m))
    A[b > 0, :] += 0.7 * np.tile([x0], (np.sum(b > 0), 1))
    A[b < 0, :] -= 0.7 * np.tile([x0], (np.sum(b < 0), 1))

    P = la.block_diag(np.random.randn(n - 1, n - 1), 0)

    lam = 1
    x = cp.Variable(A.shape[1])

    # Straightforward formulation w/ no constraints
    # TODO(mwytock): Fix compiler so this works
    z0 = 1 - sp.diags([b], [0]) * A * x + cp.norm1(P.T * x)
    f_eval = lambda: (lam * cp.sum_squares(x) + cp.sum_entries(
        cp.max_elemwise(z0, 0))).value

    # Explicit epigraph constraint
    t = cp.Variable(1)
    z = 1 - sp.diags([b], [0]) * A * x + t
    f = lam * cp.sum_squares(x) + cp.sum_entries(cp.max_elemwise(z, 0))
    C = [cp.norm1(P.T * x) <= t]
    return cp.Problem(cp.Minimize(f), C), f_eval
Пример #5
0
def create(m, n):
    mu = 1
    rho = 1
    sigma = 0.1

    A = problem_util.normalized_data_matrix(m, n, mu)
    x0 = sp.rand(n, 1, rho)
    x0.data = np.random.randn(x0.nnz)
    x0 = x0.toarray().ravel()

    b = np.sign(A.dot(x0) + sigma*np.random.randn(m))
    A[b>0,:] += 0.7*np.tile([x0], (np.sum(b>0),1))
    A[b<0,:] -= 0.7*np.tile([x0], (np.sum(b<0),1))

    P = la.block_diag(np.random.randn(n-1,n-1), 0)

    lam = 1
    x = cp.Variable(A.shape[1])

    # Straightforward formulation w/ no constraints
    # TODO(mwytock): Fix compiler so this works
    z0 = 1 - sp.diags([b],[0])*A*x + cp.norm1(P.T*x)
    f_eval = lambda: (lam*cp.sum_squares(x) + cp.sum_entries(cp.max_elemwise(z0, 0))).value

    # Explicit epigraph constraint
    t = cp.Variable(1)
    z = 1 - sp.diags([b],[0])*A*x + t
    f = lam*cp.sum_squares(x) + cp.sum_entries(cp.max_elemwise(z, 0))
    C = [cp.norm1(P.T*x) <= t]
    return cp.Problem(cp.Minimize(f), C), f_eval
Пример #6
0
def create(**kwargs):
    # m>k
    k = kwargs['k']  #class
    m = kwargs['m']  #instance
    n = kwargs['n']  #dim
    p = 5  #p-largest
    X = problem_util.normalized_data_matrix(m, n, 1)
    Y = np.random.randint(0, k, m)

    Theta = cp.Variable(n, k)
    t = cp.Variable(1)
    texp = cp.Variable(m)
    f = t + cp.sum_largest(texp, p) + cp.sum_squares(Theta)
    C = []
    C.append(cp.log_sum_exp(X * Theta, axis=1) <= texp)
    Yi = one_hot(Y, k)
    C.append(-cp.sum_entries(cp.mul_elemwise(X.T.dot(Yi), Theta)) == t)

    t_eval = lambda: \
        -cp.sum_entries(cp.mul_elemwise(X.T.dot(one_hot(Y, k)), Theta)).value
    f_eval = lambda: t_eval() \
        + cp.sum_largest(cp.log_sum_exp(X*Theta, axis=1), p).value \
        + cp.sum_squares(Theta).value

    return cp.Problem(cp.Minimize(f), C), f_eval
Пример #7
0
def create(**kwargs):
    m = kwargs["m"]
    n = kwargs["n"]
    k = 10
    A = [problem_util.normalized_data_matrix(m,n,1) for i in range(k)]
    B = problem_util.normalized_data_matrix(k,n,1)
    c = np.random.rand(k)

    x = cp.Variable(n)
    t = cp.Variable(k)
    f = cp.max_entries(t+cp.abs(B*x-c))
    C = []
    for i in range(k):
        C.append(cp.pnorm(A[i]*x, 2) <= t[i])

	t_eval = lambda: np.array([cp.pnorm(A[i]*x, 2).value for i in range(k)])
    f_eval = lambda: cp.max_entries(t_eval() + cp.abs(B*x-c)).value

    return cp.Problem(cp.Minimize(f), C), f_eval
Пример #8
0
def create(m, ni, K):
    np.random.seed(0)

    part = np.random.randint(1, ni, K)
    n = np.sum(part)
    p = 0.2

    # Each part is pa[i]:pb[i]
    pb = np.cumsum(part)
    pa = np.hstack((0, pb[:-1]))

    x0 = np.zeros(n)
    for i in xrange(K):
        if np.random.rand() < p:
            x0[pa[i]:pb[i]] = np.random.randn(part[i])

    A = problem_util.normalized_data_matrix(m, n, 1)
    b = A.dot(x0) + np.sqrt(0.001) * np.random.randn(m)
    lam = 0.1 * max(LA.norm(A[:, pa[i]:pb[i]].T.dot(b)) for i in xrange(K))

    x = cp.Variable(n)
    f = (0.5 * cp.sum_squares(A * x - b) +
         lam * sum(cp.norm2(x[pa[i]:pb[i]]) for i in xrange(K)))
    return cp.Problem(cp.Minimize(f))
Пример #9
0
def create(m, ni, K):
    np.random.seed(0)

    part = np.random.randint(1, ni, K)
    n = np.sum(part)
    p = 0.2

    # Each part is pa[i]:pb[i]
    pb = np.cumsum(part)
    pa = np.hstack((0, pb[:-1]))

    x0 = np.zeros(n)
    for i in xrange(K):
        if np.random.rand() < p:
            x0[pa[i]:pb[i]] = np.random.randn(part[i])

    A = problem_util.normalized_data_matrix(m, n, 1)
    b = A.dot(x0) + np.sqrt(0.001)*np.random.randn(m)
    lam = 0.1*max(LA.norm(A[:,pa[i]:pb[i]].T.dot(b)) for i in xrange(K))

    x = cp.Variable(n)
    f = (0.5*cp.sum_squares(A*x - b) +
         lam*sum(cp.norm2(x[pa[i]:pb[i]]) for i in xrange(K)))
    return cp.Problem(cp.Minimize(f))