Python - Двойная недопустимая ошибка SVM Квадратичная задача OSQP - PullRequest
1 голос
/ 26 июня 2019

Мне нужно реализовать SVM для школьного проекта. Но я сталкиваюсь с проблемой, когда пытаюсь решить квадратичную проблему в Python, используя библиотеку OSQP.

Проблема QP problem

мои ограничения:

alpha >= 0
matrix Y.transpose() * alpha = 0

Матрица:

[[  2.   3.  -4.  -5.  -8.]
 [  3.   5.  -6.  -9. -12.]
 [ -4.  -6.   8.  10.  16.]
 [ -5.  -9.  10.  17.  20.]
 [ -8. -12.  16.  20.  32.]]

Приведенный ниже код Python настраивает проблему и пытается решить ее, но она не удалась с двойной недопустимой ошибкой.

Я изменил несколько настроек, например (iter, dual_infeasible error limit), но все равно не удалось

  • q соответствует правой части задачи (линейная часть)
  • A - ограничение ( Y.transpose * alpha = 0)
  • l - нижняя граница
  • U - верхняя граница

    P = sparse.csc_matrix (bigMatrix) q = np.array ([- 1, -1, -1, -1, -1]) A = sparse.csc_matrix (np.transpose (Y)) l = np.array ([0]) u = np.array ([np.inf])

    prob = osqp.OSQP () prob.setup (P, q, A, l, u)
    res = prob.solve ()

У вас есть предложения по решению проблемы. Примечание. Я не уверен на 100%, что проблема установлена ​​правильно.

Результаты, которые я должен получить от этой проблемы:

alpha1 1.11022 x10^16, alpha2 2.5, alpha3 2., alpha4 0.5, alpha5 1.4363*10^24
...