Ebben a cikkben a transzformáció elméleti számításait elemezzük lineáris regressziós függvények в inverz logit transzformációs függvény (más néven logisztikus válasz függvény). Aztán az arzenál segítségével maximális valószínűség módszere, a logisztikus regressziós modellnek megfelelően levezetjük a veszteségfüggvényt Logisztikai veszteség, vagyis definiálunk egy függvényt, amellyel a súlyvektor paramétereit kiválasztjuk a logisztikus regressziós modellben .
Cikk vázlata:
- Ismételjük meg a lineáris kapcsolatot két változó között
- Határozzuk meg az átalakítás szükségességét lineáris regressziós függvények в logisztikai válasz funkció
- Végezzük el az átalakításokat és a kimenetet logisztikai válasz funkció
- Próbáljuk megérteni, miért rossz a legkisebb négyzetek módszere a paraméterek kiválasztásakor funkciók Logisztikai veszteség
- Használjuk maximális valószínűség módszere meghatározásához paraméterválasztó funkciók :
5.1. 1. eset: funkció Logisztikai veszteség osztálymegjelölésű objektumokhoz 0 и 1:
5.2. 2. eset: funkció Logisztikai veszteség osztálymegjelölésű objektumokhoz -1 и +1:
A cikk tele van egyszerű példákkal, amelyekben minden számítás könnyen elvégezhető szóban vagy papíron; bizonyos esetekben szükség lehet egy számológépre. Szóval készülj :)
Ez a cikk elsősorban azoknak az adattudósoknak szól, akik kezdeti szintű ismeretekkel rendelkeznek a gépi tanulás alapjaiban.
A cikk kódot is tartalmaz grafikonok rajzolásához és számításokhoz. Minden kód a nyelven van írva Python 2.7. Előre hadd magyarázzam el az alkalmazott verzió „újdonságát” – ez az egyik feltétele a jól ismert tanfolyam elvégzésének. Yandex egy hasonlóan jól ismert online oktatási platformon Coursera, és ahogy feltételezhető, az anyag ennek alapján készült.
01. Egyenes függőség
Teljesen jogos feltenni a kérdést – mi köze ehhez a lineáris függőségnek és a logisztikus regressziónak?
Ez egyszerű! A logisztikus regresszió a lineáris osztályozóhoz tartozó modellek egyike. Egyszerűen fogalmazva, a lineáris osztályozó feladata a célértékek előrejelzése változókból (regresszorok) . Úgy gondolják, hogy a jellemzők közötti függőség és célértékek lineáris. Innen származik az osztályozó neve - lineáris. Nagyon durván fogalmazva, a logisztikus regressziós modell azon a feltételezésen alapul, hogy a jellemzők között lineáris kapcsolat van. és célértékek . Ez a kapcsolat.
Ott van az első példa a stúdióban, és helyesen a vizsgált mennyiségek egyenes irányú függéséről van szó. A cikk elkészítése során egy olyan példával találkoztam, amely már sok embert tönkretett - az áram feszültségtől való függése („Alkalmazott regressziós elemzés”, N. Draper, G. Smith). Itt is megnézzük.
Szerint Ohm törvénye:
Ahol - áramerősség, - feszültség, - ellenállás.
Ha nem tudnánk Ohm törvénye, akkor a függőséget empirikusan megváltoztatva találhatnánk meg és mérés , miközben támogatja rögzített. Akkor látnánk, hogy a függőségi gráf -tól többé-kevésbé egyenes vonalat ad az origón keresztül. Azért mondjuk „többé-kevésbé”, mert bár az összefüggés valójában pontos, méréseink kis hibákat tartalmazhatnak, ezért előfordulhat, hogy a grafikon pontjai nem pontosan esnek az egyenesre, hanem véletlenszerűen szóródnak körülötte.
1. grafikon „Függőség” -tól »
Diagramrajz kódja
import matplotlib.pyplot as plt
%matplotlib inline
import numpy as np
import random
R = 13.75
x_line = np.arange(0,220,1)
y_line = []
for i in x_line:
y_line.append(i/R)
y_dot = []
for i in y_line:
y_dot.append(i+random.uniform(-0.9,0.9))
fig, axes = plt.subplots(figsize = (14,6), dpi = 80)
plt.plot(x_line,y_line,color = 'purple',lw = 3, label = 'I = U/R')
plt.scatter(x_line,y_dot,color = 'red', label = 'Actual results')
plt.xlabel('I', size = 16)
plt.ylabel('U', size = 16)
plt.legend(prop = {'size': 14})
plt.show()
02. A lineáris regressziós egyenlet átalakításának szükségessége
Nézzünk egy másik példát. Képzeljük el, hogy egy bankban dolgozunk, és az a feladatunk, hogy bizonyos tényezők függvényében meghatározzuk, hogy a hitelfelvevő mekkora valószínűséggel fizeti vissza a hitelt. A feladat egyszerűsítése érdekében csak két tényezőt veszünk figyelembe: a hitelfelvevő havi fizetését és a havi hitel törlesztőrészletét.
A feladat nagyon feltételes, de ezzel a példával megérthetjük, miért nem elég a használata lineáris regressziós függvények, és azt is megtudja, milyen átalakításokat kell végrehajtani a függvénnyel.
Térjünk vissza a példához. Magától értetődik, hogy minél magasabb a fizetés, a hitelfelvevő havonta többet tud majd fordítani a kölcsön visszafizetésére. Ugyanakkor egy bizonyos fizetési tartományban ez a kapcsolat meglehetősen lineáris lesz. Vegyünk például egy 60.000 200.000 RUR és 3 5.000 RUR közötti fizetési tartományt, és tegyük fel, hogy a megadott fizetési tartományban a havi kifizetés nagyságának függése a fizetés nagyságától lineáris. Tegyük fel, hogy a megadott bértartománynál kiderült, hogy a fizetés/fizetés aránya nem eshet XNUMX alá, és a hitelfelvevőnek továbbra is XNUMX RUR tartaléknak kell lennie. És csak ebben az esetben feltételezzük, hogy a hitelfelvevő visszafizeti a kölcsönt a banknak. Ekkor a lineáris regressziós egyenlet a következőképpen alakul:
ahol , , , - fizetés -a hitelfelvevő, - hiteltörlesztés -a hitelfelvevő.
Fizetés és hitelfizetés fix paraméterekkel helyettesítése az egyenletben Eldöntheti, hogy kölcsönt ad ki vagy elutasít.
Előretekintve megjegyezzük, hogy a megadott paraméterekkel lineáris regressziós függvény, használt logisztikai válaszfunkciók nagy értékeket produkál, ami megnehezíti a számításokat a hitel visszafizetési valószínűségének meghatározásához. Ezért azt javasolják, hogy csökkentsük együtthatóinkat, mondjuk 25.000 XNUMX-szeresére. Az együtthatók ezen átalakítása nem változtatja meg a kölcsön kiadására vonatkozó döntést. Emlékezzünk erre a pontra a jövőre nézve, de most, hogy még világosabb legyen, miről beszélünk, tekintsük át három lehetséges hitelfelvevő helyzetét.
1. táblázat „Potenciális hitelfelvevők”
Kód a táblázat létrehozásához
import pandas as pd
r = 25000.0
w_0 = -5000.0/r
w_1 = 1.0/r
w_2 = -3.0/r
data = {'The borrower':np.array(['Vasya', 'Fedya', 'Lesha']),
'Salary':np.array([120000,180000,210000]),
'Payment':np.array([3000,50000,70000])}
df = pd.DataFrame(data)
df['f(w,x)'] = w_0 + df['Salary']*w_1 + df['Payment']*w_2
decision = []
for i in df['f(w,x)']:
if i > 0:
dec = 'Approved'
decision.append(dec)
else:
dec = 'Refusal'
decision.append(dec)
df['Decision'] = decision
df[['The borrower', 'Salary', 'Payment', 'f(w,x)', 'Decision']]
A táblázat adatai szerint Vasya 120.000 3.000 RUR fizetéssel kölcsönt szeretne kapni, hogy azt havonta 5.000 RUR-on visszafizesse. Megállapítottuk, hogy a kölcsön jóváhagyásához Vasya fizetésének meg kell haladnia a befizetés összegének háromszorosát, és még XNUMX RUR-nak kell maradnia. Vasya eleget tesz ennek a követelménynek: . Még 106.000 XNUMX RUR is maradt. Annak ellenére, hogy számításkor csökkentettük az esélyeket 25.000 XNUMX alkalommal, az eredmény ugyanaz volt - a hitel jóváhagyható. Fedya is kap kölcsönt, de Lesha annak ellenére, hogy ő kapja a legtöbbet, meg kell fékeznie az étvágyát.
Rajzoljunk grafikont erre az esetre.
2. ábra „A hitelfelvevők besorolása”
Kód a grafikon megrajzolásához
salary = np.arange(60000,240000,20000)
payment = (-w_0-w_1*salary)/w_2
fig, axes = plt.subplots(figsize = (14,6), dpi = 80)
plt.plot(salary, payment, color = 'grey', lw = 2, label = '$f(w,x_i)=w_0 + w_1x_{i1} + w_2x_{i2}$')
plt.plot(df[df['Decision'] == 'Approved']['Salary'], df[df['Decision'] == 'Approved']['Payment'],
'o', color ='green', markersize = 12, label = 'Decision - Loan approved')
plt.plot(df[df['Decision'] == 'Refusal']['Salary'], df[df['Decision'] == 'Refusal']['Payment'],
's', color = 'red', markersize = 12, label = 'Decision - Loan refusal')
plt.xlabel('Salary', size = 16)
plt.ylabel('Payment', size = 16)
plt.legend(prop = {'size': 14})
plt.show()
Tehát a függvénynek megfelelően megszerkesztett egyenesünk , elválasztja a „rossz” hitelfelvevőket a „jó” hitelfelvevőktől. Azok a hitelfelvevők, akiknek a vágyai nem esnek egybe képességeikkel, a vonal felett vannak (Lesha), míg azok, akik modellünk paraméterei szerint képesek visszafizetni a kölcsönt, a vonal alatt vannak (Vasya és Fedya). Más szóval ezt mondhatjuk: közvetlen vonalunk két osztályra osztja a hitelfelvevőket. Jelöljük őket a következőképpen: osztályba Azokat a hitelfelvevőket soroljuk be, akik a legnagyobb valószínűséggel fizetik vissza a kölcsönt vagy Beleszámítjuk azokat a hitelfelvevőket, akik nagy valószínűséggel nem tudják visszafizetni a kölcsönt.
Foglaljuk össze ebből az egyszerű példából a következtetéseket. Vegyünk egy pontot és a pont koordinátáit behelyettesítjük az egyenes megfelelő egyenletébe , fontoljon meg három lehetőséget:
- Ha a pont a vonal alatt van és az osztályhoz rendeljük , akkor a függvény értéke pozitív lesz től a . Ez azt jelenti, hogy feltételezhetjük, hogy a kölcsön visszafizetésének valószínűsége belül van . Minél nagyobb a függvény értéke, annál nagyobb a valószínűsége.
- Ha egy pont egy egyenes felett van, és az osztályhoz rendeljük vagy , akkor a függvény értéke negatív lesz től a . Ekkor feltételezzük, hogy az adósság visszafizetésének valószínűsége belül van és minél nagyobb a függvény abszolút értéke, annál nagyobb a bizalom.
- A pont egy egyenesen van, két osztály határán. Ebben az esetben a függvény értéke egyenlő lesz és a kölcsön visszafizetésének valószínűsége egyenlő .
Most képzeljük el, hogy nem két tényezőnk van, hanem több tucat, és nem három, hanem több ezer hitelfelvevőnk. Akkor az egyenes helyett lesz m-dimenziós sík és együtthatók nem légből kapottak leszünk, hanem minden szabály szerint, és a kölcsönt visszafizetett vagy nem törlesztő hitelfelvevőkről halmozott adatok alapján származtatjuk. És valóban, vegye figyelembe, hogy most már ismert együtthatók segítségével választjuk ki a hitelfelvevőket . Valójában a logisztikus regressziós modell feladata éppen a paraméterek meghatározása , amelynél a veszteségfüggvény értéke Logisztikai veszteség a minimumra fog törekedni. Hanem arról, hogyan számítják ki a vektort , többet megtudunk a cikk 5. részében. Közben visszatérünk az ígéret földjére - bankárunkhoz és három ügyfeléhez.
A funkciónak köszönhetően tudjuk, hogy kinek lehet kölcsönt adni és kitől kell megtagadni. De ilyen információval nem lehet az igazgatóhoz fordulni, mert tőlünk akarták megtudni, hogy minden hitelfelvevő milyen valószínűséggel fizeti vissza a kölcsönt. Mit kell tenni? A válasz egyszerű – valahogy át kell alakítanunk a függvényt , amelynek értékei a tartományba esnek olyan függvényre, amelynek értékei a tartományban lesznek . És létezik ilyen függvény, úgy hívják logisztikus válaszfüggvény vagy inverz logit transzformáció. Találkozik:
Lássuk lépésről lépésre, hogyan működik logisztikai válasz funkció. Jegyezzük meg, hogy az ellenkező irányba fogunk járni, pl. Feltételezzük, hogy ismerjük a valószínűségi értéket, amely a tól tartományba esik a majd ezt az értéket „feltekerjük” a teljes számtartományra a .
03. Levezetjük a logisztikus válaszfüggvényt
1. lépés: Alakítsa át a valószínűségi értékeket tartományba
A függvény átalakítása során в logisztikai válasz funkció Békén hagyjuk hitelelemzőnket, és inkább körbejárjuk a bukmékereket. Nem, természetesen nem fogunk fogadni, ott csak a kifejezés jelentése érdekel minket, például az esély 4 az 1-hez. A minden fogadó számára ismerős szorzó a „sikerek” és a „sikerek” aránya. kudarcok”. Valószínűségi értelemben az odds egy esemény bekövetkezésének valószínűsége osztva annak valószínűségével, hogy az esemény nem következik be. Írjuk fel egy esemény bekövetkezésének esélyének képletét :
Ahol - egy esemény bekövetkezésének valószínűsége, — annak valószínűsége, hogy egy esemény NEM következik be
Például, ha annak a valószínűsége, hogy egy „Veterok” becenevű fiatal, erős és játékos ló megver egy „Matilda” nevű idős és petyhüdt öregasszonyt, egyenlő , akkor a „Veterok” sikerének esélye meglesz к és fordítva, az esélyek ismeretében nem lesz nehéz kiszámítani a valószínűséget :
Így megtanultuk „lefordítani” a valószínűséget esélyekre, amelyekből értékeket vesznek a . Tegyünk még egy lépést, és tanuljuk meg „lefordítani” a valószínűséget a teljes számegyenesre a .
2. lépés: Alakítsa át a valószínűségi értékeket tartományba
Ez a lépés nagyon egyszerű – vegyük az esélyek logaritmusát az Euler-szám alapjához és kapjuk:
Most már tudjuk, hogy ha , majd számítsa ki az értéket nagyon egyszerű lesz, és ráadásul pozitívnak kell lennie: . Ez igaz.
Kíváncsiságból nézzük meg, mi van ha , akkor negatív értéket várunk . Ellenőrizzük: . Úgy van.
Most már tudjuk, hogyan lehet a valószínűségi értéket átváltani ebből a tól a teljes számegyenes mentén a . A következő lépésben az ellenkezőjét tesszük.
Egyelőre megjegyezzük, hogy a logaritmus szabályai szerint, a függvény értékének ismeretében , kiszámolhatja az esélyeket:
Az esélyek meghatározásának ez a módszere hasznos lesz számunkra a következő lépésben.
3. lépés. Levezetjük a meghatározáshoz szükséges képletet
Szóval tanultunk, tudtunk , függvényértékek keresése . Valójában azonban pontosan az ellenkezőjére van szükségünk – az érték ismeretére megtalálja . Ehhez forduljunk egy olyan fogalomhoz, mint az inverz odds-függvény, amely szerint:
A cikkben nem fogjuk levezetni a fenti képletet, hanem a fenti példában szereplő számok segítségével ellenőrizzük. Tudjuk, hogy 4:1 szorzóval (), az esemény bekövetkezésének valószínűsége 0.8 (). Csináljunk egy cserét: . Ez egybeesik a korábban elvégzett számításainkkal. Menjünk tovább.
Az utolsó lépésben arra következtettünk , ami azt jelenti, hogy az inverz odds függvényben helyettesíthet. Kapunk:
Oszd el a számlálót és a nevezőt is ezzel , Akkor:
Minden esetre, hogy megbizonyosodjunk arról, hogy sehol sem hibáztunk, még egy apró ellenőrzést végzünk. A 2. lépésben a megállapította, hogy . Ezután cserélje ki az értéket a logisztikai válaszfunkcióba, azt várjuk, hogy megkapjuk . Cseréljük és kapjuk:
Gratulálunk, kedves olvasó, most levezettük és teszteltük a logisztikai válasz funkciót. Nézzük meg a függvény grafikonját.
3. grafikon „Logisztikai válaszfüggvény”
Kód a grafikon megrajzolásához
import math
def logit (f):
return 1/(1+math.exp(-f))
f = np.arange(-7,7,0.05)
p = []
for i in f:
p.append(logit(i))
fig, axes = plt.subplots(figsize = (14,6), dpi = 80)
plt.plot(f, p, color = 'grey', label = '$ 1 / (1+e^{-w^Tx_i})$')
plt.xlabel('$f(w,x_i) = w^Tx_i$', size = 16)
plt.ylabel('$p_{i+}$', size = 16)
plt.legend(prop = {'size': 14})
plt.show()
A szakirodalomban ennek a függvénynek a neve is megtalálható szigmafunkció. A grafikonon jól látható, hogy az osztályhoz tartozó objektumok valószínűségének fő változása viszonylag kis tartományon belül következik be. , valahonnan a .
Azt javaslom, térjen vissza hitelelemzőnkhöz, és segítsen neki kiszámítani a hitel visszafizetésének valószínűségét, különben fennáll a kockázata, hogy bónusz nélkül marad :)
2. táblázat „Potenciális hitelfelvevők”
Kód a táblázat létrehozásához
proba = []
for i in df['f(w,x)']:
proba.append(round(logit(i),2))
df['Probability'] = proba
df[['The borrower', 'Salary', 'Payment', 'f(w,x)', 'Decision', 'Probability']]
Tehát meghatároztuk a hitel visszafizetésének valószínűségét. Általában véve ez igaznak tűnik.
Valójában annak a valószínűsége, hogy Vasya 120.000 3.000 RUR fizetéssel havonta 100 RUR-t tud adni a banknak, közel 0.3%. Mellesleg meg kell értenünk, hogy a bank kölcsönt adhat ki Leshának, ha a bank politikája például olyan ügyfelek hitelezését írja elő, amelyeknél a hitel visszafizetésének valószínűsége meghaladja, mondjuk, XNUMX. Csak arról van szó, hogy ebben az esetben a bank nagyobb tartalékot képez az esetleges veszteségekre.
Azt is meg kell jegyezni, hogy a fizetés/fizetés aránya legalább 3 és 5.000 RUR árrés a plafonból került levonásra. Ezért a súlyvektort nem tudtuk eredeti formájában használni . Az együtthatókat nagymértékben csökkenteni kellett, és ebben az esetben minden együtthatót elosztottunk 25.000 XNUMX-rel, vagyis lényegében módosítottuk az eredményt. De ez kifejezetten az anyag megértésének egyszerűsítése érdekében történt a kezdeti szakaszban. Az életben nem ki kell találnunk és módosítanunk kell az együtthatókat, hanem meg kell találnunk őket. A cikk következő részeiben levezetjük azokat az egyenleteket, amelyekkel a paramétereket kiválasztjuk .
04. Legkisebb négyzetek módszere a súlyvektor meghatározására a logisztikai válasz funkcióban
Már ismerjük ezt a módszert a súlyvektor kiválasztására Mint legkisebb négyzetek módszere (LSM) és valójában miért nem használjuk a bináris osztályozási feladatokban? Valójában semmi sem akadályozza meg a használatát MNC, csak ez a módszer az osztályozási problémákban ad kevésbé pontos eredményeket, mint Logisztikai veszteség. Ennek van elméleti alapja. Először nézzünk meg egy egyszerű példát.
Tegyük fel, hogy modelljeink (a MSE и Logisztikai veszteség) már megkezdték a súlyvektor kiválasztását és valami lépésnél leállítottuk a számítást. Nem számít, hogy a közepén, a végén vagy az elején, a lényeg az, hogy a súlyvektornak már van néhány értéke, és tegyük fel, hogy ebben a lépésben a súlyvektor mindkét modellnél nincs különbség. Ezután vegye ki a kapott súlyokat, és cserélje ki őket logisztikai válasz funkció () az osztályba tartozó valamely objektumra . Két olyan esetet vizsgálunk, amikor a kiválasztott súlyvektornak megfelelően a modellünk nagyon téves, és fordítva - a modell nagyon biztos abban, hogy az objektum az osztályba tartozik. . Lássuk, milyen bírságokat kell kiszabni a használat során MNC и Logisztikai veszteség.
Kód a büntetések kiszámításához a használt veszteségfüggvénytől függően
# класс объекта
y = 1
# вероятность отнесения объекта к классу в соответствии с параметрами w
proba_1 = 0.01
MSE_1 = (y - proba_1)**2
print 'Штраф MSE при грубой ошибке =', MSE_1
# напишем функцию для вычисления f(w,x) при известной вероятности отнесения объекта к классу +1 (f(w,x)=ln(odds+))
def f_w_x(proba):
return math.log(proba/(1-proba))
LogLoss_1 = math.log(1+math.exp(-y*f_w_x(proba_1)))
print 'Штраф Log Loss при грубой ошибке =', LogLoss_1
proba_2 = 0.99
MSE_2 = (y - proba_2)**2
LogLoss_2 = math.log(1+math.exp(-y*f_w_x(proba_2)))
print '**************************************************************'
print 'Штраф MSE при сильной уверенности =', MSE_2
print 'Штраф Log Loss при сильной уверенности =', LogLoss_2
Egy baklövés esete — a modell objektumot rendel egy osztályhoz 0,01 valószínűséggel
Használati büntetés MNC lesz:
Használati büntetés Logisztikai veszteség lesz:
Az erős bizalom esete — a modell objektumot rendel egy osztályhoz 0,99 valószínűséggel
Használati büntetés MNC lesz:
Használati büntetés Logisztikai veszteség lesz:
Ez a példa jól szemlélteti, hogy durva hiba esetén a veszteségfüggvény Log Loss lényegesen jobban bünteti a modellt, mint MSE. Most nézzük meg, mi az elméleti háttere a veszteségfüggvény használatának Log Loss osztályozási problémákban.
05. Maximum likelihood módszer és logisztikus regresszió
Ahogy az elején ígértük, a cikk tele van egyszerű példákkal. A stúdióban van egy másik példa és régi vendégek - banki hitelfelvevők: Vasya, Fedya és Lesha.
Minden esetre, a példa kidolgozása előtt hadd emlékeztesselek arra, hogy az életben több ezer vagy millió objektumból álló képzési mintával van dolgunk, tíz vagy száz jellemzővel. Itt azonban úgy veszik a számokat, hogy könnyen beleférjenek egy kezdő adattudós fejébe.
Térjünk vissza a példához. Képzeljük el, hogy a bank igazgatója úgy döntött, hogy kölcsönt ad ki mindenkinek, akinek szüksége van rá, annak ellenére, hogy az algoritmus azt mondta neki, hogy ne adja ki Leshának. És most már elég idő telt el, és tudjuk, hogy a három hős közül melyik fizette vissza a kölcsönt, és melyik nem. Ami várható volt: Vasya és Fedya visszafizették a kölcsönt, de Lesha nem. Most képzeljük el, hogy ez az eredmény egy új képzési minta lesz számunkra, ugyanakkor mintha a hitel visszafizetési valószínűségét befolyásoló tényezőkről (hitelfelvevő fizetése, a havi törlesztőrészlet nagysága) eltűnt volna minden adat. Ekkor intuitív módon feltételezhetjük, hogy minden harmadik hitelfelvevő nem fizeti vissza a kölcsönt a banknak, vagy más szóval, mekkora a valószínűsége annak, hogy a következő hitelfelvevő visszafizeti a kölcsönt. . Ennek az intuitív feltevésnek elméleti megerősítése van, és ezen alapul maximális valószínűség módszere, a szakirodalomban gyakran úgy hívják maximális valószínűség elve.
Először is ismerkedjünk meg a fogalmi apparátussal.
Mintavételi valószínűség annak a valószínűsége, hogy pontosan ilyen mintát kapunk, pontosan ilyen megfigyeléseket/eredményeket kapunk, azaz. az egyes mintaeredmények megszerzésének valószínűségének szorzata (például, hogy Vasya, Fedya és Lesha hitelét egyidejűleg visszafizették-e vagy sem).
Valószínűségi függvény a minta valószínűségét az eloszlási paraméterek értékéhez viszonyítja.
Esetünkben a képzési minta egy általánosított Bernoulli-séma, amelyben a valószínűségi változó csak két értéket vesz fel: vagy . Ezért a minta valószínűsége a paraméter valószínűségi függvényeként írható fel az alábbiak szerint:
A fenti bejegyzés a következőképpen értelmezhető. Annak az együttes valószínűsége, hogy Vasya és Fedya visszafizeti a kölcsönt, egyenlő , annak a valószínűsége, hogy Lesha NEM fogja visszafizetni a kölcsönt egyenlő (mivel NEM a hiteltörlesztés történt), ezért mindhárom esemény együttes valószínűsége egyenlő .
Maximális valószínűség módszere egy ismeretlen paraméter maximalizálással történő becslésének módszere valószínűségi függvények. Esetünkben meg kell találnunk egy ilyen értéket amelyen eléri a maximumát.
Honnan származik a tényleges ötlet – hogy egy ismeretlen paraméter értékét keressük, amelynél a likelihood függvény eléri a maximumot? Az ötlet eredete abból az elképzelésből ered, hogy a minta az egyetlen rendelkezésünkre álló tudásforrás a populációról. Minden, amit a sokaságról tudunk, megjelenik a mintában. Ezért csak annyit mondhatunk, hogy a minta a rendelkezésünkre álló sokaság legpontosabb tükrözése. Ezért olyan paramétert kell találnunk, amelynél a rendelkezésre álló minta a legvalószínűbb lesz.
Nyilvánvalóan egy optimalizálási problémával van dolgunk, amelyben meg kell találnunk egy függvény szélsőpontját. A szélsőpont megtalálásához figyelembe kell venni az elsőrendű feltételt, azaz a függvény deriváltját nullával egyenlővé kell tenni, és az egyenletet a kívánt paraméterre vonatkozóan megoldani. A nagyszámú tényező szorzatának deriváltjának keresése azonban hosszadalmas feladat lehet, ennek elkerülésére van egy speciális technika - a logaritmusra váltás. valószínűségi függvények. Miért lehetséges egy ilyen átállás? Figyeljünk arra, hogy nem magának a függvénynek a szélsőértékét keressük, és a szélsőpont, vagyis az ismeretlen paraméter értéke amelyen eléri a maximumát. A logaritmusra való áttéréskor a szélsőpont nem változik (bár maga a szélsőség különbözik), mivel a logaritmus egy monoton függvény.
A fentiekkel összhangban folytassuk példánk fejlesztését Vasya, Fedya és Lesha kölcsöneivel. Először is menjünk tovább a likelihood függvény logaritmusa:
Most már könnyen meg tudjuk különböztetni a kifejezést :
És végül vegyük figyelembe az elsőrendű feltételt - a függvény deriváltját nullával egyenlővé tesszük:
Így a hitel visszafizetésének valószínűségére vonatkozó intuitív becslésünk elméletileg indokolt volt.
Remek, de most mit tegyünk ezzel az információval? Ha feltételezzük, hogy minden harmadik hitelfelvevő nem adja vissza a pénzt a banknak, akkor az utóbbi elkerülhetetlenül csődbe megy. Ez így van, de csak akkor, ha a hitel visszafizetésének valószínűségét értékeli Nem vettük figyelembe a hiteltörlesztést befolyásoló tényezőket: a hitelfelvevő fizetését és a havi törlesztőrészlet nagyságát. Emlékezzünk arra, hogy korábban ugyanezen tényezők figyelembevételével számítottuk ki, hogy az egyes ügyfelek mekkora valószínűséggel fizetik vissza a hitelt. Logikus, hogy az állandó egyenlőtől eltérő valószínűségeket kaptunk .
Határozzuk meg a minták valószínűségét:
Kód a minta valószínűségének kiszámításához
from functools import reduce
def likelihood(y,p):
line_true_proba = []
for i in range(len(y)):
ltp_i = p[i]**y[i]*(1-p[i])**(1-y[i])
line_true_proba.append(ltp_i)
likelihood = []
return reduce(lambda a, b: a*b, line_true_proba)
y = [1.0,1.0,0.0]
p_log_response = df['Probability']
const = 2.0/3.0
p_const = [const, const, const]
print 'Правдоподобие выборки при константном значении p=2/3:', round(likelihood(y,p_const),3)
print '****************************************************************************************************'
print 'Правдоподобие выборки при расчетном значении p:', round(likelihood(y,p_log_response),3)
Mintavalószínűség állandó értéken :
Mintavalószínűség a kölcsön visszafizetési valószínűségének tényezők figyelembe vételével történő kiszámításakor :
A tényezők függvényében számított valószínűségű minta valószínűsége nagyobbnak bizonyult, mint az állandó valószínűségi értékű valószínűség. Mit is jelent ez? Ez arra utal, hogy a tényezők ismerete lehetővé tette az egyes ügyfelek hiteltörlesztési valószínűségének pontosabb kiválasztását. Ezért a következő hitel kibocsátásakor helyesebb lenne a cikk 3. pontjának végén javasolt modellt használni az adósság visszafizetési valószínűségének felmérésére.
De akkor, ha maximalizálni akarjuk minta valószínűségi függvény, akkor miért ne használna olyan algoritmust, amely például Vasya, Fedya és Lesha valószínűségét állítja elő, amely 0.99, 0.99 és 0.01. Talán egy ilyen algoritmus jól fog teljesíteni a betanítási mintán, mivel közelebb hozza a minta valószínűségi értékét a , de egyrészt egy ilyen algoritmusnak nagy valószínűséggel nehézségei lesznek az általánosítási képességgel, másrészt ez az algoritmus biztosan nem lesz lineáris. És ha a túledzés (az ugyanilyen gyenge általánosító képesség) elleni küzdelem módszerei egyértelműen nem szerepelnek e cikk tervében, akkor nézzük meg részletesebben a második pontot. Ehhez csak válaszoljon egy egyszerű kérdésre. Vajon az általunk ismert tényezőket figyelembe véve azonos valószínűséggel fizeti vissza a kölcsönt Vasya és Fedya? A hanglogika szempontjából persze nem, nem lehet. Tehát Vasya fizetésének 2.5% -át fizeti havonta a kölcsön visszafizetésére, Fedya pedig csaknem 27,8% -át. A 2. „Ügyfélbesorolás” grafikonon is azt látjuk, hogy Vasya sokkal távolabb van az osztályokat elválasztó vonaltól, mint a Fedya. És végül tudjuk, hogy a függvény a Vasya és a Fedya különböző értékeket vesz fel: 4.24 Vasya és 1.0 Fedya. Ha például Fedya egy nagyságrenddel többet keresne, vagy kisebb kölcsönt kérne, akkor Vasya és Fedya hitelének visszafizetésének valószínűsége hasonló lenne. Más szóval, a lineáris függést nem lehet becsapni. És ha valóban kiszámoltuk az esélyeket , és nem légből kapott, nyugodtan mondhatjuk, hogy értékeink legjobban lehetővé teszi számunkra, hogy megbecsüljük a kölcsön minden egyes hitelfelvevő általi visszafizetésének valószínűségét, de mivel megegyeztünk abban, hogy az együtthatók meghatározása minden szabály szerint történt, akkor feltételezzük, hogy így van - együtthatóink lehetővé teszik, hogy jobban megbecsüljük a valószínűséget :)
Azonban elkanyarodunk. Ebben a részben meg kell értenünk, hogyan határozzák meg a súlyvektort , amely az egyes hitelfelvevők hitelvisszafizetési valószínűségének felméréséhez szükséges.
Foglaljuk össze röviden, milyen arzenált használunk az esélyek keresésére :
1. Feltételezzük, hogy a célváltozó (előrejelzési érték) és az eredményt befolyásoló tényező közötti kapcsolat lineáris. Emiatt használják lineáris regressziós függvény a fajta , melynek sora az objektumokat (klienseket) osztályokra osztja и vagy (az ügyfelek, akik képesek visszafizetni a kölcsönt, és azok, akik nem). Esetünkben az egyenletnek megvan a formája .
2. Mi használjuk inverz logit függvény a fajta osztályhoz tartozó objektum valószínűségének meghatározására .
3. Képzési készletünket egy általánosított megvalósításának tekintjük Bernoulli-sémák, azaz minden objektumhoz egy valószínűségi változó generálódik, amely valószínűséggel (minden objektumnak sajátja) az 1 értéket és valószínűséggel veszi fel - 0.
4. Tudjuk, mit kell maximalizálni minta valószínűségi függvény figyelembe véve az elfogadott tényezőket, hogy a rendelkezésre álló minta legyen a legvalószínűbb. Más szavakkal, ki kell választanunk azokat a paramétereket, amelyek mellett a minta a legvalószínűbb lesz. Esetünkben a kiválasztott paraméter a hitel visszafizetésének valószínűsége , ami viszont ismeretlen együtthatóktól függ . Tehát meg kell találnunk egy ilyen súlyvektort , amelynél a minta valószínűsége maximális lesz.
5. Tudjuk, mit kell maximalizálni minta valószínűségi függvények használhatod maximális valószínűség módszere. És ismerjük az összes trükkös trükköt, amellyel ezzel a módszerrel dolgozhatunk.
Így lesz ez egy többlépcsős lépés :)
Most ne feledjük, hogy a cikk legelején kétféle veszteségfüggvényt szerettünk volna származtatni Logisztikai veszteség attól függően, hogy az objektumosztályokat hogyan jelöljük ki. Történt ugyanis, hogy két osztályos osztályozási feladatokban az osztályokat így jelöljük и vagy . A jelöléstől függően a kimenetnek megfelelő veszteségfüggvénye lesz.
1. eset. Az objektumok osztályozása a и
Korábban egy olyan minta valószínűségének meghatározásakor, amelyben tényezők és adott együtthatók alapján számították ki a hitelfelvevő adósságának visszafizetésének valószínűségét. , a következő képletet alkalmaztuk:
Tulajdonképpen a jelentése logisztikai válaszfunkciók adott súlyvektorra
Ekkor semmi sem akadályoz meg bennünket abban, hogy a mintalikelihood függvényt a következőképpen írjuk fel:
Előfordul, hogy néhány kezdő elemzőnek néha nehéz azonnal megérteni, hogyan működik ez a funkció. Nézzünk meg 4 rövid példát, amelyek mindent tisztáznak:
1. Ha (azaz a betanítási minta szerint az objektum a +1 osztályba tartozik), és az algoritmusunk meghatározza egy objektum osztályba sorolásának valószínűségét 0.9, akkor ez a minta valószínűsége a következőképpen kerül kiszámításra:
2. Ha És , akkor a számítás a következő lesz:
3. Ha És , akkor a számítás a következő lesz:
4. Ha És , akkor a számítás a következő lesz:
Nyilvánvaló, hogy a likelihood függvény maximalizálásra kerül az 1. és 3. esetben, vagy általános esetben - egy objektum osztályhoz való hozzárendelésének valószínűségének helyesen kitalált értékeivel .
Annak a ténynek köszönhetően, hogy egy objektum osztályhoz való hozzárendelésének valószínűségének meghatározásakor Csak az együtthatókat nem ismerjük , akkor megkeressük őket. Mint fentebb említettük, ez egy optimalizálási probléma, amelyben először meg kell találnunk a valószínűségi függvény deriváltját a súlyok vektorához képest. . Előbb azonban érdemes leegyszerűsíteni magunknak a feladatot: megkeressük a logaritmus deriváltját. valószínűségi függvények.
Miért logaritmus után, in logisztikai hibafunkciók, a jelet megváltoztattuk on . Minden egyszerű, mivel a modell minőségének felmérésével kapcsolatos problémákban szokás egy függvény értékét minimalizálni, a kifejezés jobb oldalát megszoroztuk és ennek megfelelően a maximalizálás helyett most minimalizáljuk a függvényt.
Valójában most, a szemed láttára, a veszteségfüggvényt gondosan levezették - Logisztikai veszteség két osztályt tartalmazó edzéskészlethez: и .
Most, hogy megtaláljuk az együtthatókat, csak meg kell találnunk a deriváltot logisztikai hibafunkciók majd numerikus optimalizálási módszerekkel, például gradiens süllyedés vagy sztochasztikus gradiens süllyedés, válassza ki a legoptimálisabb együtthatókat . De tekintettel a cikk jelentős terjedelmére, javasoljuk, hogy a differenciálást önállóan végezze el, vagy talán ez lesz a következő cikk témája, sok aritmetikával ilyen részletes példák nélkül.
2. eset. Az objektumok osztályozása a и
A megközelítés itt ugyanaz lesz, mint az osztályoknál и , hanem maga a veszteségfüggvény kimenetéhez vezető út Logisztikai veszteség, díszesebb lesz. Kezdjük el. A valószínűség függvényhez az operátort fogjuk használni "ha akkor..."... Vagyis ha A th objektum az osztályhoz tartozik , akkor a minta valószínűségének kiszámításához a valószínűséget használjuk , ha az objektum az osztályhoz tartozik , akkor behelyettesítjük a valószínűségbe . Így néz ki a valószínűségi függvény:
Ujjunkkal írjuk le, hogyan működik. Nézzünk meg 4 esetet:
1. Ha и , akkor a mintavételi valószínűség „menni fog”
2. Ha и , akkor a mintavételi valószínűség „menni fog”
3. Ha и , akkor a mintavételi valószínűség „menni fog”
4. Ha и , akkor a mintavételi valószínűség „menni fog”
Nyilvánvaló, hogy az 1. és 3. esetben, amikor az algoritmus helyesen határozta meg a valószínűségeket, valószínűségi függvény maximalizálva lesz, vagyis pontosan ezt szerettük volna elérni. Ez a megközelítés azonban meglehetősen körülményes, és a következőkben egy kompaktabb jelölést fogunk megvizsgálni. De először logaritáljuk a likelihood függvényt előjelváltással, mivel most minimalizáljuk.
Cseréljük ki helyette kifejezés :
Egyszerűsítsük le a megfelelő kifejezést a logaritmus alatt egyszerű számtani technikákkal, és kapjuk meg:
Most itt az ideje, hogy megszabaduljon az operátortól "ha akkor...". Vegye figyelembe, hogy amikor egy objektum osztályhoz tartozik , majd a logaritmus alatti kifejezésben, a nevezőben, hatalomra emelték , ha az objektum az osztályhoz tartozik , akkor $e$-t a hatványra emeljük . Ezért a fokozat jelölése egyszerűsíthető, ha mindkét esetet egybe kombináljuk: . majd logisztikai hiba funkció a következő formában lesz:
A logaritmus szabályai szerint megfordítjuk a törtet és kiadjuk a jelet "" (mínusz) a logaritmushoz a következőket kapjuk:
Itt van a veszteségfüggvény logisztikai veszteség, amelyet a tanítókészletben használnak az osztályokhoz rendelt objektumokkal: и .
Nos, ezen a ponton szabadságomat veszem, és befejezzük a cikket.
Segédanyagok
1. Irodalom
1) Alkalmazott regressziós elemzés / N. Draper, G. Smith - 2. kiadás. – M.: Pénzügy és Statisztika, 1986 (fordítás angolból)
2) Valószínűségszámítás és matematikai statisztika / V.E. Gmurman – 9. kiadás. - M.: Felsőiskola, 2003
3) Valószínűségszámítás / N.I. Csernova - Novoszibirszk: Novoszibirszki Állami Egyetem, 2007
4) Üzleti elemzés: az adatoktól a tudásig / Paklin N. B., Oreshkov V. I. - 2nd ed. — Szentpétervár: Péter, 2013
5) Adattudomány Adattudomány a semmiből / Joel Gras - St. Petersburg: BHV Petersburg, 2017
6) Gyakorlati statisztika adattudományi szakembereknek / P. Bruce, E. Bruce - St. Petersburg: BHV Petersburg, 2018
2. Előadások, tanfolyamok (videó)
1)
2)
3)
4)
5)
3. Internetes források
1)
2)
4)
6)
7)
8)
Forrás: will.com