Žuvanie logistickej regresie

Žuvanie logistickej regresie

V tomto článku rozoberieme teoretické výpočty transformácie lineárne regresné funkcie в inverzná logitová transformačná funkcia (inak nazývaná funkcia logistickej odozvy). Potom pomocou arzenálu metóda maximálnej pravdepodobnosti, v súlade s modelom logistickej regresie odvodíme stratovú funkciu Logistická strata, alebo inak povedané, zadefinujeme funkciu, pomocou ktorej sa vyberajú parametre váhového vektora v logistickom regresnom modeli Žuvanie logistickej regresie.

Náčrt článku:

  1. Zopakujme si lineárny vzťah medzi dvoma premennými
  2. Identifikujme potrebu transformácie lineárne regresné funkcie Žuvanie logistickej regresie в funkcia logistickej odozvy Žuvanie logistickej regresie
  3. Vykonajte transformácie a výstup funkcia logistickej odozvy
  4. Skúsme pochopiť, prečo je metóda najmenších štvorcov zlá pri výbere parametrov Žuvanie logistickej regresie функции Logistická strata
  5. Používame metóda maximálnej pravdepodobnosti na určenie funkcie výberu parametrov Žuvanie logistickej regresie:

    5.1. Prípad 1: funkcia Logistická strata pre objekty s označením triedy 0 и 1:

    Žuvanie logistickej regresie

    5.2. Prípad 2: funkcia Logistická strata pre objekty s označením triedy -1 и +1:

    Žuvanie logistickej regresie


Článok je plný jednoduchých príkladov, v ktorých sa všetky výpočty dajú ľahko urobiť ústne alebo na papieri; v niektorých prípadoch môže byť potrebná kalkulačka. Tak sa priprav :)

Tento článok je primárne určený pre dátových vedcov s počiatočnou úrovňou znalostí základov strojového učenia.

V článku nájdete aj kód na kreslenie grafov a výpočty. Celý kód je napísaný v jazyku python 2.7. Dovoľte mi vopred vysvetliť „novosť“ použitej verzie - to je jedna z podmienok absolvovania známeho kurzu z Yandex na rovnako známej online vzdelávacej platforme Courseraa ako by sa dalo predpokladať, materiál bol pripravený na základe tohto kurzu.

01. Priama závislosť

Je celkom rozumné položiť si otázku – čo s tým má spoločné lineárna závislosť a logistická regresia?

Je to jednoduché! Logistická regresia je jedným z modelov, ktoré patria do lineárneho klasifikátora. Jednoducho povedané, úlohou lineárneho klasifikátora je predpovedať cieľové hodnoty Žuvanie logistickej regresie z premenných (regresorov) Žuvanie logistickej regresie. Predpokladá sa, že závislosť medzi charakteristikami Žuvanie logistickej regresie a cieľové hodnoty Žuvanie logistickej regresie lineárne. Odtiaľ pochádza názov klasifikátora - lineárny. Veľmi zhruba povedané, model logistickej regresie je založený na predpoklade, že medzi charakteristikami existuje lineárny vzťah Žuvanie logistickej regresie a cieľové hodnoty Žuvanie logistickej regresie. Toto je spojenie.

V ateliéri je prvý príklad a je to správne o priamočiarej závislosti skúmaných veličín. V procese prípravy článku som narazil na príklad, ktorý už dostal veľa ľudí na nervy - závislosť prúdu od napätia („Aplikovaná regresná analýza“, N. Draper, G. Smith). Pozrieme sa na to aj tu.

Podľa Ohmov zákon:

Žuvanie logistickej regresieKde Žuvanie logistickej regresie - sila prúdu, Žuvanie logistickej regresie - Napätie, Žuvanie logistickej regresie - odpor.

Keby sme nevedeli Ohmov zákon, potom by sme mohli empiricky nájsť závislosť zmenou Žuvanie logistickej regresie a meranie Žuvanie logistickej regresie, pričom podporuje Žuvanie logistickej regresie pevné. Potom by sme videli, že graf závislosti Žuvanie logistickej regresie od Žuvanie logistickej regresie dáva viac-menej priamku cez začiatok. Hovoríme „viac-menej“, pretože hoci je vzťah v skutočnosti presný, naše merania môžu obsahovať malé chyby, a preto body na grafe nemusia padnúť presne na čiaru, ale budú okolo nej náhodne rozptýlené.

Graf 1 „Závislosť“ Žuvanie logistickej regresie od Žuvanie logistickej regresie»

Žuvanie logistickej regresie

Kód výkresu 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. Potreba transformácie rovnice lineárnej regresie

Pozrime sa na ďalší príklad. Predstavme si, že pracujeme v banke a našou úlohou je určiť pravdepodobnosť, že dlžník splatí úver v závislosti od určitých faktorov. Aby sme túto úlohu zjednodušili, zvážime iba dva faktory: mesačný plat dlžníka a výšku mesačnej splátky úveru.

Úloha je veľmi podmienená, ale na tomto príklade môžeme pochopiť, prečo to nestačí použiť lineárne regresné funkcie, a tiež zistiť, aké transformácie je potrebné vykonať s funkciou.

Vráťme sa k príkladu. Rozumie sa, že čím vyšší je plat, tým viac bude môcť dlžník mesačne prideliť na splácanie úveru. Zároveň pri určitom platovom rozpätí bude tento vzťah pomerne lineárny. Vezmime si napríklad platový rozsah od 60.000 200.000 RUR do 3 5.000 RUR a predpokladajme, že v uvedenom platovom rozsahu je závislosť veľkosti mesačnej platby od veľkosti platu lineárna. Povedzme, že pre špecifikovaný rozsah miezd sa ukázalo, že pomer platu k platu nemôže klesnúť pod XNUMX a dlžník musí mať stále v rezerve XNUMX XNUMX RUR. A len v tomto prípade budeme predpokladať, že dlžník banke úver splatí. Potom bude mať rovnica lineárnej regresie tvar:

Žuvanie logistickej regresie

kde Žuvanie logistickej regresie, Žuvanie logistickej regresie, Žuvanie logistickej regresie, Žuvanie logistickej regresie - plat Žuvanie logistickej regresie- dlžník, Žuvanie logistickej regresie - splátka úveru Žuvanie logistickej regresie- dlžník.

Nahradenie mzdy a splátky úveru pevnými parametrami do rovnice Žuvanie logistickej regresie Môžete sa rozhodnúť, či pôžičku poskytnete alebo odmietnete.

Pri pohľade do budúcnosti si všimneme, že s danými parametrami Žuvanie logistickej regresie lineárna regresná funkcia, použité v funkcie logistickej odozvy vytvorí veľké hodnoty, ktoré skomplikujú výpočty na určenie pravdepodobnosti splatenia úveru. Preto sa navrhuje znížiť naše koeficienty, povedzme, 25.000 XNUMX-krát. Táto transformácia v koeficientoch nezmení rozhodnutie o poskytnutí úveru. Zapamätajme si tento bod do budúcnosti, ale teraz, aby bolo ešte jasnejšie, o čom hovoríme, zvážme situáciu s tromi potenciálnymi dlžníkmi.

Tabuľka 1 „Potenciálni dlžníci“

Žuvanie logistickej regresie

Kód na generovanie tabuľky

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 súlade s údajmi v tabuľke chce Vasya s platom 120.000 3.000 RUR dostať pôžičku, aby ju mohol splácať mesačne vo výške 5.000 XNUMX RUR. Rozhodli sme sa, že na schválenie pôžičky musí Vasyov plat presiahnuť trojnásobok sumy platby a stále musí zostať XNUMX XNUMX RUR. Vasya spĺňa túto požiadavku: Žuvanie logistickej regresie. Zostáva dokonca 106.000 XNUMX RUR. Napriek tomu, že pri výpočte Žuvanie logistickej regresie znížili sme šance Žuvanie logistickej regresie 25.000 XNUMX-krát, výsledok bol rovnaký – pôžička môže byť schválená. Fedya tiež dostane pôžičku, ale Lesha, napriek tomu, že dostáva najviac, bude musieť krotiť svoje chúťky.

Nakreslíme graf pre tento prípad.

Graf 2 „Klasifikácia dlžníkov“

Žuvanie logistickej regresie

Kód na kreslenie 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ša priamka, postavená v súlade s funkciou Žuvanie logistickej regresie, oddeľuje „zlých“ dlžníkov od „dobrých“. Tí dlžníci, ktorých túžby sa nezhodujú s ich schopnosťami, sú nad čiarou (Lesha), kým tí, ktorí sú podľa parametrov nášho modelu schopní splácať úver, sú pod čiarou (Vasya a Fedya). Inými slovami, môžeme povedať toto: naša priama línia rozdeľuje dlžníkov do dvoch tried. Označme ich takto: do triedy Žuvanie logistickej regresie Tých dlžníkov, ktorí budú s najväčšou pravdepodobnosťou splácať úver, zaradíme ako Žuvanie logistickej regresie alebo Žuvanie logistickej regresie Zahrnieme tých dlžníkov, ktorí s najväčšou pravdepodobnosťou nebudú schopní splácať úver.

Zhrňme si závery z tohto jednoduchého príkladu. Vezmime si bod Žuvanie logistickej regresie a dosadením súradníc bodu do zodpovedajúcej rovnice priamky Žuvanie logistickej regresie, zvážte tri možnosti:

  1. Ak je bod pod čiarou a priradíme ho triede Žuvanie logistickej regresie, potom hodnotu funkcie Žuvanie logistickej regresie bude pozitívny od Žuvanie logistickej regresie na Žuvanie logistickej regresie. To znamená, že môžeme predpokladať, že pravdepodobnosť splatenia úveru je v rámci Žuvanie logistickej regresie. Čím väčšia je funkčná hodnota, tým vyššia je pravdepodobnosť.
  2. Ak je bod nad čiarou a priradíme ho do triedy Žuvanie logistickej regresie alebo Žuvanie logistickej regresie, potom bude hodnota funkcie záporná od Žuvanie logistickej regresie na Žuvanie logistickej regresie. Potom budeme predpokladať, že pravdepodobnosť splatenia dlhu je v rámci Žuvanie logistickej regresie a čím väčšia je absolútna hodnota funkcie, tým vyššia je naša spoľahlivosť.
  3. Bod je na priamke, na hranici medzi dvoma triedami. V tomto prípade hodnota funkcie Žuvanie logistickej regresie budú rovné Žuvanie logistickej regresie a pravdepodobnosť splatenia úveru sa rovná Žuvanie logistickej regresie.

Teraz si predstavme, že nemáme dva faktory, ale desiatky, a nie tri, ale tisíce dlžníkov. Potom namiesto priamky budeme mať m-rozmerný rovina a koeficienty Žuvanie logistickej regresie nebudeme vytiahnutí zo vzduchu, ale odvodení podľa všetkých pravidiel a na základe nahromadených údajov o dlžníkoch, ktorí pôžičku splatili alebo nesplatili. A skutočne, všimnite si, že teraz vyberáme dlžníkov pomocou už známych koeficientov Žuvanie logistickej regresie. V skutočnosti je úlohou modelu logistickej regresie presne určiť parametre Žuvanie logistickej regresie, pri ktorej funguje hodnota straty Logistická strata bude mať tendenciu k minimu. Ale o tom, ako sa vypočíta vektor Žuvanie logistickej regresie, viac sa dozvieme v 5. sekcii článku. Medzitým sa vraciame do zasľúbenej zeme – k nášmu bankárovi a jeho trom klientom.

Vďaka funkcii Žuvanie logistickej regresie vieme, komu môže byť poskytnutá pôžička a komu treba odmietnuť. S takouto informáciou však nemôžete ísť za riaditeľom, pretože od nás chceli získať pravdepodobnosť splatenia pôžičky každým dlžníkom. Čo robiť? Odpoveď je jednoduchá – musíme funkciu nejako transformovať Žuvanie logistickej regresie, ktorého hodnoty ležia v rozmedzí Žuvanie logistickej regresie na funkciu, ktorej hodnoty budú ležať v rozsahu Žuvanie logistickej regresie. A takáto funkcia existuje, volá sa funkcia logistickej odozvy alebo inverzná logitová transformácia. Zoznámte sa:

Žuvanie logistickej regresie

Pozrime sa krok za krokom, ako to funguje funkcia logistickej odozvy. Všimnite si, že pôjdeme opačným smerom, t.j. budeme predpokladať, že poznáme hodnotu pravdepodobnosti, ktorá leží v rozmedzí od Žuvanie logistickej regresie na Žuvanie logistickej regresie a potom túto hodnotu „rozvinieme“ na celý rozsah čísel od Žuvanie logistickej regresie na Žuvanie logistickej regresie.

03. Odvodíme funkciu logistickej odozvy

Krok 1. Preveďte hodnoty pravdepodobnosti na rozsah Žuvanie logistickej regresie

Pri transformácii funkcie Žuvanie logistickej regresie в funkcia logistickej odozvy Žuvanie logistickej regresie Necháme nášho kreditného analytika na pokoji a namiesto toho sa vyberieme na prehliadku stávkových kancelárií. Nie, samozrejme, nebudeme uzatvárať stávky, všetko, čo nás tam zaujíma, je význam výrazu, napríklad šanca je 4 ku 1. Všetkým tipujúcim známym kurzom je pomer „úspechov“ k „ zlyhania“. Z hľadiska pravdepodobnosti sú šance pravdepodobnosťou výskytu udalosti vydelená pravdepodobnosťou, že udalosť nenastane. Zapíšme si vzorec pre pravdepodobnosť výskytu udalosti Žuvanie logistickej regresie:

Žuvanie logistickej regresie

Kde Žuvanie logistickej regresie - pravdepodobnosť výskytu udalosti, Žuvanie logistickej regresie — pravdepodobnosť, že udalosť nenastane

Napríklad, ak je pravdepodobnosť, že mladý, silný a hravý kôň prezývaný „Veterok“ na dostihoch porazí starú a ochabnutú starú ženu menom „Matilda“, rovná Žuvanie logistickej regresie, potom budú šance na úspech pre „Veterok“. Žuvanie logistickej regresie к Žuvanie logistickej regresie Žuvanie logistickej regresie a naopak, keď poznáme šance, nebude pre nás ťažké vypočítať pravdepodobnosť Žuvanie logistickej regresie:

Žuvanie logistickej regresie

Naučili sme sa teda „prekladať“ pravdepodobnosť na šance, ktoré nadobúdajú hodnoty Žuvanie logistickej regresie na Žuvanie logistickej regresie. Urobme ešte jeden krok a naučme sa „preložiť“ pravdepodobnosť na celú číselnú os z Žuvanie logistickej regresie na Žuvanie logistickej regresie.

Krok 2. Preveďte hodnoty pravdepodobnosti na rozsah Žuvanie logistickej regresie

Tento krok je veľmi jednoduchý – zoberme logaritmus pravdepodobnosti na základňu Eulerovho čísla Žuvanie logistickej regresie a dostaneme:

Žuvanie logistickej regresie

Teraz vieme, že ak Žuvanie logistickej regresie, potom vypočítajte hodnotu Žuvanie logistickej regresie bude veľmi jednoduché a navyše by malo byť pozitívne: Žuvanie logistickej regresie. Toto je pravda.

Zo zvedavosti si overíme, čo keby Žuvanie logistickej regresie, potom očakávame, že uvidíme zápornú hodnotu Žuvanie logistickej regresie. Kontrolujeme: Žuvanie logistickej regresie. To je správne.

Teraz vieme, ako previesť hodnotu pravdepodobnosti z Žuvanie logistickej regresie na Žuvanie logistickej regresie pozdĺž celého číselného radu od Žuvanie logistickej regresie na Žuvanie logistickej regresie. V ďalšom kroku urobíme opak.

Zatiaľ si všimneme, že v súlade s pravidlami logaritmu poznáme hodnotu funkcie Žuvanie logistickej regresie, môžete si vypočítať kurz:

Žuvanie logistickej regresie

Tento spôsob určenia kurzov sa nám bude hodiť v ďalšom kroku.

Krok 3. Poďme odvodiť vzorec na určenie Žuvanie logistickej regresie

Tak sme sa učili, vedeli Žuvanie logistickej regresie, nájdite hodnoty funkcií Žuvanie logistickej regresie. V skutočnosti však potrebujeme presný opak – poznať hodnotu Žuvanie logistickej regresie nájsť Žuvanie logistickej regresie. Aby sme to dosiahli, obráťme sa na taký koncept, ako je funkcia inverzných šancí, podľa ktorej:

Žuvanie logistickej regresie

V článku nebudeme odvodzovať vyššie uvedený vzorec, ale skontrolujeme ho pomocou čísel z vyššie uvedeného príkladu. Vieme, že s kurzom 4 ku 1 (Žuvanie logistickej regresie), pravdepodobnosť výskytu udalosti je 0.8 (Žuvanie logistickej regresie). Urobme náhradu: Žuvanie logistickej regresie. To sa zhoduje s našimi predchádzajúcimi výpočtami. Poďme ďalej.

V poslednom kroku sme to vydedukovali Žuvanie logistickej regresie, čo znamená, že môžete vykonať náhradu vo funkcii inverzných kurzov. Dostaneme:

Žuvanie logistickej regresie

Čitateľ aj menovateľ vydeľte Žuvanie logistickej regresie, Potom:

Žuvanie logistickej regresie

Pre každý prípad, aby sme sa uistili, že sme nikde neurobili chybu, urobíme ešte jednu malú kontrolu. V kroku 2 sme pre Žuvanie logistickej regresie to určil Žuvanie logistickej regresie. Potom nahraďte hodnotu Žuvanie logistickej regresie do funkcie logistickej odozvy, očakávame, že dostaneme Žuvanie logistickej regresie. Nahradíme a získame: Žuvanie logistickej regresie

Gratulujeme, milý čitateľ, práve sme odvodili a otestovali funkciu logistickej odozvy. Pozrime sa na graf funkcie.

Graf 3 „Funkcia logistickej odozvy“

Žuvanie logistickej regresie

Kód na kreslenie 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 literatúre môžete nájsť aj názov tejto funkcie ako sigmoidná funkcia. Graf jasne ukazuje, že hlavná zmena pravdepodobnosti objektu patriaceho do triedy nastáva v relatívne malom rozsahu Žuvanie logistickej regresie, odniekiaľ Žuvanie logistickej regresie na Žuvanie logistickej regresie.

Navrhujem vrátiť sa k nášmu úverovému analytikovi a pomôcť mu vypočítať pravdepodobnosť splatenia úveru, inak riskuje, že zostane bez bonusu :)

Tabuľka 2 „Potenciálni dlžníci“

Žuvanie logistickej regresie

Kód na generovanie tabuľky

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 sme určili pravdepodobnosť splatenia úveru. Vo všeobecnosti sa zdá, že je to pravda.

Pravdepodobnosť, že Vasya s platom 120.000 3.000 RUR bude môcť dať banke každý mesiac 100 0.3 RUR, je skutočne takmer XNUMX%. Mimochodom, musíme pochopiť, že banka môže poskytnúť pôžičku Leshe, ak jej politika umožňuje napríklad pôžičky klientom s pravdepodobnosťou splatenia pôžičky vyššou ako napríklad XNUMX. Ide len o to, že v tomto prípade si banka vytvorí väčšiu rezervu na prípadné straty.

Treba tiež poznamenať, že pomer platu k platu vo výške najmenej 3 as maržou 5.000 XNUMX RUR bol prevzatý zo stropu. Preto sme nemohli použiť vektor váh v pôvodnej podobe Žuvanie logistickej regresie. Potrebovali sme výrazne znížiť koeficienty a v tomto prípade sme každý koeficient vydelili 25.000 XNUMX, čiže v podstate sme upravili výsledok. Toto sa však urobilo špeciálne na zjednodušenie pochopenia materiálu v počiatočnej fáze. V živote nebudeme potrebovať koeficienty vymýšľať a upravovať, ale nájsť. V ďalších častiach článku odvodíme rovnice, pomocou ktorých sa parametre vyberajú Žuvanie logistickej regresie.

04. Metóda najmenších štvorcov na určenie vektora váh Žuvanie logistickej regresie vo funkcii logistickej odozvy

Túto metódu výberu vektora váh už poznáme Žuvanie logistickej regresieAko metóda najmenších štvorcov (LSM) a vlastne, prečo to potom nepoužijeme v problémoch binárnej klasifikácie? V používaní vám skutočne nič nebráni MNC, iba táto metóda v klasifikačných problémoch poskytuje výsledky, ktoré sú menej presné ako Logistická strata. Existuje na to teoretický základ. Najprv sa pozrime na jeden jednoduchý príklad.

Predpokladajme, že naše modely (pomocou MSE и Logistická strata) už začali s výberom vektora váh Žuvanie logistickej regresie a výpočet sme v určitom kroku zastavili. Nezáleží na tom, či v strede, na konci alebo na začiatku, hlavné je, že už máme nejaké hodnoty vektora váh a predpokladajme, že v tomto kroku vektor váh Žuvanie logistickej regresie pre oba modely nie sú žiadne rozdiely. Potom vezmite výsledné závažia a vložte ich do funkcia logistickej odozvy (Žuvanie logistickej regresie) pre nejaký objekt, ktorý patrí do triedy Žuvanie logistickej regresie. Skúmame dva prípady, keď v súlade so zvoleným vektorom váh je náš model veľmi chybný a naopak - model je veľmi presvedčený, že objekt patrí do triedy Žuvanie logistickej regresie. Pozrime sa, aké pokuty budú pri používaní MNC и Logistická strata.

Kód na výpočet pokút v závislosti od použitej funkcie straty

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

Prípad omylu — model priraďuje objekt triede Žuvanie logistickej regresie s pravdepodobnosťou 0,01

Pokuta za použitie MNC bude:
Žuvanie logistickej regresie

Pokuta za použitie Logistická strata bude:
Žuvanie logistickej regresie

Prípad silnej dôvery — model priraďuje objekt triede Žuvanie logistickej regresie s pravdepodobnosťou 0,99

Pokuta za použitie MNC bude:
Žuvanie logistickej regresie

Pokuta za použitie Logistická strata bude:
Žuvanie logistickej regresie

Tento príklad dobre ilustruje, že v prípade hrubej chyby funguje strata Strata denníka penalizuje model výrazne viac ako MSE. Poďme teraz pochopiť, aké sú teoretické základy používania stratovej funkcie Strata denníka v klasifikačných problémoch.

05. Metóda maximálnej pravdepodobnosti a logistická regresia

Ako som sľúbil na začiatku, článok je plný jednoduchých príkladov. V štúdiu je ďalší príklad a starí hostia - bankoví dlžníci: Vasya, Fedya a Lesha.

Len pre prípad, pred vytvorením príkladu mi dovoľte pripomenúť, že v živote máme čo do činenia s trénovacou vzorkou tisícov alebo miliónov objektov s desiatkami alebo stovkami funkcií. Tu sú však čísla brané tak, aby sa ľahko zmestili do hlavy začínajúceho dátového vedca.

Vráťme sa k príkladu. Predstavme si, že sa riaditeľ banky rozhodol poskytnúť pôžičku každému, kto ju potrebuje, napriek tomu, že mu algoritmus povedal, aby ju neposkytol Leshovi. A teraz už uplynulo dosť času a vieme, ktorý z troch hrdinov pôžičku splatil a ktorý nie. Čo sa dalo očakávať: Vasya a Fedya splatili pôžičku, ale Lesha nie. Teraz si predstavme, že tento výsledok bude pre nás novou školiacou vzorkou a zároveň akoby zmizli všetky údaje o faktoroch ovplyvňujúcich pravdepodobnosť splatenia úveru (mzda dlžníka, výška mesačnej splátky). Potom môžeme intuitívne predpokladať, že každý tretí dlžník nesplatí úver banke, alebo inými slovami pravdepodobnosť, že úver splatí ďalší dlžník. Žuvanie logistickej regresie. Tento intuitívny predpoklad má teoretické potvrdenie a je založený na metóda maximálnej pravdepodobnosti, často sa v literatúre hovorí princíp maximálnej pravdepodobnosti.

Najprv sa zoznámime s pojmovým aparátom.

Pravdepodobnosť odberu vzoriek je pravdepodobnosť získania presne takejto vzorky, získania presne takýchto pozorovaní/výsledkov, t.j. súčin pravdepodobnosti získania každého z výsledkov vzorky (napríklad či pôžička Vasya, Fedya a Lesha bola alebo nebola splatená súčasne).

Funkcia pravdepodobnosti spája pravdepodobnosť vzorky s hodnotami distribučných parametrov.

V našom prípade je trénovacia vzorka zovšeobecnená Bernoulliho schéma, v ktorej náhodná premenná nadobúda iba dve hodnoty: Žuvanie logistickej regresie alebo Žuvanie logistickej regresie. Preto možno vzorovú pravdepodobnosť zapísať ako pravdepodobnostnú funkciu parametra Žuvanie logistickej regresie takto:

Žuvanie logistickej regresie
Žuvanie logistickej regresie

Vyššie uvedený záznam možno interpretovať nasledovne. Spoločná pravdepodobnosť, že Vasya a Fedya splatia pôžičku, sa rovná Žuvanie logistickej regresie, pravdepodobnosť, že Lesha NESplatí úver, sa rovná Žuvanie logistickej regresie (keďže sa neuskutočnilo splatenie úveru), preto je spoločná pravdepodobnosť všetkých troch udalostí rovnaká Žuvanie logistickej regresie.

Metóda maximálnej pravdepodobnosti je metóda na odhad neznámeho parametra maximalizáciou pravdepodobnostné funkcie. V našom prípade musíme takúto hodnotu nájsť Žuvanie logistickej regresiena ktorom Žuvanie logistickej regresie dosiahne svoje maximum.

Odkiaľ pochádza skutočná myšlienka – hľadať hodnotu neznámeho parametra, pri ktorej pravdepodobnostná funkcia dosahuje maximum? Pôvod myšlienky pramení z myšlienky, že vzorka je jediným zdrojom vedomostí o populácii, ktorý máme k dispozícii. Vo vzorke je zastúpené všetko, čo vieme o populácii. Preto môžeme povedať len toľko, že vzorka je najpresnejším odrazom populácie, ktorú máme k dispozícii. Preto musíme nájsť parameter, pri ktorom sa dostupná vzorka stane najpravdepodobnejšou.

Je zrejmé, že máme do činenia s problémom optimalizácie, v ktorom musíme nájsť extrémny bod funkcie. Na nájdenie extrémneho bodu je potrebné zvážiť podmienku prvého rádu, to znamená prirovnať deriváciu funkcie k nule a vyriešiť rovnicu vzhľadom na požadovaný parameter. Hľadanie derivátu súčinu veľkého množstva faktorov však môže byť zdĺhavá úloha, aby sa tomu zabránilo, existuje špeciálna technika - prepnutie na logaritmus pravdepodobnostné funkcie. Prečo je takýto prechod možný? Venujme pozornosť tomu, že nehľadáme extrém funkcie samotnejŽuvanie logistickej regresie, a extrémny bod, teda hodnotu neznámeho parametra Žuvanie logistickej regresiena ktorom Žuvanie logistickej regresie dosiahne svoje maximum. Pri prechode na logaritmus sa extrémny bod nemení (hoci samotný extrém sa bude líšiť), pretože logaritmus je monotónna funkcia.

Poďme, v súlade s vyššie uvedeným, ďalej rozvíjať náš príklad s pôžičkami od Vasya, Fedya a Lesha. Najprv prejdime k logaritmus pravdepodobnostnej funkcie:

Žuvanie logistickej regresie

Teraz môžeme výraz ľahko rozlíšiť podľa Žuvanie logistickej regresie:

Žuvanie logistickej regresie

A nakoniec zvážte podmienku prvého rádu - deriváciu funkcie prirovnáme k nule:

Žuvanie logistickej regresie

Teda náš intuitívny odhad pravdepodobnosti splatenia úveru Žuvanie logistickej regresie bola teoreticky opodstatnená.

Skvelé, ale čo by sme teraz mali robiť s týmito informáciami? Ak predpokladáme, že každý tretí dlžník peniaze banke nevráti, tak táto nevyhnutne skrachuje. To je pravda, ale len pri posúdení pravdepodobnosti splatenia úveru Žuvanie logistickej regresie Nebrali sme do úvahy faktory ovplyvňujúce splácanie úveru: plat dlžníka a výšku mesačnej splátky. Pripomeňme si, že sme predtým vypočítali pravdepodobnosť splatenia úveru každým klientom s prihliadnutím na rovnaké faktory. Je logické, že sme dostali pravdepodobnosti odlišné od konštanty rovné Žuvanie logistickej regresie.

Definujme pravdepodobnosť vzoriek:

Kód na výpočet pravdepodobnosti vzorky

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)

Pravdepodobnosť vzorky pri konštantnej hodnote Žuvanie logistickej regresie:

Žuvanie logistickej regresie

Vzorová pravdepodobnosť pri výpočte pravdepodobnosti splatenia úveru s prihliadnutím na faktory Žuvanie logistickej regresie:

Žuvanie logistickej regresie
Žuvanie logistickej regresie

Pravdepodobnosť vzorky s pravdepodobnosťou vypočítanou v závislosti od faktorov sa ukázala byť vyššia ako pravdepodobnosť s konštantnou hodnotou pravdepodobnosti. Čo to znamená? To naznačuje, že znalosť faktorov umožnila presnejšie vybrať pravdepodobnosť splatenia úveru pre každého klienta. Preto pri poskytovaní ďalšej pôžičky by bolo správnejšie použiť model navrhnutý na konci časti 3 článku na posúdenie pravdepodobnosti splatenia dlhu.

Ale potom, ak chceme maximalizovať vzorová funkcia pravdepodobnosti, tak prečo nepoužiť nejaký algoritmus, ktorý vytvorí pravdepodobnosť napríklad pre Vasyu, Fedyu a Leshu rovnú 0.99, 0.99 a 0.01. Možno, že takýto algoritmus bude fungovať dobre na trénovacej vzorke, pretože priblíži hodnotu pravdepodobnosti vzorky Žuvanie logistickej regresie, ale po prvé, takýto algoritmus bude mať s najväčšou pravdepodobnosťou problémy so schopnosťou zovšeobecnenia a po druhé, tento algoritmus určite nebude lineárny. A ak metódy boja proti pretrénovaniu (rovnako slabá schopnosť zovšeobecňovania) zjavne nie sú zahrnuté v pláne tohto článku, potom sa pozrime na druhý bod podrobnejšie. Ak to chcete urobiť, stačí odpovedať na jednoduchú otázku. Môže byť pravdepodobnosť, že Vasya a Fedya splatia úver, rovnaká, berúc do úvahy nám známe faktory? Z hľadiska zvukovej logiky samozrejme nie, nemôže. Takže Vasya zaplatí 2.5% svojho platu mesačne na splatenie úveru a Fedya - takmer 27,8%. Aj v grafe 2 „Klasifikácia klientov“ vidíme, že Vasya je oveľa ďalej od čiary oddeľujúcej triedy ako Fedya. A nakoniec vieme, že funkcia Žuvanie logistickej regresie pre Vasya a Fedya má rôzne hodnoty: 4.24 pre Vasyu a 1.0 pre Fedyu. Ak by teraz napríklad Fedya zarobil rádovo viac alebo požiadal o menšiu pôžičku, potom by bola pravdepodobnosť splatenia pôžičky pre Vasyu a Fedyu podobná. Inými slovami, lineárnu závislosť nemožno oklamať. A keby sme si vlastne vypočítali kurz Žuvanie logistickej regresiea nezobrali sme ich z ničoho, môžeme pokojne povedať, že naše hodnoty Žuvanie logistickej regresie nám najlepšie umožňujú odhadnúť pravdepodobnosť splatenia úveru každým dlžníkom, ale keďže sme súhlasili s predpokladom, že stanovenie koeficientov Žuvanie logistickej regresie bola vykonaná podľa všetkých pravidiel, potom budeme predpokladať - naše koeficienty nám umožňujú lepšie odhadnúť pravdepodobnosť :)

To sme však odbočili. V tejto časti musíme pochopiť, ako sa určuje vektor váh Žuvanie logistickej regresie, ktorý je potrebný na posúdenie pravdepodobnosti splatenia úveru každým dlžníkom.

Poďme si stručne zhrnúť, s akým arzenálom hľadáme šance Žuvanie logistickej regresie:

1. Predpokladáme, že vzťah medzi cieľovou premennou (predikčnou hodnotou) a faktorom ovplyvňujúcim výsledok je lineárny. Z tohto dôvodu sa používa lineárna regresná funkcia druh Žuvanie logistickej regresie, ktorej čiara rozdeľuje objekty (klientov) do tried Žuvanie logistickej regresie и Žuvanie logistickej regresie alebo Žuvanie logistickej regresie (klienti, ktorí sú schopní splácať úver a tí, ktorí nie). V našom prípade má rovnica tvar Žuvanie logistickej regresie.

2. Používame inverzná logitová funkcia druh Žuvanie logistickej regresie určiť pravdepodobnosť, že objekt patrí do triedy Žuvanie logistickej regresie.

3. Náš tréningový súbor považujeme za implementáciu zovšeobecneného Bernoulliho schémy, teda pre každý objekt sa vygeneruje náhodná premenná, ktorá s pravdepodobnosťou Žuvanie logistickej regresie (svoje pre každý objekt) nadobúda hodnotu 1 as pravdepodobnosťou Žuvanie logistickej regresie - 0.

4. Vieme, čo musíme maximalizovať vzorová funkcia pravdepodobnosti berúc do úvahy akceptované faktory tak, aby sa dostupná vzorka stala najpravdepodobnejšou. Inými slovami, musíme vybrať parametre, pri ktorých bude vzorka najpravdepodobnejšia. V našom prípade je zvoleným parametrom pravdepodobnosť splatenia úveru Žuvanie logistickej regresie, čo zase závisí od neznámych koeficientov Žuvanie logistickej regresie. Musíme teda nájsť takýto vektor váh Žuvanie logistickej regresie, pri ktorej bude pravdepodobnosť vzorky maximálna.

5. Vieme, čo maximalizovať vzorové pravdepodobnostné funkcie môže byť použité metóda maximálnej pravdepodobnosti. A poznáme všetky zložité triky na prácu s touto metódou.

Takto to dopadá na viackrokový krok :)

Teraz si pamätajte, že na úplnom začiatku článku sme chceli odvodiť dva typy stratových funkcií Logistická strata v závislosti od toho, ako sú označené triedy objektov. Tak sa stalo, že v klasifikačných úlohách s dvoma triedami sú triedy označené ako Žuvanie logistickej regresie и Žuvanie logistickej regresie alebo Žuvanie logistickej regresie. V závislosti od notácie bude mať výstup zodpovedajúcu stratovú funkciu.

Prípad 1. Klasifikácia objektov do Žuvanie logistickej regresie и Žuvanie logistickej regresie

Skôr pri určovaní pravdepodobnosti vzorky, v ktorej bola pravdepodobnosť splatenia dlhu dlžníkom vypočítaná na základe faktorov a daných koeficientov Žuvanie logistickej regresie, použili sme vzorec:

Žuvanie logistickej regresie

Skutočne Žuvanie logistickej regresie je zmysel funkcie logistickej odozvy Žuvanie logistickej regresie pre daný vektor váh Žuvanie logistickej regresie

Potom nám nič nebráni napísať funkciu vzorovej pravdepodobnosti takto:

Žuvanie logistickej regresie

Stáva sa, že niekedy je pre niektorých začínajúcich analytikov ťažké okamžite pochopiť, ako táto funkcia funguje. Pozrime sa na 4 krátke príklady, ktoré veci objasnia:

1. Ak Žuvanie logistickej regresie (t.j. podľa trénovacej vzorky objekt patrí do triedy +1) a náš algoritmus Žuvanie logistickej regresie určuje pravdepodobnosť zaradenia objektu do triedy Žuvanie logistickej regresie rovná 0.9, potom sa pravdepodobnosť tejto časti vzorky vypočíta takto:

Žuvanie logistickej regresie

2. Ak Žuvanie logistickej regresieA Žuvanie logistickej regresie, potom bude výpočet vyzerať takto:

Žuvanie logistickej regresie

3. Ak Žuvanie logistickej regresieA Žuvanie logistickej regresie, potom bude výpočet vyzerať takto:

Žuvanie logistickej regresie

4. Ak Žuvanie logistickej regresieA Žuvanie logistickej regresie, potom bude výpočet vyzerať takto:

Žuvanie logistickej regresie

Je zrejmé, že pravdepodobnostná funkcia bude maximalizovaná v prípadoch 1 a 3 alebo vo všeobecnom prípade - so správne uhádnutými hodnotami pravdepodobnosti priradenia objektu do triedy Žuvanie logistickej regresie.

Vzhľadom na to, že pri určovaní pravdepodobnosti priradenia objektu do triedy Žuvanie logistickej regresie Len tie koeficienty nepoznáme Žuvanie logistickej regresie, potom ich budeme hľadať. Ako bolo uvedené vyššie, ide o optimalizačný problém, v ktorom najprv musíme nájsť deriváciu pravdepodobnostnej funkcie vzhľadom na vektor váh Žuvanie logistickej regresie. Najprv však má zmysel zjednodušiť si úlohu: budeme hľadať deriváciu logaritmu pravdepodobnostné funkcie.

Žuvanie logistickej regresie

Prečo po logaritme, in logistické chybové funkcie, zmenili sme znamienko z Žuvanie logistickej regresie na Žuvanie logistickej regresie. Všetko je jednoduché, keďže v problémoch hodnotenia kvality modelu je zvykom minimalizovať hodnotu funkcie, vynásobili sme pravú stranu výrazu Žuvanie logistickej regresie a teda namiesto maximalizácie teraz funkciu minimalizujeme.

Vlastne práve teraz, pred vašimi očami, bola funkcia straty starostlivo odvodená - Logistická strata pre tréningovú súpravu s dvoma triedami: Žuvanie logistickej regresie и Žuvanie logistickej regresie.

Teraz, aby sme našli koeficienty, musíme nájsť deriváciu logistické chybové funkcie a potom pomocou metód numerickej optimalizácie, ako je klesanie gradientu alebo stochastický klesanie gradientu, vyberte najoptimálnejšie koeficienty Žuvanie logistickej regresie. Vzhľadom na značný objem článku sa však navrhuje vykonať diferenciáciu sami, alebo to bude možno téma pre ďalší článok s množstvom aritmetiky bez takýchto podrobných príkladov.

Prípad 2. Klasifikácia objektov do Žuvanie logistickej regresie и Žuvanie logistickej regresie

Prístup tu bude rovnaký ako pri triedach Žuvanie logistickej regresie и Žuvanie logistickej regresie, ale samotná cesta k výstupu stratovej funkcie Logistická strata, bude ozdobnejšia. Začnime. Pre funkciu pravdepodobnosti použijeme operátor "Ak potom..."... Teda ak Žuvanie logistickej regresieth objekt patrí do triedy Žuvanie logistickej regresie, potom na výpočet pravdepodobnosti vzorky použijeme pravdepodobnosť Žuvanie logistickej regresie, ak objekt patrí do triedy Žuvanie logistickej regresie, potom dosadíme do pravdepodobnosti Žuvanie logistickej regresie. Funkcia pravdepodobnosti vyzerá takto:

Žuvanie logistickej regresie

Opíšme si na prstoch, ako to funguje. Zoberme si 4 prípady:

1. Ak Žuvanie logistickej regresie и Žuvanie logistickej regresie, potom pravdepodobnosť odberu vzoriek „prejde“ Žuvanie logistickej regresie

2. Ak Žuvanie logistickej regresie и Žuvanie logistickej regresie, potom pravdepodobnosť odberu vzoriek „prejde“ Žuvanie logistickej regresie

3. Ak Žuvanie logistickej regresie и Žuvanie logistickej regresie, potom pravdepodobnosť odberu vzoriek „prejde“ Žuvanie logistickej regresie

4. Ak Žuvanie logistickej regresie и Žuvanie logistickej regresie, potom pravdepodobnosť odberu vzoriek „prejde“ Žuvanie logistickej regresie

Je zrejmé, že v prípadoch 1 a 3, keď boli pravdepodobnosti správne určené algoritmom, pravdepodobnostná funkcia budú maximalizované, to znamená, že presne toto sme chceli získať. Tento prístup je však dosť ťažkopádny a nabudúce zvážime kompaktnejší zápis. Najprv však logaritme pravdepodobnostnú funkciu so zmenou znamienka, keďže ju teraz minimalizujeme.

Žuvanie logistickej regresie

Poďme namiesto toho nahradiť Žuvanie logistickej regresie vyjadrenie Žuvanie logistickej regresie:

Žuvanie logistickej regresie

Zjednodušme si správny výraz pod logaritmom pomocou jednoduchých aritmetických techník a získajme:

Žuvanie logistickej regresie

Teraz je čas zbaviť sa operátora "Ak potom...". Všimnite si, že keď objekt Žuvanie logistickej regresie patrí do triedy Žuvanie logistickej regresie, potom vo výraze pod logaritmom, v menovateli, Žuvanie logistickej regresie pozdvihnutý k moci Žuvanie logistickej regresie, ak objekt patrí do triedy Žuvanie logistickej regresie, potom sa $e$ zvýši na mocninu Žuvanie logistickej regresie. Preto je možné zápis stupňa zjednodušiť spojením oboch prípadov do jedného: Žuvanie logistickej regresie, potom funkcia logistickej chyby bude mať podobu:

Žuvanie logistickej regresie

V súlade s pravidlami logaritmu zlomok otočíme a zhasneme znak "Žuvanie logistickej regresie" (mínus) pre logaritmus dostaneme:

Žuvanie logistickej regresie

Tu je funkcia straty logistická strata, ktorý sa používa v trénovacej sade s objektmi priradenými triedam: Žuvanie logistickej regresie и Žuvanie logistickej regresie.

No, v tomto bode sa rozlúčim a končíme článok.

Žuvanie logistickej regresie Predchádzajúcou prácou autora je „Prevedenie rovnice lineárnej regresie do maticovej formy“

Pomocné materiály

1. Literatúra

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

2) Teória pravdepodobnosti a matematická štatistika / V.E. Gmurman - 9. vyd. - M.: Vyššia škola, 2003

3) Teória pravdepodobnosti / N.I. Chernova – Novosibirsk: Novosibirská štátna univerzita, 2007

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

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

6) Praktická štatistika pre špecialistov Data Science / P. Bruce, E. Bruce - Petrohrad: BHV Petersburg, 2018

2. Prednášky, kurzy (video)

1) Podstata metódy maximálnej pravdepodobnosti, Boris Demeshev

2) Metóda maximálnej pravdepodobnosti v spojitom prípade, Boris Demeshev

3) Logistická regresia. Otvorený kurz ODS, Yury Kashnitsky

4) Prednáška 4, Evgeny Sokolov (zo 47 minút videa)

5) Logistická regresia, Vjačeslav Voroncov

3. Internetové zdroje

1) Lineárne klasifikačné a regresné modely

2) Ako ľahko porozumieť logistickej regresii

3) Logistická chybová funkcia

4) Nezávislé testy a Bernoulliho vzorec

5) Balada o MMP

6) Metóda maximálnej pravdepodobnosti

7) Vzorce a vlastnosti logaritmov

8) Prečo číslo Žuvanie logistickej regresie?

9) Lineárny klasifikátor

Zdroj: hab.com

Pridať komentár