Előfeltétel: Linear Regression
Ez a cikk a logisztikus regresszió alapjait és Pythonban történő megvalósítását tárgyalja. A logisztikus regresszió alapvetően egy felügyelt osztályozási algoritmus. Az osztályozási problémában a célváltozó (vagy kimenet), y, csak diszkrét értékeket vehet fel a jellemzők (vagy bemenetek) adott halmaza, X esetén.
A közhiedelemmel ellentétben a logisztikus regresszió EGY regressziós modell. A modell egy regressziós modellt épít fel annak valószínűségére, hogy egy adott adatbevitel az “1”-ként számozott kategóriába tartozik. Ahogy a lineáris regresszió feltételezi, hogy az adatok egy lineáris függvényt követnek, a logisztikus regresszió a szigmoid függvény segítségével modellezi az adatokat.
A logisztikus regresszió csak akkor válik osztályozási technikává, ha egy döntési küszöböt hozunk a képbe. A küszöbérték beállítása nagyon fontos szempont a logisztikus regresszióban, és magától az osztályozási problémától függ.
A küszöbérték értékére vonatkozó döntést nagymértékben befolyásolja a pontosság és a visszahívás értéke. Ideális esetben azt szeretnénk, ha mind a pontosság, mind a visszahívás értéke 1 lenne, de ez ritkán van így. Precision-Recall kompromisszum esetén a következő érveket használjuk a küszöbérték meghatározásához:-
1. Alacsony Precision/High Recall: Azokban az alkalmazásokban, ahol csökkenteni akarjuk a hamis negatívumok számát anélkül, hogy feltétlenül csökkentenénk a hamis pozitívumok számát, olyan döntési értéket választunk, amelynek alacsony a Precision értéke vagy magas a Recall értéke. Például egy rákdiagnosztikai alkalmazásban nem akarjuk, hogy bármelyik érintett beteget nem érintettnek minősítsük anélkül, hogy nagy figyelmet fordítanánk arra, hogy a betegnél tévesen diagnosztizálták-e a rákot. Ennek az az oka, hogy a rák hiánya további orvosi betegségekkel kimutatható, de a betegség jelenléte nem mutatható ki egy már elutasított jelöltnél.
2. Nagy Precizitás/alacsony Recall: Azokban az alkalmazásokban, ahol csökkenteni akarjuk a hamis pozitív eredmények számát anélkül, hogy feltétlenül csökkentenénk a hamis negatív eredmények számát, olyan döntési értéket választunk, amelynek magas a Precision értéke vagy alacsony a Recall értéke. Ha például osztályozzuk az ügyfeleket, hogy pozitívan vagy negatívan fognak-e reagálni egy személyre szabott reklámra, akkor teljesen biztosak akarunk lenni abban, hogy az ügyfél pozitívan fog reagálni a reklámra, mert ellenkező esetben a negatív reakció potenciális eladási veszteséget okozhat az ügyféltől.
A kategóriák száma alapján a logisztikus regresszió a következőképpen osztályozható:
- binomiális: a célváltozónak csak 2 lehetséges típusa lehet: “
- multinomiális: a célváltozónak 3 vagy több lehetséges típusa lehet, amelyek nem rendezettek (azaz a típusoknak nincs mennyiségi jelentőségük), mint például “A betegség” vs. “B betegség” vs. “C betegség”.
- ordinális: rendezett kategóriákkal rendelkező célváltozókkal foglalkozik. Például egy teszteredmény a következő kategóriákba sorolható: “nagyon rossz”, “rossz”, “jó”, “nagyon jó”. Itt minden kategória kaphat egy pontszámot, például 0, 1, 2, 3.
Először is vizsgáljuk meg a logisztikus regresszió legegyszerűbb formáját, a binomiális logisztikus regressziót.
Binomiális logisztikus regresszió
Nézzünk egy példaadathalmazt, amely a tanulással töltött órák számát egy vizsgaeredményhez kapcsolja. Az eredmény csak két értéket vehet fel, nevezetesen sikeres(1) vagy sikertelen(0):
Hours(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 | 0 | 1 | 0 | 1 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
Sz, van
i.e. y egy kategorikus célváltozó, amely csak két lehetséges típust vehet fel: “0” vagy “1”.
Modellünk általánosítása érdekében feltételezzük, hogy:
- Az adathalmaznak “p” jellemzőváltozója és “n” megfigyelése van.
- A feature-mátrixot a következőképpen ábrázoljuk:
Itt a megfigyeléshez tartozó feature-értékeket jelöli.
Itt megtartjuk azt a konvenciót, hogy hagyjuk = 1. (Olvasson tovább, néhány pillanat múlva megérti a logikát). - A megfigyelés, , a következőképpen ábrázolható:
- a megfigyeléshez tartozó előre jelzett választ jelenti, azaz . A számításhoz használt képletet hipotézisnek nevezzük.
Ha már végigment a lineáris regresszión, akkor emlékeznie kell arra, hogy a lineáris regresszióban az előrejelzéshez használt hipotézis:
ahol, a regressziós együtthatók.
Legyen a regressziós együttható mátrix/vektor, legyen:
Ezután, tömörebb formában,
Az, hogy miért vettük = 1, most már elég világos.
Mátrixszorzatot kellett csinálnunk, de az eredeti hipotézisképletben nem volt
aktuális szorzat. Tehát = 1-t definiáltunk.
Most, ha megpróbáljuk alkalmazni a lineáris regressziót a fenti problémára, akkor valószínűleg folytonos értékeket kapunk a fent tárgyalt hipotézis segítségével. Továbbá nincs értelme annak, hogy 1-nél nagyobb vagy 0-nál kisebb értékeket vegyünk fel.
Az osztályozáshoz a hipotézisen néhány módosítást hajtunk végre:
ahol,
a logisztikus függvényt vagy a szigmoid függvényt nevezzük.
Itt van egy grafikon, amely g(z) értékét mutatja:
A fenti grafikonból következtethetünk arra, hogy:
- g(z) 1 felé tendál, mivel
- g(z) 0 felé tendál, mivel
- g(z) mindig 0 és 1 között van korlátozva
Így most a megfigyelés 2 címkéjére(0 és 1) a következő feltételes valószínűségeket határozhatjuk meg:
Kompaktabban így írhatjuk le:
Most, definiálunk egy másik kifejezést, a paraméterek valószínűségét:
A valószínűség nem más, mint az adatok(képzési példák) valószínűsége egy modell és adott paraméterértékek(itt, ) mellett. Azt méri, hogy az adatok milyen támogatást nyújtanak az adatok minden lehetséges értékéhez. Úgy kapjuk meg, hogy megszorozzuk az összes adott .
És a könnyebb számítások érdekében log likelihoodot veszünk:
A logisztikus regresszió költségfüggvénye arányos a paraméterek likelihoodjának inverzével. Ezért a log likelihood egyenlet segítségével megkaphatjuk a költségfüggvény, J kifejezését:
és a célunk az, hogy úgy becsüljünk, hogy a költségfüggvény minimalizálódjon !!!
Gradiens süllyedés algoritmus
Először is vegyük w parciális deriváltjait.r.t egyesével, hogy levezessük a sztochasztikus gradiens süllyedés szabályát(itt csak a végső származtatott értéket mutatjuk be):
Itt y és h(x) a válaszvektort és az előre jelzett válaszvektort (illetve) jelöli. Továbbá, az a vektor, amely a jellemző megfigyelési értékeit képviseli.
Most, annak érdekében, hogy min-t kapjunk,
amelyet tanulási sebességnek nevezünk, és explicit módon kell beállítani.
Lássuk a fenti technika python implementációját egy mintaadatkészleten (letölthető innen):
Megjegyzés: A gradiens süllyedés egy a sokféle becslési mód közül .
Lényegében ezek fejlettebb algoritmusok, amelyek könnyen futtathatók Pythonban, miután meghatároztuk a költségfüggvényünket és a gradienseket. Ezek az algoritmusok:
- BFGS(Broyden-Fletcher-Goldfarb-Shanno algoritmus)
- L-BFGS(Mint a BFGS, de korlátozott memóriát használ)
- Conjugate Gradient
Az algoritmusok bármelyikének előnyei/hátrányai a Gradiens süllyedéssel szemben:
- Előnyei
- Nem kell kiválasztani a tanulási sebességet
- Gyakran gyorsabban fut (nem mindig van így)
- Numerikusan közelítheti a gradienst helyettünk (nem mindig működik jól)
- Hátrányok
- Egyre összetettebb
- Egyre inkább fekete doboz, hacsak nem tanulod meg a sajátosságokat
Multinomiális logisztikus regresszió
A multinomiális logisztikus regresszióban, a kimeneti változónak kettőnél több lehetséges diszkrét kimenete lehet. Tekintsük a Digit adathalmazt. Itt a kimeneti változó a számjegy értéke, amely a (0, 12, 3, 4, 5, 6, 7, 8, 9) értékek közül vehet fel értékeket.
Az alábbiakban a Multinomial Logisitc Regression implementációja látható scikit-learn segítségével, hogy előrejelzéseket készítsen a digit adathalmazon.
Logistic Regression model accuracy(in %): 95.6884561892
Végül álljon itt néhány pont a logisztikus regresszióról, amin érdemes elgondolkodni:
- NEM feltételez lineáris kapcsolatot a függő változó és a független változók között, de lineáris kapcsolatot feltételez a magyarázó változók logaritása és a válasz között.
- A független változók lehetnek akár a hatványtételek vagy az eredeti független változók egyéb nemlineáris transzformációi is.
- A függő változónak NEM kell normális eloszlásúnak lennie, de jellemzően egy exponenciális családba tartozó eloszlást feltételez (pl. binomiális, Poisson, multinomiális, normális,…); a bináris logisztikus regresszió a válasz binomiális eloszlását feltételezi.
- A variancia homogenitásának NEM kell teljesülnie.
- A hibáknak függetlennek kell lenniük, de NEM normális eloszlásúak.
- A paraméterek becsléséhez a szokásos legkisebb négyzetek (OLS) helyett maximális valószínűségű becslést (MLE) használ, és így nagymintás közelítésekre támaszkodik.
Ez a cikk Nikhil Kumar közreműködésével készült. Ha tetszik a GeeksforGeeks és szeretnél hozzájárulni, írhatsz cikket a contribute.geeksforgeeks.org oldalon, vagy elküldheted a cikkedet a [email protected] címre. Láthatod, hogy a cikked megjelenik a GeeksforGeeks főoldalán, és segíthetsz más geekeknek.