📧 Spamfilter — Live Naive Bayes-classifier
Bekijk hoe een echte Naive Bayes-classifier woordfrequentie-aannemelijkheden berekent uit een trainingsset en binnenkomende synthetische e-mails scoort als spam of ham, met live per-woord kansbijdragen.
Over deze simulatie
Deze simulatie draait een echte multinomiale Naive Bayes-tekstclassifier over een synthetisch gelabeld corpus van spam- en ham-(legitieme) e-mails. Elk woord in elk trainingsvoorbeeld wordt geteld per klasse, Laplace-smoothing voorkomt dat ongeziene woorden een kans op nul zetten, en elke binnenkomende e-mail wordt gescoord door per-woord-log-aannemelijkheidsratio's samen met de log-prior op te tellen, en die log-odds-som vervolgens terug om te zetten in een spamkans met de sigmoïde functie — de exacte Naive Bayes-formule, geen decoratieve vervanging.
🔬 Wat het toont
Een live binnenkomende synthetische e-mail met elk woord gekleurd naar zijn individuele bijdrage aan het spamoordeel, een posterior-kansmeter met de beslissingsdrempel gemarkeerd, een gerangschikte staafgrafiek van de woorden die het sterkst richting spam of richting ham duwen, en een lopende nauwkeurigheidstrend terwijl de stream e-mail na e-mail classificeert tegen een achtergehouden testset waarop het model nooit heeft getraind.
🎮 Hoe te gebruiken
Sleep aan de classificatiedrempel om het filter strenger of soepeler te maken, en bekijk hoe de achtergehouden nauwkeurigheid en het huidige oordeel direct worden bijgewerkt. Pas de streamsnelheid aan en druk op Stream starten om synthetische e-mails continu te zien binnenkomen, of gebruik Volgende e-mail om er één voor één doorheen te stappen. Typ je eigen e-mailtekst en klik op Toevoegen als spam of Toevoegen als ham om de trainingsset live te laten groeien — de woordenschatgrootte en woordfrequentietabel worden direct bijgewerkt, en toekomstige classificaties passen zich hieraan aan. Model resetten keert terug naar het oorspronkelijke trainingscorpus.
💡 Wist je dat?
Naive Bayes negeert woordvolgorde en grammatica volledig — "je hebt een gratis prijs gewonnen" en "prijs gratis gewonnen je hebt" scoren identiek — toch was deze ruwe bag-of-words-aanname genoeg om enkele van de eerste werkelijk effectieve geautomatiseerde spamfilters in de vroege jaren 2000 aan te drijven. De snelheid en weerstand tegen overfitting op kleine datasets zijn precies waarom het vandaag nog steeds wordt onderwezen als het canonieke eerste tekstclassificatiealgoritme.
Veelgestelde vragen
Wat is een Naive Bayes-classifier?
Naive Bayes is een probabilistische classifier gebouwd op de stelling van Bayes: P(klasse|woorden) is evenredig met P(klasse) maal het product van P(woord|klasse) over elk woord in het bericht. Voor spamfiltering zijn de twee klassen spam en ham (legitieme post), en de classifier wordt getraind door te tellen hoe vaak elk woord voorkomt in gelabelde spam- versus ham-voorbeelden. Ondanks de eenvoud blijft het een sterke, snelle basislijn voor tekstclassificatie omdat woordfrequenties alleen al een verrassende hoeveelheid signaal dragen over de bedoeling van een bericht.
Waarom wordt het "naïef" genoemd?
Het is naïef omdat het aanneemt dat het voorkomen van elk woord voorwaardelijk onafhankelijk is van elk ander woord, gegeven de klasse — in werkelijkheid zijn woorden zoals "gratis" en "prijs" gecorreleerd, niet onafhankelijk. Deze aanname is bijna altijd fout in echte taal, maar maakt de wiskunde hanteerbaar: in plaats van een gezamenlijke kans over alle woordcombinaties te schatten, heeft het model alleen eenvoudige per-woord-frequentietellingen nodig, wat Naive Bayes zo snel maakt om te trainen en zo bestand tegen overfitting op kleine datasets.
Hoe werkt Laplace-smoothing en waarom is het nodig?
Zonder smoothing zou elk woord dat nooit in de spam-trainingsset voorkwam P(woord|spam) = 0 opleveren, en vermenigvuldigen met nul zou de hele posterior naar nul dwingen, ongeacht elk ander woord in het bericht. Laplace-(add-one, of algemener add-alpha)-smoothing voegt een kleine constante toe aan elke woordtelling voordat wordt gedeeld door het klassetotaal, zodat ongeziene of zeldzame woorden een kleine niet-nul kans krijgen in plaats van de hele berekening te vernietigen. Deze simulatie gebruikt alpha = 1 over de live woordenschatgrootte, opnieuw berekend telkens wanneer een nieuw trainingsvoorbeeld de woordfrequentietabel verandert.
Wat regelt de classificatiedrempel-schuifregelaar?
Het model geeft altijd een continue posterior-kans dat een bericht spam is, P(spam|woorden), tussen 0 en 1. De drempel-schuifregelaar stelt de grens in waarboven een bericht als spam in plaats van ham wordt gelabeld — die verhogen maakt het filter conservatiever (minder valse positieven, meer spam die doorglipt), terwijl die verlagen meer spam vangt tegen de prijs van meer gemarkeerde legitieme e-mail. Het verplaatsen van de schuifregelaar classificeert de huidige e-mail direct opnieuw en berekent de achtergehouden nauwkeurigheidsmetriek opnieuw.
Werken echte spamfilters zo?
Multinomiale Naive Bayes was een van de eerste werkelijk effectieve spamfilters, gebruikt door tools zoals de originele SpamAssassin en vroege Bayesiaanse filters in de jaren 2000, en de log-aannemelijkheidsratio-wiskunde in deze simulatie is exact de echte formule, geen vereenvoudigde vervanging. Moderne commerciële filters voegen veel meer signaal toe — afzenderreputatie, links, headers, afbeeldingen en vaak neurale tekstmodellen — maar de woordfrequentie-Naive-Bayes-kern die hier wordt getoond is een getrouwe, historisch belangrijke bouwsteen van dat grotere systeem.
Een echte multinomiale Naive Bayes-classifier telt woordfrequenties over een synthetisch spam/ham-trainingscorpus, past Laplace-smoothing toe, en scoort binnenkomende synthetische e-mails via log-aannemelijkheidsratio-sommen omgezet in een posterior-kans door de sigmoïde functie — met live per-woord-bijdragebalken en tracking van achtergehouden nauwkeurigheid.
3D · Three.js / WebGL renderer · 60 FPS target · runs fully client-side, no install