En aquest article, analitzarem els càlculs teòrics de la transformació funcions de regressió lineal в funció de transformació logit inversa (també anomenada funció de resposta logística). Després, utilitzant l'arsenal mètode de màxima probabilitat, d'acord amb el model de regressió logística, obtenim la funció de pèrdua Pèrdua logística, o dit d'una altra manera, definirem una funció amb la qual es seleccionen els paràmetres del vector pes en el model de regressió logística .
Esquema de l'article:
- Repetim la relació lineal entre dues variables
- Identifiquem la necessitat de transformació funcions de regressió lineal в funció de resposta logística
- Realitzem les transformacions i la sortida funció de resposta logística
- Intentem entendre per què el mètode dels mínims quadrats és dolent a l'hora de seleccionar paràmetres funcions Pèrdua logística
- Fem servir mètode de màxima probabilitat per determinar funcions de selecció de paràmetres :
5.1. Cas 1: funció Pèrdua logística per a objectes amb designacions de classe 0 и 1:
5.2. Cas 2: funció Pèrdua logística per a objectes amb designacions de classe -1 и +1:
L'article està ple d'exemples senzills en què tots els càlculs són fàcils de fer oralment o en paper; en alguns casos, pot ser necessària una calculadora. Així que prepareu-vos :)
Aquest article està destinat principalment a científics de dades amb un nivell inicial de coneixements sobre els conceptes bàsics de l'aprenentatge automàtic.
L'article també proporcionarà codi per dibuixar gràfics i càlculs. Tot el codi està escrit en l'idioma python 2.7. Permeteu-me explicar per endavant la "novetat" de la versió utilitzada: aquesta és una de les condicions per fer el conegut curs de Yandex en una plataforma educativa en línia igualment coneguda Coursera, i, com es podria suposar, el material es va preparar a partir d'aquest curs.
01. Dependència en línia recta
És bastant raonable fer la pregunta: què hi tenen a veure la dependència lineal i la regressió logística?
És fàcil! La regressió logística és un dels models que pertanyen al classificador lineal. En paraules senzilles, la tasca d'un classificador lineal és predir valors objectiu a partir de variables (regressors) . Es creu que la dependència entre les característiques i valors objectiu lineal. D'aquí el nom del classificador - lineal. Per dir-ho molt aproximadament, el model de regressió logística es basa en el supòsit que hi ha una relació lineal entre les característiques i valors objectiu . Aquesta és la connexió.
Hi ha el primer exemple a l'estudi, i es tracta, correctament, de la dependència rectilínia de les magnituds que s'estudien. En el procés de preparació de l'article, em vaig trobar amb un exemple que ja ha posat molta gent al límit: la dependència del corrent de la tensió. ("Anàlisi de regressió aplicada", N. Draper, G. Smith). Aquí també ho mirarem.
Segons Llei d'Ohm:
On - Potència actual, - voltatge, - resistència.
Si no ho sabéssim llei d'Ohm, llavors podríem trobar la dependència empíricament canviant i mesurar , tot donant suport fixat. Aleshores veurem que el gràfic de dependència d' dóna una línia més o menys recta per l'origen. Diem "més o menys" perquè, tot i que la relació és realment precisa, les nostres mesures poden contenir errors petits i, per tant, és possible que els punts del gràfic no caiguin exactament a la línia, sinó que s'hi repartiran aleatòriament.
Gràfic 1 “Dependència” d' »
Codi de dibuix del gràfic
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 necessitat de transformar l'equació de regressió lineal
Vegem un altre exemple. Imaginem que treballem en un banc i la nostra tasca és determinar la probabilitat que el prestatari amorteixi el préstec en funció de determinats factors. Per simplificar la tasca, tindrem en compte només dos factors: el sou mensual del prestatari i l'import mensual de devolució del préstec.
La tasca és molt condicional, però amb aquest exemple podem entendre per què no n'hi ha prou amb utilitzar-la funcions de regressió lineal, i també esbrina quines transformacions s'han de dur a terme amb la funció.
Tornem a l'exemple. S'entén que com més gran sigui el sou, més el prestatari podrà destinar mensualment per amortitzar el préstec. Al mateix temps, per a un determinat rang salarial aquesta relació serà força lineal. Per exemple, prenem un rang salarial de 60.000 RUR a 200.000 RUR i suposem que en el rang salarial especificat, la dependència de la mida del pagament mensual de la mida del sou és lineal. Diguem que per al rang de salaris especificat es va revelar que la relació salari/pagament no pot baixar de 3 i que el prestatari encara ha de tenir 5.000 RUR en reserva. I només en aquest cas, assumirem que el prestatari retornarà el préstec al banc. Aleshores, l'equació de regressió lineal tindrà la forma:
on , , , - el salari -è prestatari, - pagament del préstec -è prestatari.
Substituint el salari i el pagament del préstec amb paràmetres fixos a l'equació Vostè pot decidir si concedir o rebutjar un préstec.
De cara al futur, observem que, amb els paràmetres donats funció de regressió lineal, utilitzat en Funcions de resposta logística produirà grans valors que complicaran els càlculs per determinar les probabilitats de devolució del préstec. Per tant, es proposa reduir els nostres coeficients, diguem-ne, en 25.000 vegades. Aquesta transformació dels coeficients no canviarà la decisió d'emetre un préstec. Recordem aquest punt per al futur, però ara, per aclarir encara més de què estem parlant, considerem la situació amb tres possibles prestataris.
Taula 1 "Prestataris potencials"
Codi per generar la taula
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']]
D'acord amb les dades de la taula, Vasya, amb un sou de 120.000 RUR, vol rebre un préstec perquè el pugui retornar mensualment a 3.000 RUR. Vam determinar que per aprovar el préstec, el sou de Vasya ha de superar el triple de l'import del pagament i encara hi ha de quedar 5.000 RUR. Vasya compleix aquest requisit: . Fins i tot queden 106.000 RUR. Malgrat que a l'hora de calcular hem reduït les probabilitats 25.000 vegades, el resultat va ser el mateix: el préstec es pot aprovar. Fedya també rebrà un préstec, però Lesha, malgrat que és el que més en rep, haurà de frenar la gana.
Dibuixem un gràfic per a aquest cas.
Gràfic 2 "Classificació dels prestataris"
Codi per dibuixar el gràfic
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()
Així doncs, la nostra recta, construïda d'acord amb la funció , separa els prestataris "dolents" dels "bons". Els prestataris els desitjos dels quals no coincideixen amb les seves capacitats estan per sobre de la línia (Lesha), mentre que els que, segons els paràmetres del nostre model, són capaços de pagar el préstec estan per sota de la línia (Vasya i Fedya). En altres paraules, podem dir això: la nostra línia directa divideix els prestataris en dues classes. Denotem-los així: a classe Classificarem els prestataris que tenen més probabilitats de retornar el préstec com a o Inclourem aquells prestataris que probablement no podran pagar el préstec.
Resumim les conclusions d'aquest exemple senzill. Prenem un punt i, substituint les coordenades del punt en l'equació corresponent de la recta , considereu tres opcions:
- Si el punt està sota la línia i l'assignem a la classe , després el valor de la funció serà positiu de до . Això vol dir que podem suposar que la probabilitat de pagar el préstec és dins . Com més gran sigui el valor de la funció, més gran serà la probabilitat.
- Si un punt està per sobre d'una línia i l'assignem a la classe o , aleshores el valor de la funció serà negatiu de до . Aleshores assumirem que la probabilitat de pagament del deute és dins i, com més gran sigui el valor absolut de la funció, més gran serà la nostra confiança.
- El punt està en una línia recta, al límit entre dues classes. En aquest cas, el valor de la funció serà igual i la probabilitat de retornar el préstec és igual a .
Ara, imaginem que no tenim dos factors, sinó desenes, i no tres, sinó milers de prestataris. Aleshores en comptes d'una línia recta tindrem m-dimensional pla i coeficients no se'ns treu de la nada, sinó que se'ns derivarà d'acord amb totes les regles, i sobre la base de les dades acumulades dels prestataris que han pagat o no el préstec. I, de fet, tingueu en compte que ara estem seleccionant prestataris utilitzant coeficients ja coneguts . De fet, la tasca del model de regressió logística és precisament determinar els paràmetres , en què el valor de la funció de pèrdua Pèrdua logística tendirà al mínim. Però sobre com es calcula el vector , ho trobarem més a la secció 5a de l'article. Mentrestant, tornem a la terra promesa: al nostre banquer i als seus tres clients.
Gràcies a la funció sabem a qui es pot donar un préstec i a qui cal denegar. Però no podeu anar al director amb aquesta informació, perquè volien obtenir de nosaltres la probabilitat de devolució del préstec per part de cada prestatari. Què fer? La resposta és senzilla: hem de transformar d'alguna manera la funció , els valors del qual es troben dins el rang a una funció els valors de la qual estaran dins l'interval . I aquesta funció existeix, s'anomena funció de resposta logística o transformació de logit invers. Trobar-se:
Vegem pas a pas com funciona funció de resposta logística. Tingueu en compte que caminarem en sentit contrari, és a dir. suposarem que coneixem el valor de probabilitat, que es troba en el rang de до i després "desbobinarem" aquest valor a tot el rang de nombres des de до .
03. Deduïm la funció de resposta logística
Pas 1. Converteix els valors de probabilitat en un rang
Durant la transformació de la funció в funció de resposta logística Deixarem sol el nostre analista de crèdit i farem un recorregut per les cases d'apostes. No, és clar, no farem apostes, l'únic que ens interessa és el significat de l'expressió, per exemple, la possibilitat és 4 a 1. Les probabilitats, familiars per a tots els apostadors, són la proporció d'"èxits" a " fracassos”. En termes de probabilitat, les probabilitats són la probabilitat que es produeixi un esdeveniment dividida per la probabilitat que l'esdeveniment no es produeixi. Escrivim la fórmula de la possibilitat que es produeixi un esdeveniment :
On - probabilitat que es produeixi un esdeveniment, — probabilitat que un esdeveniment NO es produeixi
Per exemple, si la probabilitat que un cavall jove, fort i juganer anomenat "Veterok" venci a una vella i flàccida anomenada "Matilda" en una cursa és igual a , llavors les possibilitats d'èxit de "Veterok" seran к i viceversa, coneixent les probabilitats, no ens serà difícil calcular la probabilitat :
Així, hem après a "traduir" la probabilitat en atzars, que prenen valors до . Fem un pas més i aprenem a "traduir" la probabilitat a la recta numèrica sencera до .
Pas 2. Converteix els valors de probabilitat en un rang
Aquest pas és molt senzill: portem el logaritme de les probabilitats a la base del nombre d'Euler i obtenim:
Ara sabem que si i després calcula el valor serà molt senzill i, a més, hauria de ser positiu: . Això és cert.
Per curiositat, comprovem què passa si , llavors esperem veure un valor negatiu . Comprovem: . Això està bé.
Ara sabem com convertir el valor de probabilitat de до al llarg de tota la recta numèrica des de до . En el següent pas farem el contrari.
De moment, observem que d'acord amb les regles del logaritme, coneixent el valor de la funció , podeu calcular les probabilitats:
Aquest mètode per determinar les probabilitats ens serà útil en el següent pas.
Pas 3. Deduïm una fórmula per determinar
Així que vam aprendre, sabent , trobar els valors de la funció . Tanmateix, de fet, necessitem exactament el contrari: conèixer el valor trobar . Per fer-ho, passem a un concepte com la funció de probabilitats inverses, segons el qual:
A l'article no derivarem la fórmula anterior, però la comprovarem utilitzant els números de l'exemple anterior. Sabem que amb probabilitats de 4 a 1 (), la probabilitat que es produeixi l'esdeveniment és 0.8 (). Fem una substitució: . Això coincideix amb els nostres càlculs fets anteriorment. Posem-nos en marxa.
En l'últim pas ho vam deduir , el que significa que podeu fer una substitució a la funció de probabilitats inverses. Obtenim:
Dividiu el numerador i el denominador per , Aleshores:
Per si de cas, per assegurar-nos que no ens hem equivocat enlloc, farem una petita comprovació més. Al pas 2, fem determinat que . Després, substituint el valor a la funció de resposta logística, esperem arribar . Substituïm i obtenim:
Enhorabona, estimat lector, acabem de derivar i provar la funció de resposta logística. Vegem el gràfic de la funció.
Gràfic 3 “Funció de resposta logística”
Codi per dibuixar el gràfic
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()
A la literatura també podeu trobar el nom d'aquesta funció com funció sigmoide. El gràfic mostra clarament que el canvi principal en la probabilitat que un objecte pertanyi a una classe es produeix dins d'un rang relativament petit. , en algun lloc de до .
Suggereixo tornar al nostre analista de crèdit i ajudar-lo a calcular la probabilitat de devolució del préstec, en cas contrari s'arrisca a quedar-se sense una bonificació :)
Taula 2 "Prestataris potencials"
Codi per generar la taula
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']]
Per tant, hem determinat la probabilitat de devolució del préstec. En general, això sembla ser cert.
De fet, la probabilitat que Vasya, amb un sou de 120.000 RUR, pugui donar 3.000 RUR al banc cada mes és propera al 100%. Per cert, hem d'entendre que un banc pot emetre un préstec a Lesha si la política del banc preveu, per exemple, préstecs a clients amb una probabilitat de devolució del préstec superior, per exemple, a 0.3. És que en aquest cas el banc crearà una reserva més gran per a possibles pèrdues.
També cal destacar que es va extreure del sostre la ràtio salari/pagament d'almenys 3 i amb un marge de 5.000 RUR. Per tant, no podríem utilitzar el vector de pesos en la seva forma original . Calia reduir molt els coeficients, i en aquest cas vam dividir cada coeficient per 25.000, és a dir, en el fons, vam ajustar el resultat. Però això es va fer específicament per simplificar la comprensió del material en l'etapa inicial. A la vida, no caldrà inventar i ajustar coeficients, sinó trobar-los. En els següents apartats de l'article derivarem les equacions amb les quals es seleccionen els paràmetres .
04. Mètode dels mínims quadrats per a la determinació del vector de pesos en la funció de resposta logística
Ja coneixem aquest mètode per seleccionar un vector de pesos Com Mètode dels mínims quadrats (LSM) i de fet, per què no l'utilitzem llavors en problemes de classificació binària? De fet, res no t'impedeix utilitzar MNC, només aquest mètode en problemes de classificació dóna resultats que són menys precisos que Pèrdua logística. Hi ha una base teòrica per a això. Vegem primer un exemple senzill.
Suposem que els nostres models (usant MSE и Pèrdua logística) ja han començat a seleccionar el vector de pesos i vam aturar el càlcul en algun pas. No importa si al mig, al final o al principi, el més important és que ja tenim alguns valors del vector de pesos i suposem que en aquest pas, el vector de pesos per als dos models no hi ha diferències. A continuació, agafeu els pesos resultants i substituïu-los funció de resposta logística () per a algun objecte que pertany a la classe . Examinem dos casos en què, d'acord amb el vector de pesos seleccionat, el nostre model està molt equivocat i viceversa: el model està molt segur que l'objecte pertany a la classe. . Vegem quines multes s'emetran en utilitzar-lo MNC и Pèrdua logística.
Codi per calcular penalitzacions en funció de la funció de pèrdua utilitzada
# класс объекта
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
Un cas d'error — el model assigna un objecte a una classe amb una probabilitat de 0,01
Pena per ús MNC serà:
Pena per ús Pèrdua logística serà:
Un cas de forta confiança — el model assigna un objecte a una classe amb una probabilitat de 0,99
Pena per ús MNC serà:
Pena per ús Pèrdua logística serà:
Aquest exemple il·lustra bé que en cas d'error greu la funció de pèrdua Pèrdua de registre penalitza el model molt més que MSE. Entenem ara quins són els antecedents teòrics per utilitzar la funció de pèrdua Pèrdua de registre en problemes de classificació.
05. Mètode de màxima versemblança i regressió logística
Com es va prometre al principi, l'article està ple d'exemples senzills. A l'estudi hi ha un altre exemple i vells convidats: prestataris bancaris: Vasya, Fedya i Lesha.
Per si de cas, abans de desenvolupar l'exemple, permeteu-me recordar-vos que a la vida estem davant d'una mostra d'entrenament de milers o milions d'objectes amb desenes o centenars de característiques. Tanmateix, aquí es prenen els números perquè puguin encaixar fàcilment al cap d'un científic de dades novell.
Tornem a l'exemple. Imaginem que el director del banc va decidir concedir un préstec a tothom que ho necessitava, malgrat que l'algoritme li va dir que no l'emetés a Lesha. I ara ha passat prou temps i sabem quin dels tres herois va pagar el préstec i quin no. Què s'esperava: Vasya i Fedya van pagar el préstec, però Lesha no. Imaginem ara que aquest resultat serà una nova mostra de formació per a nosaltres i, al mateix temps, és com si totes les dades sobre els factors que influeixen en la probabilitat de devolució del préstec (sou del prestatari, mida de la mensualitat) haguessin desaparegut. Aleshores, de manera intuïtiva, podem suposar que un tercer prestatari no retorna el préstec al banc, o en altres paraules, la probabilitat que el següent prestatari pagui el préstec. . Aquesta suposició intuïtiva té confirmació teòrica i es basa en mètode de màxima probabilitat, sovint a la literatura s'anomena principi de màxima versemblança.
En primer lloc, familiaritzem-nos amb l'aparell conceptual.
Probabilitat de mostreig és la probabilitat d'obtenir exactament aquesta mostra, obtenint exactament aquestes observacions/resultats, és a dir. el producte de les probabilitats d'obtenir cadascun dels resultats de la mostra (per exemple, si el préstec de Vasya, Fedya i Lesha es va reemborsar o no al mateix temps).
Funció de versemblança relaciona la probabilitat d'una mostra amb els valors dels paràmetres de distribució.
En el nostre cas, la mostra d'entrenament és un esquema de Bernoulli generalitzat, en el qual la variable aleatòria només pren dos valors: o . Per tant, la probabilitat de mostra es pot escriure com una funció de probabilitat del paràmetre de la manera següent:
L'entrada anterior es pot interpretar de la següent manera. La probabilitat conjunta que Vasya i Fedya retornin el préstec és igual a , la probabilitat que Lesha NO retorni el préstec és igual a (ja que NO va ser el reemborsament del préstec que va tenir lloc), per tant, la probabilitat conjunta dels tres esdeveniments és igual .
Mètode de màxima versemblança és un mètode per estimar un paràmetre desconegut mitjançant la maximització funcions de versemblança. En el nostre cas, hem de trobar aquest valor en el qual arriba al seu màxim.
D'on ve la idea real: buscar el valor d'un paràmetre desconegut en què la funció de probabilitat arriba al màxim? Els orígens de la idea parteixen de la idea que una mostra és l'única font de coneixement de què disposem sobre la població. Tot el que sabem sobre la població està representat a la mostra. Per tant, l'únic que podem dir és que una mostra és el reflex més exacte de la població de què disposem. Per tant, hem de trobar un paràmetre en què la mostra disponible esdevingui la més probable.
Òbviament, estem davant d'un problema d'optimització en el qual hem de trobar el punt extrem d'una funció. Per trobar el punt extrem, cal considerar la condició de primer ordre, és a dir, igualar la derivada de la funció a zero i resoldre l'equació respecte al paràmetre desitjat. Tanmateix, cercar la derivada d'un producte d'un gran nombre de factors pot ser una tasca llarga; per evitar-ho, hi ha una tècnica especial: canviar al logaritme funcions de versemblança. Per què és possible una transició així? Fixem-nos en el fet que no busquem l'extrem de la funció en si, i el punt extrem, és a dir, el valor del paràmetre desconegut en el qual arriba al seu màxim. Quan es mou a un logaritme, el punt extrem no canvia (tot i que l'extrem en si diferirà), ja que el logaritme és una funció monòtona.
D'acord amb l'anterior, continuem desenvolupant el nostre exemple amb préstecs de Vasya, Fedya i Lesha. Primer passem a logaritme de la funció de versemblança:
Ara podem diferenciar fàcilment l'expressió per :
I, finalment, considerem la condició de primer ordre: equiparem la derivada de la funció a zero:
Així, la nostra estimació intuïtiva de la probabilitat de devolució del préstec teòricament estava justificat.
Genial, però què hem de fer amb aquesta informació ara? Si suposem que cada tercer prestatari no retorna els diners al banc, aquest últim farà fallida inevitablement. És cert, però només quan s'avalua la probabilitat de devolució del préstec igual a No hem tingut en compte els factors que influeixen en l'amortització del préstec: el sou del prestatari i l'import de la mensualitat. Recordem que prèviament vam calcular la probabilitat d'amortització del préstec per part de cada client, tenint en compte aquests mateixos factors. És lògic que hem obtingut probabilitats diferents de la constant igual .
Definim la probabilitat de les mostres:
Codi per calcular les probabilitats de mostra
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)
Probabilitat de mostra a un valor constant :
Mostra de probabilitat a l'hora de calcular la probabilitat de devolució del préstec tenint en compte els factors :
La probabilitat d'una mostra amb una probabilitat calculada en funció dels factors va resultar ser superior a la probabilitat amb un valor de probabilitat constant. Què vol dir això? Això suggereix que el coneixement dels factors va permetre seleccionar amb més precisió la probabilitat de devolució del préstec per a cada client. Per tant, a l'hora d'emetre el següent préstec, seria més correcte utilitzar el model proposat al final de l'apartat 3 de l'article per avaluar la probabilitat d'amortització del deute.
Però després, si volem maximitzar funció de probabilitat de mostra, llavors per què no utilitzar algun algorisme que produirà probabilitats per a Vasya, Fedya i Lesha, per exemple, iguals a 0.99, 0.99 i 0.01, respectivament. Potser aquest algorisme funcionarà bé a la mostra d'entrenament, ja que aproparà el valor de probabilitat de la mostra a , però, en primer lloc, aquest algorisme probablement tindrà dificultats amb la capacitat de generalització i, en segon lloc, aquest algorisme definitivament no serà lineal. I si els mètodes per combatre el sobreentrenament (capacitat de generalització igualment feble) no s'inclouen clarament al pla d'aquest article, passem pel segon punt amb més detall. Per fer-ho, només has de respondre una pregunta senzilla. La probabilitat que Vasya i Fedya amortitzin el préstec podria ser la mateixa, tenint en compte els factors que coneixem? Des del punt de vista de la lògica sòlida, és clar que no, no pot. Així Vasya pagarà el 2.5% del seu sou al mes per pagar el préstec, i Fedya - gairebé el 27,8%. També al gràfic 2 “Classificació del client” veiem que Vasya està molt més lluny de la línia que separa les classes que Fedya. I finalment, sabem que la funció per a Vasya i Fedya pren valors diferents: 4.24 per a Vasya i 1.0 per a Fedya. Ara, si Fedya, per exemple, guanyés un ordre de magnitud més o demanés un préstec més petit, llavors les probabilitats de pagar el préstec per a Vasya i Fedya serien similars. En altres paraules, la dependència lineal no es pot enganyar. I si realment calculéssim les probabilitats , i no els vam treure de la nada, podríem dir amb seguretat que els nostres valors millor ens permet estimar la probabilitat de devolució del préstec per part de cada prestatari, però com que vam acordar assumir que la determinació dels coeficients es va dur a terme d'acord amb totes les regles, llavors assumirem que sí: els nostres coeficients ens permeten donar una millor estimació de la probabilitat :)
Tanmateix, ens desviem. En aquest apartat hem d'entendre com es determina el vector de pesos , que és necessari per avaluar la probabilitat de devolució del préstec per part de cada prestatari.
Resumim breument amb quin arsenal anem a buscar probabilitats :
1. Suposem que la relació entre la variable objectiu (valor de predicció) i el factor que influeix en el resultat és lineal. Per aquest motiu s'utilitza funció de regressió lineal amable , la línia de la qual divideix els objectes (clients) en classes и o (clients que poden retornar el préstec i els que no). En el nostre cas, l'equació té la forma .
2. Fem servir funció de logit invers amable per determinar la probabilitat que un objecte pertanyi a una classe .
3. Considerem el nostre conjunt de formació com una implementació d'un sistema generalitzat Esquemes de Bernoulli, és a dir, per a cada objecte es genera una variable aleatòria, que amb probabilitat (propi per a cada objecte) pren el valor 1 i amb probabilitat - 0.
4. Sabem què hem de maximitzar funció de probabilitat de mostra tenint en compte els factors acceptats perquè la mostra disponible esdevingui la més plausible. En altres paraules, hem de seleccionar els paràmetres en què la mostra serà més plausible. En el nostre cas, el paràmetre seleccionat és la probabilitat de devolució del préstec , que al seu torn depèn de coeficients desconeguts . Per tant, hem de trobar aquest vector de pesos , en què la probabilitat de la mostra serà màxima.
5. Sabem què hem de maximitzar Funcions de probabilitat de mostra es pot utilitzar mètode de màxima probabilitat. I coneixem tots els trucs complicats per treballar amb aquest mètode.
Així és com resulta ser un moviment de diversos passos :)
Ara recordeu que al principi de l'article volíem derivar dos tipus de funcions de pèrdua Pèrdua logística depenent de com es designin les classes d'objectes. Va passar que en problemes de classificació amb dues classes, les classes es denoten com и o . Depenent de la notació, la sortida tindrà una funció de pèrdua corresponent.
Cas 1. Classificació d'objectes en и
Abans, quan es va determinar la probabilitat d'una mostra, en la qual es calculava la probabilitat d'amortització del deute per part del prestatari en funció de factors i coeficients donats , hem aplicat la fórmula:
En realitat és el significat Funcions de resposta logística per a un vector de pesos donat
Aleshores, res ens impedeix escriure la funció de probabilitat de mostra de la següent manera:
Passa que de vegades és difícil que alguns analistes novells entenguin immediatament com funciona aquesta funció. Vegem 4 exemples breus que ho aclariran tot:
1. Si (és a dir, segons la mostra d'entrenament, l'objecte pertany a la classe +1) i el nostre algorisme determina la probabilitat de classificar un objecte en una classe igual a 0.9, llavors aquesta part de probabilitat de mostra es calcularà de la següent manera:
2. Si I , aleshores el càlcul serà així:
3. Si I , aleshores el càlcul serà així:
4. Si I , aleshores el càlcul serà així:
És obvi que la funció de probabilitat es maximitzarà en els casos 1 i 3 o en el cas general, amb valors endevinats correctament de les probabilitats d'assignar un objecte a una classe .
A causa del fet que quan es determina la probabilitat d'assignar un objecte a una classe Només no coneixem els coeficients , llavors els buscarem. Com s'ha esmentat anteriorment, aquest és un problema d'optimització en el qual primer hem de trobar la derivada de la funció de versemblança respecte al vector de pesos. . Tanmateix, primer té sentit simplificar la tasca per nosaltres mateixos: buscarem la derivada del logaritme funcions de versemblança.
Per què després del logaritme, en Funcions d'error logístic, hem canviat el signe de en . Tot és senzill, ja que en problemes d'avaluació de la qualitat d'un model s'acostuma a minimitzar el valor d'una funció, multipliquem el costat dret de l'expressió per i en conseqüència, en comptes de maximitzar, ara minimitzem la funció.
De fet, ara mateix, davant els teus ulls, la funció de pèrdua es va derivar minuciosament... Pèrdua logística per a un conjunt de formació amb dues classes: и .
Ara, per trobar els coeficients, només cal trobar la derivada Funcions d'error logístic i després, utilitzant mètodes d'optimització numèrica, com ara el descens del gradient o el descens del gradient estocàstic, seleccioneu els coeficients més òptims. . Però, donat el volum considerable de l'article, es proposa fer la diferenciació pel vostre compte, o potser aquest serà un tema per al proper article amb molta aritmètica sense exemples tan detallats.
Cas 2. Classificació d'objectes en и
L'enfocament aquí serà el mateix que amb les classes и , però el camí mateix a la sortida de la funció de pèrdua Pèrdua logística, estarà més ornamentat. Comencem. Per a la funció de versemblança utilitzarem l'operador "si llavors..."... És a dir, si El th objecte pertany a la classe , llavors per calcular la probabilitat de la mostra fem servir la probabilitat , si l'objecte pertany a la classe , llavors substituïm a la probabilitat . Així és com es veu la funció de probabilitat:
Anem a descriure amb els nostres dits com funciona. Considerem 4 casos:
1. Si и , aleshores la probabilitat de mostreig "anirà"
2. Si и , aleshores la probabilitat de mostreig "anirà"
3. Si и , aleshores la probabilitat de mostreig "anirà"
4. Si и , aleshores la probabilitat de mostreig "anirà"
És obvi que en els casos 1 i 3, quan les probabilitats estaven determinades correctament per l'algorisme, funció de probabilitat serà maximitzat, és a dir, això és exactament el que volíem aconseguir. Tanmateix, aquest enfocament és força complicat i a continuació considerarem una notació més compacta. Però primer, logaritmem la funció de versemblança amb un canvi de signe, ja que ara la minimitzarem.
Anem a substituir en el seu lloc expressió :
Simplificam el terme correcte sota el logaritme utilitzant tècniques aritmètiques senzilles i obtenim:
Ara toca desfer-se de l'operador "si llavors...". Tingueu en compte que quan un objecte pertany a la classe , després en l'expressió sota el logaritme, en el denominador, elevat al poder , si l'objecte pertany a la classe , llavors $e$ s'eleva al poder . Per tant, la notació del grau es pot simplificar combinant els dos casos en un: . Aleshores funció d'error logístic prendrà la forma:
D'acord amb les regles del logaritme, girem la fracció i apaguem el signe ""(menys) per al logaritme, obtenim:
Aquí teniu la funció de pèrdua pèrdua logística, que s'utilitza al conjunt d'entrenament amb objectes assignats a classes: и .
Bé, en aquest moment m'acomiado i acabem l'article.
Materials auxiliars
1 Literatura
1) Anàlisi de regressió aplicada / N. Draper, G. Smith - 2a ed. – M.: Finances and Statistics, 1986 (traducció de l'anglès)
2) Teoria de la probabilitat i estadística matemàtica / V.E. Gmurman - 9a ed. - M.: Escola Superior, 2003
3) Teoria de la probabilitat / N.I. Chernova - Novosibirsk: Universitat Estatal de Novosibirsk, 2007
4) Anàlisi empresarial: de les dades al coneixement / Paklin N. B., Oreshkov V. I. - 2a ed. — Sant Petersburg: Peter, 2013
5) Ciència de dades Ciència de dades des de zero / Joel Gras - Sant Petersburg: BHV Petersburg, 2017
6) Estadístiques pràctiques per a especialistes en ciència de dades / P. Bruce, E. Bruce - Sant Petersburg: BHV Petersburg, 2018
2. Conferències, cursos (vídeo)
1)
2)
3)
4)
5)
3. Fonts d'Internet
1)
2)
4)
6)