⚾ Worp-classifier — Support Vector Machine Live
Bekijk een echte kernel Support Vector Machine live de maximale-marge-grens leren tussen gesimuleerde worptypen, uit echte spinsnelheid- en snelheidskenmerken.
Over deze simulatie
Elke worp die een scout registreert, komt met een losraaksnelheid en een spinsnelheid rechtstreeks van een trackingradar. Deze simulator maakt van dat cijferpaar een echt machine-learning-classificatieprobleem: gegeven een fastball, een curveball en — optioneel — een slider, kan een Support Vector Machine een grens trekken die ze scheidt? In plaats van het antwoord na te bootsen, draait de pagina een echte vereenvoudigde Sequential Minimal Optimisation (SMO)-oplosser op welke worpen momenteel in de trainingsset bestaan, en lost het vanaf nul opnieuw op elke keer dat je een worp toevoegt of de kernel, de regularisatiesterkte C, of de kernelbandbreedte γ verandert.
🔬 Wat het laat zien
Een 3D-oppervlakteplot waarbij het horizontale vlak snelheid × spinsnelheid is en hoogte de ruwe beslissingsfunctiewaarde van de SVM is: f(x) = Σ αᵢyᵢK(xᵢ,x) + b. De doorsnede van het oppervlak met het z = 0-vlak is de werkelijke beslissingsgrens; de z = ±1-vlakken markeren de werkelijke marge. Trainingsworpen zijn bollen gekleurd naar worptype, met steunvectoren omringd in wit — zowel de grens als de steunvectorset worden live herberekend uit de huidige data, nooit hardgecodeerd.
🎮 Hoe te gebruiken
Kies een kernel (lineair, polynomiaal, of Gaussische RBF), sleep dan C om margebreedte af te wegen tegen trainingsnauwkeurigheid, en γ / graad om kernelflexibiliteit te hervormen. Schakel de slider-worp in om hier een 3-klasse, one-vs-rest-probleem van te maken. Druk op "Nieuwe worp" om een vers bemonsterde, gelabelde worp te streamen en zie de grens onmiddellijk opnieuw fitten, of schakel Auto-stream in om continu data te blijven voeden. Sleep om de 3D-weergave te draaien, scroll om in te zoomen.
💡 Wist je dat?
Omdat de snelheid en spin van een slider in echte Statcast-data daadwerkelijk overlappen met zowel fastballs als curveballs, kan geen rechte lijn alle drie worptypen perfect scheiden. Overschakelen van een lineaire kernel naar een RBF-kernel met een voldoend hoge γ laat de grens om de overlappende cluster heen buigen — een live demonstratie van precies waarom de kerneltruc bestaat.
Veelgestelde vragen
Wat is een Support Vector Machine (SVM)?
Een Support Vector Machine is een supervised classifier die het hypervlak vindt dat twee klassen scheidt met de grootst mogelijke marge — de breedste lege corridor tussen de dichtstbijzijnde punten van elke klasse. Die dichtstbijzijnde punten worden steunvectoren genoemd omdat zij alleen bepalen waar de grens ligt; elk ander trainingspunt zou verwijderd kunnen worden zonder de oplossing te verplaatsen. Het maximaliseren van de marge, in plaats van gewoon een scheidende lijn te vinden, generaliseert doorgaans beter naar nieuwe data omdat het de meeste ruimte overlaat voor ruis voordat een punt naar de verkeerde klasse overgaat.
Hoe laat de kerneltruc een SVM gebogen grenzen trekken?
De duale vorm van het SVM-optimalisatieprobleem heeft alleen ooit inproducten tussen paren trainingspunten nodig, nooit de ruwe coördinaten zelf. De kerneltruc vervangt dat inproduct x·z door een kernelfunctie K(x,z) die het inproduct berekent alsof de punten eerst waren afgebeeld op een veel hoger-dimensionale kenmerkenruimte — zonder die ruimte ooit expliciet te construeren. Een lineaire kernel geeft een rechte grens; een polynomiale kernel geeft gebogen polynomiale grenzen; de Gaussische RBF-kernel K(x,z) = exp(−γ‖x−z‖²) geeft gladde, flexibele grenzen die zich om overlappende clusters heen kunnen wikkelen.
Wat regelt de regularisatieparameter C?
C is de afwegingsknop in het zachte-marge-SVM-doel: minimaliseer ½‖w‖² + C·Σξᵢ, waarbij ξᵢ slack-variabelen zijn die individuele punten binnen de marge of aan de verkeerde kant ervan laten liggen. Een kleine C tolereert meer margeschendingen voor een bredere, gladdere marge — wat generalisatie bevordert. Een grote C bestraft schendingen zwaar, wat een strakkere fit afdwingt die het risico loopt overfit te raken op de specifieke worpen die tot nu toe zijn gezien.
Wat zijn steunvectoren en waarom doen alleen sommige punten ertoe?
Na training heeft elk punt i een Lagrange-multiplicator αᵢ. Punten die comfortabel aan de juiste kant van de marge liggen, eindigen met αᵢ = 0 en dragen niets bij aan de beslissingsfunctie; alleen punten op of binnen de marge — de steunvectoren — hebben αᵢ > 0. De beslissingsfunctie f(x) = Σ αᵢyᵢK(xᵢ,x) + b sommeert alleen over die steunvectoren, dus een getrainde SVM kan uiterst compact zijn, zelfs vanuit een grotere dataset.
Hoe wordt de SVM eigenlijk opgelost — is het een echte optimizer?
Ja. Deze simulatie implementeert een vereenvoudigde Sequential Minimal Optimisation (SMO)-routine — het duale coördinaat-stijgingsidee dat John Platt in 1998 introduceerde en dat ten grondslag ligt aan bibliotheken zoals libsvm. Elke doorgang kiest een schendend paar Lagrange-multiplicatoren, lost hun tweevariabele kwadratische deelprobleem analytisch op onder de boxbeperking 0 ≤ αᵢ ≤ C en Σ αᵢyᵢ = 0, werkt de bias bij vanuit de KKT-voorwaarden, en herhaalt tot geen schendingen binnen tolerantie overblijven.
Hoe werkt one-vs-rest voor drie worptypen?
Een standaard-SVM is inherent binair. Om fastball, curveball en slider samen te behandelen, traint de simulatie drie afzonderlijke binaire SVM's, elk met één worptype als positief en de andere twee samengevoegd als negatief. Voor een nieuwe worp worden alle drie de beslissingsfuncties geëvalueerd en wint de klasse met de grootste positieve score — een van de eenvoudigste manieren om een binaire classifier uit te breiden naar meerdere klassen.
Een vereenvoudigde SMO duale-coördinaat-stijgingsoplosser fit een zachte-marge kernel-SVM op live spinsnelheid- en snelheidsdata elke keer dat een worp binnenstroomt of een hyperparameter verandert; het 3D-oppervlak, de margevlakken en steunvectoren worden allemaal daadwerkelijk herberekend, nooit gescript.
3D · Three.js / WebGL renderer · 60 FPS target · runs fully client-side, no install