Voorvereiste: Lineaire Regressie
Dit artikel bespreekt de basisprincipes van Logistische Regressie en de implementatie ervan in Python. Logistische regressie is in principe een algoritme voor classificatie onder supervisie. In een classificatieprobleem kan de doelvariabele (of output), y, alleen discrete waarden aannemen voor een gegeven set kenmerken (of inputs), X.
In tegenstelling tot wat vaak wordt gedacht, IS logistische regressie een regressiemodel. Het model bouwt een regressiemodel om de waarschijnlijkheid te voorspellen dat een gegeven gegeven tot de als “1” genummerde categorie behoort. Net zoals bij lineaire regressie wordt aangenomen dat de gegevens een lineaire functie volgen, modelleert logistische regressie de gegevens met behulp van de sigmoid-functie.
Logistische regressie wordt pas een classificatietechniek wanneer een beslissingsdrempel in beeld wordt gebracht. De vaststelling van de drempelwaarde is een zeer belangrijk aspect van Logistische regressie en hangt af van het classificatieprobleem zelf.
De beslissing over de waarde van de drempelwaarde wordt in belangrijke mate beïnvloed door de waarden van precisie en recall. In het ideale geval willen we dat zowel precisie als recall 1 zijn, maar dit is zelden het geval. In het geval van een afweging tussen precisie en recall gebruiken wij de volgende argumenten om de drempelwaarde te bepalen:-
1. Lage precisie/hoge recall: In toepassingen waar we het aantal vals-negatieven willen verminderen zonder noodzakelijkerwijs het aantal vals-positieven te verminderen, kiezen we een beslissingswaarde die een lage waarde van Precisie of een hoge waarde van Recall heeft. Bijvoorbeeld, in een toepassing voor kankerdiagnose willen wij niet dat een getroffen patiënt als niet getroffen wordt geclassificeerd zonder er veel aandacht aan te besteden of de patiënt ten onrechte als kankerpatiënt wordt gediagnosticeerd. Dit komt omdat de afwezigheid van kanker door verdere medische ziekten kan worden opgespoord, maar de aanwezigheid van de ziekte niet kan worden opgespoord bij een reeds afgewezen kandidaat.
2. Hoge precisie/lage recall: In toepassingen waar we het aantal vals positieven willen verminderen zonder noodzakelijkerwijs het aantal vals negatieven te verminderen, kiezen we een beslissingswaarde die een hoge waarde van Precisie of een lage waarde van Recall heeft. Bijvoorbeeld, als wij klanten classificeren of zij positief of negatief op een gepersonaliseerde advertentie zullen reageren, willen wij er absoluut zeker van zijn dat de klant positief op de advertentie zal reageren, omdat anders een negatieve reactie een verlies van potentiële verkoop van de klant kan veroorzaken.
Gebaseerd op het aantal categorieën, kan Logistische regressie worden geclassificeerd als:
- binomiaal: doelvariabele kan slechts 2 mogelijke types hebben: “0” of “1” die kunnen staan voor “win” vs “verlies”, “pass” vs “fail”, “dood” vs “levend”, enz.
- multinomiaal: doelvariabele kan 3 of meer mogelijke typen hebben die niet geordend zijn (d.w.z. typen hebben geen kwantitatieve betekenis), zoals “ziekte A” vs “ziekte B” vs “ziekte C”.
- ordinaal: het gaat om doelvariabelen met geordende categorieën. Bijvoorbeeld, een test score kan worden gecategoriseerd als: “zeer slecht”, “slecht”, “goed”, “zeer goed”. Hier kan elke categorie een score krijgen als 0, 1, 2, 3.
Voreerst verkennen we de eenvoudigste vorm van Logistische Regressie, namelijk Binomiale Logistische Regressie.
Binomiale Logistische Regressie
Bekijk een voorbeeld dataset die het aantal uren studie koppelt aan het resultaat van een examen. Het resultaat kan slechts twee waarden aannemen, namelijk geslaagd(1) of niet geslaagd(0):
Uren(x) | 0.50 | 0.75 | 1.00 | 1.25 | 1.50 | 1.75 | 2.00 | 2.25 | 2.50 | 2.75 | 3.00 | 3.25 | 3.50 | 3.75 | 4.00 | 4.25 | 4.50 | 4.75 | 5.00 | 5.50 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Pass(y) | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 1 | 1 | 1 | 1 |
So, hebben we
i.e. y is een categorische doelvariabele die slechts twee mogelijke typen kan aannemen: “0” of “1”.
Om ons model te veralgemenen, nemen we aan dat:
- De dataset heeft “p” kenmerkvariabelen en “n” waarnemingen.
- De feature-matrix wordt weergegeven als:
Hier staat voor de waarden van de feature voor de observatie.
Hier houden we de conventie van laten = 1. (Blijf lezen, u zult de logica zo dadelijk begrijpen). - De waarneming, , kan worden voorgesteld als:
- vertegenwoordigt de voorspelde respons voor de waarneming, d.w.z. . De formule die we voor de berekening gebruiken, wordt hypothese genoemd.
Als u de lineaire regressie hebt doorgenomen, moet u zich herinneren dat in de lineaire regressie de hypothese die we voor de voorspelling gebruikten, was:
waarbij, de regressiecoëfficiënten zijn.
Laat de regressiecoëfficiëntenmatrix/vector zijn:
Dan, in een compactere vorm,
De reden om = 1 te nemen is nu vrij duidelijk.
We moesten een matrixproduct maken, maar er was geen
eigenlijke vermenigvuldiging met in de oorspronkelijke hypotheseformule. Dus hebben we = 1 gedefinieerd.
Nu, als we proberen Lineaire Regressie toe te passen op bovenstaand probleem, zullen we waarschijnlijk continue waarden krijgen met behulp van de hypothese die we hierboven hebben besproken. Ook heeft het geen zin om waarden groter dan 1 of kleiner dan 0 te nemen.
Dus worden enkele wijzigingen aangebracht in de hypothese voor classificatie:
waarbij,
de logistische functie of de sigmoïde functie wordt genoemd.
Hier ziet u een grafiek met g(z):
U kunnen uit bovenstaande grafiek afleiden dat:
- g(z) naar 1 neigt als
- g(z) naar 0 neigt als
- g(z) altijd begrensd is tussen 0 en 1
Dus nu kunnen we voorwaardelijke waarschijnlijkheden voor 2 labels (0 en 1) voor de waarneming definiëren als:
We kunnen het compacter schrijven als:
Nu definiëren we een andere term, waarschijnlijkheid van parameters als:
Waarschijnlijkheid is niets anders dan de waarschijnlijkheid van gegevens (oefenvoorbeelden), gegeven een model en specifieke parameterwaarden (hier, ). De waarschijnlijkheid wordt verkregen door alle voorgegeven waarden met elkaar te vermenigvuldigen.
En om de berekeningen te vergemakkelijken, nemen we de logwaarschijnlijkheid:
De kostenfunctie voor logistische regressie is evenredig met de inverse van de waarschijnlijkheid van de parameters. Daarom kunnen we een uitdrukking voor de kostenfunctie, J, verkrijgen met behulp van de vergelijking van de logwaarschijnlijkheid als:
en ons doel is een schatting te maken zodat de kostenfunctie wordt geminimaliseerd !!
Met behulp van het Gradient Descent-algoritme
Eerst nemen we gedeeltelijke afgeleiden van w.r.t. om de stochastische gradiënt afdalingsregel af te leiden (we presenteren hier alleen de uiteindelijke afgeleide waarde):
Hier staan y en h(x) voor de responsvector en de voorspelde responsvector (respectievelijk). Ook is de vector die de waarnemingswaarden voor feature.
Nu, om min te krijgen,
waar heet leersnelheid en moet expliciet worden ingesteld.
Laten we eens kijken naar de python uitvoering van bovenstaande techniek op een monster dataset (download het van hier):
Note: Gradient descent is een van de vele manieren om .
Basically, dit zijn meer geavanceerde algoritmen die gemakkelijk kunnen worden uitgevoerd in Python zodra u uw kostenfunctie en uw gradiënten hebt gedefinieerd. Deze algoritmen zijn:
- BFGS(Broyden-Fletcher-Goldfarb-Shanno algoritme)
- L-BFGS(Zoals BFGS maar gebruikt beperkt geheugen)
- Conjugate Gradient
Voordelen/nadelen van het gebruik van een van deze algoritmen boven Gradient descent:
- Voordelen
- Hoeven geen leersnelheid te kiezen
- Lopen vaak sneller (niet altijd het geval)
- Kan gradiënt numeriek voor u benaderen (pakt niet altijd goed uit)
- Nadelen
- Meer complex
- Meer een black box tenzij je de details leert
Multinomiale Logistische Regressie
In Multinomiale Logistische Regressie, kan de uitgangsvariabele meer dan twee mogelijke discrete uitgangen hebben. Beschouw de cijfer-dataset. Hier is de uitvoervariabele de cijferwaarde die waarden kan aannemen uit (0, 12, 3, 4, 5, 6, 7, 8, 9).
Hieronder volgt de implementatie van Multinomial Logisitc Regression met behulp van scikit-learn om voorspellingen te doen op digit dataset.
Logistic Regression model accuracy(in %): 95.6884561892
Tot slot volgen hier nog enkele punten over Logistische regressie om over na te denken:
- Gaat NIET uit van een lineair verband tussen de afhankelijke variabele en de onafhankelijke variabelen, maar wel van een lineair verband tussen de logit van de verklarende variabelen en de respons.
- Onafhankelijke variabelen kunnen zelfs de machtstermen of andere niet-lineaire transformaties van de oorspronkelijke onafhankelijke variabelen zijn.
- De afhankelijke variabele behoeft NIET normaal te zijn verdeeld, maar wordt gewoonlijk verdeeld volgens een exponentiële familie (b.v. binomiaal, Poisson, multinomiaal, normaal, …); bij binaire logistische regressie wordt uitgegaan van een binomiale verdeling van de respons.
- Aan de homogeniteit van variantie behoeft NIET te worden voldaan.
- De fouten moeten onafhankelijk zijn, maar NIET normaal verdeeld.
- Het maakt gebruik van maximale waarschijnlijkheidsschatting (MLE) in plaats van gewone kleinste kwadraten (OLS) om de parameters te schatten, en berust dus op benaderingen voor grote steekproeven.
Dit artikel is bijgedragen door Nikhil Kumar. Als je GeeksforGeeks leuk vindt en een bijdrage wilt leveren, kun je ook een artikel schrijven via contribute.geeksforgeeks.org of mail je artikel naar [email protected]. Zie je artikel verschijnen op de GeeksforGeeks hoofdpagina en help andere Geeks.