En ĉi tiu artikolo, ni analizos la teoriajn kalkulojn de la transformo linearaj regresaj funkcioj в inversa logit-transformfunkcio (alie nomita loĝistika respondfunkcio). Tiam, uzante la arsenalon metodo de maksimuma verŝajneco, laŭ la loĝistika regresa modelo, ni derivas la perdan funkcion Loĝistika Perdo, aŭ alivorte, ni difinos funkcion kun kiu la parametroj de la pezvektoro estas elektitaj en la loĝistika regresa modelo .
Artikola skizo:
- Ni ripetu la linearan rilaton inter du variabloj
- Ni identigu la bezonon de transformo linearaj regresaj funkcioj в loĝistika respondfunkcio
- Ni faru la transformojn kaj eligon loĝistika respondfunkcio
- Ni provu kompreni kial la metodo de malplej kvadrataj estas malbona kiam elektas parametrojn funkcioj Loĝistika Perdo
- Ni uzas metodo de maksimuma verŝajneco por determini funkcioj de elekto de parametroj :
5.1. Kazo 1: funkcio Loĝistika Perdo por objektoj kun klasnomoj 0 и 1:
5.2. Kazo 2: funkcio Loĝistika Perdo por objektoj kun klasnomoj -1 и +1:
La artikolo estas plena de simplaj ekzemploj, en kiuj ĉiuj kalkuloj estas facile fareblaj buŝe aŭ papere; en iuj kazoj, kalkulilo povas esti bezonata. Do pretiĝu :)
Ĉi tiu artikolo estas ĉefe celita por datumsciencistoj kun komenca nivelo de scio pri la bazaĵoj de maŝinlernado.
La artikolo ankaŭ provizos kodon por desegni grafikaĵojn kaj kalkulojn. Ĉiu kodo estas skribita en la lingvo pitono 2.7. Mi anticipe klarigu pri la "noveco" de la uzata versio - jen unu el la kondiĉoj por fari la konatan kurson de Yandex sur same konata interreta eduka platformo Coursera, kaj, kiel oni povus supozi, la materialo estis preparita surbaze de ĉi tiu kurso.
01. Rektlinia dependeco
Estas sufiĉe racie demandi la demandon - kion rilatas al ĝi lineara dependeco kaj loĝistika regreso?
Ĝi estas simpla! Loĝistika regreso estas unu el la modeloj kiuj apartenas al la lineara klasigilo. En simplaj vortoj, la tasko de linia klasigilo estas antaŭdiri celvalorojn de variabloj (regresoj) . Oni kredas, ke la dependeco inter la trajtoj kaj celvaloroj lineara. Tial la nomo de la klasigilo - lineara. Por diri ĝin tre malglate, la loĝistika regresmodelo estas bazita sur la supozo ke ekzistas linia rilato inter la karakterizaĵoj. kaj celvaloroj . Ĉi tiu estas la rilato.
Estas la unua ekzemplo en la studio, kaj temas, ĝuste, pri la rektlinia dependeco de la studataj kvantoj. En la procezo de preparado de la artikolo, mi trovis ekzemplon, kiu jam faris multajn homojn sur rando - la dependeco de kurento sur tensio. ("Aplikita regresanalizo", N. Draper, G. Smith). Ni rigardos ĝin ankaŭ ĉi tie.
Laŭ Leĝo de Ohm:
kie - nuna forto, - tensio, - rezisto.
Se ni ne scius Leĝo de Ohm, tiam ni povus trovi la dependecon empirie per ŝanĝado kaj mezurado , dum apogo fiksita. Tiam ni vidus ke la dependeca grafeo el donas pli-malpli rektan tra la origino. Ni diras "pli-malpli" ĉar, kvankam la rilato estas fakte preciza, niaj mezuradoj povas enhavi malgrandajn erarojn, kaj tial la punktoj sur la grafeo eble ne falas ĝuste sur la linio, sed estos disĵetitaj ĉirkaŭ ĝi hazarde.
Grafiko 1 "Dependeco" el »
Diagramo desegna kodo
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. La bezono transformi la linearan regresan ekvacion
Ni rigardu alian ekzemplon. Ni imagu, ke ni laboras en banko kaj nia tasko estas determini la probablecon de la prunteprenanto repagi la prunton depende de certaj faktoroj. Por simpligi la taskon, ni konsideros nur du faktorojn: la monatan salajron de la prunteprenanto kaj la monata prunto-repago.
La tasko estas tre kondiĉa, sed per ĉi tiu ekzemplo ni povas kompreni kial ne sufiĉas uzi linearaj regresaj funkcioj, kaj ankaŭ eksciu, kiajn transformojn oni devas efektivigi per la funkcio.
Ni revenu al la ekzemplo. Oni komprenas, ke ju pli alta la salajro, des pli la prunteprenanto povos asigni monate por repagi la prunton. Samtempe, por certa salajra gamo ĉi tiu rilato estos sufiĉe lineara. Ekzemple, ni prenu salajran gamon de 60.000 RUR ĝis 200.000 RUR kaj supozu, ke en la specifita salajra gamo, la dependeco de la grandeco de la monata pago sur la grandeco de la salajro estas lineara. Ni diru, ke por la specifita gamo de salajroj estis rivelita, ke la salajro-al-paga proporcio ne povas fali sub 3 kaj la prunteprenanto devas ankoraŭ havi 5.000 RUR en rezervo. Kaj nur en ĉi tiu kazo, ni supozos, ke la prunteprenanto repagos la prunton al la banko. Tiam, la lineara regresa ekvacio prenos la formon:
kie , , , - salajro -a prunteprenanto, - pruntopago -th prunteprenanto.
Anstataŭigante salajron kaj pruntpagon kun fiksaj parametroj en la ekvacion Vi povas decidi ĉu doni aŭ rifuzi prunton.
Rigardante antaŭen, ni rimarkas tion, kun la donitaj parametroj lineara regresa funkcio, uzata en loĝistika respondfunkcioj produktos grandajn valorojn, kiuj malfaciligos kalkulojn por determini la probablojn de prunto repago. Tial oni proponas redukti niajn koeficientojn, ni diru, je 25.000 XNUMX fojojn. Ĉi tiu transformo en la koeficientoj ne ŝanĝos la decidon doni prunton. Ni memoru ĉi tiun punkton por la estonteco, sed nun, por eĉ pli klare, pri kio ni parolas, ni konsideru la situacion kun tri eblaj prunteprenantoj.
Tabelo 1 "Eblaj prunteprenantoj"
Kodo por generi la tabelon
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']]
Konforme al la datumoj en la tabelo, Vasja, kun salajro de 120.000 RUR, volas ricevi prunton por ke li povu repagi ĝin ĉiumonate je 3.000 RUR. Ni determinis, ke por aprobi la prunton, la salajro de Vasja devas superi trioble la kvanton de la pago, kaj devas ankoraŭ resti 5.000 RUR. Vasya kontentigas ĉi tiun postulon: . Eĉ 106.000 XNUMX RUR restas. Malgraŭ tio, ke kiam oni kalkulas ni reduktis la probablecon 25.000 XNUMX fojojn, la rezulto estis la sama - la prunto povas esti aprobita. Fedya ankaŭ ricevos prunton, sed Lesha, malgraŭ la fakto, ke li ricevas la plej grandan parton, devos bremsi siajn apetitojn.
Ni desegnu grafeon por ĉi tiu kazo.
Grafiko 2 "Klasifiko de prunteprenantoj"
Kodo por desegni la grafeon
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()
Do, nia rekto, konstruita laŭ la funkcio , apartigas "malbonajn" prunteprenantojn de "bonaj". Tiuj prunteprenantoj, kies deziroj ne koincidas kun siaj kapabloj, estas super la linio (Lesha), dum tiuj, kiuj, laŭ la parametroj de nia modelo, kapablas repagi la prunton, estas sub la linio (Vasya kaj Fedya). Alivorte, ni povas diri ĉi tion: nia rekta linio dividas prunteprenantojn en du klasojn. Ni nomu ilin jene: al klaso Ni klasifikos tiujn prunteprenantojn, kiuj plej verŝajne repagos la prunton kiel aŭ Ni inkluzivos tiujn prunteprenantojn, kiuj plej verŝajne ne povos repagi la prunton.
Ni resumu la konkludojn el ĉi tiu simpla ekzemplo. Ni prenu punkton kaj, anstataŭigante la koordinatojn de la punkto en la ekvivalentan ekvacion de la linio , konsideru tri eblojn:
- Se la punkto estas sub la linio kaj ni asignas ĝin al la klaso , tiam la valoro de la funkcio estos pozitiva de por . Ĉi tio signifas, ke ni povas supozi, ke la probablo repagi la prunton estas ene . Ju pli granda la funkciovaloro, des pli alta la probableco.
- Se punkto estas super linio kaj ni asignas ĝin al la klaso aŭ , tiam la valoro de la funkcio estos negativa de por . Tiam ni supozos, ke la probablo de repago de ŝuldo estas ene kaj, ju pli granda la absoluta valoro de la funkcio, des pli alta nia konfido.
- La punkto estas sur rekta linio, sur la limo inter du klasoj. En ĉi tiu kazo, la valoro de la funkcio estos egala kaj la probablo repagi la prunton estas egala al .
Nun, ni imagu, ke ni havas ne du faktorojn, sed dekojn, kaj ne tri, sed milojn da prunteprenantoj. Tiam anstataŭ rekta linio ni havos m-dimensia ebeno kaj koeficientoj ni ne estos prenitaj el la aero, sed derivitaj laŭ ĉiuj reguloj, kaj surbaze de amasigitaj datumoj pri prunteprenantoj, kiuj havas aŭ ne repagis la prunton. Kaj efektive, notu, ke ni nun elektas prunteprenantojn uzante jam konatajn koeficientojn . Fakte, la tasko de la loĝistika regresa modelo estas ĝuste determini la parametrojn , ĉe kiu la valoro de la perdfunkcio Loĝistika Perdo tendencos al la minimumo. Sed pri kiel la vektoro estas kalkulita , ni ekscios pli en la 5-a sekcio de la artikolo. Intertempe ni revenas al la promesita tero — al nia bankisto kaj liaj tri klientoj.
Danke al la funkcio ni scias, al kiu oni povas doni prunton kaj al kiu oni devas rifuzi. Sed vi ne povas iri al la direktoro kun tiaj informoj, ĉar ili volis ricevi de ni la probablecon, ke ĉiu prunteprenanto repagos la prunton. Kion fari? La respondo estas simpla - ni devas iel transformi la funkcion , kies valoroj kuŝas en la intervalo al funkcio, kies valoroj kuŝos en la intervalo . Kaj tia funkcio ekzistas, ĝi nomiĝas loĝistika respondfunkcio aŭ invers-logita transformo. Renkontu:
Ni vidu paŝon post paŝo kiel ĝi funkcias loĝistika respondfunkcio. Notu, ke ni marŝos en la kontraŭa direkto, t.e. ni supozos ke ni konas la probablovaloron, kiu kuŝas en la intervalo de por kaj tiam ni "malvolvos" ĉi tiun valoron al la tuta gamo de nombroj de por .
03. Ni derivas la loĝistikan respondfunkcion
Paŝo 1. Konvertu la probablajn valorojn en gamon
Dum la transformo de la funkcio в loĝistika respondfunkcio Ni lasos nian kreditan analiziston trankvila kaj faros turneon de la bukmekroj anstataŭe. Ne, kompreneble, ni ne metos vetojn, ĉio, kio interesas nin, estas la signifo de la esprimo, ekzemple, la ŝanco estas 4 kontraŭ 1. La probableco, konata al ĉiuj vetantoj, estas la proporcio de "sukcesoj" al " fiaskoj”. En probablaj esprimoj, probableco estas la probableco de okazaĵo okazanta dividita per la probableco de la okazaĵo ne okazanta. Ni skribu la formulon por la ŝanco okazi evento :
kie - probablo de okazigo de evento, — probableco de evento NE okazanta
Ekzemple, se la probablo ke juna, forta kaj ludema ĉevalo moknomita "Veterok" batos maljunan kaj malfortan maljunulinon nomitan "Matilda" ĉe vetkuro estas egala al , tiam la ŝancoj de sukceso por "Veterok" estos к kaj inverse, sciante la probablecon, ne estos malfacile por ni kalkuli la probablecon :
Tiel, ni lernis "traduki" probablecon en ŝancojn, de kiuj prenas valorojn por . Ni faru unu plian paŝon kaj lernu "traduki" la probablecon al la tuta nombra linio de por .
Paŝo 2. Konvertu la probablajn valorojn en gamon
Ĉi tiu paŝo estas tre simpla - ni prenu la logaritmon de la probableco al la bazo de la nombro de Euler. kaj ni ricevas:
Nun ni scias ke se , tiam kalkulu la valoron estos tre simpla kaj, krome, ĝi devus esti pozitiva: . Ĉi tio estas vera.
Pro scivolemo, ni kontrolu kio se , tiam ni atendas vidi negativan valoron . Ni kontrolas: . Tio ĝustas.
Nun ni scias kiel konverti la probablovaloron de por laŭ la tuta nombra linio de por . En la sekva paŝo ni faros la malon.
Nuntempe, ni rimarkas, ke laŭ la reguloj de logaritmo, konante la valoron de la funkcio , vi povas kalkuli la probablecon:
Ĉi tiu metodo por determini probablecon estos utila al ni en la sekva paŝo.
Paŝo 3. Ni derivu formulon por determini
Do ni lernis, sciante , trovi funkciovalorojn . Tamen, fakte, ni bezonas ĝuste la malon - koni la valoron trovi . Por fari tion, ni turnu nin al tia koncepto kiel la inversa probabla funkcio, laŭ kiu:
En la artikolo ni ne derivas la supran formulon, sed ni kontrolos ĝin uzante la nombrojn de la supra ekzemplo. Ni scias, ke kun probableco de 4 al 1 (), la probableco de la okazaĵo okazanta estas 0.8 (). Ni faru anstataŭigon: . Ĉi tio koincidas kun niaj kalkuloj faritaj antaŭe. Ni pluiru.
En la lasta paŝo ni deduktis tion , kio signifas ke vi povas fari anstataŭigon en la inversa probabla funkcio. Ni ricevas:
Dividu kaj la numeratoron kaj la denominatoron per , Tiam:
Ĉiaokaze, por certigi, ke ni ne ie ajn faris eraron, ni faros ankoraŭ unu malgrandan kontrolon. En paŝo 2, ni por determinis tion . Tiam, anstataŭigante la valoron en la loĝistika respondfunkcio, ni atendas atingi . Ni anstataŭigas kaj ricevas:
Gratulon, kara leganto, ni ĵus derivis kaj provis la loĝistikan respondfunkcion. Ni rigardu la grafeon de la funkcio.
Grafiko 3 "Loĝistika responda funkcio"
Kodo por desegni la grafeon
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()
En la literaturo oni povas trovi ankaŭ la nomon de tiu ĉi funkcio kiel sigmoida funkcio. La grafikaĵo klare montras, ke la ĉefa ŝanĝo en la probableco de objekto apartenanta al klaso okazas ene de relative malgranda intervalo. , ie de por .
Mi proponas reveni al nia kredita analizisto kaj helpi lin kalkuli la probablecon de prunto repago, alie li riskas resti sen gratifiko :)
Tabelo 2 "Eblaj prunteprenantoj"
Kodo por generi la tabelon
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']]
Do, ni determinis la probablecon de prunto repago. Ĝenerale, ĉi tio ŝajnas esti vera.
Efektive, la probableco, ke Vasya, kun salajro de 120.000 3.000 RUR, povos doni 100 0.3 RUR al la banko ĉiumonate, estas proksima al XNUMX%. Parenteze, ni devas kompreni, ke banko povas doni prunton al Lesha, se la politiko de la banko provizas, ekzemple, pruntedonadon al klientoj kun probablo de prunto repago de pli ol, ekzemple, XNUMX. Nur en ĉi tiu kazo la banko kreos pli grandan rezervon por eblaj perdoj.
Oni devas ankaŭ rimarki, ke la salajro-al-paga proporcio de almenaŭ 3 kaj kun marĝeno de 5.000 RUR estis prenita de la plafono. Tial, ni ne povus uzi la vektoron de pezoj en ĝia originala formo . Ni bezonis multe redukti la koeficientojn, kaj ĉi-kaze ni dividis ĉiun koeficienton per 25.000 XNUMX, tio estas, en esenco, ni alĝustigis la rezulton. Sed ĉi tio estis farita specife por simpligi komprenon de la materialo en la komenca etapo. En la vivo, ni ne bezonos inventi kaj ĝustigi koeficientojn, sed trovi ilin. En la sekvaj sekcioj de la artikolo ni derivos la ekvaciojn per kiuj la parametroj estas elektitaj .
04. Malplej kvadrataj metodo por determini la vektoron de pezoj en la loĝistika respondfunkcio
Ni jam konas ĉi tiun metodon por elekti vektoron de pezoj kiel Metodo de Malplej Kvadratoj (LSM) kaj fakte, kial ni tiam ne uzas ĝin en binaraj klasifikproblemoj? Efektive, nenio malhelpas vin uzi MNC, nur ĉi tiu metodo en klasifikproblemoj donas rezultojn kiuj estas malpli precizaj ol Loĝistika Perdo. Estas teoria bazo por ĉi tio. Ni unue rigardu unu simplan ekzemplon.
Ni supozu, ke niaj modeloj (uzante MSE и Loĝistika Perdo) jam komencis elekti la vektoron de pezoj kaj ni ĉesigis la kalkulon je iu paŝo. Ne gravas ĉu en la mezo, ĉe la fino aŭ ĉe la komenco, la ĉefa afero estas, ke ni jam havas iujn valorojn de la vektoro de pezoj kaj ni supozu, ke ĉe ĉi tiu paŝo, la vektoro de pezoj. por ambaŭ modeloj ne estas diferencoj. Poste prenu la rezultajn pezojn kaj anstataŭigu ilin loĝistika respondfunkcio () por iu objekto, kiu apartenas al la klaso . Ni ekzamenas du kazojn, kiam, laŭ la elektita vektoro de pezoj, nia modelo tre eraras kaj inverse - la modelo tre certas, ke la objekto apartenas al la klaso. . Ni vidu kiajn monpunojn estos eldonitaj kiam vi uzas MNC и Loĝistika Perdo.
Kodo por kalkuli punojn depende de la perda funkcio uzata
# класс объекта
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
Kazo de fuŝo — la modelo asignas objekton al klaso kun probableco de 0,01
Puno pri uzo MNC estos:
Puno pri uzo Loĝistika Perdo estos:
Kazo de forta konfido — la modelo asignas objekton al klaso kun probableco de 0,99
Puno pri uzo MNC estos:
Puno pri uzo Loĝistika Perdo estos:
Ĉi tiu ekzemplo bone ilustras, ke en kazo de malneta eraro la perdofunkcio Log Perdo punas la modelon signife pli ol MSE. Ni nun komprenu, kio estas la teoria fono por uzi la perdan funkcion Log Perdo en klasifikproblemoj.
05. Maksimuma verŝajneca metodo kaj loĝistika regreso
Kiel promesite komence, la artikolo estas plena de simplaj ekzemploj. En la studio estas alia ekzemplo kaj malnovaj gastoj - bankprunteprenantoj: Vasja, Fedya kaj Lesha.
Por la okazo, antaŭ ol disvolvi la ekzemplon, mi memorigu al vi, ke en la vivo ni traktas trejnan specimenon de miloj aŭ milionoj da objektoj kun dekoj aŭ centoj da funkcioj. Tamen, ĉi tie la nombroj estas prenitaj por ke ili facile povu konveni en la kapon de novulo datumsciencisto.
Ni revenu al la ekzemplo. Ni imagu, ke la direktoro de la banko decidis doni prunton al ĉiuj bezonatoj, malgraŭ tio, ke la algoritmo diris al li ne doni ĝin al Lesha. Kaj nun sufiĉe da tempo pasis kaj ni scias, kiu el la tri herooj repagis la prunton kaj kiu ne. Kio estis atendata: Vasja kaj Fedja repagis la prunton, sed Lesha ne faris. Nun ni imagu, ke ĉi tiu rezulto estos nova trejna specimeno por ni kaj, samtempe, estas kvazaŭ ĉiuj datumoj pri la faktoroj influantaj la probablecon repagi la prunton (la salajro de prunteprenanto, grandeco de la monata pago) malaperis. Tiam, intuicie, ni povas supozi, ke ĉiu tria prunteprenanto ne repagos la prunton al la banko, aŭ alivorte, la probablecon de la venonta prunteprenanto repagos la prunton. . Ĉi tiu intuicia supozo havas teorian konfirmon kaj baziĝas sur metodo de maksimuma verŝajneco, ofte en la literaturo ĝi nomiĝas principo de maksimuma verŝajneco.
Unue, ni konatiĝu kun la koncipa aparato.
Specimena verŝajneco estas la probableco akiri ekzakte tian specimenon, akiri precize tiajn observojn/rezultojn, t.e. la produkto de la probabloj akiri ĉiun el la specimenaj rezultoj (ekzemple, ĉu la prunto de Vasya, Fedya kaj Lesha estis repagita aŭ ne repagita samtempe).
Verŝajnecfunkcio rilatas la verŝajnecon de specimeno al la valoroj de la distribuaj parametroj.
En nia kazo, la trejna specimeno estas ĝeneraligita Bernoulli-skemo, en kiu la hazarda variablo prenas nur du valorojn: aŭ . Tial, la provaĵverŝajneco povas esti skribita kiel verŝajnecfunkcio de la parametro kiel sekvas:
La supra enskribo povas esti interpretita jene. La komuna probablo ke Vasja kaj Fedya repagos la prunton estas egala al , la probablo ke Lesha NE repagos la prunton estas egala al (ĉar ĝi NE estis la prunto-repago kiu okazis), tial la komuna probableco de ĉiuj tri eventoj estas egala .
Maksimuma verŝajneca metodo estas metodo por taksi nekonatan parametron per maksimumigado verŝajnaj funkcioj. En nia kazo, ni devas trovi tian valoron ĉe kiu atingas sian maksimumon.
De kie venas la reala ideo - serĉi la valoron de nekonata parametro ĉe kiu la verŝajnecfunkcio atingas maksimumon? La originoj de la ideo devenas de la ideo ke specimeno estas la nura fonto de scio havebla al ni pri la populacio. Ĉio, kion ni scias pri la populacio, estas reprezentita en la specimeno. Tial ĉio, kion ni povas diri, estas, ke specimeno estas la plej preciza reflekto de la disponebla loĝantaro por ni. Tial, ni devas trovi parametron ĉe kiu la havebla specimeno iĝas la plej verŝajna.
Evidente, ni traktas optimumigan problemon en kiu ni devas trovi la ekstreman punkton de funkcio. Por trovi la ekstreman punkton, necesas konsideri la unuaordan kondiĉon, tio estas, egaligi la derivaĵon de la funkcio al nulo kaj solvi la ekvacion kun respekto al la dezirata parametro. Tamen, serĉi la derivaĵon de produkto de granda nombro da faktoroj povas esti longa tasko; por eviti tion, ekzistas speciala tekniko - ŝanĝi al la logaritmo. verŝajnaj funkcioj. Kial tia transiro eblas? Ni atentu la fakton, ke ni ne serĉas la ekstremumon de la funkcio mem, kaj la ekstrema punkto, tio estas, la valoro de la nekonata parametro ĉe kiu atingas sian maksimumon. Dum moviĝado al logaritmo, la ekstrema punkto ne ŝanĝiĝas (kvankam la ekstremumo mem malsamo), ĉar la logaritmo estas monotona funkcio.
Ni, konforme al la supre, daŭre disvolvu nian ekzemplon per pruntoj de Vasja, Fedya kaj Lesha. Unue ni pluiru al logaritmo de la verŝajnecfunkcio:
Nun ni povas facile diferencigi la esprimon per :
Kaj finfine, konsideru la unuaordan kondiĉon - ni egaligas la derivaĵon de la funkcio al nulo:
Tiel, nia intuicia takso de la probablo de prunto repago estis teorie pravigita.
Bonege, sed kion ni faru kun ĉi tiu informo nun? Se ni supozas, ke ĉiu tria prunteprenanto ne redonas la monon al la banko, tiam ĉi-lasta neeviteble bankrotos. Ĝuste, sed nur kiam oni taksas la probablon de prunto repago egala al Ni ne enkalkulis la faktorojn influantajn pruntan repagon: la salajro de la prunteprenanto kaj la grandeco de la monata pago. Ni memoru, ke ni antaŭe kalkulis la probablecon de repago de la prunto de ĉiu kliento, konsiderante ĉi tiujn samajn faktorojn. Estas logike, ke ni akiris probablojn malsamajn de la konstanta egala .
Ni difinu la verŝajnecon de specimenoj:
Kodo por kalkulado de specimenaj verŝajnecoj
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)
Ekzempla verŝajneco ĉe konstanta valoro :
Specimena verŝajneco kiam oni kalkulas la probablon de prunto repago konsiderante faktorojn :
La verŝajneco de specimeno kun probableco kalkulita depende de la faktoroj montriĝis pli alta ol la verŝajneco kun konstanta probablovaloro. Kion ĉi tio signifas? Ĉi tio sugestas, ke scio pri la faktoroj ebligis pli precize elekti la probablecon de prunto-repago por ĉiu kliento. Sekve, eldonante la sekvan prunton, estus pli ĝuste uzi la modelon proponitan fine de la sekcio 3 de la artikolo por taksi la probablon de repago de ŝuldo.
Sed tiam, se ni volas maksimumigi specimena verŝajnecfunkcio, kial do ne uzi iun algoritmon, kiu produktos probablojn por Vasja, Fedja kaj Lesha, ekzemple, egalajn al 0.99, 0.99 kaj 0.01 respektive. Eble tia algoritmo funkcios bone sur la trejna specimeno, ĉar ĝi proksimigos la specimenan verŝajnecvaloron al , sed, unue, tia algoritmo plej verŝajne havos malfacilaĵojn kun ĝeneraliga kapablo, kaj due, ĉi tiu algoritmo certe ne estos lineara. Kaj se metodoj por kontraŭbatali trotrejnadon (same malforta ĝeneraligo) klare ne estas inkluzivitaj en la plano de ĉi tiu artikolo, tiam ni trairu la duan punkton pli detale. Por fari tion, simple respondu simplan demandon. Ĉu la probablo de Vasja kaj Fedya repagi la prunton povas esti la sama, konsiderante la faktorojn konatajn de ni? El la vidpunkto de sonlogiko, kompreneble ne, ĝi ne povas. Do Vasja pagos 2.5% de sia salajro monate por repagi la prunton, kaj Fedya - preskaŭ 27,8%. Ankaŭ en grafikaĵo 2 "Klienta klasifiko" ni vidas, ke Vasja estas multe pli for de la linio apartiganta la klasojn ol Fedya. Kaj fine, ni scias ke la funkcio por Vasja kaj Fedja prenas malsamajn valorojn: 4.24 por Vasja kaj 1.0 por Fedja. Nun, se Fedya, ekzemple, gajnus ordon de grandeco pli aŭ petis pli malgrandan prunton, tiam la probabloj repagi la prunton por Vasya kaj Fedya estus similaj. Alivorte, lineara dependeco ne povas esti trompita. Kaj se ni efektive kalkulus la probablecon , kaj ne elprenis ilin el la nuaero, ni povus sekure diri ke niaj valoroj plej bone permesas al ni taksi la probablecon de repago de la prunto de ĉiu prunteprenanto, sed ĉar ni konsentis supozi, ke la determino de la koeficientoj estis efektivigita laŭ ĉiuj reguloj, tiam ni supozos tiel - niaj koeficientoj permesas al ni doni pli bonan takson de la probablo :)
Tamen ni divagas. En ĉi tiu sekcio ni devas kompreni kiel la vektoro de pezoj estas determinita , kiu estas necesa por taksi la probablecon de repago de la prunto de ĉiu prunteprenanto.
Ni mallonge resumu, per kia arsenalo ni serĉas probablecon :
1. Ni supozas ke la rilato inter la celvariablo (prognoza valoro) kaj la faktoro influanta la rezulton estas lineara. Tial ĝi estas uzata lineara regresa funkcio bonkora , kies linio dividas objektojn (klientojn) en klasojn и aŭ (klientoj kiuj kapablas repagi la prunton kaj tiuj kiuj ne). En nia kazo, la ekvacio havas la formon .
2. Ni uzas inversa logit-funkcio bonkora por determini la probablecon de objekto apartenanta al klaso .
3. Ni konsideras nian trejnadon kiel efektivigon de ĝeneraligita Bernoulli-skemoj, tio estas, por ĉiu objekto hazarda variablo estas generita, kiu kun probableco (sia propra por ĉiu objekto) prenas la valoron 1 kaj kun probableco - NENIU.
4. Ni scias, kion ni bezonas maksimumigi specimena verŝajnecfunkcio konsiderante la akceptitajn faktorojn por ke la disponebla specimeno fariĝu la plej kredinda. Alivorte, ni devas elekti parametrojn ĉe kiuj la specimeno estos plej kredinda. En nia kazo, la elektita parametro estas la probablo de prunto repago , kiu siavice dependas de nekonataj koeficientoj . Do ni devas trovi tian vektoron de pezoj , ĉe kiu la verŝajneco de la specimeno estos maksimuma.
5. Ni scias kion maksimumigi specimenaj verŝajnecaj funkcioj povas uzi metodo de maksimuma verŝajneco. Kaj ni scias ĉiujn malfacilajn lertaĵojn por labori kun ĉi tiu metodo.
Jen kiel ĝi rezultas esti plurpaŝa movo :)
Nun memoru, ke komence de la artikolo ni volis derivi du specojn de perdaj funkcioj Loĝistika Perdo depende de kiel objektoklasoj estas indikitaj. Okazis, ke en klasifikproblemoj kun du klasoj, la klasoj estas signitaj kiel и aŭ . Depende de la notacio, la eligo havos respondan perdan funkcion.
Kazo 1. Klasifiko de objektoj en и
Antaŭe, kiam oni determinis la verŝajnecon de specimeno, en kiu la probablo de ŝuldo repago de la prunteprenanto estis kalkulita surbaze de faktoroj kaj donitaj koeficientoj , ni aplikis la formulon:
Fakte estas la signifo loĝistika respondfunkcioj por donita vektoro de pezoj
Tiam nenio malhelpas nin skribi la ekzemplan verŝajnecfunkcion jene:
Okazas, ke foje estas malfacile por iuj komencaj analizistoj tuj kompreni kiel funkcias ĉi tiu funkcio. Ni rigardu 4 mallongajn ekzemplojn, kiuj klarigos aferojn:
1. se (t.e., laŭ la trejna specimeno, la objekto apartenas al klaso +1), kaj nia algoritmo determinas la probablecon klasifiki objekton al klaso egala al 0.9, tiam ĉi tiu specimena verŝajneco estos kalkulita jene:
2. se kaj , tiam la kalkulo estos tia:
3. se kaj , tiam la kalkulo estos tia:
4. se kaj , tiam la kalkulo estos tia:
Estas evidente, ke la verŝajnecfunkcio estos maksimumigita en kazoj 1 kaj 3 aŭ en la ĝenerala kazo - kun ĝuste divenitaj valoroj de la probabloj atribui objekton al klaso. .
Pro tio, ke kiam oni determinas la probablecon atribui objekton al klaso Ni nur ne konas la koeficientojn , tiam ni serĉos ilin. Kiel menciite supre, ĉi tio estas optimumiga problemo en kiu unue ni devas trovi la derivaĵon de la verŝajnecfunkcio kun respekto al la vektoro de pezoj. . Tamen unue havas sencon simpligi la taskon por ni mem: ni serĉos la derivaĵon de la logaritmo verŝajnaj funkcioj.
Kial post logaritmo, en loĝistikaj eraraj funkcioj, ni ŝanĝis la signon de sur . Ĉio estas simpla, ĉar en problemoj pri taksado de la kvalito de modelo kutimas minimumigi la valoron de funkcio, ni multiplikis la dekstran flankon de la esprimo per kaj sekve, anstataŭ maksimumigi, nun ni minimumigas la funkcion.
Efektive, ĝuste nun, antaŭ viaj okuloj, la perdfunkcio estis dolore derivita - Loĝistika Perdo por trejnado kun du klasoj: и .
Nun, por trovi la koeficientojn, ni nur bezonas trovi la derivaĵon loĝistikaj eraraj funkcioj kaj tiam, uzante nombrajn optimumigajn metodojn, kiel gradienta deveno aŭ stokasta gradienta deveno, elektu la plej optimumajn koeficientojn. . Sed, konsiderante la konsiderindan volumon de la artikolo, oni proponas efektivigi la diferencigon memstare, aŭ eble tio estos temo por la sekva artikolo kun multe da aritmetiko sen tiaj detalaj ekzemploj.
Kazo 2. Klasifiko de objektoj en и
La aliro ĉi tie estos la sama kiel ĉe klasoj и , sed la vojo mem al la eligo de la perdfunkcio Loĝistika Perdo, estos pli ornamita. Ni komencu. Por la verŝajnecfunkcio ni uzos la operatoron "se... tiam..."... Tio estas, se La th objekto apartenas al la klaso , tiam por kalkuli la verŝajnecon de la specimeno ni uzas la probablecon , se la objekto apartenas al la klaso , tiam ni anstataŭigas en la verŝajnecon . Jen kiel aspektas la verŝajnecfunkcio:
Ni priskribu per niaj fingroj kiel ĝi funkcias. Ni konsideru 4 kazojn:
1. se и , tiam la specimena verŝajneco "iros"
2. se и , tiam la specimena verŝajneco "iros"
3. se и , tiam la specimena verŝajneco "iros"
4. se и , tiam la specimena verŝajneco "iros"
Estas evidente, ke en kazoj 1 kaj 3, kiam la probabloj estis ĝuste determinitaj per la algoritmo, verŝajna funkcio estos maksimumigita, tio estas, ĉi tio estas ĝuste kion ni volis akiri. Tamen, ĉi tiu aliro estas sufiĉe ĝena kaj poste ni konsideros pli kompaktan notacion. Sed unue, ni logaritmu la verŝajnan funkcion kun ŝanĝo de signo, ĉar nun ni minimumigos ĝin.
Ni anstataŭu anstataŭe esprimo :
Ni simpligu la ĝustan terminon sub la logaritmo uzante simplajn aritmetikajn teknikojn kaj ricevu:
Nun estas tempo forigi la funkciigiston "se... tiam...". Notu ke kiam objekto apartenas al la klaso , tiam en la esprimo sub la logaritmo, en la denominatoro, levita al la potenco , se la objekto apartenas al la klaso , tiam $e$ estas levita al la potenco . Tial, la notacio por la grado povas esti simpligita kombinante ambaŭ kazojn en unu: . Tiam loĝistika erara funkcio prenos la formon:
Konforme al la reguloj de logaritmo, ni turnas la frakcion kaj estingas la signon "" (minus) por la logaritmo, ni ricevas:
Jen la perda funkcio loĝistika perdo, kiu estas uzata en la trejnado kun objektoj asignitaj al klasoj: и .
Nu, ĉi-momente mi foriras kaj ni finas la artikolon.
Helpmaterialoj
1. Literaturo
1) Aplikata regresa analizo / N. Draper, G. Smith - 2-a eld. – M.: Financo kaj Statistiko, 1986 (traduko el la angla)
2) Teorio de probablo kaj matematika statistiko / V.E. Gmurman - 9-a red. - M.: Supera Lernejo, 2003
3) Teorio de probablo / N.I. Ĉernova - Novosibirsk: Novosibirsk State University, 2007
4) Komerca analizo: de datumoj al scio / Paklin N. B., Oreŝkov V. I. - 2-a eld. — Sankt-Peterburgo: Petro, 2013
5) Datenscienco Datenscienco de nulo / Joel Gras - Sankt-Peterburgo: BHV Petersburg, 2017
6) Praktika statistiko por specialistoj pri Datumscienco / P. Bruce, E. Bruce - Sankt-Peterburgo: BHV Petersburg, 2018
2. Prelegoj, kursoj (video)
1)
2)
3)
4)
5)
3. Interretaj fontoj
1)
2)
4)
6)
7)
fonto: www.habr.com