Wie berechnet man die VC-Dimension?


12

Ich studiere maschinelles Lernen und möchte wissen, wie man die VC-Dimension berechnet.

Zum Beispiel:

h(x)={1if axb0else  ( a , b ) R 2 mit den Parametern .(a,b)R2

Was ist die VC-Dimension davon?

Antworten:


10

Die VC-Dimension ist eine Schätzung für die Fähigkeit eines binären Klassifikators. Wenn Sie einen Satz finden Punkte, so dass es durch den Klassifikator zerschmettert werden kann (dh klassifizieren alle möglichen Etikettierungen richtig) , und Sie können nicht finden jede Menge von Punkte , die (dh für jede Menge zerstört werden kann von Punkten gibt es mindestens eine Beschriftungsreihenfolge, so dass der Klassifizierer nicht alle Punkte korrekt trennen kann), dann ist die VC-Dimension .2 n n + 1 n + 1 nn2nn+1n+1n

Betrachten Sie in Ihrem Fall zunächst zwei Punkte und , sodass . Dann gibt es mögliche Beschriftungenx 2 x 1 < x 2 2 2 = 4x1x2x1<x222=4

  1. x 2 : 1x1:1 ,x2:1
  2. x 2 : 0x1:0 ,x2:0
  3. x 2 : 0x1:1 ,x2:0
  4. x 2 : 1x1:0 ,x2:1

Alle Beschriftungen können durch den Klassifikator werden, indem die Parameter so eingestellt werden, dassa < b R.ha<bR

  1. a<x1<x2<b
  2. x1<x2<a<b
  3. a<x1<b<x2
  4. x1<a<x2<b

beziehungsweise. (Eigentlich kann als wlog angenommen werden, aber es reicht aus, einen Satz zu finden, der zerbrochen werden kann.)x1<x2

Betrachten Sie nun drei beliebige (!) Punkte , , und wlog, nehmen Sie , dann können Sie die Beschriftung (1,0,1) nicht erreichen. Wie in Fall 3 oben implizieren die Bezeichnungen : 1 und : 0 . Was impliziert, dass > b ist und daher die Bezeichnung von 0 sein muss. Daher kann der Klassifizierer keinen Satz von drei Punkten zerstören, und daher ist die VC-Dimension 2.x 2 x 3 x 1 < x 2 < x 3 x 1 x 2 a < x 1 < b < x 2 x 3 x 3x1x2x3x1<x2<x3x1x2a<x1<b<x2x3x3

- -

Vielleicht wird es mit einem nützlicheren Klassifikator klarer. Betrachten wir Hyperebenen (dh Linien in 2D).

Es ist leicht, drei Punkte zu finden, die unabhängig von ihrer Bezeichnung korrekt klassifiziert werden können:

Geben Sie hier die Bildbeschreibung ein

Für alle möglichen Beschriftungen finden wir eine Hyperebene, die sie perfekt trennt.23=8

Wir können jedoch keinen Satz von 4 Punkten finden, so dass wir alle möglichen Beschriftungen korrekt klassifizieren können. Anstelle eines formalen Beweises versuche ich ein visuelles Argument zu präsentieren:24=16

Nehmen wir vorerst an, dass die 4 Punkte eine Figur mit 4 Seiten bilden. Dann ist es unmöglich, eine Hyperebene zu finden, die die Punkte korrekt trennen kann, wenn wir die gegenüberliegenden Ecken mit derselben Beschriftung beschriften:

Wenn sie keine Figur mit 4 Seiten bilden, gibt es zwei "Grenzfälle": Die "äußeren" Punkte müssen entweder ein Dreieck bilden oder alle bilden eine gerade Linie. Im Fall des Dreiecks ist leicht zu erkennen, dass die Beschriftung, bei der der "innere" Punkt (oder der Punkt zwischen zwei Ecken) anders als die anderen beschriftet ist, nicht erreicht werden kann:

Bei einem Liniensegment gilt die gleiche Idee. Wenn die Endpunkte anders beschriftet sind als einer der anderen Punkte, können sie nicht durch eine Hyperebene getrennt werden.

Da wir alle möglichen Formationen von 4 Punkten in 2D abgedeckt haben, können wir schließen, dass es keine 4 Punkte gibt, die zerbrochen werden können. Daher muss die VC-Dimension 3 sein.


1
> Die Funktion kann jedoch x1 = 0, x2 = 0, x3 = 0 erreichen. Es müssen alle Labels erreicht werden?
声 孙

Ich habe hier eine ähnliche Frage gestellt: datascience.stackexchange.com/questions/39064/…, die im Zusammenhang mit einer linearen Hypothesenfunktion steht. Könnten Sie helfen, das zu beantworten?
Suhail Gupta

3

Die VC-Dimension eines Klassifikators wird folgendermaßen bestimmt:

VC = 1
found = False
while True:
    for point_distribution in all possible point distributions of VC+1 points:
        allcorrect = True
        for classdist in every way the classes could be assigned to the classes:
            adjust classifier
            if classifier can't classify everything correct:
                allcorrect = False
                break
        if allcorrect:
            VC += 1
            continue
    break

Es muss also nur einen Weg geben, drei Punkte so zu platzieren, dass alle möglichen Klassenverteilungen unter dieser Punktplatzierung richtig klassifiziert werden können.

Wenn Sie die drei Punkte nicht auf einer Linie platzieren, stimmt die Wahrnehmung. Es gibt jedoch keine Möglichkeit, die Wahrnehmung dazu zu bringen, alle möglichen Klassenverteilungen von 4 Punkten zu klassifizieren, unabhängig davon, wie Sie die Punkte platzieren

Dein Beispiel

Ihre Funktionen befinden sich in . Jeder Klassifikator hat mindestens Dimension 1.R

VC-Dimension 2: Es kann alle vier Situationen korrekt klassifizieren.

  1. Punkte: 0 und 42
  2. Distributionen:
    • Klasse (0) = Falsch, Klasse (42) = Falsch => klassifiziert dies korrekta=1337,b=3141
    • class (0) = False, class (42) = True => klassifiziert dies korrekta=40,b=1337
    • Klasse (0) = Wahr, Klasse (42) = Falsch => klassifiziert dies korrekta=1,b=1
    • a=1,b=1337

VC-Dimension 3: Nein, das funktioniert nicht. Stellen Sie sich die Klassen vor trueund falsewerden wie bestellt True False True. Ihr Klassifikator kann damit nicht umgehen. Daher hat es eine VC-Dimension von 2.

Beweis

x1,x2,x3Rx1<x2<x3

x1x2x3

x1

ax1b
x2
x2<a or b<x2
ax1x1<x2b<x2
ax1b<x2<x3
x3
ax3b
b<x3. Daher ist es mit diesem Klassifikator nicht möglich, alle Klassenverteilungen von 3 Punkten korrekt zu klassifizieren. Daher hat es keine VC-Dimension 3.

1
Ein konstanter Klassifikator hat die VC-Dimension 0 (obwohl man argumentieren kann, dass er überhaupt nicht als Klassifikator betrachtet werden sollte)
oW_

1
Oh, richtig. Aber ja, ich würde ein System, das sich überhaupt nicht an Daten anpassen kann, nicht als Klassifikator in einem maschinellen Lernkontext bezeichnen.
Martin Thoma
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.