Žvýkání logistické regrese

Žvýkání logistické regrese

V tomto článku rozebereme teoretické výpočty transformace lineární regresní funkce в funkce inverzní logitové transformace (jinak nazývaná funkce logistické odezvy). Pak pomocí arzenálu metoda maximální pravděpodobnostiv souladu s modelem logistické regrese odvodíme ztrátovou funkci Logistická ztráta, nebo jinými slovy, nadefinujeme funkci, pomocí které se volí parametry váhového vektoru v modelu logistické regrese Žvýkání logistické regrese.

Přehled článku:

  1. Zopakujme lineární vztah mezi dvěma proměnnými
  2. Pojďme identifikovat potřebu transformace lineární regresní funkce Žvýkání logistické regrese в funkce logistické odezvy Žvýkání logistické regrese
  3. Proveďme transformace a výstup funkce logistické odezvy
  4. Zkusme pochopit, proč je metoda nejmenších čtverců špatná při výběru parametrů Žvýkání logistické regrese funkce Logistická ztráta
  5. Používáme metoda maximální pravděpodobnosti pro určení funkce pro výběr parametrů Žvýkání logistické regrese:

    5.1. Případ 1: funkce Logistická ztráta pro objekty s označením třídy 0 и 1:

    Žvýkání logistické regrese

    5.2. Případ 2: funkce Logistická ztráta pro objekty s označením třídy -1 и +1:

    Žvýkání logistické regrese


Článek je plný jednoduchých příkladů, ve kterých lze všechny výpočty snadno provést ústně nebo na papíře; v některých případech může být vyžadována kalkulačka. Tak se připrav :)

Tento článek je primárně určen datovým vědcům s počáteční úrovní znalostí základů strojového učení.

Článek také poskytne kód pro kreslení grafů a výpočty. Veškerý kód je napsán v jazyce python 2.7. Předem vysvětlím „novost“ použité verze – to je jedna z podmínek pro absolvování známého kurzu z Yandex na neméně známé online vzdělávací platformě Coursera, a jak by se dalo předpokládat, materiál byl připraven na základě tohoto kurzu.

01. Přímá závislost

Je vcelku rozumné položit si otázku – co s tím má společného lineární závislost a logistická regrese?

Je to jednoduché! Logistická regrese je jedním z modelů, které patří do lineárního klasifikátoru. Jednoduše řečeno, úkolem lineárního klasifikátoru je předpovídat cílové hodnoty Žvýkání logistické regrese z proměnných (regresorů) Žvýkání logistické regrese. Předpokládá se, že závislost mezi charakteristikami Žvýkání logistické regrese a cílové hodnoty Žvýkání logistické regrese lineární. Odtud název klasifikátoru - lineární. Velmi zhruba řečeno, model logistické regrese je založen na předpokladu, že mezi charakteristikami existuje lineární vztah Žvýkání logistické regrese a cílové hodnoty Žvýkání logistické regrese. Toto je spojení.

V ateliéru je první příklad a je to správně o přímočaré závislosti studovaných veličin. V procesu přípravy článku jsem narazil na příklad, který už řadu lidí vyvedl z míry - závislost proudu na napětí („Aplikovaná regresní analýza“, N. Draper, G. Smith). Podíváme se na to i zde.

V souladu s Ohmův zákon:

Žvýkání logistické regreseKde Žvýkání logistické regrese - proudová síla, Žvýkání logistické regrese - Napětí, Žvýkání logistické regrese - odpor.

Kdybychom nevěděli Ohmův zákon, pak bychom mohli závislost najít empiricky změnou Žvýkání logistické regrese a měření Žvýkání logistické regrese, při podpoře Žvýkání logistické regrese pevný. Pak bychom viděli graf závislosti Žvýkání logistické regrese z Žvýkání logistické regrese dává víceméně přímou čáru přes počátek. Říkáme „víceméně“, protože ačkoli je vztah ve skutečnosti přesný, naše měření mohou obsahovat malé chyby, a proto body na grafu nemusí padat přesně na přímku, ale budou kolem ní náhodně rozptýleny.

Graf 1 „Závislost“ Žvýkání logistické regrese z Žvýkání logistické regrese»

Žvýkání logistické regrese

Kód kreslení grafu

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. Potřeba transformace rovnice lineární regrese

Podívejme se na další příklad. Představme si, že pracujeme v bance a naším úkolem je v závislosti na určitých faktorech určit pravděpodobnost, že dlužník úvěr splatí. Abychom tento úkol zjednodušili, vezmeme v úvahu pouze dva faktory: měsíční plat dlužníka a výši měsíční splátky úvěru.

Úloha je velmi podmíněná, ale s tímto příkladem pochopíme, proč nestačí použít lineární regresní funkcea také zjistěte, jaké transformace je třeba s funkcí provést.

Vraťme se k příkladu. Rozumí se, že čím vyšší je plat, tím více bude dlužník schopen měsíčně přidělit na splácení úvěru. Zároveň bude tento vztah pro určité platové rozpětí značně lineární. Vezměme například rozsah platů od 60.000 200.000 RUR do 3 5.000 RUR a předpokládejme, že v uvedeném platovém rozsahu je závislost velikosti měsíční platby na velikosti platu lineární. Řekněme, že pro zadaný rozsah mezd se ukázalo, že poměr plat/platba nemůže klesnout pod XNUMX a dlužník musí mít v rezervě stále XNUMX XNUMX RUR. A pouze v tomto případě budeme předpokládat, že dlužník bance úvěr splatí. Potom bude mít rovnice lineární regrese tvar:

Žvýkání logistické regrese

kde Žvýkání logistické regrese, Žvýkání logistické regrese, Žvýkání logistické regrese, Žvýkání logistické regrese - výplata Žvýkání logistické regrese- dlužník, Žvýkání logistické regrese - splátka půjčky Žvýkání logistické regrese- dlužník.

Dosazení platu a splátky úvěru pevnými parametry do rovnice Žvýkání logistické regrese Můžete se rozhodnout, zda půjčku vydáte nebo odmítnete.

Při pohledu do budoucna poznamenáváme, že s danými parametry Žvýkání logistické regrese lineární regresní funkce, použito v funkce logistické odezvy vytvoří velké hodnoty, které zkomplikují výpočty pro určení pravděpodobnosti splacení úvěru. Proto se navrhuje snížit naše koeficienty, řekněme, 25.000 XNUMXkrát. Tato transformace v koeficientech nezmění rozhodnutí o poskytnutí úvěru. Pamatujme si tento bod do budoucna, ale nyní, aby bylo ještě jasnější, o čem mluvíme, se podívejme na situaci se třemi potenciálními dlužníky.

Tabulka 1 „Potenciální dlužníci“

Žvýkání logistické regrese

Kód pro generování tabulky

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']]

V souladu s údaji v tabulce chce Vasya s platem 120.000 3.000 RUR získat půjčku, aby ji mohl měsíčně splácet ve výši 5.000 XNUMX RUR. Zjistili jsme, že pro schválení půjčky musí Vasyin plat překročit trojnásobek částky platby a stále musí zůstat XNUMX XNUMX RUR. Vasya splňuje tento požadavek: Žvýkání logistické regrese. Zbývá dokonce 106.000 XNUMX RUR. Nehledě na to, že při kalkulaci Žvýkání logistické regrese snížili jsme šance Žvýkání logistické regrese 25.000 XNUMXx výsledek stejný - půjčka může být schválena. Fedya také dostane půjčku, ale Lesha, přestože dostává nejvíce, bude muset krotit své choutky.

Pro tento případ nakreslíme graf.

Graf 2 „Klasifikace dlužníků“

Žvýkání logistické regrese

Kód pro kreslení grafu

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()

Takže naše přímka, postavená v souladu s funkcí Žvýkání logistické regrese, odděluje „špatné“ dlužníky od „dobrých“. Ti dlužníci, jejichž přání se neshodují s jejich možnostmi, jsou nad čárou (Lesha), zatímco ti, kteří jsou podle parametrů našeho modelu schopni splácet půjčku, jsou pod čarou (Vasya a Fedya). Jinými slovy, můžeme říci toto: naše přímá linie rozděluje dlužníky do dvou tříd. Označme je takto: do třídy Žvýkání logistické regrese Ty dlužníky, kteří s největší pravděpodobností půjčku splatí, zařadíme jako Žvýkání logistické regrese nebo Žvýkání logistické regrese Zařadíme ty dlužníky, kteří s největší pravděpodobností nebudou schopni úvěr splácet.

Shrňme si závěry z tohoto jednoduchého příkladu. Vezměme si bod Žvýkání logistické regrese a dosazením souřadnic bodu do odpovídající rovnice přímky Žvýkání logistické regrese, zvažte tři možnosti:

  1. Pokud je bod pod přímkou ​​a přiřadíme jej do třídy Žvýkání logistické regrese, pak hodnotu funkce Žvýkání logistické regrese bude pozitivní od Žvýkání logistické regrese na Žvýkání logistické regrese. To znamená, že můžeme předpokládat, že pravděpodobnost splacení úvěru je v rámci Žvýkání logistické regrese. Čím větší je hodnota funkce, tím vyšší je pravděpodobnost.
  2. Pokud je bod nad přímkou ​​a přiřadíme jej do třídy Žvýkání logistické regrese nebo Žvýkání logistické regrese, pak bude hodnota funkce záporná od Žvýkání logistické regrese na Žvýkání logistické regrese. Pak budeme předpokládat, že pravděpodobnost splacení dluhu je v rámci Žvýkání logistické regrese a čím větší je absolutní hodnota funkce, tím vyšší je naše spolehlivost.
  3. Bod je na přímce, na hranici mezi dvěma třídami. V tomto případě hodnota funkce Žvýkání logistické regrese budou rovné Žvýkání logistické regrese a pravděpodobnost splacení úvěru se rovná Žvýkání logistické regrese.

Nyní si představme, že nemáme dva faktory, ale desítky a ne tři, ale tisíce dlužníků. Pak místo přímky budeme mít m-rozměrný rovina a koeficienty Žvýkání logistické regrese nebudeme vytahováni ze vzduchu, ale odvozeni podle všech pravidel a na základě nashromážděných údajů o dlužníkech, kteří půjčku splatili nebo nesplatili. A skutečně, všimněte si, že nyní vybíráme dlužníky pomocí již známých koeficientů Žvýkání logistické regrese. Ve skutečnosti je úkolem logistického regresního modelu přesně určit parametry Žvýkání logistické regrese, při které funguje hodnota ztráty Logistická ztráta bude směřovat k minimu. Ale o tom, jak se vektor počítá Žvýkání logistické regrese, více se dozvíme v 5. sekci článku. Mezitím se vracíme do země zaslíbené – k našemu bankéři a jeho třem klientům.

Díky funkci Žvýkání logistické regrese víme, komu může být poskytnuta půjčka a komu je třeba odmítnout. Ale s takovými informacemi nemůžete jít za ředitelem, protože od nás chtěli získat pravděpodobnost splacení půjčky každým dlužníkem. Co dělat? Odpověď je jednoduchá – musíme funkci nějak transformovat Žvýkání logistické regrese, jehož hodnoty leží v rozmezí Žvýkání logistické regrese na funkci, jejíž hodnoty budou ležet v rozsahu Žvýkání logistické regrese. A taková funkce existuje, říká se jí funkce logistické odezvy nebo inverzní logitová transformace. Setkat:

Žvýkání logistické regrese

Podívejme se krok za krokem, jak to funguje funkce logistické odezvy. Všimněte si, že půjdeme opačným směrem, tzn. budeme předpokládat, že známe hodnotu pravděpodobnosti, která leží v rozmezí od Žvýkání logistické regrese na Žvýkání logistické regrese a poté tuto hodnotu „rozvineme“ na celý rozsah čísel Žvýkání logistické regrese na Žvýkání logistické regrese.

03. Odvodíme funkci logistické odezvy

Krok 1. Převeďte hodnoty pravděpodobnosti na rozsah Žvýkání logistické regrese

Při transformaci funkce Žvýkání logistické regrese в funkce logistické odezvy Žvýkání logistické regrese Necháme našeho úvěrového analytika na pokoji a místo toho si prohlédneme sázkové kanceláře. Ne, samozřejmě nebudeme sázet, vše, co nás zajímá, je význam výrazu, například šance je 4 ku 1. Kurz, známý všem sázejícím, je poměr „úspěchů“ k „ selhání“. Z hlediska pravděpodobnosti jsou šance pravděpodobnost, že k události dojde, dělená pravděpodobností, že událost nenastane. Zapišme si vzorec pro pravděpodobnost výskytu události Žvýkání logistické regrese:

Žvýkání logistické regrese

Kde Žvýkání logistické regrese - pravděpodobnost výskytu události, Žvýkání logistické regrese — pravděpodobnost, že událost nenastane

Například pokud pravděpodobnost, že mladý, silný a hravý kůň přezdívaný „Veterok“ porazí na dostihu starou a ochablou stařenu jménem „Matilda“, je rovna Žvýkání logistické regrese, pak budou šance na úspěch pro „Veterok“. Žvýkání logistické regrese к Žvýkání logistické regrese Žvýkání logistické regrese a naopak, když známe šance, nebude pro nás těžké vypočítat pravděpodobnost Žvýkání logistické regrese:

Žvýkání logistické regrese

Naučili jsme se tedy „překládat“ pravděpodobnost na šance, které nabývají hodnot Žvýkání logistické regrese na Žvýkání logistické regrese. Udělejme ještě jeden krok a naučme se „přeložit“ pravděpodobnost na celou číselnou řadu Žvýkání logistické regrese na Žvýkání logistické regrese.

Krok 2. Převeďte hodnoty pravděpodobnosti na rozsah Žvýkání logistické regrese

Tento krok je velmi jednoduchý – vezměme logaritmus pravděpodobnosti na základnu Eulerova čísla Žvýkání logistické regrese a dostaneme:

Žvýkání logistické regrese

Nyní víme, že pokud Žvýkání logistické regresea poté vypočítejte hodnotu Žvýkání logistické regrese bude velmi jednoduchý a navíc by měl být pozitivní: Žvýkání logistické regrese. To je pravda.

Ze zvědavosti si ověříme, co kdyby Žvýkání logistické regrese, pak očekáváme zápornou hodnotu Žvýkání logistické regrese. Kontrolujeme: Žvýkání logistické regrese. To je správně.

Nyní víme, jak převést hodnotu pravděpodobnosti z Žvýkání logistické regrese na Žvýkání logistické regrese po celé číselné řadě od Žvýkání logistické regrese na Žvýkání logistické regrese. V dalším kroku uděláme opak.

Prozatím poznamenáváme, že v souladu s pravidly logaritmu, znát hodnotu funkce Žvýkání logistické regrese, můžete si spočítat kurz:

Žvýkání logistické regrese

Tento způsob stanovení kurzů se nám bude hodit v dalším kroku.

Krok 3. Odvoďme vzorec k určení Žvýkání logistické regrese

Tak jsme se učili, věděli Žvýkání logistické regrese, najít hodnoty funkcí Žvýkání logistické regrese. Ve skutečnosti však potřebujeme pravý opak – znát hodnotu Žvýkání logistické regrese najít Žvýkání logistické regrese. Abychom to udělali, pojďme k takovému konceptu, jako je funkce inverzních šancí, podle které:

Žvýkání logistické regrese

V článku nebudeme odvodit výše uvedený vzorec, ale zkontrolujeme jej pomocí čísel z výše uvedeného příkladu. Víme, že s pravděpodobností 4 ku 1 (Žvýkání logistické regrese), pravděpodobnost výskytu události je 0.8 (Žvýkání logistické regrese). Udělejme náhradu: Žvýkání logistické regrese. To se shoduje s našimi výpočty provedenými dříve. Pokračujme.

V posledním kroku jsme to odvodili Žvýkání logistické regrese, což znamená, že můžete provést substituci ve funkci inverzních šancí. Dostaneme:

Žvýkání logistické regrese

Čitatele i jmenovatele vydělte Žvýkání logistické regrese, Pak:

Žvýkání logistické regrese

Pro jistotu, abychom se ujistili, že jsme nikde neudělali chybu, uděláme ještě jednu malou kontrolu. V kroku 2 jsme pro Žvýkání logistické regrese to určil Žvýkání logistické regrese. Poté dosaďte hodnotu Žvýkání logistické regrese do funkce logistické odezvy, očekáváme, že dostaneme Žvýkání logistické regrese. Nahradíme a dostaneme: Žvýkání logistické regrese

Gratulujeme, milý čtenáři, právě jsme odvodili a otestovali funkci logistické odezvy. Podívejme se na graf funkce.

Graf 3 „Funkce logistické odezvy“

Žvýkání logistické regrese

Kód pro kreslení grafu

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()

V literatuře můžete také najít název této funkce jako sigmoidní funkce. Graf jasně ukazuje, že hlavní změna pravděpodobnosti objektu patřícího do třídy nastává v relativně malém rozmezí Žvýkání logistické regrese, odněkud Žvýkání logistické regrese na Žvýkání logistické regrese.

Navrhuji vrátit se k našemu úvěrovému analytikovi a pomoci mu spočítat pravděpodobnost splacení úvěru, jinak riskuje, že zůstane bez bonusu :)

Tabulka 2 „Potenciální dlužníci“

Žvýkání logistické regrese

Kód pro generování tabulky

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']]

Určili jsme tedy pravděpodobnost splacení úvěru. Obecně se zdá, že je to pravda.

Pravděpodobnost, že Vasya s platem 120.000 3.000 RUR bude moci dát bance 100 0.3 RUR každý měsíc, se skutečně blíží XNUMX%. Mimochodem, musíme pochopit, že banka může poskytnout půjčku Leshovi, pokud její politika umožňuje například půjčování klientům s pravděpodobností splacení půjčky vyšší než, řekněme, XNUMX. Jde jen o to, že v tomto případě si banka vytvoří větší rezervu na případné ztráty.

Je třeba také poznamenat, že poměr platu k platu ve výši alespoň 3 as rozpětím 5.000 XNUMX RUR byl převzat ze stropu. Proto jsme nemohli použít vektor vah v původní podobě Žvýkání logistické regrese. Potřebovali jsme velmi snížit koeficienty a v tomto případě jsme každý koeficient vydělili 25.000 XNUMX, to znamená, že jsme v podstatě upravili výsledek. Ale to bylo provedeno speciálně pro zjednodušení porozumění materiálu v počáteční fázi. V životě nebudeme potřebovat koeficienty vymýšlet a upravovat, ale nacházet je. V dalších částech článku odvodíme rovnice, kterými se parametry volí Žvýkání logistické regrese.

04. Metoda nejmenších čtverců pro určení vektoru vah Žvýkání logistické regrese ve funkci logistické odezvy

Tuto metodu pro výběr vektoru vah již známe Žvýkání logistické regreseJak metoda nejmenších čtverců (LSM) a vlastně, proč to pak nepoužijeme v problémech binární klasifikace? Ve skutečnosti vám nic nebrání v používání MNC, pouze tato metoda v klasifikačních problémech poskytuje výsledky, které jsou méně přesné než Logistická ztráta. Existuje pro to teoretický základ. Podívejme se nejprve na jeden jednoduchý příklad.

Předpokládejme, že naše modely (s použitím MSE и Logistická ztráta) již začali s výběrem vektoru vah Žvýkání logistické regrese a výpočet jsme v určitém kroku zastavili. Nezáleží na tom, zda uprostřed, na konci nebo na začátku, hlavní je, že již máme nějaké hodnoty vektoru vah a předpokládejme, že v tomto kroku vektor vah Žvýkání logistické regrese u obou modelů nejsou žádné rozdíly. Poté vezměte výsledné závaží a vložte je do funkce logistické odezvy (Žvýkání logistické regrese) pro nějaký objekt, který patří do třídy Žvýkání logistické regrese. Zkoumáme dva případy, kdy v souladu se zvoleným vektorem vah je náš model velmi chybný a naopak - model je velmi jistý, že objekt patří do třídy Žvýkání logistické regrese. Podívejme se, jaké pokuty budou uděleny při použití MNC и Logistická ztráta.

Kód pro výpočet sankcí v závislosti na použité ztrátové funkci

# класс объекта
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

Případ omylu — model přiřadí objekt třídě Žvýkání logistické regrese s pravděpodobností 0,01

Pokuta za použití MNC bude:
Žvýkání logistické regrese

Pokuta za použití Logistická ztráta bude:
Žvýkání logistické regrese

Případ silné důvěry — model přiřadí objekt třídě Žvýkání logistické regrese s pravděpodobností 0,99

Pokuta za použití MNC bude:
Žvýkání logistické regrese

Pokuta za použití Logistická ztráta bude:
Žvýkání logistické regrese

Tento příklad dobře ilustruje, že v případě hrubé chyby funguje ztráta Log Loss penalizuje model výrazně více než MSE. Pojďme nyní porozumět teoretickým základům použití ztrátové funkce Log Loss v klasifikačních problémech.

05. Metoda maximální věrohodnosti a logistická regrese

Jak bylo slíbeno na začátku, článek je plný jednoduchých příkladů. Ve studiu je další příklad a staří hosté - bankovní dlužníci: Vasya, Fedya a Lesha.

Jen pro případ, před vývojem příkladu mi dovolte připomenout, že v životě máme co do činění s trénovacím vzorkem tisíců nebo milionů objektů s desítkami nebo stovkami funkcí. Zde jsou však čísla brána tak, aby se snadno vešla do hlavy začínajícího datového vědce.

Vraťme se k příkladu. Představme si, že se ředitel banky rozhodl poskytnout půjčku každému v nouzi, přestože mu algoritmus řekl, aby ji Leshovi neposkytoval. A nyní uplynulo dost času a my víme, který ze tří hrdinů půjčku splatil a kdo ne. Co se dalo očekávat: Vasya a Fedya splatili půjčku, ale Lesha ne. Nyní si představme, že tento výsledek pro nás bude novým tréninkovým vzorkem a zároveň jakoby zmizely všechny údaje o faktorech ovlivňujících pravděpodobnost splacení úvěru (plat dlužníka, výše měsíční splátky). Intuitivně pak můžeme předpokládat, že každý třetí dlužník nesplatí úvěr bance, nebo jinými slovy pravděpodobnost, že úvěr splatí další dlužník Žvýkání logistické regrese. Tento intuitivní předpoklad má teoretické potvrzení a je založen na metoda maximální pravděpodobnosti, často se v literatuře nazývá princip maximální pravděpodobnosti.

Nejprve se seznámíme s pojmovým aparátem.

Pravděpodobnost odběru vzorků je pravděpodobnost získání přesně takového vzorku, získání přesně takových pozorování/výsledků, tzn. součin pravděpodobností získání každého z výsledků vzorku (například zda byla půjčka Vasya, Fedya a Lesha splacena nebo nebyla splacena současně).

Pravděpodobnostní funkce vztahuje pravděpodobnost vzorku k hodnotám distribučních parametrů.

V našem případě je trénovací vzorek zobecněné Bernoulliho schéma, ve kterém náhodná veličina nabývá pouze dvou hodnot: Žvýkání logistické regrese nebo Žvýkání logistické regrese. Proto může být vzorková pravděpodobnost zapsána jako pravděpodobnostní funkce parametru Žvýkání logistické regrese takto:

Žvýkání logistické regrese
Žvýkání logistické regrese

Výše uvedený záznam lze interpretovat následovně. Společná pravděpodobnost, že Vasya a Fedya půjčku splatí, se rovná Žvýkání logistické regrese, pravděpodobnost, že Lesha NEBUDE půjčku splácet, se rovná Žvýkání logistické regrese (protože se NEJEDNALO o splátku úvěru), proto je společná pravděpodobnost všech tří událostí stejná Žvýkání logistické regrese.

Metoda maximální pravděpodobnosti je metoda pro odhad neznámého parametru pomocí maximalizace pravděpodobnostní funkce. V našem případě musíme takovou hodnotu najít Žvýkání logistické regresena které Žvýkání logistické regrese dosáhne svého maxima.

Odkud pochází skutečná myšlenka – hledat hodnotu neznámého parametru, při které věrohodnostní funkce dosahuje maxima? Původ myšlenky pramení z myšlenky, že vzorek je jediný zdroj znalostí, který máme o populaci k dispozici. Ve vzorku je zastoupeno vše, co o populaci víme. Můžeme tedy říci pouze to, že vzorek je nejpřesnějším odrazem populace, kterou máme k dispozici. Proto musíme najít parametr, při kterém se dostupný vzorek stane nejpravděpodobnějším.

Je zřejmé, že máme co do činění s optimalizačním problémem, ve kterém potřebujeme najít extrémní bod funkce. Pro nalezení extremního bodu je nutné uvažovat podmínku prvního řádu, tedy srovnat derivaci funkce s nulou a řešit rovnici s ohledem na požadovaný parametr. Hledání derivace součinu velkého množství faktorů však může být zdlouhavý úkol, aby se tomu zabránilo, existuje speciální technika - přepnutí na logaritmus pravděpodobnostní funkce. Proč je takový přechod možný? Věnujme pozornost tomu, že nehledáme extrém funkce samotnéŽvýkání logistické regrese, a extrémní bod, tedy hodnotu neznámého parametru Žvýkání logistické regresena které Žvýkání logistické regrese dosáhne svého maxima. Při přechodu na logaritmus se bod extrému nemění (ačkoli samotný extrém se bude lišit), protože logaritmus je monotónní funkce.

Pojďme, v souladu s výše uvedeným, dále rozvíjet náš příklad s půjčkami od Vasya, Fedya a Lesha. Nejprve přejděme k logaritmus věrohodnostní funkce:

Žvýkání logistické regrese

Nyní můžeme výraz snadno odlišit podle Žvýkání logistické regrese:

Žvýkání logistické regrese

A nakonec zvažte podmínku prvního řádu - derivaci funkce přirovnáme k nule:

Žvýkání logistické regrese

Tedy náš intuitivní odhad pravděpodobnosti splacení úvěru Žvýkání logistické regrese byl teoreticky oprávněný.

Skvělé, ale co teď máme s touto informací dělat? Pokud předpokládáme, že každý třetí dlužník peníze bance nevrátí, pak tato banka nevyhnutelně zkrachuje. To je pravda, ale pouze při posuzování pravděpodobnosti splacení úvěru rovné Žvýkání logistické regrese Nebrali jsme v úvahu faktory ovlivňující splácení úvěru: mzdu dlužníka a výši měsíční splátky. Připomeňme, že jsme dříve počítali pravděpodobnost splacení úvěru každým klientem s přihlédnutím ke stejným faktorům. Je logické, že jsme dostali pravděpodobnosti odlišné od konstanty rovné Žvýkání logistické regrese.

Pojďme definovat pravděpodobnost vzorků:

Kód pro výpočet pravděpodobnosti vzorku

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)

Pravděpodobnost vzorku při konstantní hodnotě Žvýkání logistické regrese:

Žvýkání logistické regrese

Vzorová pravděpodobnost při výpočtu pravděpodobnosti splacení úvěru s přihlédnutím k faktorům Žvýkání logistické regrese:

Žvýkání logistické regrese
Žvýkání logistické regrese

Pravděpodobnost vzorku s pravděpodobností vypočítanou v závislosti na faktorech se ukázala být vyšší než pravděpodobnost s konstantní hodnotou pravděpodobnosti. Co to znamená? To naznačuje, že znalost faktorů umožnila přesněji vybrat pravděpodobnost splacení úvěru u každého klienta. Při poskytování další půjčky by proto bylo správnější použít model navržený na konci části 3 článku pro posouzení pravděpodobnosti splacení dluhu.

Ale pak, pokud chceme maximalizovat vzorová věrohodnostní funkce, tak proč nepoužít nějaký algoritmus, který vytvoří pravděpodobnosti například pro Vasyu, Fedyu a Leshu rovnající se 0.99, 0.99 a 0.01. Možná bude takový algoritmus fungovat dobře na trénovacím vzorku, protože přiblíží hodnotu pravděpodobnosti vzorku Žvýkání logistické regrese, ale za prvé, takový algoritmus bude mít s největší pravděpodobností potíže se schopností zobecnění a za druhé tento algoritmus rozhodně nebude lineární. A pokud metody boje s přetrénováním (stejně slabá schopnost generalizace) zjevně nejsou zahrnuty v plánu tohoto článku, projdeme si druhý bod podrobněji. Chcete-li to provést, stačí odpovědět na jednoduchou otázku. Může být pravděpodobnost, že Vasya a Fedya splatí půjčku, stejná, vezmeme-li v úvahu nám známé faktory? Z hlediska zvukové logiky samozřejmě ne, nemůže. Takže Vasya bude platit 2.5% svého platu měsíčně na splácení úvěru a Fedya - téměř 27,8%. Také v grafu 2 „Klasifikace klientů“ vidíme, že Vasya je mnohem dále od čáry oddělující třídy než Fedya. A konečně víme, že funkce Žvýkání logistické regrese pro Vasya a Fedya nabývá různých hodnot: 4.24 pro Vasyu a 1.0 pro Fedyu. Pokud by nyní například Fedya vydělal řádově více nebo požádal o menší půjčku, pak by pravděpodobnosti splacení půjčky pro Vasyu a Fedyu byly podobné. Jinými slovy, lineární závislost nelze oklamat. A jestli jsme skutečně spočítali kurzy Žvýkání logistické regresea nevzali jsme je z ničeho, mohli bychom bezpečně říci, že naše hodnoty Žvýkání logistické regrese nejlépe nám umožní odhadnout pravděpodobnost splacení úvěru každým dlužníkem, ale jelikož jsme souhlasili s tím, že stanovení koeficientů Žvýkání logistické regrese bylo provedeno podle všech pravidel, pak budeme předpokládat - naše koeficienty nám umožňují lépe odhadnout pravděpodobnost :)

To jsme však odbočili. V této části musíme pochopit, jak se určuje vektor vah Žvýkání logistické regrese, který je nezbytný pro posouzení pravděpodobnosti splacení úvěru každým dlužníkem.

Pojďme si krátce shrnout, s jakým arzenálem hledáme šance Žvýkání logistické regrese:

1. Předpokládáme, že vztah mezi cílovou proměnnou (hodnotou predikce) a faktorem ovlivňujícím výsledek je lineární. Z tohoto důvodu se používá lineární regresní funkce druh Žvýkání logistické regrese, jehož linie rozděluje objekty (klienty) do tříd Žvýkání logistické regrese и Žvýkání logistické regrese nebo Žvýkání logistické regrese (klienti, kteří jsou schopni úvěr splácet a ti, kteří nejsou). V našem případě má rovnice tvar Žvýkání logistické regrese.

2. Používáme inverzní logit funkce druh Žvýkání logistické regrese určit pravděpodobnost, že objekt patří do třídy Žvýkání logistické regrese.

3. Náš tréninkový soubor považujeme za implementaci zobecněného Bernoulliho schémata, to znamená, že pro každý objekt je generována náhodná veličina, která s pravděpodobností Žvýkání logistické regrese (pro každý objekt vlastní) nabývá hodnoty 1 as pravděpodobností Žvýkání logistické regrese - 0.

4. Víme, co potřebujeme k maximalizaci vzorová věrohodnostní funkce zohledněním přijatých faktorů tak, aby se dostupný vzorek stal nejvěrohodnějším. Jinými slovy, musíme vybrat parametry, při kterých bude vzorek nejvěrohodnější. V našem případě je zvoleným parametrem pravděpodobnost splacení úvěru Žvýkání logistické regrese, což zase závisí na neznámých koeficientech Žvýkání logistické regrese. Potřebujeme tedy najít takový vektor vah Žvýkání logistické regrese, při kterém bude pravděpodobnost vzorku maximální.

5. Víme, co maximalizovat ukázkové věrohodnostní funkce Můžete použít metoda maximální pravděpodobnosti. A známe všechny záludné triky, jak s touto metodou pracovat.

Takhle to vypadá na vícekrokový krok :)

Nyní si pamatujte, že na samém začátku článku jsme chtěli odvodit dva typy ztrátových funkcí Logistická ztráta v závislosti na tom, jak jsou určeny třídy objektů. Stalo se, že v klasifikačních úlohách se dvěma třídami jsou třídy označeny jako Žvýkání logistické regrese и Žvýkání logistické regrese nebo Žvýkání logistické regrese. V závislosti na notaci bude mít výstup odpovídající ztrátovou funkci.

Případ 1. Klasifikace objektů do Žvýkání logistické regrese и Žvýkání logistické regrese

Dříve při určování pravděpodobnosti vzorku, ve kterém byla pravděpodobnost splacení dluhu dlužníkem vypočtena na základě faktorů a daných koeficientů Žvýkání logistické regrese, použili jsme vzorec:

Žvýkání logistické regrese

Skutečně Žvýkání logistické regrese je smysl funkce logistické odezvy Žvýkání logistické regrese pro daný vektor vah Žvýkání logistické regrese

Pak nám nic nebrání napsat vzorovou pravděpodobnostní funkci následovně:

Žvýkání logistické regrese

Stává se, že někdy je pro některé začínající analytiky obtížné okamžitě pochopit, jak tato funkce funguje. Podívejme se na 4 krátké příklady, které vše objasní:

1. Jestliže Žvýkání logistické regrese (tj. podle trénovacího vzorku objekt patří do třídy +1) a náš algoritmus Žvýkání logistické regrese určuje pravděpodobnost zařazení objektu do třídy Žvýkání logistické regrese rovna 0.9, pak se pravděpodobnost této části vzorku vypočítá takto:

Žvýkání logistické regrese

2. Jestliže Žvýkání logistické regresea Žvýkání logistické regrese, pak bude výpočet vypadat takto:

Žvýkání logistické regrese

3. Jestliže Žvýkání logistické regresea Žvýkání logistické regrese, pak bude výpočet vypadat takto:

Žvýkání logistické regrese

4. Jestliže Žvýkání logistické regresea Žvýkání logistické regrese, pak bude výpočet vypadat takto:

Žvýkání logistické regrese

Je zřejmé, že věrohodnostní funkce bude maximalizována v případech 1 a 3 nebo v obecném případě - se správně uhádnutými hodnotami pravděpodobností přiřazení objektu do třídy Žvýkání logistické regrese.

Vzhledem k tomu, že při určování pravděpodobnosti přiřazení objektu do třídy Žvýkání logistické regrese Jen neznáme koeficienty Žvýkání logistické regrese, pak je budeme hledat. Jak bylo uvedeno výše, jedná se o optimalizační problém, ve kterém nejprve musíme najít derivaci věrohodnostní funkce vzhledem k vektoru vah. Žvýkání logistické regrese. Nejprve však má smysl si tento úkol zjednodušit: budeme hledat derivaci logaritmu pravděpodobnostní funkce.

Žvýkání logistické regrese

Proč po logaritmu, in logistické chybové funkce, změnili jsme znamení z Žvýkání logistické regrese na Žvýkání logistické regrese. Vše je jednoduché, protože v problémech posuzování kvality modelu je obvyklé minimalizovat hodnotu funkce, vynásobili jsme pravou stranu výrazu Žvýkání logistické regrese a podle toho místo maximalizace nyní funkci minimalizujeme.

Vlastně právě teď, před tvýma očima, byla funkce ztráty pečlivě odvozena - Logistická ztráta pro tréninkovou sadu se dvěma třídami: Žvýkání logistické regrese и Žvýkání logistické regrese.

Nyní, abychom našli koeficienty, musíme najít derivaci logistické chybové funkce a poté pomocí numerických optimalizačních metod, jako je gradient sestup nebo stochastický gradient sestup, vyberte nejoptimálnější koeficienty Žvýkání logistické regrese. Ale vzhledem ke značnému objemu článku se navrhuje provést diferenciaci na vlastní pěst, nebo to bude možná téma pro příští článek se spoustou aritmetiky bez takových podrobných příkladů.

Případ 2. Klasifikace objektů do Žvýkání logistické regrese и Žvýkání logistické regrese

Přístup zde bude stejný jako u tříd Žvýkání logistické regrese и Žvýkání logistické regrese, ale samotná cesta k výstupu ztrátové funkce Logistická ztráta, bude zdobnější. Začněme. Pro funkci pravděpodobnosti použijeme operátor "jestli... tak...". Tedy pokud Žvýkání logistické regreseth objekt patří do třídy Žvýkání logistické regrese, pak pro výpočet pravděpodobnosti vzorku použijeme pravděpodobnost Žvýkání logistické regrese, pokud objekt patří do třídy Žvýkání logistické regrese, pak dosadíme do pravděpodobnosti Žvýkání logistické regrese. Takto vypadá funkce pravděpodobnosti:

Žvýkání logistické regrese

Pojďme si na prstech popsat, jak to funguje. Podívejme se na 4 případy:

1. Jestliže Žvýkání logistické regrese и Žvýkání logistické regrese, pak pravděpodobnost vzorkování „půjde“ Žvýkání logistické regrese

2. Jestliže Žvýkání logistické regrese и Žvýkání logistické regrese, pak pravděpodobnost vzorkování „půjde“ Žvýkání logistické regrese

3. Jestliže Žvýkání logistické regrese и Žvýkání logistické regrese, pak pravděpodobnost vzorkování „půjde“ Žvýkání logistické regrese

4. Jestliže Žvýkání logistické regrese и Žvýkání logistické regrese, pak pravděpodobnost vzorkování „půjde“ Žvýkání logistické regrese

Je zřejmé, že v případech 1 a 3, kdy byly pravděpodobnosti správně stanoveny algoritmem, pravděpodobnostní funkce bude maximalizováno, to je přesně to, co jsme chtěli získat. Tento přístup je však značně těžkopádný a příště budeme uvažovat o kompaktnějším zápisu. Nejprve ale logaritme pravděpodobnostní funkci se změnou znaménka, protože ji nyní minimalizujeme.

Žvýkání logistické regrese

Pojďme místo toho nahradit Žvýkání logistické regrese výraz Žvýkání logistické regrese:

Žvýkání logistické regrese

Zjednodušme správný výraz pod logaritmem pomocí jednoduchých aritmetických technik a získáme:

Žvýkání logistické regrese

Nyní je čas zbavit se operátora "jestli... tak...". Všimněte si, že když objekt Žvýkání logistické regrese patří do třídy Žvýkání logistické regrese, pak ve výrazu pod logaritmem, ve jmenovateli, Žvýkání logistické regrese povýšen k moci Žvýkání logistické regrese, pokud objekt patří do třídy Žvýkání logistické regrese, pak se $e$ zvýší na mocninu Žvýkání logistické regrese. Proto lze zápis stupně zjednodušit spojením obou případů do jednoho: Žvýkání logistické regrese. Pak funkce logistických chyb bude mít podobu:

Žvýkání logistické regrese

V souladu s pravidly logaritmu zlomek otočíme a zhasneme znak "Žvýkání logistické regrese" (mínus) pro logaritmus dostaneme:

Žvýkání logistické regrese

Zde je funkce ztráty logistická ztráta, který se používá v trénovací sadě s objekty přiřazenými třídám: Žvýkání logistické regrese и Žvýkání logistické regrese.

No, v tomto bodě se rozloučím a uzavíráme článek.

Žvýkání logistické regrese Autorova předchozí práce je „Převedení rovnice lineární regrese do maticové formy“

Pomocné materiály

1. Literatura

1) Aplikovaná regresní analýza / N. Draper, G. Smith - 2. vyd. – M.: Finance and Statistics, 1986 (překlad z angličtiny)

2) Teorie pravděpodobnosti a matematická statistika / V.E. Gmurman - 9. vyd. - M.: Vyšší škola, 2003

3) Teorie pravděpodobnosti / N.I. Chernova - Novosibirsk: Novosibirsk State University, 2007

4) Business analytics: from data to knowledge / Paklin N. B., Oreshkov V. I. - 2nd ed. — Petrohrad: Petr, 2013

5) Data Science Data science od nuly / Joel Gras – Petrohrad: BHV Petersburg, 2017

6) Praktické statistiky pro specialisty Data Science / P. Bruce, E. Bruce - Petrohrad: BHV Petersburg, 2018

2. Přednášky, kurzy (video)

1) Podstata metody maximální pravděpodobnosti, Boris Demeshev

2) Metoda maximální věrohodnosti ve spojitém případě, Boris Demeshev

3) Logistická regrese. Otevřený kurz ODS, Yury Kashnitsky

4) Přednáška 4, Evgeny Sokolov (ze 47 minut videa)

5) Logistická regrese, Vjačeslav Voroncov

3. Internetové zdroje

1) Lineární klasifikační a regresní modely

2) Jak snadno porozumět logistické regresi

3) Logistická chybová funkce

4) Nezávislé testy a Bernoulliho vzorec

5) Balada o MMP

6) Metoda maximální pravděpodobnosti

7) Vzorce a vlastnosti logaritmů

8) Proč číslo Žvýkání logistické regrese?

9) Lineární klasifikátor

Zdroj: www.habr.com

Přidat komentář