Að tyggja á logistic regression

Að tyggja á logistic regression

Í þ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 Að tyggja á logistic regression.

Yfirlit greinar:

  1. Við skulum endurtaka línulegt samband milli tveggja breyta
  2. Við skulum greina þörfina fyrir umbreytingu línuleg aðhvarfsföll Að tyggja á logistic regression в logistic svaraðgerð Að tyggja á logistic regression
  3. Við skulum framkvæma umbreytingar og framleiðsla logistic svaraðgerð
  4. Við skulum reyna að skilja hvers vegna minnstu ferningsaðferðin er slæm þegar færibreytur eru valin Að tyggja á logistic regression aðgerðir Logistic tap
  5. Við notum hámarkslíkindaaðferð til að ákvarða færibreytuvalsaðgerðir Að tyggja á logistic regression:

    5.1. Tilfelli 1: fall Logistic tap fyrir hluti með flokkaheiti 0 и 1:

    Að tyggja á logistic regression

    5.2. Tilfelli 2: fall Logistic tap fyrir hluti með flokkaheiti -1 и +1:

    Að tyggja á logistic regression


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 Að tyggja á logistic regression úr breytum (regressors) Að tyggja á logistic regression. Það er talið að ósjálfstæði á milli eiginleika Að tyggja á logistic regression og markgildi Að tyggja á logistic regression 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 Að tyggja á logistic regression og markgildi Að tyggja á logistic regression. Þ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:

Að tyggja á logistic regressionhvar Að tyggja á logistic regression - núverandi styrkur, Að tyggja á logistic regression - Spenna, Að tyggja á logistic regression - viðnám.

Ef við vissum það ekki Lögmál Ohms, þá gætum við fundið ósjálfstæði reynslunnar með því að breyta Að tyggja á logistic regression og mæla Að tyggja á logistic regression, á meðan að styðja Að tyggja á logistic regression fastur. Þá myndum við sjá að ósjálfstæðisgrafið Að tyggja á logistic regression frá Að tyggja á logistic regression 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áð“ Að tyggja á logistic regression frá Að tyggja á logistic regression»

Að tyggja á logistic regression

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:

Að tyggja á logistic regression

þar sem Að tyggja á logistic regression, Að tyggja á logistic regression, Að tyggja á logistic regression, Að tyggja á logistic regression - laun Að tyggja á logistic regression-th lántakandi, Að tyggja á logistic regression - greiðslu láns Að tyggja á logistic regression-það lántakandi.

Að skipta út launum og lánsgreiðslu með föstum breytum inn í jöfnuna Að tyggja á logistic regression Þú getur ákveðið hvort þú gefur út eða hafnar láni.

Þegar horft er fram á veginn tökum við eftir því, með tilteknum breytum Að tyggja á logistic regression 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“

Að tyggja á logistic regression

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: Að tyggja á logistic regression. Jafnvel 106.000 RUR eru eftir. Þrátt fyrir að við útreikning Að tyggja á logistic regression við höfum minnkað líkurnar Að tyggja á logistic regression 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“

Að tyggja á logistic regression

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 Að tyggja á logistic regression, 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 Að tyggja á logistic regression Við flokkum þá lántakendur sem eru líklegastir til að greiða niður lánið sem Að tyggja á logistic regression eða Að tyggja á logistic regression 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 Að tyggja á logistic regression og setja hnit punktsins í samsvarandi jöfnu línunnar Að tyggja á logistic regression, íhugaðu þrjá valkosti:

  1. Ef punkturinn er undir línunni og við úthlutum honum í bekkinn Að tyggja á logistic regression, síðan gildi fallsins Að tyggja á logistic regression verður jákvætt frá Að tyggja á logistic regression í Að tyggja á logistic regression. Þetta þýðir að við getum gert ráð fyrir að líkurnar á endurgreiðslu lánsins séu innan Að tyggja á logistic regression. Því hærra sem fallgildið er, því meiri líkur.
  2. Ef punktur er fyrir ofan línu og við úthlutum honum í bekkinn Að tyggja á logistic regression eða Að tyggja á logistic regression, þá verður gildi fallsins neikvætt frá Að tyggja á logistic regression í Að tyggja á logistic regression. Þá munum við gera ráð fyrir að líkur á endurgreiðslu skulda séu innan Að tyggja á logistic regression og því hærra sem algildi fallsins er, því meira sjálfstraust okkar.
  3. Punkturinn er á beinni línu, á mörkum tveggja flokka. Í þessu tilviki, gildi fallsins Að tyggja á logistic regression verða jafnir Að tyggja á logistic regression og líkurnar á að endurgreiða lánið eru jafnar Að tyggja á logistic regression.

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 Að tyggja á logistic regression 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 Að tyggja á logistic regression. Í raun er verkefni logistic regression líkansins einmitt að ákvarða færibreyturnar Að tyggja á logistic regression, þar sem gildi tapsins virkar Logistic tap mun stefna að lágmarki. En um hvernig vigur er reiknaður Að tyggja á logistic regression, 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 Að tyggja á logistic regression 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 Að tyggja á logistic regression, þar sem gildin liggja á bilinu Að tyggja á logistic regression til falls þar sem gildin munu liggja á bilinu Að tyggja á logistic regression. Og slíkt fall er til, það er kallað logistic response function eða inverse-logit transformation. Hittu:

Að tyggja á logistic regression

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á Að tyggja á logistic regression í Að tyggja á logistic regression og þá munum við „vinda ofan af“ þessu gildi yfir allt talnasviðið frá Að tyggja á logistic regression í Að tyggja á logistic regression.

03. Við fáum logistic svarfall

Skref 1. Umbreyttu líkindagildunum í svið Að tyggja á logistic regression

Við umbreytingu á fallinu Að tyggja á logistic regression в logistic svaraðgerð Að tyggja á logistic regression 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ð Að tyggja á logistic regression:

Að tyggja á logistic regression

hvar Að tyggja á logistic regression - líkur á að atburður eigi sér stað, Að tyggja á logistic regression — 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 Að tyggja á logistic regression, þá verða líkurnar á árangri fyrir "Veterok" Að tyggja á logistic regression к Að tyggja á logistic regression Að tyggja á logistic regression og öfugt, vitandi líkurnar, verður ekki erfitt fyrir okkur að reikna út líkurnar Að tyggja á logistic regression:

Að tyggja á logistic regression

Þannig höfum við lært að „þýða“ líkindi í líkur, sem taka gildi frá Að tyggja á logistic regression í Að tyggja á logistic regression. Tökum eitt skref í viðbót og lærum að „þýða“ líkurnar yfir á alla talnalínuna frá Að tyggja á logistic regression í Að tyggja á logistic regression.

Skref 2. Umbreyttu líkindagildunum í svið Að tyggja á logistic regression

Þetta skref er mjög einfalt - við skulum taka lógaritma líkurnar á grunntölu Euler Að tyggja á logistic regression og við fáum:

Að tyggja á logistic regression

Nú vitum við að ef Að tyggja á logistic regression, reiknaðu síðan gildið Að tyggja á logistic regression verður mjög einfalt og þar að auki ætti það að vera jákvætt: Að tyggja á logistic regression. Þetta er satt.

Af forvitni skulum við athuga hvað ef Að tyggja á logistic regression, þá gerum við ráð fyrir að sjá neikvætt gildi Að tyggja á logistic regression. Við athugum: Að tyggja á logistic regression. Það er rétt.

Nú vitum við hvernig á að breyta líkindagildinu úr Að tyggja á logistic regression í Að tyggja á logistic regression meðfram allri talnalínunni frá Að tyggja á logistic regression í Að tyggja á logistic regression. Í næsta skrefi gerum við hið gagnstæða.

Í bili, athugaðu að í samræmi við reglur logaritma, að vita gildi fallsins Að tyggja á logistic regression, þú getur reiknað út líkurnar:

Að tyggja á logistic regression

Þ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 Að tyggja á logistic regression

Svo lærðum við, vitandi Að tyggja á logistic regression, finndu fallgildi Að tyggja á logistic regression. Hins vegar, í raun, við þurfum nákvæmlega hið gagnstæða - að vita gildi Að tyggja á logistic regression finna Að tyggja á logistic regression. Til að gera þetta skulum við snúa okkur að slíku hugtaki eins og andhverfu líkurnarfalli, samkvæmt því:

Að tyggja á logistic regression

Í 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 (Að tyggja á logistic regression), líkurnar á að atburðurinn eigi sér stað eru 0.8 (Að tyggja á logistic regression). Við skulum skipta út: Að tyggja á logistic regression. Þ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 Að tyggja á logistic regression, sem þýðir að þú getur skipt út í andhverfu stuðlafallinu. Við fáum:

Að tyggja á logistic regression

Deilið bæði teljara og nefnara með Að tyggja á logistic regression, Þá:

Að tyggja á logistic regression

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 Að tyggja á logistic regression ákveðið það Að tyggja á logistic regression. Síðan skaltu skipta út gildinu Að tyggja á logistic regression inn í skipulagsviðbragðsaðgerðina, gerum við ráð fyrir að fá Að tyggja á logistic regression. Við skiptum út og fáum: Að tyggja á logistic regression

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“

Að tyggja á logistic regression

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 Að tyggja á logistic regression, einhvers staðar frá Að tyggja á logistic regression í Að tyggja á logistic regression.

É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“

Að tyggja á logistic regression

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 Að tyggja á logistic regression. 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ð Að tyggja á logistic regression.

04. Minnstu ferningsaðferð til að ákvarða vigur lóða Að tyggja á logistic regression í logistic response

Við þekkjum nú þegar þessa aðferð til að velja vektor af lóðum Að tyggja á logistic regressionEins 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 Að tyggja á logistic regression 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 Að tyggja á logistic regression fyrir báðar gerðirnar er enginn munur. Taktu síðan lóðin sem myndast og settu þau í logistic svaraðgerð (Að tyggja á logistic regression) fyrir einhvern hlut sem tilheyrir flokknum Að tyggja á logistic regression. 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 Að tyggja á logistic regression. 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 Að tyggja á logistic regression með líkum upp á 0,01

Refsing við notkun MNC mun vera:
Að tyggja á logistic regression

Refsing við notkun Logistic tap mun vera:
Að tyggja á logistic regression

Mál um sterkt traust — líkanið úthlutar hlut í flokk Að tyggja á logistic regression með líkum upp á 0,99

Refsing við notkun MNC mun vera:
Að tyggja á logistic regression

Refsing við notkun Logistic tap mun vera:
Að tyggja á logistic regression

Þ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ð. Að tyggja á logistic regression. Þ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: Að tyggja á logistic regression eða Að tyggja á logistic regression. Þess vegna er hægt að skrifa úrtakslíkurnar sem líkindafall færibreytunnar Að tyggja á logistic regression sem hér segir:

Að tyggja á logistic regression
Að tyggja á logistic regression

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 Að tyggja á logistic regression, líkurnar á að Lesha muni EKKI endurgreiða lánið eru jafnar Að tyggja á logistic regression (þar sem það var EKKI endurgreiðsla lánsins sem átti sér stað) því eru sameiginlegar líkur á öllum þremur atburðunum jafnar Að tyggja á logistic regression.

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 Að tyggja á logistic regressionþar sem Að tyggja á logistic regression 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álfrarAð tyggja á logistic regression, og öfgapunkturinn, það er gildi óþekktu færibreytunnar Að tyggja á logistic regressionþar sem Að tyggja á logistic regression 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:

Að tyggja á logistic regression

Nú getum við auðveldlega greint tjáninguna með Að tyggja á logistic regression:

Að tyggja á logistic regression

Og að lokum skaltu íhuga fyrsta stigs skilyrðið - við jöfnum afleiðu fallsins að jöfnu við núll:

Að tyggja á logistic regression

Þannig er leiðandi mat okkar á líkum á endurgreiðslu lána Að tyggja á logistic regression 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 Að tyggja á logistic regression 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 Að tyggja á logistic regression.

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 Að tyggja á logistic regression:

Að tyggja á logistic regression

Úrtakslíkur við útreikninga á líkum á endurgreiðslu lána að teknu tilliti til þátta Að tyggja á logistic regression:

Að tyggja á logistic regression
Að tyggja á logistic regression

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 Að tyggja á logistic regression, 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 Að tyggja á logistic regression 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 Að tyggja á logistic regression, og tók þá ekki úr lausu lofti gripið, gætum við örugglega sagt að gildi okkar Að tyggja á logistic regression 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 Að tyggja á logistic regression 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 Að tyggja á logistic regression, 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 Að tyggja á logistic regression:

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 Að tyggja á logistic regression, línan sem skiptir hlutum (viðskiptavinum) í flokka Að tyggja á logistic regression и Að tyggja á logistic regression eða Að tyggja á logistic regression (viðskiptavinir sem geta greitt upp lánið og þeir sem ekki). Í okkar tilviki hefur jöfnan form Að tyggja á logistic regression.

2. Við notum andhverfa logit virka tegundir Að tyggja á logistic regression til að ákvarða líkurnar á því að hlutur tilheyri flokki Að tyggja á logistic regression.

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 Að tyggja á logistic regression (sitt eigið fyrir hvern hlut) tekur gildið 1 og með líkum Að tyggja á logistic regression - 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 Að tyggja á logistic regression, sem aftur er háð óþekktum stuðlum Að tyggja á logistic regression. Svo við þurfum að finna slíkan vektor af lóðum Að tyggja á logistic regression, þ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 Að tyggja á logistic regression и Að tyggja á logistic regression eða Að tyggja á logistic regression. Það fer eftir merkingunni, úttakið mun hafa samsvarandi tapfall.

Mál 1. Flokkun hluta í Að tyggja á logistic regression и Að tyggja á logistic regression

Áð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 Að tyggja á logistic regression, við notuðum formúluna:

Að tyggja á logistic regression

Raunverulega Að tyggja á logistic regression er merkingin flutningsaðgerðir Að tyggja á logistic regression fyrir tiltekinn vektor þyngdar Að tyggja á logistic regression

Þá kemur ekkert í veg fyrir að við skrifum sýnidæmisfallið sem hér segir:

Að tyggja á logistic regression

Þ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 Að tyggja á logistic regression (þ.e. samkvæmt þjálfunarsýninu tilheyrir hluturinn flokki +1), og reiknirit okkar Að tyggja á logistic regression ákvarðar líkurnar á því að flokka hlut í flokk Að tyggja á logistic regression jafnt og 0.9, þá verður þetta úrtakslíkur reiknað sem hér segir:

Að tyggja á logistic regression

2. Ef Að tyggja á logistic regressionOg Að tyggja á logistic regression, þá verður útreikningurinn svona:

Að tyggja á logistic regression

3. Ef Að tyggja á logistic regressionOg Að tyggja á logistic regression, þá verður útreikningurinn svona:

Að tyggja á logistic regression

4. Ef Að tyggja á logistic regressionOg Að tyggja á logistic regression, þá verður útreikningurinn svona:

Að tyggja á logistic regression

Þ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 Að tyggja á logistic regression.

Vegna þess að þegar ákvarðað er líkurnar á að úthluta hlut í flokk Að tyggja á logistic regression Við þekkjum bara ekki stuðlana Að tyggja á logistic regression, þá 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 Að tyggja á logistic regression. Hins vegar er skynsamlegt fyrst að einfalda verkefnið fyrir okkur sjálf: við munum leita að afleiðu lógaritmans líkindaaðgerðir.

Að tyggja á logistic regression

Hvers vegna eftir logaritma, í skipulagningarvilluaðgerðir, við breyttum skiltinu frá Að tyggja á logistic regression á Að tyggja á logistic regression. 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ð Að tyggja á logistic regression 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: Að tyggja á logistic regression и Að tyggja á logistic regression.

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 Að tyggja á logistic regression. 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 í Að tyggja á logistic regression и Að tyggja á logistic regression

Nálgunin hér verður sú sama og í kennslustundum Að tyggja á logistic regression и Að tyggja á logistic regression, 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 Að tyggja á logistic regressionHluturinn tilheyrir flokknum Að tyggja á logistic regression, þá notum við líkurnar til að reikna út líkurnar á úrtakinu Að tyggja á logistic regression, ef hluturinn tilheyrir bekknum Að tyggja á logistic regression, þá skiptum við inn í líkurnar Að tyggja á logistic regression. Svona lítur líkindaaðgerðin út:

Að tyggja á logistic regression

Leyfðu okkur að lýsa á fingrum okkar hvernig það virkar. Við skulum íhuga 4 tilvik:

1. Ef Að tyggja á logistic regression и Að tyggja á logistic regression, þá munu sýnatökulíkur „fara“ Að tyggja á logistic regression

2. Ef Að tyggja á logistic regression и Að tyggja á logistic regression, þá munu sýnatökulíkur „fara“ Að tyggja á logistic regression

3. Ef Að tyggja á logistic regression и Að tyggja á logistic regression, þá munu sýnatökulíkur „fara“ Að tyggja á logistic regression

4. Ef Að tyggja á logistic regression и Að tyggja á logistic regression, þá munu sýnatökulíkur „fara“ Að tyggja á logistic regression

Þ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ð.

Að tyggja á logistic regression

Við skulum skipta út í staðinn Að tyggja á logistic regression tjáning Að tyggja á logistic regression:

Að tyggja á logistic regression

Einfaldum rétta hugtakið undir lógaritmanum með einföldum reikniaðferðum og fáum:

Að tyggja á logistic regression

Nú er kominn tími til að losa sig við rekstraraðilann "ef þá...". Athugaðu að þegar hlutur Að tyggja á logistic regression tilheyrir bekknum Að tyggja á logistic regression, síðan í orðatiltækinu undir logaritma, í nefnara, Að tyggja á logistic regression hækkað til valda Að tyggja á logistic regression, ef hluturinn tilheyrir bekknum Að tyggja á logistic regression, þá er $e$ hækkað til valda Að tyggja á logistic regression. Þess vegna er hægt að einfalda skriftina fyrir gráðuna með því að sameina bæði tilvikin í eitt: Að tyggja á logistic regression... Þá skipulagsvilluaðgerð mun taka á sig form:

Að tyggja á logistic regression

Í samræmi við logaritmareglur snúum við brotinu við og setjum út táknið "Að tyggja á logistic regression" (mínus) fyrir lógaritminn fáum við:

Að tyggja á logistic regression

Hér er tapfallið skipulagslegt tap, sem er notað í þjálfunarsettinu með hlutum sem úthlutað er í flokka: Að tyggja á logistic regression и Að tyggja á logistic regression.

Jæja, á þessum tímapunkti tek ég mér leyfi og við ljúkum greininni.

Að tyggja á logistic regression Fyrra verk höfundar er „Bringing the linear regression equation into matrix form“

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) Kjarninn í hámarkslíkumaðferðinni, Boris Demeshev

2) Hámarkslíkindaaðferð í samfelldu tilfelli, Boris Demeshev

3) Logistic afturför. Opið ODS námskeið, Yury Kashnitsky

4) Fyrirlestur 4, Evgeny Sokolov (úr 47 mínútna myndbandi)

5) Logistic regression, Vyacheslav Vorontsov

3. Internet heimildir

1) Línuleg flokkun og aðhvarfslíkön

2) Hvernig á að skilja auðveldlega skipulagslegt aðhvarf

3) Logistic villa virka

4) Óháð próf og Bernoulli formúla

5) Ballaða af MMP

6) Hámarkslíkur aðferð

7) Formúlur og eiginleikar logaritma

8) Hvers vegna númer Að tyggja á logistic regression?

9) Línulegur flokkari

Heimild: www.habr.com

Bæta við athugasemd