Estou tentando escrever uma implementação SVM completa em Python e tenho alguns problemas ao calcular os coeficientes de Lagrange.
Primeiro, deixe-me reformular o que entendo no algoritmo para garantir que estou no caminho certo.
Se é um conjunto de dados e é o rótulo da classe , em seguida,
Então, só precisamos resolver um problema de otimização para
sujeito a
Em termos de coeficientes de Lagrange, isso se traduz em encontrar , e e minimizando:
Agora, como e podemos reescrevê-lo como com restrições
Então, estou tentando resolver o problema de otimização usando o Python, e o único pacote gratuito que consegui encontrar é chamado cvxopt .
Gostaria de alguma ajuda para resolver isso, não consegui encontrar um bom exemplo disso e, embora eu entenda a teoria, estou tendo dificuldades para traduzi-la em código (eu esperava o oposto, pois estou mais de um plano de programação).
Observe que em algum momento eu desejarei resolvê-lo usando Kernels mas não tenho certeza de quais são as implicações em resolver isso no código.
Qualquer ajuda seria muito apreciada, estou realmente perdido em como implementar isso em Python. Se você tem um módulo melhor para resolver o problema de otimização, também gostaria de ler sobre isso.
A forma geral do seu problema de otimização é um programa quadrático , independentemente de você estar usando o truque do kernel ou um kernel linear. Parece que
cvxopt
será suficiente para o que você está tentando fazer, mas outros pitonitas aqui também tiveram sorte com o OpenOpt .fonte