Met logistieke regressie hebben we geleerd hoe we in twee klassen kunnen indelen.
Wat gebeurt er als er meer dan twee klassen zijn?
n is eenvoudigweg de multiklasse-uitbreiding van dit idee. En we zullen dit model bespreken voor dag 14 van mijn Machine Learning “Adventskalender” (volg deze link voor alle informatie over de aanpak en de bestanden die ik gebruik).
In plaats van één score creëren we nu één score per klas. In plaats van één waarschijnlijkheid passen we de Softmax-functie toe om kansen te produceren die optellen tot 1.
Het Softmax-model begrijpen
Voordat we het model trainen, moeten we het eerst begrijpen wat het model is.
Softmax Regressie gaat nog niet over optimalisatie.
Het gaat eerst over hoe voorspellingen worden berekend.
Een kleine dataset met 3 klassen
Laten we een kleine dataset gebruiken met één kenmerk x en drie klassen.
Zoals we eerder zeiden, zou de doelvariabele y dat moeten doen niet als numeriek worden behandeld.
Het vertegenwoordigt categorieën, geen hoeveelheden.
Een gebruikelijke manier om dit weer te geven is one-hot-coderingwaarbij elke klasse wordt vertegenwoordigd door zijn eigen indicator.
Vanuit dit oogpunt kan Softmax Regressie worden gezien als drie logistieke regressies die parallel lopenéén per klas.
Kleine datasets zijn ideaal om te leren.
U kunt elke formule, elke waarde en hoe elk onderdeel van het model bijdraagt aan het eindresultaat zien.
Beschrijving van het model
Dus wat is het model precies?
Score per klas
Bij logistische regressie is de modelscore een eenvoudige lineaire uitdrukking: score = a * x + b.
Softmax Regressie doet precies hetzelfde, maar één score per klasse:
score_0 = a0 * x + b0
score_1 = a1 * x + b1
score_2 = a2 * x + b2
In dit stadium zijn deze scores slechts reële cijfers.
Het zijn nog geen waarschijnlijkheden.
Scores omzetten in kansen: de Softmax-stap
Softmax zet de drie scores om in drie kansen. Elke waarschijnlijkheid is positief en alle drie zijn opgeteld 1.
De berekening is direct:
- Exponentiëer elke score
- Bereken de som van alle exponentiële waarden
- Verdeel elke exponentiële waarde door deze som
Dit geeft ons p0, p1 en p2 voor elke rij.
Deze waarden vertegenwoordigen de modelbetrouwbaarheid voor elke klasse.
Op dit punt is het model volledig gedefinieerd.
Het trainen van het model zal eenvoudigweg bestaan uit het aanpassen van de coëfficiënten ak en bk zodat deze kansen zo goed mogelijk overeenkomen met de waargenomen klassen.

Visualisatie van het Softmax-model
Op dit punt is het model volledig gedefinieerd.
Wij hebben:
- één lineaire score per klas
- een Softmax-stap die deze scores omzet in kansen
Het trainen van het model bestaat eenvoudigweg uit het aanpassen van de coëfficiënten aka_kak en bkb_kbk zodat deze kansen zo goed mogelijk overeenkomen met de waargenomen klassen.
Zodra de coëfficiënten zijn gevonden, kunnen we dat doen visualiseer het modelgedrag.
Om dit te doen nemen we een reeks invoerwaarden, bijvoorbeeld x van 0 tot 7, en berekenen we: score0,score1,score2 en de bijbehorende kansen p0,p1,p2.
Het uitzetten van deze kansen levert drie vloeiende curven op, één per klasse.

Het resultaat is zeer intuïtief.
Voor kleine waarden van x is de kans op klasse 0 hoog.
Naarmate x toeneemt, neemt deze waarschijnlijkheid af, terwijl de waarschijnlijkheid van klasse 1 toeneemt.
Voor grotere waarden van x wordt de waarschijnlijkheid van klasse 2 dominant.
Bij elke waarde van x zijn de drie kansen opgeteld 1.
Het model neemt geen abrupte beslissingen; in plaats daarvan drukt het uit hoe zelfverzekerd is het in elke klas.
Deze plot maakt het gedrag van Softmax Regressie gemakkelijk te begrijpen.
- U kunt zien hoe het model soepel van de ene klasse naar de andere overgaat
- Beslissingsgrenzen komen overeen met snijpunten tussen waarschijnlijkheidscurven
- De modellogica wordt zichtbaar, niet abstract
Dit is een van de belangrijkste voordelen van het bouwen van het model in Excel:
je berekent niet alleen voorspellingen, dat kan ook Kijk hoe het model denkt.
Nu het model is gedefinieerd, hebben we een manier nodig om dit te doen evalueren hoe goed het isen een methode om zijn coëfficiënten verbeteren.
Beide stappen hergebruiken ideeën die we al zagen bij Logistic Regression.
Evaluatie van het model: Cross-Entropy Loss
Softmax Regressie maakt gebruik van de dezelfde verliesfunctie als logistieke regressie.
Voor elk gegevenspunt kijken we naar de waarschijnlijkheid die aan de waarde is toegewezen juiste klasseen we nemen de negatieve logaritme:
verlies = – log (p ware klasse)
Als het model een hoge waarschijnlijkheid aan de juiste klasse toekent, is het verlies klein.
Als er een lage waarschijnlijkheid wordt toegekend, wordt het verlies groot.
In Excel is dit heel eenvoudig te implementeren.
We selecteren de juiste waarschijnlijkheid op basis van de waarde van y en passen de logaritme toe:
verlies = -LN( KIES(y + 1, p0, p1, p2) )
Tenslotte berekenen we de gemiddeld verlies over alle rijen.
Dit gemiddelde verlies is de hoeveelheid die we willen minimaliseren.

Residuen berekenen
Om de coëfficiënten bij te werken, beginnen we met berekenen residuenéén per klas.
Voor elke rij:
- residueel_0 = p0 minus 1 als y gelijk is aan 0, anders 0
- residueel_1 = p1 min 1 als y gelijk is aan 1, anders 0
- residu_2 = p2 min 1 als y gelijk is aan 2, anders 0
Met andere woorden, voor de juiste klasse trekken we 1 af.
Voor de andere klassen trekken we 0 af.
Deze residuen meten hoe ver de voorspelde kansen afwijken van wat we verwachten.
Het berekenen van de gradiënten
De gradiënten worden verkregen door de residuen te combineren met de kenmerkwaarden.
Voor elke klasse k:
- de gradiënt van ak is het gemiddelde van
residual_k * x - de gradiënt van bk is het gemiddelde van
residual_k
In Excel wordt dit geïmplementeerd met eenvoudige formules zoals SUMPRODUCT En AVERAGE.
Op dit punt is alles expliciet:
je ziet de residuen, de gradiënten en hoe elk datapunt bijdraagt.

De coëfficiënten bijwerken
Zodra de gradiënten bekend zijn, werken we de coëfficiënten bij met behulp van gradiëntafdaling.
Deze stap is identiek aan wat we eerder zagen, bij Logistische Regressie of Lineaire regressie.
Het enige verschil is dat we nu updaten zes coëfficiënten in plaats van twee.
Om het leren te visualiseren, maken we een tweede blad met één rij per iteratie:
- het huidige iteratienummer
- de zes coëfficiënten (a0, b0, a1, b1, a2, b2)
- het verlies
- de gradiënten
Rij 2 komt overeen met iteratie 0met de initiële coëfficiënten.
Rij 3 berekent de bijgewerkte coëfficiënten met behulp van de gradiënten uit rij 2.
Door de formules honderden rijen naar beneden te slepen, simuleren we de gradiëntdaling over vele iteraties.
Je ziet dan duidelijk:
- de coëfficiënten stabiliseren zich geleidelijk
- het verlies vermindert iteratie na iteratie
Dit maakt het leerproces tastbaar.
In plaats van je een optimizer voor te stellen, kun je dat ook doen kijk hoe het model leert.

Logistieke regressie als speciaal geval van Softmax-regressie
Logistieke regressie en Softmax-regressie worden vaak gepresenteerd als verschillende modellen.
In werkelijkheid zijn het hetzelfde idee op verschillende schaalniveaus.
Softmax Regressie berekent één lineaire score per klasse en zet deze scores om in kansen door ze te vergelijken.
Als er slechts twee klassen zijn, hangt deze vergelijking alleen af van de verschil tussen de twee scores.
Dit verschil is een lineaire functie van de invoer, en het toepassen van Softmax levert in dit geval precies de logistieke (sigmoïde) functie op.
Met andere woorden, logistieke regressie is eenvoudigweg Softmax-regressie, toegepast op twee klassen, waarbij overtollige parameters zijn verwijderd.
Zodra dit wordt begrepen, wordt de overstap van binaire naar multiklasse-classificatie een natuurlijke uitbreiding, en geen conceptuele sprong.

Softmax Regressie introduceert geen nieuwe manier van denken.
Dat blijkt eenvoudigweg Logistieke Regressie bevatte al alles wat we nodig hadden.
Door de lineaire score één keer per klasse te dupliceren en deze te normaliseren met Softmax, gaan we van binaire beslissingen naar waarschijnlijkheden met meerdere klassen zonder de onderliggende logica te veranderen.
Het verlies is hetzelfde idee.
De gradiënten hebben dezelfde structuur.
De optimalisatie is dezelfde gradiëntafdaling die we al kennen.
Wat verandert is alleen de aantal parallelle scores.
Een andere manier om met classificatie met meerdere klassen om te gaan?
Softmax is niet de enige manier om problemen met meerdere klassen in op gewicht gebaseerde modellen aan te pakken.
Er is een andere benadering, conceptueel minder elegant, maar in de praktijk heel gebruikelijk:
één versus rust of één tegen één classificatie.
In plaats van één enkel multiklasse-model te bouwen, trainen we verschillende binaire modellen en combineren we hun resultaten.
Deze strategie wordt veelvuldig gebruikt bij Ondersteuning van vectormachines.
Morgen kijken we naar SVM.
En je zult zien dat het op een nogal ongebruikelijke manier kan worden uitgelegd… en, zoals gewoonlijk, rechtstreeks in Excel.



