In hierdie artikel sal ons die teoretiese berekeninge van die transformasie ontleed lineêre regressie funksies в omgekeerde logit-transformasiefunksie (anders genoem logistiese reaksiefunksie). Gebruik dan die arsenaal maksimum waarskynlikheid metode, in ooreenstemming met die logistiese regressiemodel, lei ons die verliesfunksie af Logistieke verlies, of met ander woorde, ons sal 'n funksie definieer waarmee die parameters van die gewigsvektor in die logistiese regressiemodel geselekteer word .
Artikel uiteensetting:
- Kom ons herhaal die lineêre verwantskap tussen twee veranderlikes
- Kom ons identifiseer die behoefte aan transformasie lineêre regressie funksies в logistieke reaksie funksie
- Kom ons voer die transformasies en uitset uit logistieke reaksie funksie
- Kom ons probeer om te verstaan hoekom die kleinste vierkante metode sleg is wanneer parameters gekies word funksies Logistieke verlies
- Ons gebruik maksimum waarskynlikheid metode om te bepaal parameter seleksie funksies :
5.1. Geval 1: funksie Logistieke verlies vir voorwerpe met klasbenamings 0 и 1:
5.2. Geval 2: funksie Logistieke verlies vir voorwerpe met klasbenamings -1 и +1:
Die artikel is propvol eenvoudige voorbeelde waarin alle berekeninge maklik mondeling of op papier gemaak kan word; in sommige gevalle kan 'n sakrekenaar vereis word. So maak gereed :)
Hierdie artikel is hoofsaaklik bedoel vir datawetenskaplikes met 'n aanvanklike vlak van kennis in die basiese beginsels van masjienleer.
Die artikel sal ook kode verskaf vir die teken van grafieke en berekeninge. Alle kode is in die taal geskryf python 2.7. Laat ek vooraf verduidelik oor die "nuutheid" van die weergawe wat gebruik word - dit is een van die voorwaardes vir die neem van die bekende kursus vanaf Yandex op 'n ewe bekende aanlyn onderwysplatform Coursera, en, soos 'n mens kan aanneem, is die materiaal op grond van hierdie kursus voorberei.
01. Reguitlyn-afhanklikheid
Dit is redelik redelik om die vraag te vra - wat het lineêre afhanklikheid en logistiese regressie daarmee te doen?
Dis eenvoudig! Logistiese regressie is een van die modelle wat aan die lineêre klassifiseerder behoort. In eenvoudige woorde, die taak van 'n lineêre klassifiseerder is om teikenwaardes te voorspel van veranderlikes (regressors) . Daar word geglo dat die afhanklikheid tussen die eienskappe en teikenwaardes lineêr. Vandaar die naam van die klassifiseerder - lineêr. Om dit baie rofweg te stel, is die logistiese regressiemodel gebaseer op die aanname dat daar 'n lineêre verband tussen die kenmerke is. en teikenwaardes . Dit is die verband.
Daar is die eerste voorbeeld in die ateljee, en dit gaan, korrek, oor die reglynige afhanklikheid van die hoeveelhede wat bestudeer word. In die proses om die artikel voor te berei, het ek op 'n voorbeeld afgekom wat baie mense reeds op die punt gesit het - die afhanklikheid van stroom op spanning ("Toegepaste regressie-analise", N. Draper, G. Smith). Ons sal ook hierna kyk.
Volgens Ohm se wet:
Waar - huidige sterkte, - Spanning, - weerstand.
As ons nie geweet het nie Ohm se wet, dan kon ons die afhanklikheid empiries vind deur te verander en meet , terwyl hulle ondersteun vasgestel. Dan sou ons sien dat die afhanklikheidsgrafiek van gee 'n min of meer reguit lyn deur die oorsprong. Ons sê "min of meer" want, alhoewel die verwantskap eintlik akkuraat is, kan ons metings klein foute bevat, en daarom sal die punte op die grafiek dalk nie presies op die lyn val nie, maar lukraak daaroor versprei word.
Grafiek 1 “Afhanklikheid” van »
Grafiek teken kode
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. Die behoefte om die lineêre regressievergelyking te transformeer
Kom ons kyk na 'n ander voorbeeld. Kom ons stel ons voor dat ons in 'n bank werk en ons taak is om die waarskynlikheid te bepaal dat die lener die lening sal terugbetaal, afhangende van sekere faktore. Om die taak te vereenvoudig, sal ons slegs twee faktore oorweeg: die lener se maandelikse salaris en die maandelikse leningterugbetalingsbedrag.
Die taak is baie voorwaardelik, maar met hierdie voorbeeld kan ons verstaan hoekom dit nie genoeg is om te gebruik nie lineêre regressie funksies, en vind ook uit watter transformasies met die funksie uitgevoer moet word.
Kom ons keer terug na die voorbeeld. Dit word verstaan dat hoe hoër die salaris, hoe meer sal die lener maandeliks kan toewys om die lening terug te betaal. Terselfdertyd sal hierdie verhouding vir 'n sekere salarisreeks redelik lineêr wees. Kom ons neem byvoorbeeld 'n salarisreeks van 60.000 200.000 RUR tot 3 5.000 RUR en neem aan dat in die gespesifiseerde salarisreeks die afhanklikheid van die grootte van die maandelikse betaling op die grootte van die salaris lineêr is. Kom ons sê vir die gespesifiseerde reeks lone is dit aan die lig gebring dat die salaris-tot-betaling-verhouding nie onder XNUMX kan daal nie en die lener moet steeds XNUMX XNUMX RUR in reserwe hê. En slegs in hierdie geval sal ons aanvaar dat die lener die lening aan die bank sal terugbetaal. Dan sal die lineêre regressievergelyking die vorm aanneem:
waar , , , - salaris -de lener, - lening betaling -de lener.
Vervang salaris en leningbetaling met vaste parameters in die vergelyking Jy kan besluit of jy 'n lening wil uitreik of weier.
As ons vorentoe kyk, neem ons kennis dat, met die gegewe parameters lineêre regressie funksie, gebruik in logistieke reaksie funksies sal groot waardes produseer wat berekeninge sal bemoeilik om die waarskynlikhede van leningterugbetaling te bepaal. Daarom word voorgestel om ons koëffisiënte, kom ons sê, met 25.000 XNUMX keer te verminder. Hierdie transformasie in die koëffisiënte sal nie die besluit om 'n lening uit te reik, verander nie. Kom ons onthou hierdie punt vir die toekoms, maar nou, om dit nog duideliker te maak waarvan ons praat, kom ons kyk na die situasie met drie potensiële leners.
Tabel 1 “Potensiële leners”
Kode vir die generering van die tabel
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']]
In ooreenstemming met die data in die tabel wil Vasya, met 'n salaris van 120.000 3.000 RUR, 'n lening ontvang sodat hy dit maandeliks teen 5.000 XNUMX RUR kan terugbetaal. Ons het vasgestel dat om die lening goed te keur, Vasya se salaris drie keer die bedrag van die betaling moet oorskry, en daar moet steeds XNUMX XNUMX RUR oorbly. Vasya voldoen aan hierdie vereiste: . Selfs 106.000 XNUMX RUR bly oor. Ten spyte van die feit dat wanneer die berekening ons het die kans verminder 25.000 XNUMX keer was die resultaat dieselfde – die lening kan goedgekeur word. Fedya sal ook ’n lening kry, maar Lesha sal, ten spyte van die feit dat hy die meeste ontvang, sy aptyt moet in bedwang hou.
Kom ons teken 'n grafiek vir hierdie geval.
Grafiek 2 “Klassifikasie van leners”
Kode vir die teken van die grafiek
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()
Dus, ons reguit lyn, gebou in ooreenstemming met die funksie , skei "slegte" leners van "goeie". Die leners wie se begeertes nie saamval met hul vermoëns nie, is bo die lyn (Lesha), terwyl diegene wat volgens die parameters van ons model die lening kan terugbetaal, onder die lyn is (Vasya en Fedya). Met ander woorde, ons kan dit sê: ons direkte lyn verdeel leners in twee klasse. Laat ons hulle soos volg aandui: klas toe Ons sal daardie leners klassifiseer wat die meeste waarskynlik die lening sal terugbetaal as of Ons sal daardie leners insluit wat heel waarskynlik nie die lening sal kan terugbetaal nie.
Kom ons som die gevolgtrekkings van hierdie eenvoudige voorbeeld op. Kom ons neem 'n punt en vervang die koördinate van die punt in die ooreenstemmende vergelyking van die lyn , oorweeg drie opsies:
- As die punt onder die lyn is en ons ken dit aan die klas toe , dan die waarde van die funksie positief sal wees van aan . Dit beteken ons kan aanvaar dat die waarskynlikheid om die lening terug te betaal binne is . Hoe groter die funksiewaarde, hoe groter is die waarskynlikheid.
- As 'n punt bo 'n lyn is en ons ken dit aan die klas toe of , dan sal die waarde van die funksie negatief wees vanaf aan . Dan sal ons aanvaar dat die waarskynlikheid van skuldterugbetaling binne is en, hoe groter die absolute waarde van die funksie, hoe hoër is ons vertroue.
- Die punt is op 'n reguit lyn, op die grens tussen twee klasse. In hierdie geval, die waarde van die funksie gelyk sal wees en die waarskynlikheid om die lening terug te betaal is gelyk aan .
Nou, laat ons ons voorstel dat ons nie twee faktore het nie, maar dosyne, en nie drie nie, maar duisende leners. Dan sal ons in plaas van 'n reguit lyn hê m-dimensioneel vlak en koëffisiënte ons sal nie uit die lug gehaal word nie, maar afgelei word volgens al die reëls, en op grond van opgehoopte data oor leners wat die lening terugbetaal het of nie. En inderdaad, let op dat ons nou leners kies wat reeds bekende koëffisiënte gebruik . Trouens, die taak van die logistiese regressiemodel is juis om die parameters te bepaal , waarteen die waarde van die verlies funksioneer Logistieke verlies sal tot die minimum neig. Maar oor hoe die vektor bereken word , sal ons meer uitvind in die 5de afdeling van die artikel. Intussen keer ons terug na die beloofde land – na ons bankier en sy drie kliënte.
Danksy die funksie ons weet wie 'n lening gegee kan word en wie geweier moet word. Maar jy kan nie met sulke inligting na die direkteur gaan nie, want hulle wou van ons die waarskynlikheid kry dat elke lener die lening terugbetaal. Wat om te doen? Die antwoord is eenvoudig - ons moet die funksie op een of ander manier transformeer , waarvan die waardes in die reeks lê na 'n funksie waarvan die waardes in die reeks sal lê . En so 'n funksie bestaan, word dit genoem logistiese responsfunksie of inverse-logit transformasie. Ontmoet:
Kom ons kyk stap vir stap hoe dit werk logistieke reaksie funksie. Let daarop dat ons in die teenoorgestelde rigting sal loop, d.w.s. ons sal aanneem dat ons die waarskynlikheidswaarde ken, wat in die reeks van lê aan en dan sal ons hierdie waarde "ontwikkel" tot die hele reeks getalle van aan .
03. Ons lei die logistieke reaksie funksie af
Stap 1. Skakel die waarskynlikheidswaardes om in 'n reeks
Tydens die transformasie van die funksie в logistieke reaksie funksie Ons sal ons kredietontleder met rus laat en eerder 'n toer deur die beroepswedders neem. Nee, natuurlik, ons sal nie weddenskappe plaas nie, al wat ons interesseer daar is die betekenis van die uitdrukking, byvoorbeeld, die kans is 4 tot 1. Die kans, bekend aan alle wedders, is die verhouding van "suksesse" tot " mislukkings”. In waarskynlikheidsterme is kans die waarskynlikheid dat 'n gebeurtenis sal plaasvind, gedeel deur die waarskynlikheid dat die gebeurtenis nie sal plaasvind nie. Kom ons skryf die formule neer vir die kans dat 'n gebeurtenis sal plaasvind :
Waar - waarskynlikheid dat 'n gebeurtenis sal plaasvind, — waarskynlikheid dat 'n gebeurtenis NIE sal plaasvind nie
Byvoorbeeld, as die waarskynlikheid dat 'n jong, sterk en speelse perd met die bynaam "Veterok" 'n ou en slap ou vrou genaamd "Matilda" by 'n wedren sal klop, gelyk is aan , dan sal die kanse op sukses vir “Veterok” wees к en omgekeerd, met die kennis van die kans, sal dit nie vir ons moeilik wees om die waarskynlikheid te bereken nie :
Ons het dus geleer om waarskynlikheid te "vertaal" in kanse, wat waardes van neem aan . Kom ons neem nog een stap en leer om die waarskynlikheid na die hele getallelyn te “vertaal”. aan .
Stap 2. Skakel die waarskynlikheidswaardes om in 'n reeks
Hierdie stap is baie eenvoudig - kom ons neem die logaritme van die kans na die basis van Euler se getal en ons kry:
Nou weet ons dat as , bereken dan die waarde sal baie eenvoudig wees en boonop moet dit positief wees: . Dit is waar.
Uit nuuskierigheid, kom ons kyk wat as , dan verwag ons om 'n negatiewe waarde te sien . Ons kontroleer: . Dit is reg.
Nou weet ons hoe om die waarskynlikheidswaarde van om te skakel aan langs die hele getallelyn vanaf aan . In die volgende stap sal ons die teenoorgestelde doen.
Vir nou let ons op dat in ooreenstemming met die reëls van logaritme, met die kennis van die waarde van die funksie , kan jy die kans bereken:
Hierdie metode om kanse te bepaal, sal vir ons nuttig wees in die volgende stap.
Stap 3. Kom ons lei 'n formule af om te bepaal
So het ons geleer, wetende , vind funksiewaardes . In werklikheid het ons egter presies die teenoorgestelde nodig - om die waarde te ken vind . Om dit te doen, kom ons kyk na so 'n konsep soos die omgekeerde kansfunksie, waarvolgens:
In die artikel sal ons nie die bogenoemde formule aflei nie, maar ons sal dit kontroleer deur die nommers uit die voorbeeld hierbo te gebruik. Ons weet dit met 'n kans van 4 tot 1 (), is die waarskynlikheid dat die gebeurtenis sal plaasvind 0.8 (). Kom ons maak 'n vervanging: . Dit val saam met ons berekeninge wat vroeër gedoen is. Kom ons gaan aan.
In die laaste stap het ons dit afgelei , wat beteken dat jy 'n vervanging in die omgekeerde kansfunksie kan maak. Ons kry:
Deel beide die teller en noemer deur , Toe:
Net vir ingeval, om seker te maak dat ons nêrens 'n fout gemaak het nie, sal ons nog een klein kontrole doen. In stap 2, ons vir het dit bepaal . Vervang dan die waarde in die logistieke reaksiefunksie, verwag ons om te kry . Ons vervang en kry:
Baie geluk, liewe leser, ons het sopas die logistieke reaksiefunksie afgelei en getoets. Kom ons kyk na die grafiek van die funksie.
Grafiek 3 "Logistiese reaksie funksie"
Kode vir die teken van die grafiek
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()
In die literatuur kan jy ook die naam van hierdie funksie vind as sigmoïed funksie. Die grafiek toon duidelik dat die hoofverandering in die waarskynlikheid van 'n voorwerp wat aan 'n klas behoort binne 'n relatief klein reeks plaasvind , iewers van aan .
Ek stel voor dat u na ons kredietontleder terugkeer en hom help om die waarskynlikheid van leningterugbetaling te bereken, anders loop hy die risiko om sonder 'n bonus gelaat te word :)
Tabel 2 “Potensiële leners”
Kode vir die generering van die tabel
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']]
Dus, ons het die waarskynlikheid van leningterugbetaling bepaal. Oor die algemeen blyk dit waar te wees.
Inderdaad, die waarskynlikheid dat Vasya, met 'n salaris van 120.000 3.000 RUR, elke maand 100 0.3 RUR aan die bank sal kan gee, is naby aan XNUMX%. Terloops, ons moet verstaan dat 'n bank 'n lening aan Lesha kan uitreik as die bank se beleid byvoorbeeld voorsiening maak vir lenings aan kliënte met 'n waarskynlikheid van leningterugbetaling van meer as byvoorbeeld XNUMX. Dit is net dat die bank in hierdie geval 'n groter reserwe vir moontlike verliese sal skep.
Daar moet ook kennis geneem word dat die salaris-tot-betaling-verhouding van minstens 3 en met 'n marge van 5.000 XNUMX RUR van die plafon geneem is. Daarom kon ons nie die vektor van gewigte in sy oorspronklike vorm gebruik nie . Ons moes die koëffisiënte aansienlik verminder, en in hierdie geval het ons elke koëffisiënt met 25.000 XNUMX gedeel, dit wil sê, ons het in wese die resultaat aangepas. Maar dit is spesifiek gedoen om begrip van die materiaal in die aanvanklike stadium te vereenvoudig. In die lewe sal ons nie nodig hê om koëffisiënte uit te vind en aan te pas nie, maar dit te vind. In die volgende afdelings van die artikel sal ons die vergelykings aflei waarmee die parameters gekies word .
04. Kleinste kwadrate metode vir die bepaling van die vektor van gewigte in die logistieke reaksie funksie
Ons ken reeds hierdie metode om 'n vektor van gewigte te kies As kleinste vierkante metode (LSM) en om die waarheid te sê, hoekom gebruik ons dit dan nie in binêre klassifikasieprobleme nie? Inderdaad, niks verhinder jou om te gebruik nie MNC, slegs hierdie metode in klassifikasieprobleme gee resultate wat minder akkuraat is as Logistieke verlies. Daar is 'n teoretiese basis hiervoor. Kom ons kyk eers na een eenvoudige voorbeeld.
Kom ons neem aan dat ons modelle (met MSE и Logistieke verlies) het reeds begin om die vektor van gewigte te kies en ons het die berekening op 'n stadium gestop. Dit maak nie saak of dit in die middel, aan die einde of aan die begin is nie, die belangrikste ding is dat ons reeds 'n paar waardes van die vektor van gewigte het en kom ons neem aan dat in hierdie stap, die vektor van gewigte vir beide modelle is daar geen verskille nie. Neem dan die resulterende gewigte en plaas dit in logistieke reaksie funksie () vir een of ander voorwerp wat aan die klas behoort . Ons ondersoek twee gevalle wanneer, in ooreenstemming met die geselekteerde vektor van gewigte, ons model baie verkeerd is en omgekeerd - die model is baie vol vertroue dat die voorwerp aan die klas behoort . Kom ons kyk watter boetes uitgereik sal word wanneer dit gebruik word MNC и Logistieke verlies.
Kode om boetes te bereken afhangende van die verliesfunksie wat gebruik word
# класс объекта
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
'n Geval van 'n flater — die model ken 'n voorwerp aan 'n klas toe met 'n waarskynlikheid van 0,01
Straf op gebruik MNC sal wees:
Straf op gebruik Logistieke verlies sal wees:
’n Saak van sterk vertroue — die model ken 'n voorwerp aan 'n klas toe met 'n waarskynlikheid van 0,99
Straf op gebruik MNC sal wees:
Straf op gebruik Logistieke verlies sal wees:
Hierdie voorbeeld illustreer goed dat in die geval van 'n growwe fout die verliesfunksie Log Verlies penaliseer die model aansienlik meer as MSE. Kom ons verstaan nou wat die teoretiese agtergrond is om die verliesfunksie te gebruik Log Verlies in klassifikasieprobleme.
05. Maksimum waarskynlikheid metode en logistiese regressie
Soos aan die begin belowe is, is die artikel propvol eenvoudige voorbeelde. In die ateljee is daar nog 'n voorbeeld en ou gaste - bankleners: Vasya, Fedya en Lesha.
Net vir ingeval, voordat ek die voorbeeld ontwikkel, laat ek jou daaraan herinner dat ons in die lewe te doen het met 'n oefenmonster van duisende of miljoene voorwerpe met tien of honderde kenmerke. Hier word die syfers egter geneem sodat dit maklik in die kop van 'n beginner datawetenskaplike kan pas.
Kom ons keer terug na die voorbeeld. Kom ons stel ons voor dat die direkteur van die bank besluit het om 'n lening aan almal in nood uit te reik, ten spyte van die feit dat die algoritme vir hom gesê het om dit nie aan Lesha uit te reik nie. En nou is daar genoeg tyd verby en ons weet watter van die drie helde het die lening terugbetaal en watter nie. Wat te wagte was: Vasya en Fedya het die lening terugbetaal, maar Lesha het nie. Kom ons stel ons nou voor dat hierdie resultaat vir ons 'n nuwe opleidingsteekproef sal wees en terselfdertyd is dit asof alle data oor die faktore wat die waarskynlikheid van die terugbetaling van die lening (lener se salaris, grootte van die maandelikse betaling) beïnvloed, verdwyn het. Dan, intuïtief, kan ons aanvaar dat elke derde lener nie die lening aan die bank terugbetaal nie, of met ander woorde, die waarskynlikheid dat die volgende lener die lening terugbetaal. . Hierdie intuïtiewe aanname het teoretiese bevestiging en is gebaseer op maksimum waarskynlikheid metode, dikwels in die literatuur word dit genoem maksimum waarskynlikheid beginsel.
Kom ons maak eers kennis met die konseptuele apparaat.
Steekproefneming waarskynlikheid is die waarskynlikheid om presies so 'n steekproef te verkry, om presies sulke waarnemings/resultate te verkry, m.a.w. die produk van die waarskynlikhede om elk van die steekproefresultate te verkry (byvoorbeeld of die lening van Vasya, Fedya en Lesha terugbetaal is of nie terselfdertyd terugbetaal is nie).
Waarskynlikheidsfunksie bring die waarskynlikheid van 'n steekproef in verband met die waardes van die verspreidingsparameters.
In ons geval is die opleidingsteekproef 'n veralgemeende Bernoulli-skema, waarin die ewekansige veranderlike slegs twee waardes neem: of . Daarom kan die steekproefwaarskynlikheid geskryf word as 'n waarskynlikheidsfunksie van die parameter soos volg:
Die bogenoemde inskrywing kan soos volg geïnterpreteer word. Die gesamentlike waarskynlikheid dat Vasya en Fedya die lening sal terugbetaal, is gelyk aan , is die waarskynlikheid dat Lesha NIE die lening sal terugbetaal nie, gelyk aan (aangesien dit NIE die leningterugbetaling was wat plaasgevind het nie), daarom is die gesamentlike waarskynlikheid van al drie gebeurtenisse gelyk .
Maksimum waarskynlikheid metode is 'n metode om 'n onbekende parameter te skat deur te maksimeer waarskynlikheidsfunksies. In ons geval moet ons so 'n waarde vind waarteen sy maksimum bereik.
Waar kom die werklike idee vandaan - om te soek na die waarde van 'n onbekende parameter waarteen die waarskynlikheidsfunksie 'n maksimum bereik? Die oorsprong van die idee spruit uit die idee dat 'n steekproef die enigste bron van kennis is wat tot ons beskikking is oor die populasie. Alles wat ons van die populasie weet, word in die steekproef verteenwoordig. Daarom is al wat ons kan sê dat 'n steekproef die mees akkurate weerspieëling is van die populasie wat tot ons beskikking is. Daarom moet ons 'n parameter vind waarby die beskikbare steekproef die mees waarskynlike word.
Dit is duidelik dat ons te doen het met 'n optimaliseringsprobleem waarin ons die uiterste punt van 'n funksie moet vind. Om die ekstremumpunt te vind, is dit nodig om die eerste-orde toestand te oorweeg, dit wil sê, die afgeleide van die funksie gelyk te stel aan nul en die vergelyking op te los met betrekking tot die verlangde parameter. Om na die afgeleide van 'n produk van 'n groot aantal faktore te soek kan egter 'n lang taak wees; om dit te vermy, is daar 'n spesiale tegniek - oorskakel na die logaritme waarskynlikheidsfunksies. Hoekom is so 'n oorgang moontlik? Kom ons let op die feit dat ons nie die uiterste van die funksie self soek nie, en die uiterste punt, dit wil sê die waarde van die onbekende parameter waarteen sy maksimum bereik. Wanneer na 'n logaritme beweeg word, verander die ekstremumpunt nie (hoewel die ekstremum self sal verskil), aangesien die logaritme 'n monotoniese funksie is.
Kom ons, in ooreenstemming met bogenoemde, gaan voort om ons voorbeeld te ontwikkel met lenings van Vasya, Fedya en Lesha. Kom ons gaan eers verder na logaritme van die waarskynlikheidsfunksie:
Nou kan ons die uitdrukking maklik onderskei deur :
En ten slotte, oorweeg die eerste-orde voorwaarde - ons stel die afgeleide van die funksie gelyk aan nul:
Dus, ons intuïtiewe skatting van die waarskynlikheid van leningterugbetaling was teoreties geregverdig.
Wonderlik, maar wat moet ons nou met hierdie inligting doen? As ons aanvaar dat elke derde lener nie die geld aan die bank teruggee nie, sal laasgenoemde onvermydelik bankrot speel. Dit is reg, maar slegs wanneer die waarskynlikheid van die terugbetaling van die lening gelykstaande aan Ons het nie die faktore wat leningterugbetaling beïnvloed in ag geneem nie: die lener se salaris en die grootte van die maandelikse betaling. Laat ons onthou dat ons voorheen die waarskynlikheid van terugbetaling van die lening deur elke kliënt bereken het, met inagneming van dieselfde faktore. Dit is logies dat ons waarskynlikhede gekry het wat verskil van die konstante gelyke .
Kom ons definieer die waarskynlikheid van monsters:
Kode vir die berekening van steekproefwaarskynlikhede
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)
Monster waarskynlikheid teen 'n konstante waarde :
Voorbeeld van waarskynlikheid by die berekening van die waarskynlikheid van leningterugbetaling met inagneming van faktore :
Die waarskynlikheid van 'n steekproef met 'n waarskynlikheid bereken na gelang van die faktore het geblyk hoër te wees as die waarskynlikheid met 'n konstante waarskynlikheidswaarde. Wat beteken dit? Dit dui daarop dat kennis oor die faktore dit moontlik gemaak het om die waarskynlikheid van leningterugbetaling vir elke kliënt meer akkuraat te kies. Daarom, wanneer die volgende lening uitgereik word, sal dit meer korrek wees om die model wat aan die einde van artikel 3 van die artikel voorgestel word, te gebruik vir die beoordeling van die waarskynlikheid van skuldterugbetaling.
Maar dan, as ons wil maksimeer monster waarskynlikheid funksie, hoekom dan nie een of ander algoritme gebruik wat waarskynlikhede vir Vasya, Fedya en Lesha sal produseer, byvoorbeeld gelykstaande aan 0.99, 0.99 en 0.01, onderskeidelik. Miskien sal so 'n algoritme goed presteer op die opleidingsteekproef, aangesien dit die steekproefwaarskynlikheidswaarde nader aan , maar eerstens sal so 'n algoritme heel waarskynlik probleme hê met veralgemeningsvermoë, en tweedens sal hierdie algoritme beslis nie lineêr wees nie. En as metodes om ooroefening (ewe swak veralgemeningsvermoë) te bekamp, duidelik nie in die plan van hierdie artikel ingesluit is nie, laat ons die tweede punt in meer besonderhede deurgaan. Om dit te doen, beantwoord net 'n eenvoudige vraag. Kan die waarskynlikheid dat Vasya en Fedya die lening terugbetaal dieselfde wees, met inagneming van die faktore wat aan ons bekend is? Uit die oogpunt van gesonde logika, natuurlik nie, kan dit nie. Vasya sal dus 2.5% van sy salaris per maand betaal om die lening terug te betaal, en Fedya - byna 27,8%. Ook in grafiek 2 “Kliëntklassifikasie” sien ons dat Vasya baie verder is van die lyn wat die klasse skei as Fedya. En uiteindelik weet ons dat die funksie vir Vasya en Fedya neem verskillende waardes: 4.24 vir Vasya en 1.0 vir Fedya. Nou, as Fedya, byvoorbeeld, 'n orde van grootte meer verdien of vir 'n kleiner lening vra, dan sal die waarskynlikhede om die lening vir Vasya en Fedya terug te betaal soortgelyk wees. Met ander woorde, lineêre afhanklikheid kan nie geflous word nie. En as ons eintlik die kans bereken het , en het hulle nie uit die lug gehaal nie, kan ons gerus sê dat ons waardes stel ons die beste in staat om die waarskynlikheid van terugbetaling van die lening deur elke lener te skat, maar aangesien ons ooreengekom het om te aanvaar dat die bepaling van die koëffisiënte is volgens al die reëls uitgevoer, dan sal ons so aanneem - ons koëffisiënte laat ons toe om 'n beter skatting van die waarskynlikheid te gee :)
Ons wyk egter af. In hierdie afdeling moet ons verstaan hoe die vektor van gewigte bepaal word , wat nodig is om die waarskynlikheid van terugbetaling van die lening deur elke lener te bepaal.
Laat ons kortliks opsom met watter arsenaal ons kans gaan soek :
1. Ons neem aan dat die verband tussen die teikenveranderlike (voorspellingswaarde) en die faktor wat die resultaat beïnvloed lineêr is. Om hierdie rede word dit gebruik lineêre regressie funksie spesies , waarvan die lyn voorwerpe (kliënte) in klasse verdeel и of (kliënte wat in staat is om die lening terug te betaal en diegene wat nie). In ons geval het die vergelyking die vorm .
2. Ons gebruik omgekeerde logit funksie spesies om die waarskynlikheid te bepaal dat 'n voorwerp aan 'n klas behoort .
3. Ons beskou ons opleidingstel as 'n implementering van 'n veralgemeende Bernoulli skemas, dit wil sê, vir elke voorwerp word 'n ewekansige veranderlike gegenereer, wat met waarskynlikheid (sy eie vir elke voorwerp) neem die waarde 1 en met waarskynlikheid - 0.
4. Ons weet wat ons nodig het om te maksimeer monster waarskynlikheid funksie met inagneming van die aanvaarde faktore sodat die beskikbare monster die mees aanneemlike word. Met ander woorde, ons moet parameters kies waarteen die steekproef die waarskynlikste sal wees. In ons geval is die geselekteerde parameter die waarskynlikheid van leningterugbetaling , wat op sy beurt afhang van onbekende koëffisiënte . Ons moet dus so 'n vektor van gewigte vind , waarteen die waarskynlikheid van die steekproef maksimum sal wees.
5. Ons weet wat om te maksimeer voorbeeld van waarskynlikheidsfunksies wat jy kan gebruik maksimum waarskynlikheid metode. En ons ken al die moeilike truuks om met hierdie metode te werk.
Dit is hoe dit 'n multi-stap skuif blyk te wees :)
Onthou nou dat ons heel aan die begin van die artikel twee tipes verliesfunksies wou aflei Logistieke verlies afhangende van hoe objekklasse aangewys word. Dit het so gebeur dat in klassifikasieprobleme met twee klasse, die klasse aangedui word as и of . Afhangende van die notasie, sal die uitset 'n ooreenstemmende verliesfunksie hê.
Geval 1. Klassifikasie van voorwerpe in и
Vroeër, by die bepaling van die waarskynlikheid van 'n steekproef, waarin die waarskynlikheid van skuldterugbetaling deur die lener op grond van faktore en gegewe koëffisiënte bereken is , het ons die formule toegepas:
Eintlik is die betekenis logistieke reaksie funksies vir 'n gegewe vektor van gewigte
Dan verhinder niks ons om die steekproefwaarskynlikheidsfunksie soos volg te skryf nie:
Dit gebeur dat dit soms moeilik is vir sommige beginner-ontleders om dadelik te verstaan hoe hierdie funksie werk. Kom ons kyk na 4 kort voorbeelde wat alles sal opklaar:
1. As (d.w.s. volgens die opleidingsmonster behoort die voorwerp aan klas +1), en ons algoritme bepaal die waarskynlikheid om 'n voorwerp in 'n klas te klassifiseer gelyk aan 0.9, dan sal hierdie stukkie steekproefwaarskynlikheid soos volg bereken word:
2. As En , dan sal die berekening soos volg wees:
3. As En , dan sal die berekening soos volg wees:
4. As En , dan sal die berekening soos volg wees:
Dit is duidelik dat die waarskynlikheidsfunksie in gevalle 1 en 3 of in die algemene geval gemaksimeer sal word - met korrek geraaide waardes van die waarskynlikhede om 'n voorwerp aan 'n klas toe te ken .
As gevolg van die feit dat by die bepaling van die waarskynlikheid om 'n voorwerp aan 'n klas toe te ken Ons ken net nie die koëffisiënte nie , dan sal ons hulle soek. Soos hierbo genoem, is dit 'n optimaliseringsprobleem waarin ons eers die afgeleide van die waarskynlikheidsfunksie met betrekking tot die vektor van gewigte moet vind . Dit maak egter eers sin om die taak vir onsself te vereenvoudig: ons sal soek na die afgeleide van die logaritme waarskynlikheidsfunksies.
Hoekom na logaritme, in logistieke foutfunksies, Ons het die teken verander van op . Alles is eenvoudig, aangesien dit in probleme met die beoordeling van die kwaliteit van 'n model gebruiklik is om die waarde van 'n funksie te verminder, het ons die regterkant van die uitdrukking vermenigvuldig met en dienooreenkomstig, in plaas van om te maksimeer, verminder ons nou die funksie.
Eintlik, op die oomblik, voor jou oë, is die verliesfunksie noukeurig afgelei - Logistieke verlies vir 'n opleidingstel met twee klasse: и .
Nou, om die koëffisiënte te vind, moet ons net die afgeleide vind logistieke foutfunksies en kies dan, deur gebruik te maak van numeriese optimeringsmetodes, soos gradiënt afkoms of stogastiese gradiënt afkoms, die mees optimale koëffisiënte . Maar, gegewe die aansienlike volume van die artikel, word voorgestel om die differensiasie op u eie uit te voer, of miskien sal dit 'n onderwerp wees vir die volgende artikel met baie rekenkunde sonder sulke gedetailleerde voorbeelde.
Geval 2. Klassifikasie van voorwerpe in и
Die benadering hier sal dieselfde wees as met klasse и , maar die pad self na die uitset van die verliesfunksie Logistieke verlies, sal meer versier wees. Laat ons begin. Vir die waarskynlikheidsfunksie sal ons die operateur gebruik "as ... dan ..."... Dit wil sê, as Die ste voorwerp behoort aan die klas , dan gebruik ons die waarskynlikheid om die waarskynlikheid van die steekproef te bereken , as die voorwerp aan die klas behoort , dan vervang ons in die waarskynlikheid . Dit is hoe die waarskynlikheidsfunksie lyk:
Kom ons beskryf op ons vingers hoe dit werk. Kom ons kyk na 4 gevalle:
1. As и , dan sal die steekproefneming waarskynlikheid "gaan"
2. As и , dan sal die steekproefneming waarskynlikheid "gaan"
3. As и , dan sal die steekproefneming waarskynlikheid "gaan"
4. As и , dan sal die steekproefneming waarskynlikheid "gaan"
Dit is duidelik dat in gevalle 1 en 3, wanneer die waarskynlikhede korrek deur die algoritme bepaal is, waarskynlikheidsfunksie sal gemaksimeer word, dit wil sê, dit is presies wat ons wou kry. Hierdie benadering is egter nogal omslagtig en volgende sal ons 'n meer kompakte notasie oorweeg. Maar eers, kom ons logaritmeer die waarskynlikheidsfunksie met 'n verandering van teken, aangesien ons dit nou sal verminder.
Kom ons vervang eerder uitdrukking :
Kom ons vereenvoudig die regte term onder die logaritme deur eenvoudige rekenkundige tegnieke te gebruik en kry:
Nou is dit tyd om van die operateur ontslae te raak "as ... dan ...". Let daarop dat wanneer 'n voorwerp behoort aan die klas , dan in die uitdrukking onder die logaritme, in die noemer, tot die mag verhef , as die voorwerp aan die klas behoort , dan word $e$ tot die mag verhoog . Daarom kan die notasie vir die graad vereenvoudig word deur beide gevalle in een te kombineer: . dan logistieke foutfunksie sal die vorm aanneem:
In ooreenstemming met die reëls van logaritme, draai ons die breuk om en sit die teken uit "" (minus) vir die logaritme kry ons:
Hier is die verliesfunksie logistieke verlies, wat in die opleidingstel gebruik word met voorwerpe wat aan klasse toegewys is: и .
Wel, op hierdie stadium neem ek my verlof en ons sluit die artikel af.
Hulpmateriaal
1. Literatuur
1) Toegepaste regressie-analise / N. Draper, G. Smith - 2de uitg. – M.: Finansies en Statistiek, 1986 (vertaling uit Engels)
2) Waarskynlikheidsteorie en wiskundige statistiek / V.E. Gmurman - 9de uitgawe. - M.: Hoërskool, 2003
3) Waarskynlikheidsteorie / N.I. Chernova - Novosibirsk: Novosibirsk Staatsuniversiteit, 2007
4) Besigheidsanalise: van data tot kennis / Paklin N. B., Oreshkov V. I. - 2de uitg. — St. Petersburg: Peter, 2013
5) Datawetenskap Datawetenskap van nuuts af / Joel Gras - St. Petersburg: BHV Petersburg, 2017
6) Praktiese statistieke vir datawetenskapspesialiste / P. Bruce, E. Bruce - St. Petersburg: BHV Petersburg, 2018
2. Lesings, kursusse (video)
1)
2)
3)
4)
5)
3. Internetbronne
1)
2)
4)
6)