Ich versuche, eine vollständige SVM- Implementierung in Python zu schreiben, und habe einige Probleme bei der Berechnung der Lagrange-Koeffizienten.
Lassen Sie mich zunächst umformulieren, was ich aus dem Algorithmus verstehe, um sicherzustellen, dass ich auf dem richtigen Weg bin.
Wenn ein Datensatz ist und die Klassenbezeichnung von , dann ist
Wir müssen also nur ein Optimierungsproblem lösen, um
minimiere
vorbehaltlich
In Bezug auf Lagrange-Koeffizienten bedeutet dies, dass , und und minimiert wird:
Da nun
Ich versuche also, das Optimierungsproblem mit Python zu lösen, und das einzige kostenlose Paket, das ich finden konnte, heißt cvxopt .
Ich hätte gerne Hilfe, um das zu lösen, ich konnte kein gutes Beispiel dafür finden, und obwohl ich die Theorie verstehe, fällt es mir schwer, sie in Code zu übersetzen (ich hätte das Gegenteil erwartet, da ich es bin mehr aus dem Programmierhintergrund).
Beachten Sie, dass ich es irgendwann mit den Kerneln aber ich bin mir nicht sicher, welche Auswirkungen dies auf die Lösung dieses Problems im Code hat.
Jede Hilfe wäre sehr dankbar, ich bin wirklich verloren, wie man dies in Python implementiert. Wenn Sie ein besseres Modul zur Lösung des Optimierungsproblems haben, würde ich auch gerne darüber lesen.
Die allgemeine Form Ihres Optimierungsproblems ist ein quadratisches Programm , unabhängig davon, ob Sie den Kernel-Trick oder einen linearen Kernel verwenden. Es hört sich so an
cvxopt
, als würde es für das, was Sie versuchen, ausreichen, aber auch andere Pythonauts hier haben Glück mit OpenOpt gehabt .quelle