Wij hebben een eenvoudige grafische interface ontwikkeld voor onze implementatie van het SVM algoritme, genaamd SVM Classifier. Deze interface stelt beginnende gebruikers in staat om de software te downloaden voor lokale installatie en eenvoudig een geavanceerd machine-learning algoritme toe te passen op hun data. We hebben een publiek toegankelijke toepassing geïmplementeerd waarmee SVM gebruikers SVM training, classificatie en voorspelling kunnen uitvoeren. Voor meer details over het gebruik van de software, een voorbeeld dataset en uitleg over de onderliggende algoritmen, verwijzen we de lezers naar de website en de referenties die daar vermeld staan. SVM gebruikers zijn wellicht ook geïnteresseerd in een aantal andere gelicenseerde SVM implementaties die eerder zijn beschreven, waaronder LIBSVM .
Wij hebben de SVM algoritmen die door het Libsvm team zijn geïmplementeerd, als kern gebruikt. Om cross-platform compatibiliteit te maximaliseren SVM Classifier is geïmplementeerd in java met behulp van standaard swing bibliotheken (figuur 1).
De open source, cross-platform Apache Ant, en de gratis editie van Borland JBuilder 2005 Foundation worden gebruikt als de build-tools. Hoewel SVM Classifier is ontwikkeld voor WinXP, is het met succes getest op Linux en andere Windows-platforms, en draait het ook op Mac OS9 met de Swing-extensie. Gebruikers kunnen SVM Classifier draaien op elke computer met java 1.4 runtime of een hogere versie.
De applicatie heeft twee frames, het classificatie en het voorspellingsframe. In beide frames kunnen gegevensbestanden worden geïmporteerd als “Labeled” of als “Delimited” bestandsformaat (Figuur 2 en Figuur 3).
In het classificatieframe maakt de gebruiker een model van de trainingsdataset voor classificatie (C-SVC, nu-SVC), regressie (epsilon-SVR, nu-SVR), en schatting van de verdeling.
In dit frame kan de gebruiker de trainingsdataset importeren in de applicatie, het pad selecteren waar het modelbestand moet worden opgeslagen, het juiste SVM en kernel type selecteren en een model maken voor de dataset. Het modelbestand kan later worden gebruikt voor de voorspelling. Er is ook een keuze voor kruisvalidatie. Kruisvalidatie (CV) techniek wordt gebruikt om de nauwkeurigheid van elke parametercombinatie in het gespecificeerde bereik in te schatten en helpt ons om de beste parameters voor het classificatieprobleem te bepalen.
In het voorspellingskader wordt het model toegepast op de testgegevens om de classificatie van onbekende gegevens te voorspellen. Wij hebben ook een hulpmiddel voor het visualiseren van de tweedimensionale gegevens geleverd, dat kan worden geopend via de menubalk (figuur 4).
Kernel Types
K(x i , x j ) = Φ(x i )TΦ(x j ) wordt de kernel functie genoemd. Hierbij worden de trainingsvectoren x i door de functie Φ in een hogere (waarschijnlijk oneindige) dimensionale ruimte gebracht. Er zijn vier basiskernels: lineair, polynomiaal, radiale basisfunctie (RBF) en sigmoïde:
-
Lineair: K(x i , x j ) = x i Tx j
-
Polynomiaal: De polynomiale kernel van graad d heeft de vorm
K(x i , x j ) = (x i , x j )d
-
RBF: De Gaussische kernel, ook bekend als de radiale basisfunctie, heeft de vorm
Waarbij σ staat voor een vensterbreedte
-
Sigmoïde: De sigmoïdekernel heeft de vorm
K(x i , x j ) = tanh(k(x i x j ) + ϑ)
Wanneer de sigmoïdekernel met het SVM wordt gebruikt, kan men het beschouwen als een neuraal netwerk met twee lagen.
SVM-types
1. C-SVC: C-Support Vector Classification (binair geval)
Gegeven een trainingsreeks van instantie-labelparen (x i , y i i ), i = 1,…,l waarbij x i ∈ Rnen y ∈ {1, -1}l, ←de support vector machines (SVM) vereisen de oplossing van het volgende optimalisatieprobleem:
SVM vindt een lineair scheidend hypervlak met de maximale marge in deze hoger dimensionale ruimte. C > 0 is de strafparameter van de foutterm . De beslissingsfunctie is:
2. nu-SVC: ν-Support Vector Classification (Binary Case)
De parameter ν ∈ (0, 1) is een bovengrens voor de fractie van trainingsfouten en een ondergrens voor de fractie van support vectoren . Gegeven opleidingsvectoren x i ∈ Rn, i = 1,…,l, in twee klassen, en een vector y ∈ Rn zodanig dat y i ∈ {1, -1}, is de beschouwde oervorm:
En de beslissingsfunctie is:
3. epsilon-SVR: ε-Support Vector Regression (ε-SVR)
Een uitbreiding van de SVM is die voor de regressietaak. Een regressieprobleem wordt gegeven wanneer Y = ℝ voor de trainingsgegevensverzameling Z = {(x i , y i ) ∈ X × Y | i = 1,…,M} en onze interesse is het vinden van een functie van de vorm f: X → RD. De primaire formulering voor de SVR wordt dan gegeven door:
We moeten twee soorten slack-variabelen introduceren ξ i en , de ene om de fout te beheersen die wordt veroorzaakt door waarnemingen die groter zijn dan de bovengrens van de ε-buis, en de andere voor de waarnemingen die kleiner zijn dan de ondergrens. De functie bij benadering is:
4. nu-SVR: ν-Support Vector Regression (ν-SVR)
Gelijk aan ν-SVC wordt voor regressie een parameter ν gebruikt om het aantal support vectoren te regelen. Echter, in tegenstelling tot ν-SVC waar C wordt vervangen door ν, vervangt ν hier de parameter ε van ε-SVR. De beslissingsfunctie is dan dezelfde als die van ε-SVR.
5. Eén-klasse SVM: distributieschatting
Het verschil van één-klasse classificatie met het standaard classificatieprobleem is dat de trainingsdata niet identiek verdeeld is met de testdata. De dataset bevat twee klassen: één ervan, de doelklasse, is goed bemonsterd, terwijl de andere klasse afwezig is of zeer dun bemonsterd is. Schölkopf et al. hebben een aanpak voorgesteld waarbij de doelklasse door een hypervlak van de oorsprong wordt gescheiden. De beschouwde primaire vorm is:
En de beslissingsfunctie is:
Cross Validation
Het doel van cross validation is om goede parameters te identificeren, zodat de classificator onbekende gegevens nauwkeurig kan voorspellen .
Een gebruikelijke manier is om de trainingsgegevens in twee delen te scheiden, waarvan er een als onbekend wordt beschouwd bij het trainen van de classificator. Dan kan de nauwkeurigheid van de voorspelling op deze set nauwkeuriger de prestaties bij het classificeren van onbekende gegevens weergeven. Een verbeterde versie van deze procedure is kruisvalidatie.
In v-voudige kruisvalidatie wordt de trainingsset verdeeld in v deelverzamelingen van gelijke grootte. Achtereenvolgens wordt een deelverzameling getest met de classificator die op de resterende v – 1 deelverzamelingen is getraind. Op die manier wordt elke instantie van de hele trainingsset één keer voorspeld, zodat de kruisvalidatienauwkeurigheid het percentage correct geclassificeerde gegevens is. De kruisvalidatie procedure kan het overfitting probleem voorkomen.
Shrinking
Chang en Lin vermeldden dat aangezien voor veel problemen het aantal vrije support vectoren (d.w.z. 0 <α i < C) klein is, de shrinking-techniek de grootte van het werkprobleem vermindert zonder rekening te houden met enkele begrensde variabelen .
Caching
Caching is een andere techniek om de rekentijd te verminderen. Aangezien Q (Q is een l bij l positieve half bepaalde matrix, Q ij = y i y j K(x i , x j )) volledig dicht is en niet in het computergeheugen mag worden opgeslagen, worden de elementen Qij naar behoefte berekend. Gewoonlijk wordt een speciale opslag gebruikt met het idee van een cache om recent gebruikte Qij op te slaan.