Nichtlineare Trennung von Punktmengen nach Mangasarian  

Downloads:
Optimale Hyperebenen und Support Vector Machines sind wichtige Elemente des maschinellen Lernens. Geht man in die Historie zurück, hat bereits 1965 Olvi L. Mangasarian in seinem Artikel "'Linear and Nonlinear Separartion of Patterns by Linear Programming"' die Trennung beliebiger Punktmengen mittels Linear Programmierung betrachtet. 1990 wurden diese Methoden dann weiterentwickelt und als Neuronales Netz zur Erkennung von Krebszellen angewandt. Insbesondere die massiv gesteigerten Rechnerleistungen machen diesen Algorithmus heute wieder interessant. Die vollständige Herleitung des Algorithmus und ein MATHEMATICA-Notebook ist in den Downloads zu finden.    

Für \(a \in \mathbb{R}^n\) bezeichnet \(a_i\) die \(i\)-te Vektorkomponente. Bei Vektoren sind \(<, \leq, >, \geq, =, \neq\) komponenteweise zu verstehen, d.h. für \(a \in \mathbb{R}^n\) bedeutet \(a>0\), dass \(a_i > 0\) für alle \(i=1, \dots, n\) gilt. \(1_n\) bezeichnet den Vektor \((1, \dots, 1)^T\) aus \(\mathbb{R}^n\). \(0_n\) wird analog definiert.

Im Folgenden werden nun endliche Punktmengen \({\cal A} = \{a^{(1)}, \dots, a^{(m)}\}\) und \({\cal B} = \{b^{(1)}, \dots, b^{(k)}\}\) aus \(\mathbb{R}^n\) betrachtet. Mit \(A=[a^{(1)}, \dots, a^{(m)}]^T \in \mathbb{R}^{m \times n}\) und \(B=[b^{(1)}, \dots, b^{(k)}]^T \in \mathbb{R}^{k \times n}\) werden die Matrizen betrachtet, deren Zeilen die einzelenen Punkte aus \({\cal A}\) bzw. \({\cal B}\) darstellen.

Linear trennbare Punktmengen

\({\cal A}\) und \({\cal B}\) sollen trennbar heißen, wenn ihre konvexen Hüllen \(\text{conv}({\cal A})\) bzw. \(\text{conv}({\cal B})\) trennbar sind. Falls endliche Punktmengen trennbar sind, sind diese stets strikt trennbar, da \(\text{conv}({\cal A})\) und \(\text{conv}({\cal B})\) kompakt und abgeschlossen sind.

Satz 1. \({\cal A}\) und \({\cal B}\) sind genau dann trennbar, wenn fogendes Lineares Programm eine positive Lösung hat: \[\begin{array}{rl} \text{Maximiere} & \alpha - \beta\\ \text{u.d.B.} & A c - \alpha 1_m \geq 0\\ & -B c + \beta 1_k \geq 0\\ & 1_n \geq c \geq -1_n. \end{array}\]

Proof. siehe pdf.

Durch das Lineare Programm werden bei trennbaren Punktmengen \({\cal A}\) und \({\cal B}\) zwei parallele Hyperbenen \(E_1 = \{x \in \mathbb{R}^n | c^T x = \alpha\}\) und \(E_2 = \{x \in \mathbb{R}^n | c^T x = \beta\}\) erzeugt. \(E_1\) bzw. \(E_2\) haben mindestens einen Punkt mit \({\cal A}\) bzw. \({\cal B}\) gemeinsam. Zudem ist der Abstand der beiden Hyperebenen wegen der Zielfunktion \(\alpha-\beta\) maximal. Die Hyperebene \(E = \{x \in \mathbb{R}^n | c^T x = \frac{\alpha+\beta}{2}\}\) ist eine "’optimale"’ Hyperebene zum Trennen der Punktmengen.

Satz 2. Das Lineare Programm lässt sich in die Form \[\begin{array}{rl} \text{Maximiere} & d^T x\\ \text{u.d.B.} & D x \leq b\\ & x \geq 0 \end{array}\] überführen.

Proof. Zur Vereinfachung der Notation wird mit \(0_n = (0,\dots , 0)^T\) der Nullvektor in \(\mathbb{R}^n\) bezeichnet und mit \(I_n\) die Identitätsmatrix aus \(\mathbb{R}^{n\times n}\).

Zunächst muss \(x \geq 0\) erfüllt sein. Hierzu wird aus \(c = c^+ - c^-\), \(\alpha = \alpha^+ - \alpha^-\) und \(\beta = \beta^+ - \beta^-\) mit \(c^+, c^-, \alpha^+, \alpha^-,\beta^+, \beta^- \geq 0.\) Der gesuchte Vektor \(x\) ist dann \(x=((c^+)^T,\alpha^+,\beta^+,(c^-)^T, \alpha^-,\beta^-)^T \in \mathbb{R}^{2n+4}\) und \(d=((0_n)^T, 1,-1,(0_n)^T, -1,1)^T\in \mathbb{R}^{2n+4}\).

Die Bedingung \(1_n \geq c \geq -1_n\) wird zu \(c^+ - c^- \leq 1_n\) und \(-c^+ + c^- \leq 1_n\). Die Matrix \(D \in \mathbb{R}^{(2n+m+k) \times (2n+4)}\) lässt sich folgendermaßen schreiben: \[D= \left( \begin{array}{rrrrrr} -A & 1_m & 0_m & A & -1_m & 0_m\\ B & 0_k & -1_k & -B & 0_k & 1_k\\ I_n & 0_n & 0_n & -I_n & 0_n & 0_n\\ -I_n & 0_n & 0_n & I_n & 0_n & 0_n \end{array} \right)\] und \(b\) ist \(((0_m)^T, (0_k)^T,(1_n)^T, (1_n)^T)^T\) mit \(b \in \mathbb{R}^{2n+m+k}\). ◻

Beispiel 3. Es sollen die Mengen \({\cal A} = \{(1, 1)^T, (0.2, 1)^T, (1, 0.2)^T, (1.3, 1)^T, (1, 2)^T\}\) und \({\cal B} = \{(-1.2, 1.3)^T, (-1.4, -0.8)^T, (-1.3, 0)^T, (-0.9, -0.2)^T, (-1.1, 1.4)^T\}\) getrennt werden. Es ist \(m=5\), \(k=5\) und \(n=2\).
Dann ist \(d=(0,0,1,-1,0,0,-1,1)^T\) und \(b = (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1)^T\). Die Matrix \(D\) ist \[D=\left( \begin{array}{cccccccc} -1 & -1 & 1 & 0 & 1 & 1 & -1 & 0 \\ -0.2 & -1 & 1 & 0 & 0.2 & 1 & -1 & 0 \\ -1 & -0.2 & 1 & 0 & 1 & 0.2 & -1 & 0 \\ -1.3 & -1 & 1 & 0 & 1.3 & 1 & -1 & 0 \\ -1 & -2 & 1 & 0 & 1 & 2 & -1 & 0 \\ -1.2 & 1.3 & 0 & -1 & 1.2 & -1.3 & 0 & 1 \\ -1.4 & -0.8 & 0 & -1 & 1.4 & 0.8 & 0 & 1 \\ -1.3 & 0 & 0 & -1 & 1.3 & 0 & 0 & 1 \\ -0.9 & -0.2 & 0 & -1 & 0.9 & 0.2 & 0 & 1 \\ -1.1 & 1.4 & 0 & -1 & 1.1 & -1.4 & 0 & 1 \\ 1 & 0 & 0 & 0 & -1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 & 0 & -1 & 0 & 0 \\ -1 & 0 & 0 & 0 & 1 & 0 & 0 & 0 \\ 0 & -1 & 0 & 0 & 0 & 1 & 0 & 0 \\ \end{array} \right)\] Die Berechnung des Linearen Programm mit Standardalgortihmen liefert für \[\begin{array}{rl} \text{Maximiere} & d^T x\\ \text{u.d.B.} & D x \leq b\\ & x \geq 0 \end{array}\] den Lösungsvektor \(x=(1, 0.125, 0.325, 0, 0, 0, 0,0.925)^T\) und damit \[(c,\alpha,\beta) = ((1, 0.125), 0.325,0)^T - ((0, 0), 0, 0.925)^T = ((1,0.125),0.325,-0.925)^T.\] Die "’optimal"’ trennende Hyperbene von \({\cal A}\) und \({\cal B}\) ist dann \[E=\left\{x \in \mathbb{R}^2 \left| (1,0.125) x - \frac{0.325 - 0.925}{2}\right.\right\}.\]

Der Algortihmus 1 in Abbildung 2 fasst die Ergebnisse zusammen.

Nichtlinear trennbare Punktmengen

Falls die Punktmengen \({\cal A}\) und \({\cal B}\) nicht trennbar sind, liefert das lineare Programm die Lösung \(x=(0,\dots,0)^T \in \mathbb{R}^{2n+4}\) und damit \(c=(0, \dots, 0)^T \in \mathbb{R}^n\).

Es ist allerdings möglich in diesem Fall eine Lösung mit \(c \neq 0\) zu erzwingen. Hierzu wird das Lineare Programm so verändert, dass eine Komponente von \(c\) ungleich \(0\) ist. Beispielsweise kann \(c_i = 1\) durch Veränderung von \(b\) folgendermaßen "’erzwungen"’ werden. Sei dazu \(1_n^{(i)} = (1, \dots, 1, -1,1, \dots,1) \in \mathbb{R}^n\) der Vektor \(1_n\) mit \(-1\) an \(i\)-ter Komponente. Dann ist mit \(b=((0_m)^T, (0_k)^T,(1_n)^T, (1_n^{(i)})^T)^T\) die Nebenbedingung \(-c_i^+ + c_i^- \leq -1\). Zugleich gilt \(c_i^+ - c_i^- \leq 1\) unverändert, d.h. in Summe \(c_i=c_i^+ - c_i^- = 1\). Analog ist für \(b=((0_m)^T, (0_k)^T, (1_n^{(i)},(1_n)^T)^T)^T\) \(c_i = -1\).

Beispiel 4. Der Punkt \((-0.8, 0.1)^T\) wird in \({\cal A}\) und \((-0.5, 0.1)^T\) in \({\cal B}\) zusätzlich aufgenommen. Das Lineare Programm aus Satz 2 liefert einen Nullvektor als Lösung, d.h. die Punkte sich nicht linear trennbar. Das modifizierte Lineare Programm mit \(c_1 = 1\) liefert folgende Lösungen: \[\alpha=-0.753846 \text{ und } \beta=-0.453846\] \[E_{\cal A} = \left\{x \in \mathbb{R}^2 \left|(1.,0.461538) x = -0.753846\right.\right\}\] \[E_{\cal B}=\left\{x \in \mathbb{R}^2 \left|(1.,0.461538) x = -0.453846\right.\right\}.\]
Emittle nun alle Punkte \((x_1,x_2)^T\) aus \({\cal B}\) mit \((x_1,x_2)^T (1.,0.461538) + 0.753846 >0\) und alle Punkte \((x_1,x_2)^T\) aus \({\cal A}\) mit \((x_1,x_2)^T (1.,0.461538) + 0.453846 <0\) (vgl. Abbildung 3) und streiche die jeweils identifizierten Punkte aus \({\cal B}\) und aus \({\cal A}\). Dann sind die Punktmengen trennbar. Für die gestrichenen Punkte kann ein neuer Trennungsversuch unternommen werden. So können sukzessive alle Punkte getrennt werden.

Durch die Variation \(c_i = \pm 1\) für alle \(i=1, \dots, n\) lassen sich die Ebene finden, für die die wenigsten Punkte für eine Trennung eleminiert werden müssen. Diese eliminierten Punkte können nun neu getrennt werden. Durch den Algorithmus 2 in Abbildung 4 können so beliebige Punktmengen getrennt werden.

Ein unbekannter Punkt kann einer Menge eindeutig zugeordnet werden, wenn die Lösungen des Algorithmus 2 aus Abbildung 4 nach und nach angewandt werden bis eine Trennung gefunden ist (vgl. Algorithmus 3 in Abbildung 5). Dabei wird die Trennungskategorisierung zur Punktmenge \({\cal A}\) bzw. \({\cal B}\) mit höherer Trennungstiefe unschärfer und unsicherer.