Eine Support Vector Machine (SVM) ist ein überwachter Machine-Learning-Algorithmus, der jene Hyperebene findet, die Datenpunkte einer Klasse am besten von denen einer anderen Klasse trennt.
Eine Support Vector Machine ist ein Algorithmus für überwachtes Machine Learning, der häufig für Klassifizierungs- und Regressionsprobleme in Anwendungen wie Signalverarbeitung, Verarbeitung natürlicher Sprache (NLP) sowie Sprach- und Bilderkennung eingesetzt wird. Das Ziel des SVM-Algorithmus besteht darin, eine Hyperebene zu finden, die Datenpunkte einer Klasse bestmöglich von denen einer anderen Klasse trennt. Diese Hyperebene kann eine Linie für einen 2D-Raum oder eine Ebene für einen n-dimensionalen Raum sein, wobei n die Anzahl der Merkmale für jede Beobachtung im Datensatz ist. Es kann mehrere Hyperebenen geben, die Klassen in den Daten trennen. Die optimale Hyperebene, die durch den SVM-Algorithmus abgeleitet wird, ist diejenige, die den Abstand zwischen den beiden Klassen maximiert.
Der Rand ist die maximale Breite der Platte parallel zur Hyperebene, die keine inneren Datenpunkte aufweist. Die Datenpunkte, die die Grenze dieser parallelen Platte markieren und der trennenden Hyperebene am nächsten sind, werden als Stützvektoren (support vectors) bezeichnet. Bei Stützvektoren handelt es sich um eine Teilmenge der Trainingsbeobachtungen, die den Ort der trennenden Hyperebene identifizieren.

Verwendung eines SVM-Algorithmus zur Maximierung der Breite des Randes zwischen zwei Klassen, dargestellt durch Plus und Minus und getrennt durch eine Hyperebene.

Verwendung eines SVM-Algorithmus zur Maximierung der Breite des Randes zwischen zwei Klassen, dargestellt durch Plus und Minus und getrennt durch eine Hyperebene.
Workflow zur SVM-Modellierung
Ein typischer Workflow für die Erstellung eines Support-Vector-Machine-Modells umfasst die folgenden Schritte:
Daten vorverarbeiten
Das Training eines SVM-Modells mit Rohdaten führt aufgrund fehlender Werte und Ausreißer sowie Informationsredundanz oft zu schlechten Ergebnissen. Sie können eine Datenbereinigung durchführen, um fehlende Werte oder Ausreißer zu bearbeiten, und eine Merkmalsextraktion durchführen, um die richtigen Merkmale aus den Daten auszuwählen.
Die Merkmalsextraktion wandelt Rohdaten in numerische Merkmale um, die verarbeitet werden können, während die Informationen im ursprünglichen Datensatz erhalten bleiben. Techniken zur Reduzierung der Dimensionalität, wie z. B. die Hauptkomponentenanalyse (PCA), verringern die Anzahl der Merkmale, während die wichtigsten Informationen erhalten bleiben. Dieser Ansatz macht die Modelle der Support Vector Machines fehlerresistent und ermöglicht die Verarbeitung komplexer Datensätze.
Nachdem Ihre Daten verarbeitet wurden, teilen Sie die Daten in Trainings- und Testsätze auf. Verwenden Sie die Kreuzvalidierung, um die Daten optimal aufzuteilen. Das SVM-Modell wird anhand des Trainingsdatensatzes trainiert und der Testdatensatz wird verwendet, um die Leistung des Modells anhand unbekannter Daten zu bewerten.
Kernel auswählen
Wählen Sie anhand der Datenverteilung eine geeignete Kernel-Funktion aus (linear, polynomisch, RBF usw.). Wenn eine lineare Trennung nicht möglich ist, transformiert eine Kernel-Funktion die Daten in einen höherdimensionalen Raum, wodurch sich die Klassen leichter trennen lassen.
SVM-Typ | Mercer-Kernel | Beschreibung |
Gaußsche oder radiale Basisfunktion (RBF) | \( K({x_1},{x_2})=exp(−‖{x_1}−{x_2}‖22{σ^2}) \) | Ein-Klassen-Lernen. \( σ \) ist die Breite des Kernels. |
Linear | \( K({x_1},{x_2})={x_1}T{x_2} \) | Zwei-Klassen-Lernen. |
Polynomial | \( K({x_1},{x_2})=({x_1}T{x_2}+1)ρ \) | \( ρ \) ist die Ordnung des Polynoms. |
Sigmoid | \( K({x_1},{x_2})=tanh({β_0}{x_1}T{x_2}+{β_1}) \) | Es handelt sich um einen Mercer-Kernel nur für bestimmte Werte von \( β_0 \) und \( β_1 \). |
SVM-Modell trainieren
Erstellen und trainieren Sie Ihr SVM-Modell mithilfe eines Trainingsdatensatzes. Das Training einer Support Vector Machine entspricht der Lösung eines quadratischen Optimierungsproblems zur Anpassung an eine Hyperebene, die den Abstand zwischen den Klassen maximiert. Der Algorithmus der Support Vector Machine identifiziert die Stützvektoren und bestimmt die optimale Hyperebene. Verwenden Sie das trainierte Modell, um neue und unbekannte Datenpunkte mithilfe der optimalen Hyperebene zu klassifizieren.
Das SVM-Modell evaluieren
Testen Sie das Modell mithilfe des Testdatensatzes. Bewerten Sie die Performance des Modells anhand von Metriken wie Genauigkeit, Konfusionsmatrix, Präzision, F1-Score oder Trefferquote.
Hyperparameter abstimmen
Passen Sie die Hyperparameter an, um die Modellleistung zu verbessern. Verwenden Sie eine Suchmethode wie die Bayes'sche Optimierung, die probabilistische Modelle verwendet, um die optimalen Hyperparameter zu finden.
Arten von SVM-Klassifikatoren
Lineare Support Vector Machines
Lineare SVMs werden für linear trennbare Daten mit genau zwei Klassen verwendet. Diese Art von Support-Vector-Machine-Algorithmen verwendet eine lineare Entscheidungsgrenze, um alle Datenpunkte der beiden Klassen voneinander zu trennen.
Der SVM-Algorithmus kann eine solche Hyperebene nur für linear trennbare Probleme finden. Bei den meisten komplexen Aufgaben, bei denen die Daten nicht trennbar sind, kann die Support Vector Machine einen Toleranzbereich verwenden, d. h. eine Hyperebene, die viele, aber nicht alle Datenpunkte trennt. Der Algorithmus maximiert den Toleranzbereich und erlaubt eine geringe Anzahl von Fehlklassifizierungen.

SVM mit Toleranzbereich, die die Fehlklassifizierung eines Datenpunkts aus Klasse -1 (blau) zulässt. (Siehe MATLAB-Dokumentation.)

SVM mit Toleranzbereich, die die Fehlklassifizierung eines Datenpunkts aus Klasse -1 (blau) zulässt. (Siehe MATLAB-Dokumentation.)
Nichtlineare Support Vector Machines
SVMs werden auch für nichtlineare Klassifizierungs- und Regressionsaufgaben verwendet. Bei nichtlinear trennbaren Daten verwenden nichtlineare Support Vector Machines Kernel-Funktionen, um die Merkmale zu transformieren. Die Anzahl der transformierten Merkmale wird durch die Anzahl der Stützvektoren bestimmt.
Die Kernel-Funktionen ordnen die Daten einem anderen, oft höherdimensionalen Raum zu. Diese Transformation kann die Trennung der Klassen erleichtern, indem die komplexe nichtlineare Entscheidungsgrenze in eine lineare Grenze im höherdimensionalen abgebildeten Merkmalsraum vereinfacht wird. Bei diesem Verfahren, das allgemein als Kernel-Trick bekannt ist, müssen die Daten nicht explizit transformiert werden, was rechenintensiv wäre. Zu den Kernel-Funktionen für nichtlineare Daten gehören Polynome, radiale Basisfunktion (Gauß) und mehrschichtiges Perzeptron oder Sigmoid (neuronales Netz).

Ein nichtlinearer SVM-Klassifikator, der in MATLAB mit einer Gauߑschen Kernel-Funktion trainiert wurde. (Siehe Code.)

Ein nichtlinearer SVM-Klassifikator, der in MATLAB mit einer Gauߑschen Kernel-Funktion trainiert wurde. (Siehe Code.)
Support Vector Regression
SVMs werden in erster Linie für Klassifizierungsaufgaben verwendet, können aber auch für Regressionen angepasst werden. Die SVM-Regression wird als nichtparametrische Technik betrachtet, da sie auf Kernel-Funktionen beruht. Anders als bei der linearen Regression, bei der die Beziehung zwischen den Antwortvariablen (Ausgabe) und den Prädiktorenvariablen (Eingabe) bekannt ist, besteht das Ziel der Support Vector Regression (SVR) darin, dieses Verhältnis zu ermitteln. Die SVR ermittelt dazu eine Hyperebene, die am besten zu den Daten innerhalb einer bestimmten Toleranzspanne, Rand genannt, passt, während der Vorhersagefehler auf ein Minimum reduziert wird.
Das Arbeitsprinzip von SVR ist dasselbe wie das von Support-Vector-Machine-Klassifikatoren, mit der Ausnahme, dass SVR kontinuierliche Werte anstelle von diskreten Klassen vorhersagen soll. SVR kann sowohl lineare als auch nichtlineare Daten verarbeiten, indem verschiedene Kernel-Typen verwendet werden. Mit dem Kernel-Trick können Sie eine nichtlineare Regression durchführen, indem Sie Daten in einem hochdimensionalen Raum abbilden.
Vorteile der SVM
SVMs gehören zu den beliebtesten Algorithmen für überwachtes Lernen im Bereich Machine Learning und künstliche Intelligenz, vor allem, weil sie hochdimensionale Daten und komplexe Entscheidungsgrenzen effektiv verarbeiten können. Die Hauptvorteile von Support Vector Machines sind:
- Vielseitigkeit der Daten. SVMs sind besonders effektiv, wenn es um hochdimensionale und unstrukturierte Datensätze geht. Support Vector Machines können sowohl für lineare als auch für nichtlineare Daten verwendet werden, wodurch sie für viele Anwendungen nützlich sind.
- Robustheit. SVMs sind weniger anfällig für Überanpassung, insbesondere in hochdimensionalen Räumen, aufgrund des Regularisierungsparameters, der den Kompromiss zwischen der Erzielung eines geringen Fehlers bei Trainingsdaten und der Minimierung der Norm der Gewichte steuert.
- Interpretierbarkeit. Die durch einen linearen SVM-Klassifikator geschaffene Entscheidungsgrenze ist klar und interpretierbar, was für das Verständnis von Modellvorhersagen und das Treffen fundierter Entscheidungen von Vorteil sein kann.
- Genauigkeit. SVMs sind bei kleineren Datensätzen sehr genau und effektiv, insbesondere in Fällen, in denen die Anzahl der Dimensionen die Anzahl der Punkte übersteigt.
SVM-Anwendungen
Die oben genannten Vorteile machen Support Vector Machines zu einer interessanten Wahl für die Modellierung von Daten in einer Vielzahl von Anwendungen:
- Verarbeitung natürlicher Sprache. SVMs werden häufig bei NLP-Aufgaben wie der Spam-Erkennung und der Stimmungsanalyse eingesetzt, indem sie Text in Kategorien einteilen.
- Computer Vision. SVMs werden bei der Bildklassifizierung eingesetzt, beispielsweise bei der Handschrifterkennung und der Gesichts- oder Objekterkennung, sowie als medizinisches Diagnoseinstrument zur Klassifizierung von MRT-Bildern, die auf das Vorhandensein eines Tumors hinweisen könnten.
- Signalverarbeitung. SVMs werden auch auf Signaldaten für Anwendungsbereiche wie Anomalieerkennung, Spracherkennung und biomedizinische Signalanalyse angewendet.
- Anomalieerkennung. SVMs können darauf trainiert werden, eine Hyperebene zu finden, die normale Daten von Anomalien trennt.
- Bioinformatik. SVMs werden in der Klassifizierung biologischer Daten, zur Proteinklassifizierung und zur Analyse von Genexpressionsprofilen eingesetzt.

Ein Hyperspektralbild, das mithilfe eines SVM-Klassifikators klassifiziert wurde. (Siehe MATLAB Programmcode.)

Ein Hyperspektralbild, das mithilfe eines SVM-Klassifikators klassifiziert wurde. (Siehe MATLAB Programmcode.)
Nachteile der SVM
Wie alle Machine-Learning-Modelle stoßen auch Support Vector Machines an ihre Grenzen:
- Große Datensätze. SVMs sind aufgrund ihrer hohen Kosten für Rechenleistung und Speicheranforderungen nicht für die Verarbeitung großer Datensätze geeignet. Der Kernel-Trick ermöglicht es der Support Vector Machine zwar, nichtlineare Daten zu verarbeiten, macht sie aber rechenintensiv. SVMs erfordern die Lösung eines quadratischen Optimierungsproblems. Bei großen Datensätzen wäre auch die Kernel-Matrix groß und würde den Speicherbedarf erhöhen.
- Verrauschte Daten. SVMs sind für verrauschte Daten nicht geeignet, da sie darauf abzielen, den Abstand zwischen den Klassen zu maximieren.
- Interpretierbarkeit. Während lineare SVMs interpretierbar sind, trifft dies auf nichtlineare SVMs nicht zu. Die komplexen Umwandlungen, die bei nichtlinearen SVMs auftreten, erschweren die Interpretation der Entscheidungsgrenze.
Mit MATLAB® und der Statistics and Machine Learning Toolbox™ können Sie SVM-Modelle für Klassifizierung und Regression trainieren, auswerten und Vorhersagen treffen. Von der Auswahl der Merkmale und der Anpassung der Hyperparameter bis hin zur Kreuzvalidierung und Leistungsmetriken bietet MATLAB Ihnen Tools zur Erstellung effizienter Support Vector Machine-Modelle. Low-Code-Apps für Machine Learning in MATLAB ermöglichen es Ihnen, SVMs interaktiv zu trainieren und zu bewerten, C/C++ Code zu generieren und auf CPUs und Microcontrollern zu implementieren, ohne selbst Code schreiben zu müssen.
Datenvorverarbeitung
Um genaue Ergebnisse zu gewährleisten, müssen die Daten frei von Ausreißern und für das Modelltraining bereit sein. Mit MATLAB können Sie Bereinigungsaufgaben durchführen, z. B. fehlende Werte und Ausreißer bearbeiten, Daten normalisieren und glätten. Sie können die Live-Editor-Tasks zur Datenvorverarbeitung oder die Data Cleaner-App verwenden, um Ihre Daten interaktiv vorzuverarbeiten. Diese Apps erzeugen ebenfalls Code.
MATLAB unterstützt verschiedene Datentypen, wie z. B. Zeitreihen, Text, Bilder und Audio. Spezielle Toolboxen wie Audio Toolbox™ und Signal Processing Toolbox™ bieten Funktionen zur Merkmalsextraktion, mit denen Sie charakteristische Merkmale in verschiedenen Bereichen messen und Zwischenberechnungen wiederverwenden können.
Training des SVM-Modells
Sie können Ihre SVM-Modelle für binäre oder mehrklassige Klassifizierungs- und Regressionsaufgaben mithilfe der Funktionen fitcsvm
und fitrsvm
trainieren. Für nichtlineare Support Vector Machines werden mehrere Kernfunktionen (z. B. linear, polynomisch und RBF) unterstützt. Sie können aber auch eine benutzerdefinierte Kernel-Funktion (z. B. Sigmoid) erstellen und angeben.
Sie können SVM-Modelle auch interaktiv mit der Classification Learner-App und der Regression Learner-App trainieren. Mit diesen Apps können Sie den gesamten Workflow für ein SVM-Modell vom Training bis zur Abstimmungsphase durchführen, ohne Code schreiben zu müssen. Über die Apps können Sie Daten untersuchen, Funktionen auswählen, automatisiertes Training durchführen, Hyperparameter optimieren und Ergebnisse bewerten.

Validierungs-Konfusionsmatrix, erstellt mit der Classification Learner-App. (Siehe MATLAB Programmcode.)

Validierungs-Konfusionsmatrix, erstellt mit der Classification Learner-App. (Siehe MATLAB Programmcode.)
Die Apps können C/C++ Code generieren und ermöglichen Ihnen den Export Ihres SVM-Modells, sodass Sie Ihre Ergebnisse einfach teilen und außerhalb der App weiter untersuchen können. Sie können beispielsweise Ihr Support Vector Machine-Modell aus der Classification Learner-App oder der Regression Learner-App exportieren und in die Experiment Manager-App importieren, um zusätzliche Aufgaben auszuführen, wie z. B. das Ändern der Trainingsdaten, das Anpassen der Suchbereiche für Hyperparameter und das Ausführen benutzerdefinierter Trainingsexperimente.
Vorhersagen
Nach dem Training des SVM-Modells können Sie mithilfe der Vorhersagefunktion die Bezeichnungen vorhersagen. Sie können Ihr trainiertes SVM-Modell in Simulink mit den Blöcken ClassificationSVM Predict oder RegressionSVM Predict simulieren.
Bewerten der Ergebnisse
Sie können die Leistung des SVM-Modells programmgesteuert mithilfe von Funktionen wie confusionchart
und rocmetrics
oder interaktiv bewerten. Mithilfe der Apps für Machine Learning können Sie die Leistung verschiedener Modelle vergleichen, um das Modell zu finden, das am besten zu Ihren Daten passt.
Nachdem Sie Klassifikatoren in der Classification Learner-App trainiert haben, können Sie Modelle anhand der Genauigkeit vergleichen, Klassifikatorergebnisse visualisieren, indem Sie Klassenvorhersagen grafisch darstellen, und die Leistung mithilfe einer Konfusionsmatrix, einer ROC-Kurve oder eines Präzision-Trefferquote-Diagramms überprüfen.
Ähnlich verhält es sich mit der Regression Learner-App: Sie können Modelle anhand von Modellmetriken vergleichen, Regressionsergebnisse grafisch darstellen, indem Sie die tatsächliche und die vorhergesagte Antwort in einem Antwortdiagramm gegenüberstellen, und Modelle mithilfe eines Residuendiagramms bewerten.

Diagramm der vorhergesagten Antwort im Vergleich zur tatsächlichen Antwort für ein Regressionsmodell, das in der Regression Learner-App trainiert wurde. Je näher die Punkte an der Linie liegen, desto besser ist die Vorhersage. (Siehe MATLAB Programmcode.)

Diagramm der vorhergesagten Antwort im Vergleich zur tatsächlichen Antwort für ein Regressionsmodell, das in der Regression Learner-App trainiert wurde. Je näher die Punkte an der Linie liegen, desto besser ist die Vorhersage. (Siehe MATLAB Programmcode.)
Ressourcen
Erweitern Sie Ihre Kenntnisse durch Dokumentation, Beispiele, Videos und vieles mehr.
Dokumentation
- Klassifizierung von menschlichen Phonokardiogramm-Aufzeichnungen (PCG) mithilfe eines SVM-Klassifikators
- Auswertung der Klassifikatorleistung mit der Classification Learner-App
- Evaluierung der Modellleistung in der Regression Learner-App
- Auswahl eines Klassifizierungstyps
- Export eines Klassifikationsmodells zur Vorhersage neuer Daten
- Abstimmung eines Regressionsmodells mithilfe des Experiment Manager
- Erstellung eines SVM-Bildklassifikators
Ähnliche Themen
Sehen Sie sich weitere Themengebiete an, für die MATLAB- und Simulink-Produkte häufig zum Einsatz kommen.
30-tägige kostenlose Testversion
Jetzt loslegenWebsite auswählen
Wählen Sie eine Website aus, um übersetzte Inhalte (sofern verfügbar) sowie lokale Veranstaltungen und Angebote anzuzeigen. Auf der Grundlage Ihres Standorts empfehlen wir Ihnen die folgende Auswahl: .
Sie können auch eine Website aus der folgenden Liste auswählen:
So erhalten Sie die bestmögliche Leistung auf der Website
Wählen Sie für die bestmögliche Website-Leistung die Website für China (auf Chinesisch oder Englisch). Andere landesspezifische Websites von MathWorks sind für Besuche von Ihrem Standort aus nicht optimiert.
Amerika
- América Latina (Español)
- Canada (English)
- United States (English)
Europa
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)