Rapport: Support Vector Machines

Download Report

Transcript Rapport: Support Vector Machines

2015-2016
RAPPORT: SUPPORT VECTOR MACHINES
ARTIFICIËLE INTELLIGENTIE 3C
Helder De Baere
Florian Goeteyn
Arne Herbots
Jeffrey Van de Velde
[Company address]
Inhoud
Introductie ............................................................................................................................................... 2
Historie .................................................................................................................................................... 2
Wat zijn Support Vector Machines.......................................................................................................... 3
definitie ........................................................................................................................................... 3
Principe .................................................................................................................................................... 3
Lineaire Classificatie ................................................................................................................................ 3
Scheidbare Klassen .............................................................................................................................. 3
Werkwijze ........................................................................................................................................ 3
Wiskundige berekening ................................................................................................................... 4
Niet-scheidbare klasse ........................................................................................................................ 6
Werkwijze ........................................................................................................................................ 6
Wiskundige berekening ............................................................ Fout! Bladwijzer niet gedefinieerd.
Niet-Lineair Classificatie .......................................................................................................................... 7
Werkwijze ........................................................................................................................................ 7
Kernel Trick ...................................................................................................................................... 7
Overfitting en underfitting ............................................................................................................ 10
Verschil met andere technologieën ...................................................................................................... 11
SVM vs Neurale netwerken ........................................................................................................... 11
SVM vs Beslissingsbomen .............................................................................................................. 11
Andere toepassingen............................................................................................................................. 12
In de praktijk.......................................................................................................................................... 12
Spamfilters..................................................................................................................................... 12
Bronnen ................................................................................................................................................. 16
1
Introductie
In dit rapport zullen we het hebben over Support Vector Machines in Machine Learning.
Machine Learning is een subcategorie in de Artificiële Intelligentie, die zich bezighoudt met de
ontwikkeling van technieken en methoden die ervoor te zorgen dat computers in staat zijn te leren.
Met andere woorden het ontwikkelen van algoritmes die de machine in staat brengen om te leren,
taken en activiteiten uit te voeren en voorspellingen te maken op basis van data.
Machine Learning ligt tussen Statistiek en Data Mining. Statistiek voorziet modellen(methoden) die
data uitleggen, deze modellen zijn niet opgemaakt om een speciale taak op te lossen. Bij Data Mining
gaat het om het oplossen van een taak hoe dit gebeurd, is minder belangrijk. Machine Learning
maakt of gebruikt methoden die een specifieke taak oplossen.
Machine Learning kunnen we dan nog eens onderverdelen in 3 delen, namelijk: Supervised,
Unsupervised en Reïnforced Learning. Bij Supervised Learning wordt er gebruik gemaakt van
gelabelde data om de klassering aan te leren. Een voorbeeld hiervan is gezichtsherkenning. Bij elk
gezicht in de data hoort een persoon, als men het algoritme dan op een foto toepast, vergelijkt het
algoritme de foto met de foto’s uit de data en geeft dan de gegevens terug van die hij in de data
vond.
Bij Unsupervised Learning moet de machine zelf een manier vinden om de data te kunnen
classificeren. Deze manier van “leren” ligt het dichtst aan tegen Data Mining van de drie.
Reïnforced Learning is geïnspireerd door gedragspsychologie. Het houdt rekening met hoe de
software agent reageert op de omgeving om zo de succeswaarde te maximaliseren. Deze manier
wordt vooral gebruikt in de game-industrie en simulatie of genetische onderzoeken.
We in dit verslag zullen we dieper ingaan over de opkomst van deze technologie, de verschillende
toepassingen en de achterliggende werking.
Historie
De basis van Support Vector Machines werd reeds eind de jaren 70 gelegd door Vapnik en
Chervonenkis. Ze schreven samen een boek getiteld “Statistical Learning Theory”. Pas 4 jaar later
kwam er een Engelstalige versie van dit boek. Het duurde echter nog eens 10 jaar voordat Support
Vector Machines zijn echte grote doorbraak maakte op een conferentie in Pittsburgh (Conference on
Computational Learning Theory 1992). Op deze conferentie schreef Vapnik samen met Boser en
Guyon een uitgebreide paper over het gebruik van Support Vector Machines.
Tot de dag van vandaag blijft Support Vector Machines populair voor het gebruik van toepassingen in
classificatie en regressieanalyse.
2
Wat zijn Support Vector Machines
definitie
Support Vector Machine is een verzameling van algoritmes in het gebied van Machine Learning die
gebruik maakt van “Supervised Learning” modellen met bijhorende algoritmes die data analyseren
en patronen herkennen, voor het gebruik van classificatie en regressieanalyse.
Principe
Een support Vector Machine is een binaire classificeerder die objecten onderverdeeld in twee
klassen. Voordat de machine een onderscheid kan maken tussen deze twee klassen, moet deze
getraind worden. In de trainingsfase wordt een hoop voorbeelden meegegeven aan de machine met
daarbij de respectievelijke klasse waartoe ze behoren. Tijdens deze training zal de machine een zo
goed mogelijke scheiding proberen maken tussen deze klassen door een hyperplane of hypervlak te
creëren waarbij de objecten van deze twee verschillende klassen zo ver mogelijk verwijderd zijn van
deze rechte. Deze rechte (=hyperplane of hypervlak) wordt bepaald door de objecten die het dichtst
bij deze lijn liggen, deze objecten worden ook wel de “support vectors”. Hieraan heeft de machine
dan ook zijn naam te danken. Na de trainingsfase zal de machine in staat zijn om bij de invoer van
nieuwe objecten te bepalen aan welke kant van de rechte het object zich zal bevinden en daarmee
ook weten tot welke klasse hij behoort.
Lineaire Classificatie
De eenvoudigste soort classificatie, is die van de lineaire classificatie. We beginnen met deze
classificeerder omdat hun eigenschappen en gedrag nog weinig geheimen bevatten. Om het principe
van lineaire classificatie uit te leggen starten we met een binaire classificatie (twee-klassen) zonder
dieper in te gaan op de dimensie van de inputruimte. Onder het begrip lineaire classificeerder
verstaan we een rechte, een vlak of een hypenplane in een dimensie 𝑛. Deze verdeeld objecten in
twee klassen, namelijk een positieve en een negatieve.
Scheidbare Klassen
Werkwijze
We beginnen in een bepaalde ruimte, waarin zich 2 verschillende klassen bevinden. Deze twee
klassen worden onderverdeeld in “positieve” en “negatieve” objecten. Nu willen we weten wanneer
we een object invoeren of we spreken van een “positief” of een “negatief” object. We weten dat
objecten van de twee verschillende klassen worden verdeeld aan de hand van een hyperplane
(=rechte), waarbij de objecten uit de twee verschillende klassen zo ver mogelijk van de hyperplane
verwijderd zijn. Deze methode wordt daarom ook de “wijdste straat” –methode genoemd. De
grenzen van de straat zowel aan de positieve als aan de negatieve zijde wordt ook wel “de goot”
genoemd.
3
Wiskundige berekening
We hebben dus een beslissingsregel nodig die de klasse bepaald van een object 𝑢 (=unknown)
Stel:


Een vector 𝑤 (=normaalvector) die loodrecht op de hyperplane staat waarvan de lengte nog
ongekend is.
Een vector 𝑢 die wijst naar 𝑢.
Om te weten waar 𝑢 zich bevindt in de ruimte (positief of negatief), moeten we vector 𝑢 projecteren
op vector 𝑤.
𝑤 . 𝑢 ≥ 𝑏(𝑐𝑜𝑛𝑠𝑡𝑎𝑛𝑡𝑒)
of
𝑤 . 𝑢 + 𝑏 ≥ 0 𝑑𝑎𝑛 𝑝𝑜𝑠𝑖𝑡𝑖𝑒𝑓(beslissingsregel)
Om te achterhalen wat 𝑤 en 𝑏 is, zullen we een aantal beperkingen moeten invoeren:
Alle positieve data (boven de hyperplane) krijgen een waarde hoger of gelijk aan 1 en alle negatieve
data (onder de hyperplane) krijgen een waarde kleiner of gelijk aan -1.
Stel:
{
𝒳+ (𝑝𝑜𝑠𝑖𝑡𝑖𝑒𝑣𝑒 𝑑𝑎𝑡𝑎) → 𝑤 . 𝒳+ + 𝑏 ≥ 1
𝒳− (𝑛𝑒𝑔𝑎𝑡𝑖𝑒𝑣𝑒 𝑑𝑎𝑡𝑎) → 𝑤 . 𝒳− + 𝑏 ≤ −1
We kunnen dit ook eenvoudiger schrijven door een variabel 𝑦 te creeëren:
𝒳 = {(𝑥𝑖 , 𝑦𝑖 )|𝑥𝑖 ∈ ℝ𝑛 , 𝑦𝑖 ∈ {−1,1}, 𝑖 = 1, 2, 3, … 𝑚}
{
𝑦𝑖 = 1 𝑑𝑎𝑛 𝑝𝑜𝑠𝑖𝑡𝑖𝑒𝑓
𝑦𝑖 = −1 𝑑𝑎𝑛 𝑛𝑒𝑔𝑎𝑡𝑖𝑒𝑓
Dus onze beperkingen worden:
4
𝑦 (𝑤 . 𝒳𝑖 + 𝑏) ≥ 1
{ 𝑖
𝑦𝑖 (𝑤 . 𝒳𝑖 + 𝑏) ≥ 1
De vergelijkingen zijn gelijk door het introduceren van variabel 𝑦!
Hieruit kunnen we stellen dat:
𝑦𝑖 (𝑤 . 𝒳𝑖 + 𝑏) − 1 ≥ 0
{
𝑦𝑖 (𝑤 . 𝒳𝑖 + 𝑏) − 1 = 0 𝑣𝑜𝑜𝑟 𝒳𝑖 "𝑖𝑛 𝑑𝑒 𝑔𝑜𝑜𝑡"
Aan de hand van deze vergelijkingen is het nu mogelijk om de breedte van de straat 𝑀 te berekenen.
Stel 𝒳+ als een vector die wijst naar een positief object en 𝒳− als een vector die wijst naar een
negatief object. Dan kunnen we een vector 𝒳+ − 𝒳− creëren die wijst van 𝒳− naar 𝒳+.
Als de vector 𝒳+ − 𝒳− loodrecht op de goot zou staan, dan zou deze de breedte van de straat zijn,
aangezien de twee goten ook evenwijdig zijn met de hyperplane.
Om te garanderen dat de vector 𝒳+ − 𝒳− loodrecht op de goot staat, kunnen we deze vector op de
normaalvector 𝑤 projecteren:
M = (𝒳+ − 𝒳− ).
𝑤
‖𝑤‖(𝑔𝑟𝑜𝑜𝑡𝑡𝑒 𝑤)
Door het gebruiken van de beperking “in de goot” kunnen we bepalen wat:
𝑦𝑖 (𝑤 . 𝒳𝑖 + 𝑏) − 1 = 0 𝑣𝑜𝑜𝑟 𝒳𝑖 "𝑖𝑛 𝑑𝑒 𝑔𝑜𝑜𝑡"
⇒ 𝒳+ . 𝑤 = 1 − 𝑏
⇒ 𝒳− . 𝑤 = 1 + 𝑏
Dus:
M=
2
(𝑏𝑟𝑒𝑒𝑑𝑡𝑒 𝑣𝑎𝑛 𝑑𝑒 𝑠𝑡𝑟𝑎𝑎𝑡)
‖𝑤‖
We willen de breedte van de straat zo groot mogelijk maken onder de beperkingen die we hebben:
2
1
1
max (
) ⇒ max (
) ⇒ min(‖𝑤‖) 𝑜𝑓 min ( ‖𝑤‖2 )
‖𝑤‖
‖𝑤‖
2
5
Gebruik van Lagrange:
Door Lagrange multipliers te gebruiken, kunnen we maximaliseren of minimaliseren zonder rekening
te hoeven houden met de beperkingen.
𝐿=
1
‖𝑤‖2 − ∑ 𝛼𝑖 [𝑦𝑖 (𝑤 . 𝒳𝑖 + 𝑏) − 1]
2
beperking
𝜕𝐿
= 𝑤 − ∑ 𝛼𝑖 𝑦𝑖 𝒳𝑖 = 0 ⇒ 𝑤 = ∑ 𝛼𝑖 𝑦𝑖 𝒳𝑖
𝜕𝑤
𝜕𝐿
= − ∑ 𝛼𝑖 𝑦𝑖 𝑏 = 0 ⇒ 𝑏 = ∑ 𝛼𝑖 𝑦𝑖 = 0
𝜕𝑏
Nu we weten wat 𝑤 is, kunnen we deze substitueren in 𝐿:
1
𝐿 = ∑ 𝛼𝑖 − ∑ ∑ 𝛼𝑖 𝛼𝑗 𝑦𝑖 𝑦𝑗 𝒳𝑖 𝒳𝑗
2
Beslissingsregel:
∑(𝛼𝑖 𝑦𝑖 𝒳)𝑖 . 𝑢 + 𝑏 ≥ 0 𝑑𝑎𝑛 𝑝𝑜𝑠𝑖𝑡𝑖𝑒𝑓
Niet-scheidbare klasse
Door meetfouten of ruis in de data kan het zijn dat niet alle data lineair gescheiden kan worden. Om
dit probleem op te lossen, zullen we beroep moeten doen op een “strafterm”. Hierbij voegen we aan
elk object een “slack variable”(=restwaarde) toe. Deze zal de afstand bijhouden in hoeverre het
object zich aan de “verkeerde kan” van de hyperplane bevindt.
Werkwijze
6
Niet-Lineair Classificatie
Werkwijze
Het kan gebeuren dat er geen lineair onderscheid gemaakt kan worden tussen de verschillende
elementen. Men kan besluiten om deze enkele uitschieters te negeren (tot een bepaalde marge),
maar soms kan deze overschreden worden. De oplossing hiervoor is dan de niet-lineaire SVM, die in
1992 is uitgewerkt door het toepassen van de kernel-methode. Dit zorgde ervoor dat veel
complexere functies gecontroleerd konden worden.
In dit principe wordt de invoerruimte naar een hogere dimensie omgevormd, ook wel de feature
space genoemd.Dde scheiding is hierdoor ook niet meer een scheidingsrechte, maar een
scheidingsvlak. Deze transformatie wordt ook wel de kernel-trick genoemd.
Kernel Trick
De kernel-trick is de methode die we zullen gebruiken om het 2 dimensionaal vlak te transformeren
̅) (phi van vector x).
naar 3 dimensionaal. De transformatie wordt aangeduid met: ɸ(𝒙
̅𝒊 ) en 𝝓(𝒙
̅𝒋 ) maximaliseren. Dit kunnen we doen met de functie:
We willen nu 𝝓(𝒙
̅𝒊 ). 𝝓(𝒙
̅𝒋 )
𝑲(𝒙𝒊 , 𝒙𝒋 ) = 𝝓(𝒙
Dit is onze Kernel functie, die ons het product geeft van de twee vectoren in een andere dimensie.
We kunnen nu deze functie gebruiken, en hebben dus geen behoefte meer aan de transformatie zelf.
7
Visualisatie van de transformatie:
https://www.youtube.com/watch?v=3liCbRZPrZA
Er is niet 1 specifieke kernel methode, we hebben meerdere oplossingen om ons niet-lineair
probleem op te lossen. De meest populaire lijkt de RBF (Radial Basis Function) kernel te zijn, ook wel
Gausissche kernel genoemd. Andere gebruikte kernels zijn de polynomiale kernel, de Fisher kernel en
de String kernel (die eerder gebruikt wordt voor data mining).
RBF kernels
RBF kernels zijn een vorm van kernels die gebruikt worden in verschillende lerende algoritmes in
Machine Learning en zijn vooral populair in classificatie voor SVM’s, maar Radial Base Functions
komen ook voor bij andere classificatie technieken, zoals neural networks.
De RBF kernel van xi en xj wordt als volgt voorgesteld:
𝑲(𝒙𝒊 , 𝒙𝒋 ) = 𝒆𝒙𝒑 (−
||𝒙𝒊 , − 𝒙𝒋 ||²
||𝒙𝒊 − 𝒙𝒋 ||²
𝟐𝝈²
)
is de kwadratische vorm van de euclidische afstandsfunctie, die de 2 afstand tussen
de 2 feature vectors vergelijkt. σ is een losse parameter.
Om deze reden wordt
𝟏
𝟐𝝈²
ook wel voorgesteld als 𝜸, wat onze vergelijking iets gemakkelijker maakt:
𝑲(𝒙𝒊 , 𝒙𝒋 ) = 𝒆𝒙𝒑(− 𝜸 ||𝒙𝒊 − 𝒙𝒋 ||²)
8
Zoals we eerder al hebben gezien, wanneer we grote hoeveelheden training data gaan gebruiken zal
dit de performantie van de support vector machine sterk benadelen. Hiervoor is dus een benadering
bedacht voor de RBF kernel, en daaruit volgend ook voor andere kernel functies.
We duiden deze functie aan met z, die de mapping aanduid van de vector in de originele dimensie
naar de vector van een hogere dimensie. We krijgen dan de volgende kernel:
K(xi , xj ) = z(xi )z(xj ) ≈ ϕ(xi )ϕ(xj )
ϕ (phi) staat hier dus voor de mapping of transformatie binnen de kernel. We kunnen de gelijkenis
met onze originele kernel trick nu goed zien.
Polynomiale kernel
Alhoewel minder populair dan de RBF kernel is de polynomiale kernel ook een andere veelgebruikte
kernel in SVM classificatie. Het is dus ook de moeite om bij deze stil te staan.
Een polynomiale met als graad d wordt uitgeschreven als:
K(xi , xj ) = (𝑥𝑖 T xj + 𝑐)
𝑑
c is een parameter die de orde van de polynomiale aanduid. Wanneer c=0 dan wordt de kernel
homogeen genoemd, wanneer c groter is dan 0, is de kernel niet-homogeen.
Polynomiale kernels worden minder gebruikt dan RBF kernels, maar zijn toch populair in NLP (Natural
Language Processing), wat duidt op de interactie tussen mens en computer. De graad die gebruikt
wordt bij deze kernels is d=2, wat dus duidt op een kwadratische functie. Als d groter wordt dan 2,
wordt er vaak gestuit op problemen met overfitting (zie verder).
9
Overfitting en underfitting
underfitting
overfitting
Een probleem dat voorkomt bij classificeren in Machine Learning is underfitting en overfitting van
data. We zullen deze kort bespreken en aantonen hoe SVM’s ze op lost.
Underfitting: Een probleem dat vaak voor komt bij lineaire classificatie systemen. het model is te
simpel laat te veel marge tussen de data. Dankzij de kernel trick voor Support Vector Machines is dit
probleem er een die snel kan worden opgelost. Dit probleem is minder relevant, aangezien er vooral
bij de opkomst van Machine Learning mee werd gekampt.
Overfitting: Dit is een meer reëel probleem voor de SVM (maar ook andere classificatiemethoden).
Wanneer data zodanig complex is, zullen problemen optreden. Dit kan ervoor zorgen dat een model
moeite zal hebben met het voorspellen van nieuwe data. Dit kan voorkomen door te veel training
data op te geven, of door de SVM te trainen met veel uitzonderingen. Deze algoritmen zijn sterk in
het classificeren van gekende data, maar hebben problemen bij het inpassen van nieuwe data.
We hebben dus nood aan een systeem dat de relevante data kan onderscheiden van de irrelevante
data (ook wel “ruis” genoemd). Wanneer een zelflerend algoritme erin slaagt om de ruis te negeren,
wordt een robuust algoritme genoemd.
Een veelgebruikte techniek om overfitting (en underfitting) te minimaliseren is de bias-variance
tradeoff (of bias-variance dilemma). Bias duidt op het missen van relevante informatie door het
algoritme (underfitting dus), variance duidt op gevoeligheid voor kleine fluctuaties in de training set
(overfitting).
10
Verschil met andere technologieën
SVM vs Neurale netwerken
Neurale netwerken worden, net als Support Vector Machines,
gebruikt om objecten te vergelijken en classificeren.
Het grootste verschil is dat SVM’s eerder geschikt zijn om 2
klassen te vergelijken (hoewel het ook mogelijk is om meerdere
parameters te gebruiken) terwijl neurale netwerken meer
gebruikt worden voor het ingeven van meerdere inputs. Dit zorgt
ervoor dat de performantie wel zeer verschillend is tussen de
twee.
Een neuraal netwerk zal ook een vaste grootte hebben, terwijl de
grootte van een SVM volledig afhankelijk is van de hoeveelheid
testdata.
Met andere woorden, voor simpele vergelijkingen (vb: gezichtsherkenning, spam filters,…) is het
aangewezen om gebruik te maken van een SVM, voor classificering met meerdere verschillende
inputs (vb: analyseren van een foto), is een neuraal netwerk een betere optie. Neurale netwerken
zijn over het algemeen minder performant dan SVM’s, maar zijn wel sterker in gedetailleerde
analyses.
SVM vs Beslissingsbomen
Een andere veel gebruikte classificatie methode is de
beslissingsboom. Deze onderscheid zich vooral met
zijn simpliciteit, ze zijn zeer gemakkelijk visueel voor te
stellen en zijn heel leesbaar.
Het verschil met Support Vector Machines hier is de
manier waarop geclassificeerd. Een beslissingsboom
neemt data, en stuurt deze door een reeks
voorgedefinieerde tests. Een SVM daarentegen moet
eerst getraind worden met een bepaalde hoeveelheid
training data.
Een beslissingsboom is dus eerder geschikt voor een
bepaalde uitkomst toe te kennen aan een input, terwijl de SVM handiger is voor het vergelijken van
slechts een beperkt aantal klassen.
Ook hier hangt de performantie dus volledig af van de data en het doel. De beste manier om te
bepalen welke techniek het beste is voor een bepaalde dataset is vaak door het uit te proberen.
11
Andere toepassingen
In de praktijk
●
in tekstclassificatie (bijvoorbeeld om nieuwe e-mail-berichten te klasseren als "spam" of
"geen spam");
●
Spraak herkenning
●
Het herkennen van handgeschreven tekens;
●
Het klasseren van afbeeldingen (bijvoorbeeld beslissen of een foto een gezicht voorstelt
of niet);
●
In biomedisch onderzoek, bijvoorbeeld voor het klasseren van weefselmonsters.
Spamfilters
Inleiding
Wanneer men spam gaat bekijken en wilt classificeren als spam of geen spam, moet men ervan
bewust zijn dat spam vooruitgaat en telkens moeilijker wordt om effectief te classificeren. Ook moet
men in rekening houden dat het invoeren van de training data zeer kostelijk en tijdrovend kan zijn.
Daarom bestaan er manieren om zowel actief als online continu learning method algoritmen toe te
passen. De actieve learning dient om zo efficiënt mogelijk het meest gebruikelijke voorbeeld voor het
labelen van data te selecteren en dit gelabelde voorbeeld dan toe te voegen aan de training data.
Tong en Koller zorgen voor de labeling en en het versnellen van het leer proces door middel van de
huidige SVM classifier door te zoeken naar de meest aanleunende beslissings hyperplane in termen
van "version space bisection". Brinker zorgde voor het eerst dat er diverse criteria in het actief leren
om het trainen te maximaliseren.
Omdat er dus constant moet worden bijgeleerd door evoluerende spam, bestaat het probleem dat
het toevoegen van nieuwe training data die de nieuwe geëvolueerde spam kan classificeren te veel
tijd kost. Hierdoor moeten we de learning algoritmen dus constant gaan bijschaven. En dit is waarom
Support Vector Machines dus het beste voor zijn. Juist omdat SVMs bekent staan om zeer goed te
werken met incremental model learning, en een uitstekende prestatie tonen in active learning
applications.
Actieve en online leren voor Spam filtering taak
Actief leren
SVMs vormen een perfecte basis om een hypothese te vormen door middel van een subset aan data
te nemen dat het meest informatieve patroon bezit. Daardoor zijn ze dus ideaal voor actieve of
selectieve kenmerk-extractie technieken die ze uit deze patronen haalt. Stel dat de data die we
binnenkrijgen niet gelabeld is, zou een algoritme ervoor moeten zorgen dat ze gelabeld worden, die
dan support vectors worden. Actieve selectie is dus zeer belangrijk in geval van het praktische proces
waarbij de data niet gelabeld of simpelweg zeer groot is.
12
Tong stelde het Simpele algoritme voor, dat iteratief de niet gelabelde instantie h koos dat het
dichtste aanleunt bij het scheidende hypervlak om feedback van de gebruikers te verwerven. Met dit
algoritme kan er dan een eerste spam filter f getrained worden op de gelabelde email pool L. Dan kan
de f toegepast worden op de niet gelabelde email pool U om elk niet gelabelde email zijn afstand tot
het scheidende hypervlak te berekenen. De h niet gelabelde e-mails die het dichtste bij het hypervlak
en relatief apart zijn, worden dan gekozen als de volgende partij om opnieuw de pool
zoekopdrachten op uit te voeren.
Het probleem met het Simpele algoritme is dat het soms te veel dezelfde zoekopdrachten kan
uitvoeren, waardoor het leer proces wordt afgeremd. We nemen dan de diversiteitsmeting over van
Brinker om nieuwe partijen training data te construeren en het aanmoedigen van geselecteerde
partijen die respectievelijk met zijn opzicht tegenover elkaar divers zijn. Het grote idee is eigenlijk om
een verzameling van e-mails die zo dicht mogelijk bij het classificatie hypervlak zijn te selecteren,
terwijl je simultaan hun diversiteit behoud. De diversiteit van e-mail wordt gemeten op basis van hun
opzicht tegenover mekaar. Om een voorbeeld te geven, stel xi heeft een normaal vector dat gelijk is
aan (xi). Het opzicht tussen twee hypervlakken hi en hj, corresponderend met hun email instanties xi
en xj, kunnen geschreven worden in termen van de kernel operator K:
Het opzicht-diversiteit algoritme start met een initieel hypervlak hi getraind door het gegeven
gelabelde email reeks L. Dan, voor elk niet gelabeld email xi, berekend het de afstand tot het
classificatie hypervlak hi. Het opzicht tussen het niet gelabelde xi en de huidige reeks S is
gedefinieerd als het maximale opzicht van xi tot elk ander xj in de reeks S. Dit opzicht berekent hoe
divers het resulterende S zal zijn. als xi gekozen zou worden als voorbeeld. Het opzicht-diversiteit
algoritme introduceert een parameter om twee componenten te balanceren: de afstand van e-mails
tot het classificatie hypervlak en de diversiteit van het opzicht tussen verschillende e-mais. In
rekening houdend met de afwegingsfactor, de uiteindelijke score voor het niet gelabelde xi kan
geschreven wordel als:
Waarbij functie f de afstand tot het hypervlak berekent, en de functie K de kernel operator is, en S de
training reeks is. Hierna zal het algoritme als het voorbeeld het niet gelabelde e-mail selecteren dat
de kleinste score heeft in U. Het algoritme zal de bovenstaande stappen h keer uitvoeren om h emails te selecteren. In de praktijk zal de volledige methode gebruik maken van een afgewogen som
van diversiteit en de hypervlak afstand, gecontroleerd door de parameter λ, waarbij λ=0 de
equivalent is van enkel en alleen te focussen op diversiteit, en λ=1 hetzelfde is als het Simpel
algoritme. We hebben hieruit besloten dat λ=0.5 het beste werkt voor onze experimenten.
Online leren
Online leren is een zeer belangrijk aspect in machine learning, met interessante theoretische en
toepasbare aspecten. Online learning wordt uitgevoerd in een sequentie van proefstukken. Bij het
13
probeersel t zal het algoritme eerst een instantie xt ∈ Rn ontvangen en is verplicht om het label
geassocieerd met deze instantie te kunnen voorspellen. Nadat het online learning algoritme het label
heeft voorspeld, zal het effectieve label worden getoond en zal het algoritme een strafpunt krijgen
wanneer zijn voorspelling fout was. Het ultieme doel van het algoritme is om het totale aantal fouten
te minimaliseren. Om dit doel te bereiken zal het algoritme zijn leermechanisme aanpassen na elk
probeersel om in de toekomst accurater te zijn.
Hier gaan we er van uit dat elke voorspelling gebeurd door het algoritme van een SVM classifier.
Normaalgezien hebben SVMs een klein aantal samples met een niet-nul α i coëfficiënt, met zijn
corresponderende xi (support vectors) en yi de volledige beslissingsfunctie definiëren. Daarmee kan
de SV reeks de volledige classificatie karakteristieken beschrijven van de hele reeks. Omdat het
leerproces van SVMs een kwadratische programmering probeert op te lossen, is de complexiteit van
het training proces veel hoger dan de lineaire complexiteit. Daarom gaan we de SVM trainen op de
SV reeks in plaats van de volledige training reeks om de tijd van het trainen drastisch te verminderen
zonder verlies van classificatie efficiëntie. Dit is daarom het hoofd idee omtrent het online learning
algoritme.
Als we aannemen dat er slechts een fractie van onze training e-mails als support vectors zullen
dienen, zal het SV algoritme ervoor kunnen zorgen de data in een zeer beknopte manier wordt
samengevat. De training zal enkel de historische SV voorbeelden en de incrementele training
voorbeelden hergebruiken in de training. Alle niet-SV voorbeelden worden dan verworpen na de
vorige training. Onderstaande figuur toont de incrementele training procedure.
We noemen de training e-mail reeks TR, nu hebben we dus een spam filter getraind op TR. Daarna
namen we de SVs die gekozen werden van TR, en noemen deze SV1, deze classificeren de instanties x0
in de proefsequentie. Nadat we het effectieve label van xi hebben opgehaald, voegen we xi toe aan
SV1 als de filter zijn voorspellingen fout waren. Opnieuw voerden we het SVM training algoritme uit
op SV1 + x0. Nu de SVs die gekozen werden door de training van SV1 + x0 nemen we deze en noemen
die dan SV2. Opnieuw werden het trainen en testen uitgevoerd. Deze incrementele stap werd
herhaald totdat alle probeersels werden gebruikt. Het algoritme van geïllustreerd worden als
volgende.
Online SVM Spam Filter:
1) Initialisatie
Voorzie de SVM classificator van enkele voorbelden van elke klasse (spam of ham)
Train de initiële SVM filters
2) Online Learning
14
- Classificieer xi
- Vraag het effectieve label op van xi
- Wanneer de filter zijn voorspelling fout was, leer dan de SVM opnieuw bij op basis van SVi + xi
3) Finishing
Herhaal tot xn klaar is.
Het model dat werd behaald door deze methode zou hetzelfde of toch gelijkaardig moeten zijn naar
wat we wouden hebben wanneer we alle data tezamen nemen om te trainen. De reden hieromtrent
is dat het SVMs algoritme de essentiële informatie in een zeer compacte vorm als support vectors
gaat behouden, waarbij het op de juiste manier zal bijdragen aan het afleiden van het nieuwe
concept in de volgende iteratie.
Andere spamfilters:
De meest simpele vorm van spamfilters werkt op basis van woordherkenning en het aantal keren dat
die woorden gebruikt worden. Bijvoorbeeld:
Je krijgt een mail met een zogenaamde advertentie waarin het woord “free” 15 keer in voorkomt. Er
wordt geen aanspreking gebruikt zoals “Beste …”. En de mail zit vol met woorden die niet door de
woordherkenning wordt begrepen, en dus fout gespeld zijn.
Al deze factoren worden dan samen genomen en dan wordt er berekend wat de kans is dat de mail
effectief spam is. Indien de spamfilter er dan voor kiest dat het spam is, zal ze deze naar de spam
folder in de email client verplaatsen.
15
Bronnen
https://www.youtube.com/watch?v=1NxnPkZM9bc
http://www.cs.columbia.edu/~kathy/cs4701/documents/jason_svm_tutorial.pdf
http://stackoverflow.com/questions/11632516/what-are-advantages-of-artificial-neural-networksover-support-vector-machines
http://scikit-learn.org/stable/modules/svm.html
Support Vector Machines with Applications - Javier M. Moguerza en Alberto Muñoz
(https://projecteuclid.org/download/pdfview_1/euclid.ss/1166642435)
Lecture: Support Vector Machines - Andrew Ng
(https://cdn.fbsbx.com/hphotos-xft1/v/t59.270821/11253016_1003984699613998_2032441965_n.pdf/cs229notes3.pdf?oh=0a797a0c99872687957df7c89eead0cc&oe=562F5ABB&dl=1)
https://www.youtube.com/watch?v=_PwhiWxHK8o
http://stackoverflow.com/questions/9480605/what-is-the-relation-between-the-number-ofsupport-vectors-and-training-data-and
http://fedc.wiwi.hu-berlin.de/xplore/ebooks/html/csa/node221.html
http://trec.nist.gov/pubs/trec15/papers/hit.spam.final.final.pdf
http://arxiv.org/pdf/0904.3664v1.pdf
http://www.cs.utah.edu/~piyush/teaching/15-9-print.pdf
http://courses.cs.washington.edu/courses/cse546/12wi/slides/cse546wi12LinearRegression.pdf
16