Wir haben eine einfache grafische Schnittstelle zu unserer Implementierung des SVM-Algorithmus entwickelt, genannt SVM Classifier. Diese Schnittstelle ermöglicht es auch unerfahrenen Anwendern, die Software zur lokalen Installation herunterzuladen und auf einfache Weise einen anspruchsvollen Algorithmus für maschinelles Lernen auf ihre Daten anzuwenden. Wir haben eine öffentlich zugängliche Anwendung implementiert, mit der SVM-Anwender SVM-Training, Klassifizierung und Vorhersage durchführen können. Für Details zur Verwendung der Software, Beispieldatensätze und Erklärungen der zugrundeliegenden Algorithmen verweisen wir die Leser auf die Website und die dort aufgeführten Referenzen. SVM-Anwender könnten auch an einer Reihe von anderen lizenzierten SVM-Implementierungen interessiert sein, die bereits beschrieben wurden, einschließlich LIBSVM.
Wir haben die SVM-Algorithmen, die vom Libsvm-Team implementiert wurden, als Kern verwendet. Um die plattformübergreifende Kompatibilität zu maximieren, wurde der SVM Classifier in Java unter Verwendung von Standard-Swing-Bibliotheken implementiert (Abbildung 1).
Als Build-Tools werden das quelloffene, plattformübergreifende Apache Ant und die kostenlose Ausgabe von Borland JBuilder 2005 Foundation verwendet. Obwohl auf dem Betriebssystem WinXP entwickelt, wurde SVM Classifier erfolgreich auf Linux und anderen Windows-Plattformen getestet und läuft mit der Swing-Erweiterung auch auf Mac OS9. Benutzer sind in der Lage, SVM Classifier auf jedem Computer mit Java 1.4 Runtime oder einer höheren Version auszuführen.
Die Anwendung hat zwei Frames, den Klassifikations- und den Vorhersage-Frame. In beiden Frames kann das Datendateiformat entweder als „Labeled“ oder als „Delimited“-Dateiformat importiert werden (Abbildung 2 und Abbildung 3).
Im Klassifizierungs-Frame erstellt der Benutzer ein Modell aus dem Trainingsdatensatz für die Klassifizierung (C-SVC, nu-SVC), Regression (epsilon-SVR, nu-SVR) und Verteilungsschätzung.
In diesem Frame kann der Benutzer den Trainingsdatensatz in die Anwendung importieren, den Pfad zum Speichern der Modelldatei auswählen, den entsprechenden SVM- und Kernel-Typ auswählen und ein Modell für den Datensatz erstellen. Die Modelldatei kann später für die Vorhersage verwendet werden. Es gibt auch eine Auswahl für die Kreuzvalidierung. Die Technik der Kreuzvalidierung (CV) wird verwendet, um die Genauigkeit jeder Parameterkombination im angegebenen Bereich zu schätzen und hilft uns, die besten Parameter für das Klassifizierungsproblem zu bestimmen.
Im Vorhersagerahmen wird das Modell auf die Testdaten angewendet, um die Klassifizierung der unbekannten Daten vorherzusagen. Wir haben auch ein Werkzeug zur Anzeige der zweidimensionalen Daten bereitgestellt, das über die Menüleiste der Ansicht aufgerufen werden kann (Abbildung 4).
Kernel-Typen
K(x i , x j ) = Φ(x i )TΦ(x j ) wird die Kernel-Funktion genannt. Dabei werden Trainingsvektoren x i durch die Funktion Φ in einen höherdimensionalen (wahrscheinlich unendlichen) Raum abgebildet. Es gibt folgende vier grundlegende Kernel: linear, polynomial, radiale Basisfunktion (RBF) und Sigmoid:
-
Linear: K(x i , x j ) = x i Tx j
-
Polynomial: Der polynomielle Kernel vom Grad d hat die Form
K(x i , x j ) = (x i , x j )d
-
RBF: Der Gaußsche Kernel, auch Radialbasisfunktion genannt, hat die Form
Wobei σ für eine Fensterbreite steht
-
Sigmoid: Der Sigmoid-Kernel hat die Form
K(x i , x j ) = tanh(k(x i x j ) + ϑ)
Wenn der Sigmoid-Kernel mit der SVM verwendet wird, kann man sie als zweischichtiges neuronales Netz betrachten.
SVM-Typen
1. C-SVC: C-Support Vector Classification (Binary Case)
Gegeben eine Trainingsmenge von Instanz-Label-Paaren (x i , y i ), i = 1,…,l mit x i ∈ Rnund y ∈ {1, -1}l, ← erfordern die Support-Vector-Maschinen (SVM) die Lösung des folgenden Optimierungsproblems:
SVM findet eine lineare trennende Hyperebene mit dem maximalen Rand in diesem höherdimensionalen Raum. C > 0 ist der Strafparameter des Fehlerterms . Die Entscheidungsfunktion ist:
2. nu-SVC: ν-Support Vector Classification (Binary Case)
Der Parameter ν ∈ (0, 1) ist eine obere Schranke für den Anteil der Trainingsfehler und eine untere Schranke für den Anteil der Support-Vektoren . Gegebene Trainingsvektoren x i ∈ Rn, i = 1,…,l, in zwei Klassen, und ein Vektor y ∈ Rlso dass y i ∈ {1, -1}, ist die betrachtete primäre Form:
Und die Entscheidungsfunktion ist:
3. epsilon-SVR: ε-Support Vector Regression (ε-SVR)
Eine Erweiterung der SVM ist die für die Regressionsaufgabe. Ein Regressionsproblem ist immer dann gegeben, wenn Y = ℝ für den Trainingsdatensatz Z = {(x i , y i ) ∈ X × Y | i = 1,…,M} und unser Interesse ist, eine Funktion der Form f: X → RD zu finden. Die primäre Formulierung für den SVR ist dann gegeben durch:
Wir müssen zwei Arten von Slack-Variablen ξ i und einführen, eine zur Kontrolle des Fehlers, der durch Beobachtungen induziert wird, die größer als die obere Schranke der ε-Röhre sind, und die andere für die Beobachtungen, die kleiner als die untere Schranke sind. Die ungefähre Funktion ist:
4. nu-SVR: ν-Support Vector Regression (ν-SVR)
Ähnlich wie bei ν-SVC wird bei der Regression ein Parameter ν verwendet, um die Anzahl der Support-Vektoren zu kontrollieren. Im Gegensatz zu ν-SVC, wo C durch ν ersetzt wird, ersetzt hier jedoch ν den Parameter ε von ε-SVR. Dann ist die Entscheidungsfunktion die gleiche wie die von ε-SVR.
5. Einklassen-SVM: Verteilungsschätzung
Der Unterschied der Einklassen-Klassifikation zum Standard-Klassifikationsproblem besteht darin, dass die Trainingsdaten nicht identisch mit den Testdaten verteilt sind. Der Datensatz enthält zwei Klassen: eine davon, die Zielklasse, ist gut abgetastet, während die andere Klasse nicht vorhanden oder sehr spärlich abgetastet ist. Schölkopf et al. haben einen Ansatz vorgeschlagen, bei dem die Zielklasse durch eine Hyperebene vom Ursprung getrennt ist. Die betrachtete primäre Form ist:
Und die Entscheidungsfunktion ist:
Kreuzvalidierung
Das Ziel der Kreuzvalidierung ist es, gute Parameter zu identifizieren, damit der Klassifikator unbekannte Daten genau vorhersagen kann.
Ein üblicher Weg ist es, die Trainingsdaten in zwei Teile aufzuteilen, von denen einer beim Training des Klassifikators als unbekannt betrachtet wird. Dann kann die Vorhersagegenauigkeit auf diesem Satz die Leistung beim Klassifizieren unbekannter Daten genauer widerspiegeln. Eine verbesserte Version dieses Verfahrens ist die Kreuzvalidierung.
Bei der v-fachen Kreuzvalidierung wird die Trainingsmenge in v gleich große Teilmengen aufgeteilt. Nacheinander wird eine Teilmenge mit dem Klassifikator getestet, der auf den restlichen v – 1 Teilmengen trainiert wurde. Somit wird jede Instanz des gesamten Trainingssatzes einmal vorhergesagt, so dass die Kreuzvalidierungsgenauigkeit der Prozentsatz der Daten ist, die korrekt klassifiziert werden. Das Kreuzvalidierungsverfahren kann das Overfitting-Problem verhindern.
Schrumpfen
Chang und Lin erwähnten, dass für viele Probleme die Anzahl der freien Support-Vektoren (d.h. 0 <α i < C) klein ist, reduziert die Schrumpfungstechnik die Größe des Arbeitsproblems, ohne einige beschränkte Variablen zu berücksichtigen.
Caching
Caching ist eine weitere Technik zur Reduzierung der Rechenzeit. Da Q (Q ist eine l mal l positive semidefinite Matrix, Q ij = y i y j K(x i , x j )) vollständig dicht ist und nicht im Computerspeicher abgelegt werden darf, werden die Elemente Qij nach Bedarf berechnet. Üblicherweise wird ein spezieller Speicher mit der Idee eines Caches verwendet, um kürzlich verwendete Qij zu speichern.