Í þessari grein munum við greina fræðilega útreikninga á umbreytingunni línuleg aðhvarfsföll в andhverfa logit umbreytingaraðgerð (annars kölluð logistic response function). Notaðu síðan vopnabúrið hámarkslíkindaaðferð, í samræmi við logistic aðhvarfslíkanið, fáum við tapfallið Logistic tap, eða með öðrum orðum, við munum skilgreina fall sem færibreytur þyngdarvigursins eru valdar með í logistic aðhvarfslíkaninu .
Yfirlit greinar:
- Við skulum endurtaka línulegt samband milli tveggja breyta
- Við skulum greina þörfina fyrir umbreytingu línuleg aðhvarfsföll в logistic svaraðgerð
- Við skulum framkvæma umbreytingar og framleiðsla logistic svaraðgerð
- Við skulum reyna að skilja hvers vegna minnstu ferningsaðferðin er slæm þegar færibreytur eru valin aðgerðir Logistic tap
- Við notum hámarkslíkindaaðferð til að ákvarða færibreytuvalsaðgerðir :
5.1. Tilfelli 1: fall Logistic tap fyrir hluti með flokkaheiti 0 и 1:
5.2. Tilfelli 2: fall Logistic tap fyrir hluti með flokkaheiti -1 и +1:
Greinin er stútfull af einföldum dæmum þar sem auðvelt er að gera alla útreikninga munnlega eða á pappír, í sumum tilfellum gæti þurft reiknivél. Svo vertu tilbúin :)
Þessi grein er fyrst og fremst ætluð gagnafræðingum með grunnþekkingu á grunnatriðum vélanáms.
Greinin mun einnig veita kóða til að teikna línurit og útreikninga. Allur kóði er skrifaður á tungumálinu Python 2.7. Leyfðu mér að útskýra fyrirfram um „nýjung“ útgáfunnar sem notuð er - þetta er eitt af skilyrðunum fyrir því að taka hið þekkta námskeið frá Yandex á jafnþekktum fræðsluvettvangi á netinu Coursera, og eins og ætla mætti var efnið útbúið út frá þessu námskeiði.
01. Beinlínuháð
Það er alveg eðlilegt að spyrja spurningarinnar - hvað hefur línuleg fíkn og skipulagslegt aðhvarf með það að gera?
Það er einfalt! Logistic regression er eitt af líkönunum sem tilheyra línulega flokkaranum. Í einföldum orðum er verkefni línulegrar flokkunar að spá fyrir um markgildi úr breytum (regressors) . Það er talið að ósjálfstæði á milli eiginleika og markgildi línuleg. Þess vegna nafn flokkarans - línulegt. Í mjög grófum dráttum byggir logistic aðhvarfslíkanið á þeirri forsendu að það sé línulegt samband á milli einkennanna og markgildi . Þetta er tengingin.
Það er fyrsta dæmið í vinnustofunni og það snýst, réttilega, um réttlínu háð magnanna sem verið er að rannsaka. Í því ferli að undirbúa greinina rakst ég á dæmi sem hefur þegar sett marga á brún - háð straumi á spennu ("Beitt aðhvarfsgreining", N. Draper, G. Smith). Við skoðum það líka hér.
Samkvæmt Lögmál Ohms:
hvar - núverandi styrkur, - Spenna, - viðnám.
Ef við vissum það ekki Lögmál Ohms, þá gætum við fundið ósjálfstæði reynslunnar með því að breyta og mæla , á meðan að styðja fastur. Þá myndum við sjá að ósjálfstæðisgrafið frá gefur meira og minna beina línu í gegnum upprunann. Við segjum „meira eða minna“ vegna þess að þótt sambandið sé í raun nákvæmt geta mælingar okkar innihaldið litlar villur og þess vegna falla punktarnir á línuritinu ekki nákvæmlega á línuna heldur dreifast um hana af handahófi.
Mynd 1 „Hjáð“ frá »
Kóði fyrir grafteikningu
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. Þörfin á að umbreyta línulegu aðhvarfsjöfnunni
Við skulum líta á annað dæmi. Við skulum ímynda okkur að við vinnum í banka og verkefni okkar sé að ákvarða líkurnar á því að lántaki endurgreiði lánið eftir ákveðnum þáttum. Til að einfalda verkefnið munum við aðeins líta á tvo þætti: mánaðarlaun lántakans og mánaðarlega endurgreiðsluupphæð lánsins.
Verkefnið er mjög skilyrt, en með þessu dæmi getum við skilið hvers vegna það er ekki nóg að nota línuleg aðhvarfsföll, og komdu einnig að því hvaða umbreytingar þarf að framkvæma með fallinu.
Snúum okkur aftur að dæminu. Það er litið svo á að eftir því sem launin eru hærri, því meira mun lántaki geta ráðstafað mánaðarlega til að greiða niður lánið. Á sama tíma, fyrir ákveðið launabil, verður þetta samband nokkuð línulegt. Til dæmis, tökum launabilið frá 60.000 RUR til 200.000 RUR og gerum ráð fyrir að á tilgreindu launabili sé háð stærð mánaðarlegrar greiðslu á stærð launanna línuleg. Segjum að fyrir tilgreint launabil hafi komið í ljós að launahlutfall getur ekki farið niður fyrir 3 og lántakandi verður enn að hafa 5.000 RUR í varasjóði. Og aðeins í þessu tilfelli, munum við gera ráð fyrir að lántakandi muni endurgreiða lánið til bankans. Þá mun línulega aðhvarfsjöfnan hafa form:
þar sem , , , - laun -th lántakandi, - greiðslu láns -það lántakandi.
Að skipta út launum og lánsgreiðslu með föstum breytum inn í jöfnuna Þú getur ákveðið hvort þú gefur út eða hafnar láni.
Þegar horft er fram á veginn tökum við eftir því, með tilteknum breytum línulegt aðhvarfsfall, notað í flutningsaðgerðir mun framleiða stór gildi sem munu torvelda útreikninga til að ákvarða líkurnar á endurgreiðslu lána. Þess vegna er lagt til að lækka stuðlana okkar, við skulum segja, um 25.000 sinnum. Þessi umbreyting á stuðlunum mun ekki breyta ákvörðun um lánveitingu. Við skulum muna þetta atriði fyrir framtíðina, en nú, til að gera það enn skýrara hvað við erum að tala um, skulum við íhuga stöðuna með þrjá hugsanlega lántakendur.
Tafla 1 „Mögulegir lántakendur“
Kóði til að búa til töfluna
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']]
Í samræmi við gögnin í töflunni vill Vasya, með laun upp á 120.000 RUR, fá lán svo hann geti endurgreitt það mánaðarlega á 3.000 RUR. Við komumst að þeirri niðurstöðu að til að samþykkja lánið verða laun Vasya að fara yfir þreföld upphæð greiðslunnar og það verða enn að vera 5.000 RUR eftir. Vasya uppfyllir þessa kröfu: . Jafnvel 106.000 RUR eru eftir. Þrátt fyrir að við útreikning við höfum minnkað líkurnar 25.000 sinnum var niðurstaðan sú sama - hægt er að samþykkja lánið. Fedya fær líka lán en Lesha, þrátt fyrir að hann fái mest, þarf að hemja matarlystina.
Við skulum teikna línurit fyrir þetta tilvik.
Mynd 2 „Flokkun lántakenda“
Kóði til að teikna línuritið
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()
Svo, bein lína okkar, smíðuð í samræmi við aðgerðina , skilur „slæma“ lántakendur frá „góðum“. Þeir lántakendur sem vilja ekki fara saman við getu þeirra eru fyrir ofan línuna (Lesha), en þeir sem, samkvæmt breytum líkansins okkar, geta endurgreitt lánið eru fyrir neðan línuna (Vasya og Fedya). Með öðrum orðum getum við sagt þetta: beina línan okkar skiptir lántakendum í tvo flokka. Við skulum tákna þá sem hér segir: til bekkjar Við flokkum þá lántakendur sem eru líklegastir til að greiða niður lánið sem eða Við tökum þá lántakendur með sem líklegast geta ekki greitt lánið upp.
Við skulum draga saman ályktanir af þessu einfalda dæmi. Við skulum taka punkt og setja hnit punktsins í samsvarandi jöfnu línunnar , íhugaðu þrjá valkosti:
- Ef punkturinn er undir línunni og við úthlutum honum í bekkinn , síðan gildi fallsins verður jákvætt frá í . Þetta þýðir að við getum gert ráð fyrir að líkurnar á endurgreiðslu lánsins séu innan . Því hærra sem fallgildið er, því meiri líkur.
- Ef punktur er fyrir ofan línu og við úthlutum honum í bekkinn eða , þá verður gildi fallsins neikvætt frá í . Þá munum við gera ráð fyrir að líkur á endurgreiðslu skulda séu innan og því hærra sem algildi fallsins er, því meira sjálfstraust okkar.
- Punkturinn er á beinni línu, á mörkum tveggja flokka. Í þessu tilviki, gildi fallsins verða jafnir og líkurnar á að endurgreiða lánið eru jafnar .
Nú skulum við ímynda okkur að við höfum ekki tvo þætti, heldur tugi og ekki þrjá, heldur þúsundir lántakenda. Þá í staðinn fyrir beina línu munum við hafa m-vídd plani og stuðlum við verðum ekki tekin úr lausu lofti, heldur afleidd eftir öllum reglum, og á grundvelli uppsafnaðra gagna um lántakendur sem hafa eða hafa ekki greitt upp lánið. Og reyndar, athugaðu að við erum nú að velja lántakendur með því að nota þegar þekkta stuðla . Í raun er verkefni logistic regression líkansins einmitt að ákvarða færibreyturnar , þar sem gildi tapsins virkar Logistic tap mun stefna að lágmarki. En um hvernig vigur er reiknaður , við munum finna út meira í 5. hluta greinarinnar. Í millitíðinni snúum við aftur til fyrirheitna landsins - til bankastjóra okkar og þriggja viðskiptavina hans.
Þökk sé aðgerðinni við vitum hverjum er hægt að veita lán og hverjum þarf að synja. En þú getur ekki leitað til forstjórans með slíkar upplýsingar, vegna þess að þeir vildu fá frá okkur líkurnar á endurgreiðslu lánsins af hverjum lántakanda. Hvað skal gera? Svarið er einfalt - við þurfum einhvern veginn að umbreyta aðgerðinni , þar sem gildin liggja á bilinu til falls þar sem gildin munu liggja á bilinu . Og slíkt fall er til, það er kallað logistic response function eða inverse-logit transformation. Hittu:
Við skulum sjá skref fyrir skref hvernig það virkar logistic svaraðgerð. Athugið að við munum ganga í gagnstæða átt, þ.e. við munum gera ráð fyrir að við vitum líkindagildið, sem liggur á bilinu frá í og þá munum við „vinda ofan af“ þessu gildi yfir allt talnasviðið frá í .
03. Við fáum logistic svarfall
Skref 1. Umbreyttu líkindagildunum í svið
Við umbreytingu á fallinu в logistic svaraðgerð Við látum lánasérfræðinginn okkar í friði og förum í skoðunarferð um veðbankana í staðinn. Nei, auðvitað munum við ekki leggja veðmál, það eina sem vekur áhuga okkar þar er merking orðtaksins, til dæmis, líkurnar eru 4 á móti 1. Líkurnar, sem allir veðjamenn þekkja, eru hlutfallið „árangur“ og „ bilanir“. Í líkindaskilmálum eru líkurnar líkurnar á að atburður eigi sér stað deilt með líkunum á að atburðurinn eigi sér stað. Skrifum niður formúluna fyrir líkurnar á að atburður eigi sér stað :
hvar - líkur á að atburður eigi sér stað, — líkur á að atburður eigi sér ekki stað
Til dæmis, ef líkurnar á því að ungur, sterkur og fjörugur hestur með viðurnefnið „Veterok“ vinni gamla og slappa gamla konu að nafni „Matilda“ í keppni eru jafnar og , þá verða líkurnar á árangri fyrir "Veterok" к og öfugt, vitandi líkurnar, verður ekki erfitt fyrir okkur að reikna út líkurnar :
Þannig höfum við lært að „þýða“ líkindi í líkur, sem taka gildi frá í . Tökum eitt skref í viðbót og lærum að „þýða“ líkurnar yfir á alla talnalínuna frá í .
Skref 2. Umbreyttu líkindagildunum í svið
Þetta skref er mjög einfalt - við skulum taka lógaritma líkurnar á grunntölu Euler og við fáum:
Nú vitum við að ef , reiknaðu síðan gildið verður mjög einfalt og þar að auki ætti það að vera jákvætt: . Þetta er satt.
Af forvitni skulum við athuga hvað ef , þá gerum við ráð fyrir að sjá neikvætt gildi . Við athugum: . Það er rétt.
Nú vitum við hvernig á að breyta líkindagildinu úr í meðfram allri talnalínunni frá í . Í næsta skrefi gerum við hið gagnstæða.
Í bili, athugaðu að í samræmi við reglur logaritma, að vita gildi fallsins , þú getur reiknað út líkurnar:
Þessi aðferð til að ákvarða líkur mun nýtast okkur í næsta skrefi.
Skref 3. Við skulum leiða til formúlu til að ákvarða
Svo lærðum við, vitandi , finndu fallgildi . Hins vegar, í raun, við þurfum nákvæmlega hið gagnstæða - að vita gildi finna . Til að gera þetta skulum við snúa okkur að slíku hugtaki eins og andhverfu líkurnarfalli, samkvæmt því:
Í greininni munum við ekki leiða ofangreinda formúlu, en við munum athuga hana með því að nota tölurnar úr dæminu hér að ofan. Við vitum að með líkurnar 4 á móti 1 (), líkurnar á að atburðurinn eigi sér stað eru 0.8 (). Við skulum skipta út: . Þetta er í samræmi við útreikninga okkar sem gerðir voru áðan. Höldum áfram.
Í síðasta skrefinu komumst við að þeirri niðurstöðu , sem þýðir að þú getur skipt út í andhverfu stuðlafallinu. Við fáum:
Deilið bæði teljara og nefnara með , Þá:
Til að tryggja að við höfum ekki gert mistök neins staðar, gerum við eina litla athugun í viðbót. Í skrefi 2, við fyrir ákveðið það . Síðan skaltu skipta út gildinu inn í skipulagsviðbragðsaðgerðina, gerum við ráð fyrir að fá . Við skiptum út og fáum:
Til hamingju, kæri lesandi, við höfum nýlega útvegað og prófað logistic svaraðgerðina. Við skulum skoða línurit fallsins.
Mynd 3 „Logistic response function“
Kóði til að teikna línuritið
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()
Í bókmenntum er einnig að finna nafn þessarar aðgerðar sem sigmoid virkni. Línuritið sýnir greinilega að meginbreytingin á líkum á því að hlutur sem tilheyrir flokki á sér stað innan tiltölulega lítið bils , einhvers staðar frá í .
Ég legg til að þú snúir aftur til lánasérfræðingsins okkar og hjálpum honum að reikna út líkurnar á endurgreiðslu lána, annars á hann á hættu að verða bónuslaus :)
Tafla 2 „Mögulegir lántakendur“
Kóði til að búa til töfluna
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']]
Þannig að við höfum ákvarðað líkurnar á endurgreiðslu lána. Almennt séð virðist þetta vera rétt.
Reyndar eru líkurnar á því að Vasya, með laun upp á 120.000 RUR, fær um að gefa 3.000 RUR til bankans í hverjum mánuði nálægt 100%. Við verðum að skilja að banki getur gefið út lán til Lesha ef stefna bankans gerir til dæmis ráð fyrir að lána til viðskiptavina með líkur á endurgreiðslu lána sem eru hærri en til dæmis 0.3. Það er bara að í þessu tilviki mun bankinn búa til stærri varasjóð fyrir hugsanlegt tap.
Einnig skal tekið fram að launahlutfall að lágmarki 3 og 5.000 RUR framlegð var tekið af þakinu. Þess vegna gátum við ekki notað vektor lóða í upprunalegri mynd . Við þurftum að lækka mjög stuðlana og í þessu tilfelli skiptum við hverjum stuðli með 25.000, það er í rauninni að leiðrétta niðurstöðuna. En þetta var gert sérstaklega til að einfalda skilning á efninu á upphafsstigi. Í lífinu þurfum við ekki að finna upp og stilla stuðlana, heldur finna þá. Í næstu köflum greinarinnar munum við draga út jöfnurnar sem færibreyturnar eru valdar með .
04. Minnstu ferningsaðferð til að ákvarða vigur lóða í logistic response
Við þekkjum nú þegar þessa aðferð til að velja vektor af lóðum Eins og minnstu ferningsaðferðin (LSM) og í raun, hvers vegna notum við það þá ekki í tvíundarflokkunarvandamálum? Reyndar, ekkert kemur í veg fyrir að þú notir MNC, aðeins þessi aðferð í flokkunarvandamálum gefur niðurstöður sem eru minna nákvæmar en Logistic tap. Það er fræðilegur grunnur fyrir þessu. Skoðum fyrst eitt einfalt dæmi.
Gerum ráð fyrir að líkön okkar (með því að nota MSE и Logistic tap) hafa þegar byrjað að velja vektor lóða og við stöðvuðum útreikninginn á einhverju skrefi. Það skiptir ekki máli hvort í miðjunni, í lokin eða í upphafi, aðalatriðið er að við höfum nú þegar nokkur gildi á vigur lóða og við skulum gera ráð fyrir að í þessu skrefi, vigur lóða fyrir báðar gerðirnar er enginn munur. Taktu síðan lóðin sem myndast og settu þau í logistic svaraðgerð () fyrir einhvern hlut sem tilheyrir flokknum . Við skoðum tvö tilvik þar sem líkanið okkar er mjög rangt í samræmi við valinn vektor þyngdar og öfugt - líkanið er mjög öruggt um að hluturinn tilheyri flokknum . Við skulum sjá hvaða sektir verða gefnar út við notkun MNC и Logistic tap.
Kóði til að reikna út refsingar eftir tapfallinu sem notað er
# класс объекта
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
Tilfelli um mistök — líkanið úthlutar hlut í flokk með líkum upp á 0,01
Refsing við notkun MNC mun vera:
Refsing við notkun Logistic tap mun vera:
Mál um sterkt traust — líkanið úthlutar hlut í flokk með líkum upp á 0,99
Refsing við notkun MNC mun vera:
Refsing við notkun Logistic tap mun vera:
Þetta dæmi sýnir vel að ef um stórfellda villu er að ræða er tapfallið Log Tap refsar líkaninu verulega meira en MSE. Við skulum nú skilja hver fræðilegur bakgrunnur er að nota tapfallið Log Tap í flokkunarvandamálum.
05. Hámarkslíkur aðferð og logistic regression
Eins og lofað var í upphafi er greinin stútfull af einföldum dæmum. Í vinnustofunni er annað dæmi og gamlir gestir - lántakendur banka: Vasya, Fedya og Lesha.
Fyrir tilviki, áður en þú þróar dæmið, vil ég minna þig á að í lífinu erum við að fást við þjálfunarsýni af þúsundum eða milljónum hluta með tugum eða hundruðum eiginleika. Hins vegar eru tölurnar teknar þannig að þær geti auðveldlega passað inn í höfuðið á nýliði gagnafræðings.
Snúum okkur aftur að dæminu. Við skulum ímynda okkur að bankastjórinn hafi ákveðið að gefa út lán til allra sem þurfa, þrátt fyrir að reikniritið hafi sagt honum að gefa það ekki út til Lesha. Og nú er nægur tími liðinn og við vitum hver af hetjunum þremur endurgreiddi lánið og hver ekki. Við hverju var að búast: Vasya og Fedya greiddu lánið til baka, en Lesha ekki. Nú skulum við ímynda okkur að þessi niðurstaða verði nýtt þjálfunarúrtak fyrir okkur og á sama tíma er eins og öll gögn um þá þætti sem hafa áhrif á líkur á endurgreiðslu lánsins (laun lántaka, mánaðarleg greiðslustærð) séu horfin. Þá getum við gert ráð fyrir að þriðji hver lántaki greiði ekki lánið til banka, eða með öðrum orðum, líkurnar á því að næsti lántaki endurgreiði lánið. . Þessi leiðandi forsenda hefur fræðilega staðfestingu og byggir á hámarkslíkindaaðferð, oft í bókmenntum er það kallað meginreglu um hámarkslíkur.
Fyrst skulum við kynnast hugmyndabúnaðinum.
Sýnatökulíkur eru líkurnar á því að fá nákvæmlega slíkt úrtak, fá nákvæmlega slíkar athuganir/niðurstöður, þ.e. afrakstur líkinda þess að fá hverja úrtaksniðurstöðu (til dæmis hvort lán Vasya, Fedya og Lesha var endurgreitt eða ekki endurgreitt á sama tíma).
Líkindavirkni tengir líkur á úrtaki við gildi dreifingarfæribreytanna.
Í okkar tilviki er þjálfunarúrtakið almennt Bernoulli kerfi, þar sem slembibreytan tekur aðeins tvö gildi: eða . Þess vegna er hægt að skrifa úrtakslíkurnar sem líkindafall færibreytunnar sem hér segir:
Hægt er að túlka ofangreinda færslu sem hér segir. Sameiginlegar líkur á því að Vasya og Fedya endurgreiði lánið eru jafnar , líkurnar á að Lesha muni EKKI endurgreiða lánið eru jafnar (þar sem það var EKKI endurgreiðsla lánsins sem átti sér stað) því eru sameiginlegar líkur á öllum þremur atburðunum jafnar .
Hámarkslíkur aðferð er aðferð til að áætla óþekkta færibreytu með því að hámarka líkindaaðgerðir. Í okkar tilviki þurfum við að finna slíkt gildi þar sem nær hámarki.
Hvaðan kemur hin raunverulega hugmynd - að leita að gildi óþekktrar breytu þar sem líkindafallið nær hámarki? Uppruni hugmyndarinnar stafar af þeirri hugmynd að úrtak sé eina uppspretta þekkingar sem okkur er tiltæk um þýðið. Allt sem við vitum um þýðið kemur fram í úrtakinu. Þess vegna getum við ekki sagt annað en að úrtak sé nákvæmasta spegilmynd þýðisins sem okkur er tiltæk. Þess vegna þurfum við að finna færibreytu þar sem tiltækt úrtak verður líklegast.
Augljóslega erum við að fást við hagræðingarvandamál þar sem við þurfum að finna öfgapunkt falls. Til að finna öfgapunktinn er nauðsynlegt að huga að fyrstu-gráðu skilyrðinu, það er að jafna afleiðu fallsins við núll og leysa jöfnuna með tilliti til viðkomandi færibreytu. Hins vegar getur leit að afleiðu afurðar margra þátta verið langt verkefni; til að forðast þetta er sérstök tækni - að skipta yfir í logaritma líkindaaðgerðir. Hvers vegna er slík umskipti möguleg? Við skulum gefa gaum að því að við erum ekki að leita að ysta hluta aðgerðarinnar sjálfrar, og öfgapunkturinn, það er gildi óþekktu færibreytunnar þar sem nær hámarki. Þegar farið er yfir í lógaritma breytist öfgapunkturinn ekki (þó öfgapunkturinn sjálfur sé frábrugðinn), þar sem lógaritminn er eintóna fall.
Við skulum, í samræmi við ofangreint, halda áfram að þróa fordæmi okkar með lánum frá Vasya, Fedya og Lesha. Fyrst skulum við halda áfram að logaritmi líkindafallsins:
Nú getum við auðveldlega greint tjáninguna með :
Og að lokum skaltu íhuga fyrsta stigs skilyrðið - við jöfnum afleiðu fallsins að jöfnu við núll:
Þannig er leiðandi mat okkar á líkum á endurgreiðslu lána var fræðilega réttlætanlegt.
Frábært, en hvað eigum við að gera við þessar upplýsingar núna? Ef við gerum ráð fyrir að þriðji hver lántaki skili ekki peningunum til bankans, þá verður sá síðarnefndi óhjákvæmilega gjaldþrota. Það er rétt, en aðeins þegar metnar eru líkur á endurgreiðslu lána jafnt Við tókum ekki tillit til þeirra þátta sem hafa áhrif á endurgreiðslu lána: laun lántaka og stærð mánaðarlegrar greiðslu. Við skulum muna að við reiknuðum áður út líkurnar á endurgreiðslu lánsins af hverjum viðskiptavin, að teknu tilliti til þessara sömu þátta. Það er rökrétt að við fengum ólíkar líkur en stöðugan jafn .
Við skulum skilgreina líkurnar á sýnum:
Kóði til að reikna út úrtakslíkur
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)
Sýnislíkur á föstu gildi :
Úrtakslíkur við útreikninga á líkum á endurgreiðslu lána að teknu tilliti til þátta :
Líkur á úrtaki með reiknaðar líkum eftir þáttum reyndust meiri en líkur með stöðugu líkindagildi. Hvað þýðir þetta? Þetta bendir til þess að þekking á þáttunum hafi gert það mögulegt að velja nákvæmari líkur á endurgreiðslu lána fyrir hvern viðskiptavin. Því væri réttast við útgáfu næsta láns að nota líkanið sem lagt er til í lok 3. kafla greinarinnar við mat á líkum á endurgreiðslu skulda.
En þá, ef við viljum hámarka sýnishornslíkindafall, af hverju ekki að nota einhvern reiknirit sem mun framleiða líkur fyrir Vasya, Fedya og Lesha, til dæmis, jafnt og 0.99, 0.99 og 0.01, í sömu röð. Kannski mun slíkt reiknirit standa sig vel á þjálfunarúrtakinu, þar sem það mun færa líkindagildi úrtaksins nær , en í fyrsta lagi mun slíkt reiknirit líklega eiga í erfiðleikum með algrímagetu og í öðru lagi mun þetta reiknirit örugglega ekki vera línulegt. Og ef aðferðir til að berjast gegn ofþjálfun (jafnvel veik alhæfingarhæfni) eru greinilega ekki innifalin í áætlun þessarar greinar, þá skulum við fara í gegnum seinni liðinn nánar. Til að gera þetta skaltu bara svara einfaldri spurningu. Geta líkurnar á því að Vasya og Fedya endurgreiði lánið verið þær sömu, að teknu tilliti til þeirra þátta sem við vitum? Frá sjónarhóli heilbrigðrar rökfræði, auðvitað ekki, getur það ekki. Svo Vasya mun greiða 2.5% af launum sínum á mánuði til að endurgreiða lánið, og Fedya - næstum 27,8%. Einnig á línuriti 2 „Flokkun viðskiptavina“ sjáum við að Vasya er miklu lengra frá línunni sem aðskilur flokkana en Fedya. Og að lokum vitum við að aðgerðin fyrir Vasya og Fedya tekur mismunandi gildi: 4.24 fyrir Vasya og 1.0 fyrir Fedya. Nú, ef Fedya, til dæmis, þénaði stærðargráðu meira eða bað um minna lán, þá væru líkurnar á að endurgreiða lánið fyrir Vasya og Fedya svipaðar. Með öðrum orðum, línulega ósjálfstæði er ekki hægt að blekkja. Og ef við reiknuðum líkurnar , og tók þá ekki úr lausu lofti gripið, gætum við örugglega sagt að gildi okkar gerir okkur best kleift að áætla líkurnar á endurgreiðslu lánsins af hverjum lántaka, en þar sem við samþykktum að gera ráð fyrir að ákvörðun stuðlanna var framkvæmt samkvæmt öllum reglum, þá gerum við ráð fyrir því - stuðlar okkar gera okkur kleift að gefa betri mat á líkunum :)
Hins vegar víkjum við. Í þessum kafla þurfum við að skilja hvernig vigur lóða er ákvarðaður , sem er nauðsynlegt til að meta líkur á endurgreiðslu láns hjá hverjum lántakanda.
Við skulum draga saman í stuttu máli hvaða vopnabúr við leitum að líkur :
1. Við gerum ráð fyrir að sambandið milli markbreytunnar (spágildi) og þáttarins sem hefur áhrif á niðurstöðuna sé línulegt. Af þessum sökum er það notað línulegt aðhvarfsfall tegundir , línan sem skiptir hlutum (viðskiptavinum) í flokka и eða (viðskiptavinir sem geta greitt upp lánið og þeir sem ekki). Í okkar tilviki hefur jöfnan form .
2. Við notum andhverfa logit virka tegundir til að ákvarða líkurnar á því að hlutur tilheyri flokki .
3. Við lítum á þjálfunarsett okkar sem útfærslu á almennu Bernoulli áætlanir, það er að segja fyrir hvern hlut myndast slembibreyta, sem með líkindum (sitt eigið fyrir hvern hlut) tekur gildið 1 og með líkum - 0.
4. Við vitum hvað við þurfum að hámarka sýnishornslíkindafall að teknu tilliti til viðurkenndra þátta þannig að fyrirliggjandi úrtak verði sem trúverðugast. Með öðrum orðum, við þurfum að velja færibreytur þar sem úrtakið verður líklegast. Í okkar tilviki eru valin færibreyta líkurnar á endurgreiðslu láns , sem aftur er háð óþekktum stuðlum . Svo við þurfum að finna slíkan vektor af lóðum , þar sem líkurnar á að úrtakið verði hámarkar.
5. Við vitum hvað við eigum að hámarka sýnishorn af líkindaaðgerðum getur notað hámarkslíkindaaðferð. Og við þekkjum öll erfiðu brellurnar til að vinna með þessari aðferð.
Svona reynist þetta vera margra þrepa skref :)
Mundu nú að strax í upphafi greinarinnar vildum við draga fram tvenns konar tapaðgerðir Logistic tap eftir því hvernig hlutflokkar eru tilnefndir. Það gerðist svo að í flokkunarvandamálum með tveimur flokkum eru flokkarnir táknaðir sem и eða . Það fer eftir merkingunni, úttakið mun hafa samsvarandi tapfall.
Mál 1. Flokkun hluta í и
Áður fyrr, við ákvörðun á líkum á úrtaki, þar sem líkur á endurgreiðslu skulda af hálfu lántaka voru reiknaðar út frá þáttum og gefnum stuðlum , við notuðum formúluna:
Raunverulega er merkingin flutningsaðgerðir fyrir tiltekinn vektor þyngdar
Þá kemur ekkert í veg fyrir að við skrifum sýnidæmisfallið sem hér segir:
Það kemur fyrir að stundum er erfitt fyrir suma nýliða að skilja strax hvernig þessi aðgerð virkar. Við skulum skoða 4 stutt dæmi sem skýra hlutina:
1. Ef (þ.e. samkvæmt þjálfunarsýninu tilheyrir hluturinn flokki +1), og reiknirit okkar ákvarðar líkurnar á því að flokka hlut í flokk jafnt og 0.9, þá verður þetta úrtakslíkur reiknað sem hér segir:
2. Ef Og , þá verður útreikningurinn svona:
3. Ef Og , þá verður útreikningurinn svona:
4. Ef Og , þá verður útreikningurinn svona:
Það er augljóst að líkindafallið verður hámarkað í tilfellum 1 og 3 eða í almennu tilviki - með rétt giskuðum gildum á líkum á að tengja hlut í flokk .
Vegna þess að þegar ákvarðað er líkurnar á að úthluta hlut í flokk Við þekkjum bara ekki stuðlana , þá munum við leita þeirra. Eins og getið er hér að ofan er þetta hagræðingarvandamál þar sem fyrst þurfum við að finna afleiðu líkindafallsins með tilliti til vigurs lóða . Hins vegar er skynsamlegt fyrst að einfalda verkefnið fyrir okkur sjálf: við munum leita að afleiðu lógaritmans líkindaaðgerðir.
Hvers vegna eftir logaritma, í skipulagningarvilluaðgerðir, við breyttum skiltinu frá á . Allt er einfalt, þar sem í vandamálum við að meta gæði líkans er venjan að lágmarka gildi falls, margfölduðum við hægri hlið tjáningarinnar með og í samræmi við það, í stað þess að hámarka, lágmarkum við nú virknina.
Reyndar, núna, fyrir augum þínum, var tapsaðgerðin vandlega unnin - Logistic tap fyrir æfingasett með tveimur flokkum: и .
Nú, til að finna stuðlana, þurfum við bara að finna afleiðuna skipulagningarvilluaðgerðir og síðan, með því að nota tölulegar hagræðingaraðferðir, eins og hallafall eða stochastic hallafall, velja bestu stuðlana . En, miðað við töluvert magn greinarinnar, er lagt til að framkvæma aðgreininguna á eigin spýtur, eða kannski verður þetta efni í næstu grein með miklum reikningum án svo nákvæmra dæma.
Mál 2. Flokkun hluta í и
Nálgunin hér verður sú sama og í kennslustundum и , en leiðin sjálf að framleiðslu tapfallsins Logistic tap, verður íburðarmeiri. Byrjum. Fyrir líkindaaðgerðina munum við nota rekstraraðilann "ef þá..."... Það er, ef Hluturinn tilheyrir flokknum , þá notum við líkurnar til að reikna út líkurnar á úrtakinu , ef hluturinn tilheyrir bekknum , þá skiptum við inn í líkurnar . Svona lítur líkindaaðgerðin út:
Leyfðu okkur að lýsa á fingrum okkar hvernig það virkar. Við skulum íhuga 4 tilvik:
1. Ef и , þá munu sýnatökulíkur „fara“
2. Ef и , þá munu sýnatökulíkur „fara“
3. Ef и , þá munu sýnatökulíkur „fara“
4. Ef и , þá munu sýnatökulíkur „fara“
Það er augljóst að í tilvikum 1 og 3, þegar líkurnar voru rétt ákvarðaðar af reikniritinu, líkindavirkni verður hámarkað, það er að segja, þetta er einmitt það sem við vildum fá. Hins vegar er þessi nálgun nokkuð fyrirferðarmikil og næst munum við íhuga þéttari nótnaskrift. En fyrst skulum við logaritma líkindafallið með breytingu á formerki, þar sem nú munum við lágmarka það.
Við skulum skipta út í staðinn tjáning :
Einfaldum rétta hugtakið undir lógaritmanum með einföldum reikniaðferðum og fáum:
Nú er kominn tími til að losa sig við rekstraraðilann "ef þá...". Athugaðu að þegar hlutur tilheyrir bekknum , síðan í orðatiltækinu undir logaritma, í nefnara, hækkað til valda , ef hluturinn tilheyrir bekknum , þá er $e$ hækkað til valda . Þess vegna er hægt að einfalda skriftina fyrir gráðuna með því að sameina bæði tilvikin í eitt: ... Þá skipulagsvilluaðgerð mun taka á sig form:
Í samræmi við logaritmareglur snúum við brotinu við og setjum út táknið "" (mínus) fyrir lógaritminn fáum við:
Hér er tapfallið skipulagslegt tap, sem er notað í þjálfunarsettinu með hlutum sem úthlutað er í flokka: и .
Jæja, á þessum tímapunkti tek ég mér leyfi og við ljúkum greininni.
Hjálparefni
1. Bókmenntir
1) Hagnýtt aðhvarfsgreining / N. Draper, G. Smith - 2. útg. – M.: Fjármál og tölfræði, 1986 (þýðing úr ensku)
2) Líkindafræði og stærðfræðitölfræði / V.E. Gmurman - 9. tbl. - M.: Framhaldsskóli, 2003
3) Líkindafræði / N.I. Chernova - Novosibirsk: Novosibirsk State University, 2007
4) Viðskiptagreining: frá gögnum til þekkingar / Paklin N. B., Oreshkov V. I. - 2. útg. — Sankti Pétursborg: Pétur, 2013
5) Gagnafræði Gagnafræði frá grunni / Joel Gras - St. Petersburg: BHV Petersburg, 2017
6) Hagnýt tölfræði fyrir gagnavísindasérfræðinga / P. Bruce, E. Bruce - St. Petersburg: BHV Petersburg, 2018
2. Fyrirlestrar, námskeið (myndband)
1)
2)
3)
4)
5)
3. Internet heimildir
1)
2)
4)
7)
Heimild: www.habr.com