J'essaie d'écrire une implémentation SVM complète en Python et j'ai quelques problèmes pour calculer les coefficients Lagrange.
Permettez-moi d'abord de reformuler ce que je comprends de l'algorithme pour m'assurer que je suis sur la bonne voie.
Si est un ensemble de données et est l'étiquette de classe de , alors
Nous avons donc juste besoin de résoudre un problème d'optimisation pour
minimiser
sous réserve de
En termes de coefficients de Lagrange, cela se traduit par la recherche de , et et minimisant:
Puisque
J'essaie donc de résoudre le problème d'optimisation en utilisant Python, et le seul paquet gratuit que j'ai pu trouver s'appelle cvxopt .
J'aimerais avoir de l'aide pour résoudre ce problème, je n'ai trouvé aucun bon exemple à ce sujet, et bien que je comprenne la théorie, j'ai du mal à la traduire en code (je m'attendais à l'inverse depuis que je suis plus d'un contexte de programmation).
Notez qu'à un moment donné, je vais vouloir le résoudre en utilisant les noyaux mais je ne sais pas quelles sont les implications concernant la résolution de ce problème dans le code.
Toute aide serait grandement appréciée, je suis vraiment perdu sur la façon de l'implémenter en Python. Si vous avez un meilleur module pour résoudre le problème d'optimisation, j'aimerais également en savoir plus.
la source
La forme générale de votre problème d'optimisation est un programme quadratique , que vous utilisiez l' astuce du noyau ou un noyau linéaire. Cela semble
cvxopt
être suffisant pour ce que vous essayez de faire, mais d'autres pythonautes ici ont également eu de la chance avec OpenOpt .la source