Linjär klassificerare

Från Wikipedia
Hoppa till: navigering, sök

Linjär klassificerare är en enkel form av klassificerare.

Enkel linjär klassificerare[redigera | redigera wikitext]

Den enkla linjära klassificeraren har följande form:

f(x) = \mathbf{sign} \sum \alpha_i \left\langle x_i, x \right\rangle + b, där x är en attributvektor (ett exempel) som ska klassificeras, \left\{ \alpha_i \right\} en mängd av konstanter, \left\{ x_i \right\} en mängd av andra attributvektorer (som typiskt kommer från en mängd av träningsexempel), samt \left\langle \cdot , \cdot \right\rangle den vanliga skalärprodukten. \mathbf{sign} är en stegfunktion som är 1 för positiva tal och -1 för negativa tal, så klassificeraren kan alltså skilja mellan två klasser.

Begränsning[redigera | redigera wikitext]

Den enkla linjära klassificeraren kan inte beskriva funktioner som inte är linjärt separabla, till exempel en XOR-funktion.

Exempel på metoder att skapa linjära klassificerare[redigera | redigera wikitext]

Generaliserad linjär klassificerare[redigera | redigera wikitext]

Man kan ersätta skalärprodukten i formeln ovan med en mer generell funktion, en kärna. Vi får då en generaliserad linjär klassificerare som har följande form:

f(x) = \mathbf{sign} \sum \alpha_i K(x_i, x) + b

Motivering för den generaliserade linjära klassificeraren[redigera | redigera wikitext]

Som nämndes ovan så kan den enkla linjära klassificeraren inte representera vissa funktioner, till exempel en vanlig XOR-funktion av två logiska variabler A och B. Detta kan kringgås genom att vi inför en hjälpvariabel C = AB.

För att generellt lösa den typen av problem kan vi göra en olinjär avbildning av vektorerna i attributrummet till ett rum av högre dimension. I exemplet ovan har vi alltså avbildat en tvådimensionell vektor x = (A,B) på en tredimensionell \phi (x) = (A,B,AB), och i det tredimensionella rummet kan vi använda en vanlig linjär klassificerare för att beskriva funktionen.

Eftersom attributvektorerna i formeln för den linjära klassificeraren enbart förekommer i skalärprodukter så behöver vi inte explicit beskriva avbildningen från attributrummet till rummet av högre dimension, utan det räcker med att vi anger hur skalärprodukten av de avbildade vektorerna ser ut, dvs vi anger K(x,y) = \left\langle \phi (x),  \phi (y) \right\rangle, en så kallad kärna. Detta brukar kallas kärntricket (kernel trick), och är praktiskt eftersom det ofta är betydligt enklare att beräkna värdet för kärnan än att explicit utföra avbildningen.

Exempel på olinjära kärnor[redigera | redigera wikitext]

  • Polynomiell (oftast kvadratisk eller kubisk, dvs d är 2 eller 3): K(x,y) = \gamma \left\langle x, y \right\rangle^d eller K(x,y) = (\gamma \left\langle x, y \right\rangle + 1)^d
  • Gaussisk: K(x,y) = e^{-\gamma \left\| x - y \right\|^2}

Exempel på metoder att skapa generaliserade linjära klassificerare[redigera | redigera wikitext]

Icke-binär klassificering[redigera | redigera wikitext]

Den linjära klassificeraren (inklusive den generaliserade) kan bara skilja mellan två klasser. För att kringgå detta problem använder man två metoder:

  • En-mot-alla
  • Alla-mot-alla

Antag till exempel att vi har fyra klasser A, B, C och D. Vid en-mot-alla-klassificering skapar man en klassificerare per klass, dvs fyra stycken. Klassificeraren för A kan då skilja mellan A och icke-A. För att klassificera kör man alla fyra klassificerarna och väljer den klass som ger störst positivt utslag.

Vid alla-mot-alla-klassificering skapar man i stället klassificerare för alla par av klasser, till exempel A-mot-B, A-mot-C, osv. Metoden påminner om seriespel i till exempel fotboll. För denna metod får vi alltså sex stycken klassificerare för detta exempel. För att utföra klassificeringen kör man alla klassificerarna och räknar vilken klass som får flest antal vinster (och eventuellt också "målskillnad" om det skulle bli samma antal vinster).