Hvad er forskellen mellem C-SVM og nu-SVM?


Svar 1:

Nu-SVM blev foreslået af Scholkopf et al. Har fordelen ved at bruge en parameter nu til styring af antallet af understøttelsesvektorer. Parameter C i den almindelige SVM-formulering erstattes af en parameter nu, der er afgrænset af 0 og 1. Tidligere kunne parameter C have taget en hvilken som helst positiv værdi, således er denne yderligere grænse fordelagtig ved implementering.

Parameteren nu repræsenterer den nedre og øvre grænse på antallet af eksempler, der er understøtningsvektorer, og som ligger på henholdsvis den forkerte side af hyperplanet.

På trods af den nye grænse er nu-SVM relativt vanskeligt at optimere, og ofte er runtime ikke skalerbar sammenlignet med C-SVM.


Svar 2:

SVM bruger hyperplaner til at udføre klassificering. Under udførelse af klassifikationer ved hjælp af SVM er der 2 typer SVM

  • C SVMNu SVM

C og nu er reguleringsparametre, der hjælper med at implementere en straf på de misklassifikationer, der udføres, mens klasserne adskilles. Således hjælper med at forbedre nøjagtigheden af ​​output.

C varierer fra 0 til uendelig og kan være lidt svært at estimere og bruge. En ændring til dette var introduktionen af ​​nu, der fungerer mellem 0-1 og repræsenterer den nedre og øvre grænse på antallet af eksempler, der er understøtningsvektorer, og som ligger på den forkerte side af hyperplanet.

Begge har en sammenlignende lignende klassificeringsstyrke, men den nu SVM har været sværere at optimere


Svar 3:

Det drejer sig stort set om fortolkningsevne. Nogle mennesker synes, at nu er lettere at fortolke end C. Selvom nu ligger i et mindre interval end C (som går fra 0-uendelighed), er du stadig nødt til at søge efter det rigtige reglariseringsniveau, og forbi et bestemt punkt, er der ingen mening stigning C alligevel. Derudover har C en tendens til at blive testet i en logskala, mens valg af nu er over en lineær skala.

Med hensyn til løsningstid bør SMO og varianter løse begge i omtrent samme tid. Jeg er ikke opmærksom på en open source lineær / primær nu-SVM-solver, så det er en ulempe ved at bruge nu-SVM på problemer større end libsvm behageligt kan håndtere (skal dog ikke være for svært at kode en op). Når det er sagt, har jeg testet lineær / primær C-SVM (sklearn SGD eller lineær SVC ved hjælp af Fourier / nystroem-funktioner) vs. nu-SVM fra Libsvm, og fandt, at libsvm alene ofte er et bedre valg (om nøjagtighed, fleksibilitet og tid) . Mit problem var for et ekstremt ubalanceret datasæt med omkring 20 000 observationer, 20-100 funktioner, hvis det hjælper.