Žvýkání logistické regrese

Žvýkání logistické regrese

V tomto článku se budeme zabývat teoretickými základy transformace funkce lineární regrese v funkci inverzní logitní transformace (jinak také funkci logistické odezvy). Poté využijeme arsenal metody maximální věrohodnosti, v souladu s modelem logistické regrese odvodíme ztrátovou funkci Logistic Loss, neboli jinými slovy, určíme funkci, pomocí které se v modelu logistické regrese vybírají parametry vektoru vah Žvýkání logistické regrese.

Plán článku:

  1. Zopakujeme si lineární závislost mezi dvěma proměnnými
  2. Identifikujeme potřebu transformace funkce lineární regrese Žvýkání logistické regrese v funkce logistické odezvy Žvýkání logistické regrese
  3. Provádíme transformace a odvodíme funkce logistické odezvy
  4. Pokud se pokusíme pochopit, čím je metoda nejmenších čtverců při odhadu parametrů špatná Žvýkání logistické regrese funkce Logistic Loss
  5. Používáme metoda maximální věrohodnosti za účelem určení funkce odhadu parametrů Žvýkání logistické regrese:

    5.1. Případ 1: funkce Logistic Loss pro objekty s označením tříd 0 a 1:

    Žvýkání logistické regrese

    5.2. Případ 2: funkce Logistic Loss pro objekty s označením tříd -1 a +1:

    Žvýkání logistické regrese


Článek bohatě obsahuje jednoduché příklady, u 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 zapotřebí kalkulačka. Připravte se 🙂

Tento článek je především určen pro datové vědce se základními znalostmi v oblasti strojového učení.

V článku bude také uveden kód pro vykreslování grafů a výpočty. Všechen kód je napsán v jazyce python 2.7. Předem vysvětlím „novost“ používané verze — to je jedno z podmínek účasti v známém kurzu od Yandexu na ne méně známé internetové platformě online vzdělávání Coursera, a jak bylo možné předpokládat, materiál byl připraven na základě tohoto kurzu.

01. Lineární závislost

Je docela rozumné položit otázku — co mají společného lineární závislost a logistická regrese?

Všechno je jednoduché! Logistická regrese je jedním z modelů, které patří k lineárnímu 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 znaky Žvýkání logistické regrese a cílovými hodnotami Žvýkání logistické regrese je lineární. Odtud vlastně název klasifikátoru — lineární. Pokud bychom to velmi hrubě zjednodušili, model logistické regrese vychází z předpokladu lineární závislosti mezi znaky Žvýkání logistické regrese a cílovými hodnotami Žvýkání logistické regrese. Tady je — spojení.

V studiu je první příklad, a o přímé závislosti zkoumaných veličin. Při přípravě článku jsem narazil na příklad, který je již mnohým známý - závislost proudu na napětí. („Aplikovaná regresní analýza“, N. Draper, G. Smith). Zde se na něj také podíváme.

V souladu s Ohmův zákon:

Žvýkání logistické regrese, kde Žvýkání logistické regrese — proud, Žvýkání logistické regrese — napětí, Žvýkání logistické regrese — odpor.

Kdybychom neznali Ohmův zákon, mohli bychom závislost nalézt empiricky, měnící Žvýkání logistické regrese a měřící Žvýkání logistické regrese, přičemž Žvýkání logistické regrese bychom udržovali konstantní. Pak bychom viděli, že graf závislosti Žvýkání logistické regrese od Žvýkání logistické regrese vykazuje více či méně přímou čáru procházející počátkem souřadnic. Řekli jsme „více či méně“, protože ačkoli je závislost skutečně přesná, naše měření mohou obsahovat malé chyby, a proto body na grafu možná nebudou na čáře, ale budou kolem ní náhodně rozptýlené.

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

Žvýkání logistické regrese

Kód pro vykreslení 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 = 'Skutečné výsledky')
plt.xlabel('I', size = 16)
plt.ylabel('U', size = 16)
plt.legend(prop = {'size': 14})
plt.show()

02. Nezbytnost transformací rovnice lineární regrese

Podívejme se na další příklad. Představme si, že pracujeme v bance a máme za úkol určit pravděpodobnost vrácení úvěru dlužníkem v závislosti na některých faktorech. Pro zjednodušení úkolu zvažme pouze dva faktory: měsíční plat dlužníka a měsíční výši splátky úvěru.

Úkol je velmi hypotetický, ale na tomto příkladu pochopíme, proč k jeho vyřešení nestačí použít funkce lineární regrese, a také se dozvíme, které transformace s funkcí je třeba provést.

Vracíme se k příkladu. Je jasné, že čím vyšší je mzda, tím více může dlužník měsíčně směřovat na splácení úvěru. Přitom pro určité rozmezí mezd bude tato závislost zcela lineární. Například vezmeme rozpětí mezd od 60,000 Kč do 200,000 Kč a předpokládáme, že v uvedeném rozpětí mezd je závislost velikosti měsíční splátky na velikosti mzdy lineární. Předpokládejme, že bylo zjištěno, že poměr mzdy k platbě nemůže klesnout pod 3 a dlužníkovi by mělo zůstat alespoň 5,000 Kč. A pouze v takovém případě budeme považovat, že dlužník splatí úvěr bance. Pak bude rovnice lineární regrese mít tuto podobu:

Ž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 — mzda Žvýkání logistické regrese-ého dlužníka, Žvýkání logistické regrese — splátka úvěru Žvýkání logistické regrese-ého dlužníka.

Dosazením mzdy a splátky úvěru s pevnými parametry Žvýkání logistické regrese můžeme rozhodnout o poskytnutí či zamítnutí úvěru.

Předbíháme, ale poznamenáme, že za daných parametrů Žvýkání logistické regrese funkce lineární regrese, aplikovaná v logistické regresi bude vykazovat vysoké hodnoty, které ztíží výpočty pro určení pravděpodobností splácení úvěru. Proto navrhujeme snížit naše koeficienty, řekněme o 25,000 krát. Tato transformace v koeficientech nezmění rozhodnutí o poskytnutí úvěru. Zapamatujme si tento moment do budoucna, a nyní, aby bylo ještě jasnější, o čem je řeč, zvažme 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 vytvoření tabulky

import pandas as pd

r = 25000.0
w_0 = -5000.0/r
w_1 = 1.0/r
w_2 = -3.0/r

data = {'Dlužník':np.array(['Vasya', 'Fedya', 'Lesha']), 
        'Mzda':np.array([120000,180000,210000]),
       'Splátka':np.array([3000,50000,70000])}

df = pd.DataFrame(data)

df['f(w,x)'] = w_0 + df['Mzda']*w_1 + df['Splátka']*w_2

decision = []
for i in df['f(w,x)']:
    if i > 0:
        dec = 'Schváleno'
        decision.append(dec)
    else:
        dec = 'Odmítnuto'
        decision.append(dec)
        
df['Rozhodnutí'] = decision

df[['Dlužník', 'Mzda', 'Splátka', 'f(w,x)', 'Rozhodnutí']]

Podle údajů v tabulce, Vasya se mzdu 120,000 Kč chce získat takový úvěr, aby mohl měsíčně splácet 3,000 Kč. Bylo určeno, že pro schválení úvěru musí být výše mzdy Vasya trojnásobně vyšší než výše splátky, a také mu musí zbýt 5,000 Kč. Tuto podmínku Vasya splňuje: Žvýkání logistické regrese. Zůstává dokonce 106.000 Kč. I když jsme při výpočtu Žvýkání logistické regrese snížili koeficienty Žvýkání logistické regrese 25.000krát, výsledky jsou stejné — úvěr může být schválen. Fedia také dostane úvěr, ale Alexej, přestože vydělává nejvíc, si bude muset zmírnit své požadavky.

Nakreslíme graf pro tuto příležitost.

Graf 2 „Klasifikace dlužníků“

Žvýkání logistické regrese

Kód pro vykreslení 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 = 'Rozhodnutí - Úvěr schválen')
plt.plot(df[df['Decision'] == 'Refusal']['Salary'], df[df['Decision'] == 'Refusal']['Payment'], 's', color = 'red', markersize = 12, label = 'Rozhodnutí - Úvěr odmítnut')
plt.xlabel('Plat', size = 16)
plt.ylabel('Platba', size = 16)
plt.legend(prop = {'size': 14})
plt.show()

Takže naše přímka, postavená dle funkce Žvýkání logistické regrese, odděluje „špatné“ dlužníky od „dobrých“. Ti dlužníci, jejichž přání se neshodují s možnostmi, jsou nad přímkou (Alexej), ti, kteří podle parametrů našeho modelu mohou splatit úvěr, jsou pod přímkou (Václav a Fedia). Jinak řečeno, naše přímka rozděluje dlužníky do dvou tříd. Označíme je následovně: do třídy Žvýkání logistické regrese zařadíme ty dlužníky, kteří pravděpodobně splatí úvěr, do třídy Žvýkání logistické regrese nebo Žvýkání logistické regrese zařadíme ty dlužníky, kteří pravděpodobně nebudou schopni splatit úvěr.

Shrneme závěry z tohoto jednoduchého příkladu. Vezmeme bod Žvýkání logistické regrese a dosazením souřadnic bodu do příslušné rovnice přímky Žvýkání logistické regrese, prozkoumáme tři varianty:

  1. Pokud se bod nachází pod přímkou a my ho zařadíme do třídy Žvýkání logistické regrese, pak hodnota funkce Žvýkání logistické regrese bude kladná z Žvýkání logistické regrese do Žvýkání logistické regrese. Tedy můžeme považovat, že pravděpodobnost splácení úvěru se nachází v rozmezí Žvýkání logistické regrese. Čím větší je hodnota funkce, tím vyšší je pravděpodobnost.
  2. Pokud se bod nachází nad přímkou a my ho zařadíme do třídy Žvýkání logistické regrese nebo Žvýkání logistické regrese, pak hodnota funkce bude záporná z Žvýkání logistické regrese do Žvýkání logistické regrese. Pak budeme považovat, že pravděpodobnost splácení úvěru se nachází v rozmezí Žvýkání logistické regrese a čím větší je absolutní hodnota funkce, tím větší je naše jistota.
  3. Bod se nachází na přímce, na hranici mezi dvěma třídami. V takovém případě bude hodnota funkce Žvýkání logistické regrese rovna Žvýkání logistické regrese a pravděpodobnost splácení úvěru je rovna Žvýkání logistické regrese.

Nyní si představme, že máme ne dva faktory, ale desítky, dlužníků ne tři, ale tisíce. Pak místo přímky budeme mít m-rozměrná rovina a koeficienty Žvýkání logistické regrese budeme brát nikoli z ničeho, ale budeme je odvodit podle všech pravidel, a to na základě nasbíraných údajů o dlužnících, kteří splatili nebo nesplatili úvěr. A skutečně, uvědomte si, nyní vybíráme dlužníky na základě již známých koeficientů. Žvýkání logistické regrese. Ve skutečnosti úkolem modelu logistické regrese je určit parametry Žvýkání logistické regrese, při kterých se hodnota ztrátové funkce Logistic Loss snaží minimalizovat. O tom, jak se počítá vektor Žvýkání logistické regrese, se ještě dozvíme v 5. části článku. A zatím se vraťme na zaslíbenou zem — k našemu bankéři a třem jeho klientům.

Díky funkci Žvýkání logistické regrese víme, komu můžeme poskytnout úvěr, a komu je třeba odmítnout. Ale s takovými informacemi se k řediteli jít nedá, protože chtěli získat pravděpodobnost splacení úvěru pro každého dlužníka. Co dělat? Odpověď je jednoduchá — musíme nějak přeformulovat funkci Žvýkání logistické regrese, jejíž hodnoty leží v rozmezí Žvýkání logistické regrese na funkci, jejíž hodnoty budou ležet v rozmezí Žvýkání logistické regrese. A taková funkce existuje, nazývá se logistickou odpovědní funkcí nebo inverzním logitovým převodem. Seznamte se:

Žvýkání logistické regrese

Podívejme se krok za krokem, jak vzniká logistická odpovědní funkce. Všimněme si, že budeme kráčet zpět, tj. předpokládáme, že známe hodnotu pravděpodobnosti, která leží v rozmezí Žvýkání logistické regrese do Žvýkání logistické regrese , a potom budeme "rozkrývat" tuto hodnotu na celé oblasti čísel od Žvýkání logistické regrese do Žvýkání logistické regrese.

03. Vytváříme logistickou odpovědní funkci

Krok 1. Převedeme hodnoty pravděpodobnosti do rozmezí Žvýkání logistické regrese

Na dobu transformace funkce Žvýkání logistické regrese v funkce logistické odezvy Žvýkání logistické regrese zanecháme na pokoji našeho úvěrového analytika, a místo toho se podíváme na sázkové kanceláře. Ne, samozřejmě, nesázíme, vše, co nás tam zajímá, je smysl výrazu, například šance 4 k 1. Šance, které jsou známé všem hráčům, kteří sází, jsou poměrem "úspěchů" k "neúspěchům". Z pohledu pravděpodobnosti jsou šance pravděpodobností výskytu události dělenou pravděpodobností, že k události nedojde. Zapišme vzorec pro šanci 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 NE výskytu události

Například, pokud je pravděpodobnost, že mladý, silný a hbitý kůň přezdívaný "Větrník" předběhne ve závodech starou a ochablou babičku jménem "Matilda", rovna Žvýkání logistické regrese, šance na úspěch „Veterka“ tedy budou Žvýkání logistické regrese k Žvýkání logistické regrese Žvýkání logistické regrese a naopak, pokud známe šance, nebude pro nás problém vypočítat pravděpodobnost Žvýkání logistické regrese:

Žvýkání logistické regrese

Tímto jsme se naučili „převádět“ pravděpodobnost na šance, které nabývají hodnot od Žvýkání logistické regrese do Žvýkání logistické regrese. Udělejme ještě jeden krok a naučíme se „převádět“ pravděpodobnost na celou číslicovou přímku od Žvýkání logistické regrese do Žvýkání logistické regrese.

Krok 2. Převodíme hodnoty pravděpodobnosti do rozsahu Žvýkání logistické regrese

Tento krok je velmi jednoduchý - zlogaritmujeme šance na základě čísla Euler Žvýkání logistické regrese a dostaneme:

Žvýkání logistické regrese

Nyní víme, že pokud Žvýkání logistické regrese, pak vypočítání hodnoty Žvýkání logistické regrese bude velmi snadné a navíc by mělo být kladné: Žvýkání logistické regrese. Odpovídá tomu.

Pro zajímavost zkontrolujeme, že pokud Žvýkání logistické regrese, pak očekáváme, že uvidíme zápornou hodnotu Žvýkání logistické regrese. Kontrolujeme: Žvýkání logistické regrese. Vše je v pořádku.

Nyní víme, jak převést hodnotu pravděpodobnosti od Žvýkání logistické regrese do Žvýkání logistické regrese na celou číslicovou přímku od Žvýkání logistické regrese do Žvýkání logistické regrese. V následujícím kroku uděláme přesně opak.

A zatím si poznamenejme, že podle pravidel logaritmování, pokud známe hodnotu funkce Žvýkání logistické regrese, lze vypočítat šance:

Žvýkání logistické regrese

Tento způsob určení šancí nám přijde vhod v následujícím kroku.

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

Takže jsme se naučili, že známe Žvýkání logistické regrese, nacházet hodnoty funkce Žvýkání logistické regrese. Ve skutečnosti však potřebujeme všechny právě opačně - znát hodnotu Žvýkání logistické regrese najít Žvýkání logistické regrese. K tomu se obrátíme na takový pojem jako inverzní funkce šancí, podle které:

Žvýkání logistické regrese

V článku nebudeme odvozovat výše uvedený vzorec, ale otestujeme na číslech z výše uvedeného příkladu. Víme, že při šancích rovných 4 k 1 (Žvýkání logistické regrese), pravděpodobnost nastání události je rovna 0.8 (Žvýkání logistické regrese). Uděláme substituci: Žvýkání logistické regrese. To odpovídá našim výpočtům provedeným dříve. Pokračujeme dále.

V předchozím kroku jsme odvodili, že Žvýkání logistické regrese, a tedy lze provést substituci v inverzní funkci šancí. Dostaneme:

Žvýkání logistické regrese

Rozdělíme jak čitatel, tak jmenovatel na Žvýkání logistické regrese, pak:

Žvýkání logistické regrese

Pro všechny případy, 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 určili, že Žvýkání logistické regrese. Pak, pokud dosadíme hodnotu Žvýkání logistické regrese do funkce logistické odezvy, očekáváme, že dostaneme Žvýkání logistické regrese. Dosazujeme a dostáváme: Žvýkání logistické regrese

Gratuluji vám, vážený čtenáři, právě jsme odvodili a otestovali funkci logistické odezvy. Podívejme se na graf této funkce.

Graf 3 „Funkce logistické odezvy“

Žvýkání logistické regrese

Kód pro vykreslení 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 se také můžete setkat s názvem této funkce jako sigmoidní funkce. Z grafu je zřejmé, že hlavní změna pravděpodobnosti příslušnosti objektu k třídě probíhá v relativně malém rozsahu Žvýkání logistické regrese, někde od Žvýkání logistické regrese do Žvýkání logistické regrese.

Navrhuji se vrátit k našemu úvěrovému analytikovi a pomoci mu s výpočtem pravděpodobnosti splacení úvěrů, jinak riskuje, že zůstane bez prémie 🙂

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

Žvýkání logistické regrese

Kód pro vytvoření 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']]

Takže pravděpodobnost vrácení úvěru jsme určili. Celkově to vypadá jako pravda.

Opravdu, pravděpodobnost, že Vašek při platu 120.000 Kč bude moci měsíčně splácet 3.000 Kč bance, se blíží 100%. Mimochodem, musíme si uvědomit, že banka může poskytnout úvěr i Leškovi, pokud je v politice banky stanoveno, že například úvěrují klienty s pravděpodobností vrácení úvěru přes 0,3. V tomto případě si banka vytvoří větší rezervy na možné ztráty.

Je také třeba poznamenat, že poměr platu k platbě nejméně 3 a s rezervou 5.000 Kč byl vzat z prstu. Proto jsme nemohli použít v původní podobě vektor vah Žvýkání logistické regrese. Bylo nutné výrazně snížit koeficienty, a proto jsme každý koeficient rozdělili na 25.000, tedy v podstatě jsme upravili výsledek. To bylo provedeno záměrně, aby se usnadnilo pochopení materiálu v úvodní fázi. V reálném životě však budeme muset koeficienty skutečně hledat a nikoli si je vymýšlet. Právě v následujících částech článku odvodíme rovnice, pomocí kterých se vybírají parametry Žvýkání logistické regrese.

04. Metoda nejmenších čtverců při určování vektoru vah Žvýkání logistické regrese ve funkci logistické odpovědi

Tato metoda výběru vektoru vah nám již byla známa Žvýkání logistické regrese, jako metoda nejmenších čtverců (MNK) a vlastně, proč bychom ji nemohli použít v úlohách binární klasifikace? Opravdu, nic nebrání použití MNK, jenže tento způsob v úlohách klasifikace poskytuje méně přesné výsledky než Logistic LossTomu je teoretické zdůvodnění. Pojďme se nejprve podívat na jeden jednoduchý příklad.

Předpokládejme, že naše modely (používající MSE a Logistic Loss) již začaly optimalizaci vektoru váh Žvýkání logistické regrese a my jsme zastavili výpočet v nějakém kroku. Nezáleží na tom, zda v polovině, na konci nebo na začátku, hlavní je, že už máme nějaké hodnoty vektoru váh a předpokládejme, že v tomto kroku, vektory váh Žvýkání logistické regrese pro oba modely nemají rozdíly. Pak vezmeme získané váhy a použijeme je v funkce logistické odezvy (Žvýkání logistické regrese) pro nějaký objekt, který patří do třídy Žvýkání logistické regrese. Prozkoumejme dva případy, kdy podle optimalizovaného vektoru váh naše model značně chybí a naopak — model je velmi přesvědčen, že objekt patří do třídy Žvýkání logistické regrese. Podíváme se, jaké penalizace budou "uděleny" při použití MNK a Logistic Loss.

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

# класс объекта
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 s hrubou chybou — model přiřazuje objekt k třídě Žvýkání logistické regrese s pravděpodobností 0,01

Penalizace při použití MNK bude:
Žvýkání logistické regrese

Penalizace při použití Logistic Loss bude:
Žvýkání logistické regrese

Případ s silnou jistotou — model přiřazuje objekt k třídě Žvýkání logistické regrese s pravděpodobností 0,99

Penalizace při použití MNK bude:
Žvýkání logistické regrese

Penalizace při použití Logistic Loss bude:
Žvýkání logistické regrese

Tento příklad dobře ilustruje, že při hrubé chybě funkce ztrát Log Loss penalizuje model výrazně silněji než MSE. Nyní si pojďme objasnit, jaké jsou teoretické předpoklady pro použití funkce ztrát Log Loss v úlohách klasifikace.

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 další příklad a staré známé — bankovní dlužníci: Vaša, Fedia a Leša.

Na každém kroku, před tím, než rozvineme příklad, připomenu, že v životě máme na starosti tréninkovou vzorku z tisíců nebo milionů objektů s desítkami nebo stovkami znaků. Avšak zde jsou čísla zvolena tak, aby se snadno vešla do hlavy začínajícího datového vědce.

Vrátíme se k příkladu. Představme si, že ředitel banky se rozhodl poskytnout půjčku všem potřebným, i když algoritmus naznačoval, že by ji neměl poskytnout Alexovi. A tak uplynul dostatečný čas a dozvěděli jsme se, kdo ze tří hrdinů půjčku splatil a kdo ne. Což jsme očekávali: Vašek a Franta půjčku splatili, ale Alex ne. Nyní si představme, že tento výsledek bude pro nás novou tréninkovou sadou a přitom máme, jako by, všechny údaje o faktorech ovlivňujících pravděpodobnost splácení půjčky (plat dlužníka, výše měsíční splátky) jakoby zmizelé. Intuitivně bychom tedy mohli předpokládat, že každý třetí dlužník nevrací půjčku bance, jinými slovy pravděpodobnost, že další dlužník vrátí půjčku, je Žvýkání logistické regrese. Tomuto intuitivnímu předpokladu je teoretické potvrzení a zakládá se na metodě maximální věrohodnosti, v literatuře se často nazývá principem maximální věrohodnosti.

Na začátek se seznámíme s pojmovým aparátem.

Věrohodnost vzorku je pravděpodobnost získání právě takového vzorku, získání právě takových pozorování / výsledků, tj. součin pravděpodobností získání každého jednotlivého výsledku vzorku (například splácení nebo nesplácení půjčky Vaškem, Frantou a Alexem současně).

Funkce věrohodnosti spojišťuje věrohodnost vzorku s hodnotami parametrů rozdělení.

V našem případě tréninkový vzorek představuje zobecněnou Bernoulliho schéma, ve které náhodná veličina nabývá pouze dvou hodnot: Žvýkání logistické regrese nebo Žvýkání logistické regrese. Proto lze věrohodnost vzorku zapsat jako funkci věrohodnosti ohledně parametru Žvýkání logistické regrese následujícím způsobem:

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

Výše uvedený zápis lze interpretovat takto. Společná pravděpodobnost toho, že Vašek a Franta splatí půjčku, je rovna Žvýkání logistické regrese, pravděpodobnost, že Alex půjčku NESPLATÍ, je rovna Žvýkání logistické regrese (protože skutečně došlo k NESPLACENÍ půjčky), proto společná pravděpodobnost všech tří událostí je rovna Žvýkání logistické regrese.

Metoda maximální věrohodnosti je metodou odhadu neznámého parametru pomocí maximalizace funkce věrohodnosti. V našem případě je nutné najít takovou hodnotu Žvýkání logistické regrese, při které Žvýkání logistické regrese dosahuje maxima.

Odkud vlastně pochází myšlenka hledat hodnotu neznámého parametru, při které dosahuje pravděpodobnostní funkce maxima? Kořeny této myšlenky pramení z přesvědčení, že vzorek je jediným dostupným zdrojem znalostí o základním souboru. Vše, co víme o základním souboru, je prezentováno ve vzorku. Proto vše, co můžeme říci, je, že vzorek je nejpřesnější odraz základního souboru, který máme k dispozici. Takže potřebujeme najít takový parametr, při kterém se existující vzorek stává nejpravděpodobnějším.

Je zřejmé, že čelíme optimalizační úloze, ve které je třeba najít bod extrému funkce. Pro nalezení bodu extrému je nutné zvážit podmínku prvního řádu, tedy srovnat derivaci funkce s nulou a vyřešit rovnici vůči hledanému parametru. Nicméně hledání derivace výrobku velkého počtu faktorů může být zdlouhavé, takže k tomu existuje zvláštní metoda — přechod k logaritmu. funkce věrohodnosti. Proč je takový přechod možný? Všimněme si, že nehledáme samotný extrém funkceŽvýkání logistické regrese, ale bod extrému, tedy tu hodnotu neznámého parametru Žvýkání logistické regrese, při které Žvýkání logistické regrese která dosahuje maxima. Při přechodu k logaritmu se bod extrému nemění (i když samotný extrém se bude lišit), protože logaritmus je monotónní funkce.

Pojďme tedy, v souladu s výše uvedeným, pokračovat v rozvíjení našeho příkladu s půjčkami u Vaši, Fedy a Leši. Nejprve přejdeme k logaritmu pravděpodobnostní funkce:

Žvýkání logistické regrese

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

Žvýkání logistické regrese

A konečně, zvažme podmínku prvního řádu — srovnáme derivaci funkce s nulou:

Žvýkání logistické regrese

Tím pádem naše intuitivní ocenění pravděpodobnosti splacení půjčky Žvýkání logistické regrese bylo teoreticky podloženo.

Skvěle, ale co teď s takovými informacemi? Pokud budeme předpokládat, že každý třetí dlužník nevrátí bance peníze, pak banka nevyhnutelně zkrachuje. To je sice pravda, ale při ocenění pravděpodobnosti splacení půjčky jako jedné ze tří Žvýkání logistické regrese Nepřihlédli jsme k faktorům ovlivňujícím splácení úvěru: mzda dlužníka a výše měsíční splátky. Připomeňme, že jsme dříve spočítali pravděpodobnost splácení úvěru od každého klienta s ohledem na tyto faktory. Je logické, že pravděpodobnosti se ukázaly jako odlišné od konstanty rovné Žvýkání logistické regrese.

Určeme pravděpodobnost vzorků:

Kód pro výpočty pravděpodobností vzorků

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 'Pravděpodobnost vzorku při konstantní hodnotě p=2/3:', round(likelihood(y,p_const),3)

print '****************************************************************************************************'

print 'Pravděpodobnost vzorku při vypočítané hodnotě 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

Pravděpodobnost vzorku při výpočtu pravděpodobnosti splácení úvěru s ohledem na faktory Žvýkání logistické regrese:

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

Pravděpodobnost vzorku s pravděpodobností vypočítanou na základě faktorů byla vyšší než pravděpodobnost při konstantní hodnotě pravděpodobnosti. Co to znamená? Znamená to, že znalosti o faktorech umožnily lépe přizpůsobit pravděpodobnost splácení úvěru pro každého klienta. Proto by při půjčování dalšího úvěru bylo správnější použít model hodnocení pravděpodobnosti splácení dluhu, který byl navržen na konci 3. části článku.

Ale pokud potřebujeme maximalizovat funkci pravděpodobnosti vzorku, proč tedy nepoužít nějaký algoritmus, který by vám vykázal pravděpodobnosti pro Vašu, Fedu a Lešu, například rovné 0.99, 0.99 a 0.01. Možná se takový algoritmus dobře osvědčí na trénovací sadě, protože přiblíží hodnotu pravděpodobnosti vzorku k Žvýkání logistické regrese, ale za prvé, takový algoritmus pravděpodobně narazí na problémy s generalizací, a za druhé, tento algoritmus určitě nebude lineární. A pokud metody boje proti přeúčení (tedy slabá generalizační schopnost) jasně nejsou součástí plánu tohoto článku, pak bychom se k druhému bodu měli podívat podrobněji. K tomu stačí odpovědět na jednoduchou otázku. Může být pravděpodobnost splácení úvěru u Vaši a Fedy stejná s ohledem na nám známé faktory? Z hlediska zdravého rozumu samozřejmě nemůže, nemůže. Tak na splácení úvěru bude Vaša odvádět 2,5 % své mzdy měsíčně, zatímco Feda — téměř 27,8 %. Také v grafu 2 'Klasifikace klientů' vidíme, že Vaša je výrazně dál od linie, která odděluje třídy, než Feda. A nakonec víme, že funkce Žvýkání logistické regrese pro Vašu a Fedu přijímá různé hodnoty: 4,24 pro Vašu a 1,0 pro Fedu. Kdyby například Feda vydělával o řád více nebo si žádal o menší úvěr, pak by pravděpodobnosti splácení úvěru u Vaši a Fedy byly podobné. Jinými slovy, lineární závislost se nedá oklamat. A kdybychom skutečně spočítali koeficienty Žvýkání logistické regrese, a nebrali je z prstu, mohli bychom s jistotou prohlásit, že naše hodnoty Žvýkání logistické regrese nejlépe umožňují posoudit pravděpodobnost splácení úvěru každým dlužníkem, ale protože jsme se dohodli, že stanovení koeficientů Žvýkání logistické regrese bylo provedeno podle všech pravidel, budeme to tak považovat — naše koeficienty umožňují poskytnout nejlepší odhad pravděpodobnosti 🙂

Nicméně jsme se odvrátili. V této části se musíme vyjasnit, jak je určován vektor vah Žvýkání logistické regrese, který je nezbytný pro hodnocení pravděpodobnosti návratu úvěru každým dlužníkem.

Stručně shrnujeme, s jakým arzenálem vystupujeme na hledání koeficientů Žvýkání logistické regrese:

1. Předpokládáme, že závislost mezi cílovou proměnnou (predikovanou hodnotou) a faktorem, který ovlivňuje výsledek — je lineární. Z tohoto důvodu se používá funkce lineární regrese tvaru Žvýkání logistické regrese, jehož čára dělí objekty (klienty) na třídy Žvýkání logistické regrese a Žvýkání logistické regrese nebo Žvýkání logistické regrese (klienti schopní splatit úvěr a neschopní). V našem případě má rovnice tvar Žvýkání logistické regrese.

2. Používáme funkci inverzního logit-transformace tvaru Žvýkání logistické regrese pro určení pravděpodobnosti příslušnosti objektu k třídě Žvýkání logistické regrese.

3. Zvažujeme naši tréninkovou sadu jako realizaci generalizované Bernoulliho schémata, to znamená, že pro každý objekt se generuje náhodná veličina, která s pravděpodobností Žvýkání logistické regrese (svou pro každý objekt) nabývá hodnoty 1 a s pravděpodobností Žvýkání logistické regrese – 0.

4. Víme, že je potřeba maximalizovat funkci pravděpodobnosti vzorku s ohledem na přijaté faktory, aby byla stávající vzorka co nejpravděpodobnější. Jinými slovy, musíme nalézt takové parametry, při kterých bude vzorka nejpraviपodobnější. V našem případě hledaný parametr je pravděpodobnost splacení úvěru Žvýkání logistické regrese, která závisí na neznámých koeficientech Žvýkání logistické regrese. To znamená, že musíme najít takový vektor vah Žvýkání logistické regrese, při kterém bude pravděpodobnost vzorky maximální.

5. Víme, že pro maximalizaci funkce pravděpodobnosti vzorky může být použit metoda maximální věrohodnosti. A známe všechny chuťové triky pro práci s touto metodou.

Jedná se o takovou složitou situaci 🙂

A nyní si připomeňme, že na začátku článku jsme chtěli odvodit dva typy funkce ztrát Logistic Loss v závislosti na tom, jak jsou třídy objektů označeny. V klasifikačních úlohách se dvěma třídami se třídy označují jako Žvýkání logistické regrese a Žvýkání logistické regrese nebo Žvýkání logistické regrese. V závislosti na označení bude vygenerována odpovídající funkce ztrát.

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

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

Žvýkání logistické regrese

Ve skutečnosti Žvýkání logistické regrese — to je hodnota funkce logistické odezvy Žvýkání logistické regrese při daném vektoru vah Žvýkání logistické regrese

Pak nás nic nebrání zapsat funkci pravděpodobnosti vzorky takto:

Žvýkání logistické regrese

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

1. Pokud Žvýkání logistické regrese (tj. podle tréninkového vzorku objekt patří do třídy +1), a náš algoritmus Žvýkání logistické regrese určuje pravděpodobnost přiřazení objektu do třídy Žvýkání logistické regrese rovnou 0.9, tak tento kousek pravděpodobnosti vzorky se vypočítá takto:

Žvýkání logistické regrese

2. Pokud Žvýkání logistické regrese, a Žvýkání logistické regrese, pak bude výpočet takový:

Žvýkání logistické regrese

3. Pokud Žvýkání logistické regrese, a Žvýkání logistické regrese, pak bude výpočet takový:

Žvýkání logistické regrese

4. Pokud Žvýkání logistické regrese, a Žvýkání logistické regrese, pak bude výpočet takový:

Žvýkání logistické regrese

Je zřejmé, že funkce pravděpodobnosti bude maximalizována v případech 1 a 3, nebo obecně při správně uhádnutých hodnotách pravděpodobnosti přiřazení objektu do třídy Žvýkání logistické regrese.

Vzhledem k tomu, že při určení pravděpodobnosti přiřazení objektu do třídy Žvýkání logistické regrese neznáme pouze koeficienty Žvýkání logistické regrese, tak je budeme hledat. Jak již bylo řečeno, jedná se o problematiku optimalizace, kde nejprve potřebujeme najít derivaci funkce pravděpodobnosti podle vektoru vah Žvýkání logistické regrese. Přesto má smysl nejprve si úlohu zjednodušit: derivaci budeme hledat od logaritmu funkce věrohodnosti.

Žvýkání logistické regrese

Proč po logaritmizaci, v funkci logistické chyby, jsme změnili znaménko s Žvýkání logistické regrese na Žvýkání logistické regrese. To je jednoduché, protože v úlohách hodnocení kvality modelu je obvyklé minimalizovat hodnotu funkce, proto jsme pravou stranu výrazu vynásobili Žvýkání logistické regrese a nyní místo maximalizace minimalizujeme funkci.

Vlastně, právě na vašich očích byla obtížně odvozena ztrátová funkce — Logistic Loss pro tréninkovou sadu se dvěma třídami: Žvýkání logistické regrese a Žvýkání logistické regrese.

Nyní, pro nalezení koeficientů, nám stačí najít derivaci funkci logistické chyby a dále, pomocí numerických optimalizačních metod, jako je gradientní sestup nebo stochastický gradientní sestup, vyladit nejoptimálnější koeficienty Žvýkání logistické regrese. Ale s ohledem na již nemalý objem článku se navrhuje provést diferenciaci samostatně, nebo možná to bude téma pro další článek s větším množstvím aritmetiky bez tak podrobných příkladů.

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

Přístup zde bude stejný jako u tříd Žvýkání logistické regrese a Žvýkání logistické regrese, ale sama cesta k odvození ztrátové funkce Logistic Loss, bude složitější. Začneme. Pro funkci pravděpodobnosti použijeme operátor „pokud…, pak…“. To znamená, že pokud Žvýkání logistické regrese-ý objekt patří k třídě Žvýkání logistické regrese, pro výpočet pravděpodobnosti vzorku použijeme pravděpodobnost Žvýkání logistické regrese, pokud objekt patří k třídě Žvýkání logistické regrese, do pravděpodobnosti dosadíme Žvýkání logistické regrese. Takto vypadá funkce pravděpodobnosti:

Žvýkání logistické regrese

Vysvětlíme si to na prstech. Zvažme 4 případy:

1. Pokud Žvýkání logistické regrese a Žvýkání logistické regrese, pak do pravděpodobnosti vzorku „půjde“ Žvýkání logistické regrese

2. Pokud Žvýkání logistické regrese a Žvýkání logistické regrese, pak do pravděpodobnosti vzorku „půjde“ Žvýkání logistické regrese

3. Pokud Žvýkání logistické regrese a Žvýkání logistické regrese, pak do pravděpodobnosti vzorku „půjde“ Žvýkání logistické regrese

4. Pokud Žvýkání logistické regrese a Žvýkání logistické regrese, pak do pravděpodobnosti vzorku „půjde“ Žvýkání logistické regrese

Je zřejmé, že v 1. a 3. případě, kdy byly pravděpodobnosti správně určeny algoritmem, funkce pravděpodobnosti bude maximalizována, to znamená, že přesně to jsme chtěli získat. Nicméně, tento přístup je dost nepraktický a nyní se podíváme na kompaktnější zápis. Ale nejprve logaritmizujeme funkci pravděpodobnosti se změnou znaménka, protože nyní ji budeme minimalizovat.

Žvýkání logistické regrese

Dosadíme místo Žvýkání logistické regrese výraz Žvýkání logistické regrese:

Žvýkání logistické regrese

Zjednodušíme pravý člen pod logaritmem pomocí jednoduchých aritmetických metod a získáme:

Žvýkání logistické regrese

A nyní nastal čas zbavit se operátoru „pokud…, pak…“. Všimněme 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 se umocňuje Žvýkání logistické regrese, pokud objekt patří k třídě Žvýkání logistické regrese, takže $e$ se umocňuje Žvýkání logistické regrese. Proto lze zápis exponentu zjednodušit - sloučit oba případy do jednoho: Žvýkání logistické regrese. Pak funkce logistické chyby bude mít tvar:

Žvýkání logistické regrese

Podle pravidel logaritmování převrátíme zlomky a vyvedeme znak "Žvýkání logistické regrese" (mínus) za logaritmus, dostaneme:

Žvýkání logistické regrese

Před vámi je funkce ztráty logistic Loss, která se používá v tréninkovém souboru s objekty patřícími do tříd: Žvýkání logistické regrese a Žvýkání logistické regrese.

Což je v této chvíli vše, sbohem a končíme článek.

Žvýkání logistické regrese Předchozí práce autora - „Převádíme rovnici lineární regrese do maticového tvaru“

Doplňkové materiály

1. Literatura

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

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

3) Teorie pravděpodobnosti / N. I. Černova — Novosibirsk: Novosibirská státní univerzita, 2007

4) Podniková analytika: od dat k vědomostem / Paklin N. B., Oreškov V. I. — 2. vyd. — Petrohrad: Piter, 2013

5) Data Science věda o datech od nuly / Joel Grasz — Petrohrad: BHV Petersburg, 2017

6) Praktická statistika 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 Demešev

2) Metoda maximální pravděpodobnosti v nepřetržitém případě, Boris Demešev

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

4) Přednáška 4, Evgeny Sokolov (od 47. minuty videa)

5) Logistická regrese, Vjačeslav Voroncov

3. Internetové zdroje

1) Lineární modely klasifikace a regrese

2) Jak snadno pochopit logistickou regresi

3) Logistická funkce chyby

4) Nezávislé pokusy a Bernoulliho vzorec

5) Balada o MMP

6) Metoda maximální věrohodnosti

7) Vzorce a vlastnosti logaritmů

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

9) Lineární klasifikátor

Zdroj: habr.com

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster