Förkunskapskrav: I denna artikel diskuteras grunderna för logistisk regression och dess implementering i Python. Logistisk regression är i grunden en övervakad klassificeringsalgoritm. I ett klassificeringsproblem kan målvariabeln (eller resultatet), y, endast anta diskreta värden för en given uppsättning funktioner (eller indata), X.
I motsats till vad många tror är logistisk regression en regressionsmodell. Modellen bygger en regressionsmodell för att förutsäga sannolikheten för att en given datainmatning tillhör den kategori som är numrerad som ”1”. Precis som linjär regression utgår från att data följer en linjär funktion, modellerar logistisk regression data med hjälp av en sigmoidfunktion.
Logistisk regression blir en klassificeringsteknik först när en beslutströskel förs in i bilden. Fastställandet av tröskelvärdet är en mycket viktig aspekt av logistisk regression och är beroende av själva klassificeringsproblemet.
Beslutet om tröskelvärdet påverkas i hög grad av värdena för precision och recall. Helst vill vi att både precision och recall ska vara 1, men detta är sällan fallet. Vid en avvägning mellan precision och återkallelse använder vi följande argument för att bestämma tröskelvärdet:-
1. Låg precision/hög återkallelse: I tillämpningar där vi vill minska antalet falska negativa svar utan att nödvändigtvis minska antalet falska positiva svar väljer vi ett beslutsvärde som har ett lågt värde för precision eller ett högt värde för återkallelse. I en applikation för cancerdiagnostik vill vi till exempel inte att en drabbad patient ska klassificeras som icke drabbad utan att ta hänsyn till om patienten felaktigt diagnostiseras med cancer. Detta beror på att avsaknaden av cancer kan upptäckas genom ytterligare medicinska sjukdomar, men närvaron av sjukdomen kan inte upptäckas hos en redan avvisad kandidat.
2. Hög precision/låg återkallelse: I tillämpningar där vi vill minska antalet falska positiva utan att nödvändigtvis minska antalet falska negativa, väljer vi ett beslutsvärde som har ett högt värde för Precision eller ett lågt värde för Recall. Om vi till exempel klassificerar kunder om de kommer att reagera positivt eller negativt på en personlig annons, vill vi vara helt säkra på att kunden kommer att reagera positivt på annonsen, eftersom en negativ reaktion annars kan leda till att kunden förlorar potentiell försäljning.
Baserat på antalet kategorier kan logistisk regression klassificeras som:
- binomial: målvariabeln kan bara ha två möjliga typer: ”
- multinomial: målvariabeln kan ha tre eller fler möjliga typer som inte är ordnade (dvs. typerna har ingen kvantitativ betydelse), t.ex. ”sjukdom A” vs ”sjukdom B” vs ”sjukdom C”.
- ordinal: målvariabler med ordnade kategorier. Till exempel kan ett testresultat kategoriseras som: ”mycket dålig”, ”dålig”, ”bra”, ”mycket bra”. Här kan varje kategori ges en poäng som 0, 1, 2, 3.
Först utforskar vi den enklaste formen av logistisk regression, dvs. binomial logistisk regression.
Binomial logistisk regression
Tänk på ett exempel på ett dataset som kartlägger antalet studietimmar med resultatet av en examen. Resultatet kan bara anta två värden, nämligen godkänt(1) eller underkänt(0):
Timmar(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 | 0 | 1 | 0 | 1 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
So, har vi
i.e. y är en kategorisk målvariabel som endast kan ha två möjliga typer: ”0” eller ”1”.
För att generalisera vår modell antar vi att:
- Dataset har ”p” funktionsvariabler och ”n” observationer.
- Funktionsmatrisen representeras som:
Här anges funktionens värde för observationen.
Här behåller vi konventionen att låta = 1. (Fortsätt läsa, du kommer att förstå logiken om en stund). - Observationen, , kan representeras som:
- representerar det förutspådda svaret för observationen, dvs . Formeln vi använder för att beräkna kallas hypotes.
Om du har gått igenom linjär regression bör du minnas att i linjär regression var hypotesen vi använde för förutsägelsen:
där, är regressionskoefficienterna.
Låt regressionskoefficientmatris/vektor, vara:
Sedan, i en mer kompakt form,
Redovisningen av att ta = 1 är ganska tydlig nu.
Vi behövde göra en matrisprodukt, men det fanns inget
aktuellt multiplicerat till i den ursprungliga hypotesformeln. Så vi definierade = 1.
Om vi nu försöker tillämpa linjär regression på ovanstående problem kommer vi sannolikt att få kontinuerliga värden med hjälp av den hypotes vi diskuterade ovan. Det är inte heller meningsfullt att ta värden som är större än 1 eller mindre än 0.
Så, några ändringar görs i hypotesen för klassificering:
där,
kallas logistisk funktion eller sigmoidfunktion.
Här är en graf som visar g(z):
Vi kan dra slutsatsen från ovanstående graf att:
- g(z) tenderar mot 1 som
- g(z) tenderar mot 0 som
- g(z) är alltid avgränsad mellan 0 och 1
Så nu kan vi definiera betingade sannolikheter för 2 etiketter (0 och 1) för observation som:
Vi kan skriva det mer kompakt som:
Nu definierar vi en annan term, sannolikhet för parametrar som:
Sannolikhet är inget annat än sannolikheten för data(träningsexempel), givet en modell och specifika parametervärden(här, ). Den mäter det stöd som data ger för varje möjligt värde av . Vi får den genom att multiplicera alla för givet .
Och för enklare beräkningar tar vi log sannolikhet:
Kostnadsfunktionen för logistisk regression är proportionell mot omvänt av sannolikhet för parametrar. Därför kan vi få ett uttryck för kostnadsfunktionen J med hjälp av loglikelihood-ekvationen som:
och vårt mål är att skatta så att kostnadsfunktionen minimeras !!
Med hjälp av Gradient descent-algoritmen
Först tar vi partiella derivat av w.r.t för att härleda den stokastiska gradientnedgångsregeln (vi presenterar endast det slutliga härledda värdet här):
Här representerar y och h(x) svarsvektorn och den förutsedda svarsvektorn (respektive). Dessutom är vektorn den vektor som representerar observationsvärdena för funktionen.
Nu, för att få min ,
där kallas inlärningshastighet och måste ställas in explicit.
Låt oss se python-implementeringen av ovanstående teknik på ett exempel på datamängd (ladda ner den härifrån):
Note: Gradient descent är ett av många sätt att skatta .
I grund och botten är detta mer avancerade algoritmer som enkelt kan köras i Python när du har definierat din kostnadsfunktion och dina gradienter. Dessa algoritmer är:
- BFGS(Broyden-Fletcher-Goldfarb-Shanno algoritm)
- L-BFGS(Som BFGS men använder begränsat minne)
- Konjugerad gradient
Fördelar/nackdelar med att använda någon av dessa algoritmer framför Gradient descent:
- Fördelar
- Inte behov av att välja inlärningshastighet
- Ofta går det snabbare (inte alltid fallet)
- Kan numeriskt approximera gradienten åt dig (fungerar inte alltid bra)
- Mer komplext
- Mer av en svart låda om du inte lär dig detaljerna
Multinomial logistisk regression
I Multinomial logistisk regression, kan utgångsvariabeln ha mer än två möjliga diskreta utgångar. Betrakta Datasetet. Här är utgångsvariabeln ett siffervärde som kan ha värden bland (0, 12, 3, 4, 5, 6, 7, 8, 9).
Nedan visas implementeringen av Multinomial Logisitc Regression med hjälp av scikit-learn för att göra förutsägelser för digit-dataset.
Logistic Regression model accuracy(in %): 95.6884561892
Slutningsvis kommer här några punkter om logistisk regression att fundera över:
- Det förutsätter INTE ett linjärt samband mellan den beroende variabeln och de oberoende variablerna, men det förutsätter ett linjärt samband mellan logiten av de förklarande variablerna och svaret.
- De oberoende variablerna kan till och med vara potenstermer eller några andra icke-linjära transformationer av de ursprungliga oberoende variablerna.
- Den beroende variabeln behöver INTE vara normalfördelad, men den antar vanligtvis en fördelning från en exponentiell familj (t.ex. binomial, Poisson, multinomial, normal,…); binär logistisk regression förutsätter binomial fördelning av svaret.
- Variansens homogenitet behöver INTE vara uppfylld.
- Fel behöver vara oberoende men INTE normalfördelade.
- Den använder maximum likelihood estimation (MLE) snarare än ordinary least squares (OLS) för att skatta parametrarna, och förlitar sig därmed på approximationer av stora stickprov.
Denna artikel har bidragits av Nikhil Kumar. Om du gillar GeeksforGeeks och vill bidra kan du också skriva en artikel via contribute.geeksforgeeks.org eller maila din artikel till [email protected]. Se din artikel dyka upp på GeeksforGeeks huvudsida och hjälp andra Geeks.