Die rechnerisch effektivste Methode, um zu entscheiden, ob zwei Punktmengen linear trennbar sind, ist die Anwendung der linearen Programmierung . GLTK ist perfekt für diesen Zweck und so gut wie jede Hochsprache bietet eine Benutzeroberfläche dafür - R , Python, Octave, Julia usw.
In Bezug auf die Antwort, die die Verwendung von SVMs vorschlägt :
Die Verwendung von SVMs ist aus zwei Gründen eine suboptimale Lösung zur Überprüfung der linearen Trennbarkeit:
SVMs sind Soft-Margin-Klassifikatoren. Dies bedeutet, dass sich ein linearer Kernel-SVM möglicherweise mit einer Trennebene begnügt, die nicht perfekt trennt, obwohl dies tatsächlich möglich ist. Wenn Sie dann die Fehlerrate überprüfen, wird sie nicht 0 sein und Sie werden fälschlicherweise den Schluss ziehen, dass die beiden Sätze nicht linear trennbar sind. Dieses Problem kann durch Auswahl eines sehr hohen Kostenkoeffizienten C abgeschwächt werden - dies ist jedoch mit einem sehr hohen Rechenaufwand verbunden.
SVMs sind Maximum-Margin-Klassifikatoren. Dies bedeutet, dass der Algorithmus versucht, eine Trennebene zu finden, die die beiden Klassen trennt, während er versucht, sich so weit wie möglich von beiden zu entfernen. Auch dies ist ein Merkmal, das den Rechenaufwand unnötig erhöht, da es etwas berechnet, das für die Beantwortung der Frage der linearen Trennbarkeit nicht relevant ist.
Angenommen, Sie haben eine Reihe von Punkten A und B:
Dann müssen Sie die 0 für die folgenden Bedingungen minimieren:
(Das A unten ist eine Matrix, nicht die Menge der Punkte von oben)
"Minimieren von 0" bedeutet effektiv, dass Sie eine Zielfunktion nicht wirklich optimieren müssen, da dies nicht erforderlich ist, um herauszufinden, ob die Sätze linear trennbar sind.
Am Ende definiert ( ) die Trennebene.
Wenn Sie an einem Arbeitsbeispiel in R oder den mathematischen Details interessiert sind, dann überprüfen Sie dies .