Neste artigo, analizaremos os cálculos teóricos da transformación funcións de regresión lineal в función de transformación de logit inverso (tamén chamada función de resposta loxística). Despois, usando o arsenal método de máxima verosimilitud, de acordo co modelo de regresión loxística, derivamos a función de perda Perda loxística, ou noutras palabras, definiremos unha función coa que se seleccionan os parámetros do vector peso no modelo de regresión loxística .
Esquema do artigo:
- Repetimos a relación lineal entre dúas variables
- Identifiquemos a necesidade de transformación funcións de regresión lineal в función de resposta loxística
- Imos realizar as transformacións e saída función de resposta loxística
- Intentemos entender por que o método dos mínimos cadrados é malo ao seleccionar os parámetros funcións Perda loxística
- Usamos método de máxima verosimilitud para determinar funcións de selección de parámetros :
5.1. Caso 1: función Perda loxística para obxectos con designacións de clase 0 и 1:
5.2. Caso 2: función Perda loxística para obxectos con designacións de clase -1 и +1:
O artigo está cheo de exemplos sinxelos nos que todos os cálculos son fáciles de facer oralmente ou en papel; nalgúns casos, pode ser necesaria unha calculadora. Así que prepárate :)
Este artigo está destinado principalmente a científicos de datos cun nivel inicial de coñecemento dos conceptos básicos da aprendizaxe automática.
O artigo tamén proporcionará código para debuxar gráficos e cálculos. Todo o código está escrito no idioma pitón 2.7. Permítanme explicar con antelación a "novidade" da versión utilizada: esta é unha das condicións para facer o coñecido curso de Yandex nunha plataforma de educación en liña igualmente coñecida Coursera, e, como se pode supoñer, o material foi elaborado a partir deste curso.
01. Dependencia en liña recta
É bastante razoable facer a pregunta: que teñen que ver a dependencia lineal e a regresión loxística?
É sinxelo! A regresión loxística é un dos modelos que pertencen ao clasificador lineal. En palabras sinxelas, a tarefa dun clasificador lineal é predicir valores obxectivo a partir de variables (regresores) . Crese que a dependencia entre as características e valores obxectivo lineal. De aí o nome do clasificador - lineal. Para dicilo de xeito moi groso, o modelo de regresión loxística baséase na suposición de que existe unha relación lineal entre as características e valores obxectivo . Esta é a conexión.
Hai o primeiro exemplo no estudo, e trátase, correctamente, da dependencia rectilínea das cantidades que se estudan. Durante o proceso de preparación do artigo, atopeime cun exemplo que xa puxo en perigo a moitas persoas: a dependencia da corrente coa tensión. ("Análise de regresión aplicada", N. Draper, G. Smith). Tamén o veremos aquí.
Segundo Lei de Ohm:
onde - forza actual, - Voltaxe, - resistencia.
Se non o saibamos Lei de Ohm, entón poderiamos atopar a dependencia empíricamente cambiando e medición , mentres apoia fixo. Entón veríamos que a gráfica de dependencia de dá unha liña máis ou menos recta pola orixe. Dicimos "máis ou menos" porque, aínda que a relación é realmente precisa, as nosas medicións poden conter pequenos erros e, polo tanto, os puntos do gráfico poden non caer exactamente sobre a liña, senón que se espallarán ao redor dela.
Gráfico 1 "Dependencia" de »
Código de debuxo gráfico
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. A necesidade de transformar a ecuación de regresión lineal
Vexamos outro exemplo. Imaxinemos que traballamos nun banco e que a nosa tarefa é determinar a probabilidade de que o prestatario reembolse o préstamo en función de determinados factores. Para simplificar a tarefa, só teremos en conta dous factores: o salario mensual do prestatario e o importe mensual de amortización do préstamo.
A tarefa é moi condicional, pero con este exemplo podemos entender por que non é suficiente para usar funcións de regresión lineal, e tamén descubrir que transformacións hai que realizar coa función.
Volvamos ao exemplo. Enténdese que canto maior sexa o salario, máis o prestatario poderá destinar mensualmente para amortizar o préstamo. Ao mesmo tempo, para un determinado rango salarial esta relación será bastante lineal. Por exemplo, tomemos un rango salarial de 60.000 RUR a 200.000 RUR e supoñamos que no rango salarial especificado, a dependencia do tamaño do pago mensual do tamaño do salario é lineal. Digamos que para o rango de salarios especificado revelouse que a relación salario-pago non pode caer por debaixo de 3 e que o prestatario aínda debe ter 5.000 RUR en reserva. E só neste caso, asumiremos que o mutuários devolverá o préstamo ao banco. Entón, a ecuación de regresión lineal terá a forma:
onde , , , - salario -º prestatario, - pago do préstamo -º prestatario.
Substituíndo o salario e o pagamento do préstamo con parámetros fixos na ecuación Pode decidir se conceder ou rexeitar un préstamo.
De cara ao futuro, observamos que, cos parámetros dados función de regresión lineal, usado en funcións de resposta loxística producirá grandes valores que complicarán os cálculos para determinar as probabilidades de amortización do préstamo. Polo tanto, proponse reducir os nosos coeficientes, digamos, en 25.000 veces. Esta transformación dos coeficientes non modificará a decisión de conceder un préstamo. Lembremos este punto para o futuro, pero agora, para que quede aínda máis claro do que estamos a falar, consideremos a situación con tres potenciais prestatarios.
Táboa 1 "Potenciais prestatarios"
Código para xerar a táboa
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']]
Segundo os datos da táboa, Vasya, cun salario de 120.000 RUR, quere recibir un préstamo para poder devolvelo mensualmente en 3.000 RUR. Determinamos que para aprobar o préstamo, o salario de Vasya debe superar o triplo do importe do pago, e aínda deben quedar 5.000 RUR. Vasya cumpre este requisito: . Aínda quedan 106.000 RUR. A pesar de que ao calcular reducimos as probabilidades 25.000 veces, o resultado foi o mesmo - o préstamo pode ser aprobado. Fedya tamén recibirá un préstamo, pero Lesha, a pesar de ser o que máis recibe, terá que frear o seu apetito.
Debuxemos unha gráfica para este caso.
Gráfico 2 "Clasificación dos prestatarios"
Código para debuxar a gráfica
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()
Entón, a nosa liña recta, construída de acordo coa función , separa os prestameiros "malos" dos "bos". Aqueles mutuários cuxos desexos non coinciden coas súas capacidades están por riba da liña (Lesha), mentres que aqueles que, segundo os parámetros do noso modelo, poden pagar o préstamo están por debaixo da liña (Vasya e Fedya). Noutras palabras, podemos dicir isto: a nosa liña directa divide os prestatarios en dúas clases. Denotémolos do seguinte xeito: a clase Clasificaremos aqueles prestatarios que teñen máis probabilidades de devolver o préstamo como ou Incluiremos aqueles prestatarios que moi probablemente non poderán devolver o préstamo.
Imos resumir as conclusións deste sinxelo exemplo. Tomemos un punto e, substituíndo as coordenadas do punto na ecuación correspondente da recta , considere tres opcións:
- Se o punto está debaixo da liña e asignámosllo á clase , entón o valor da función será positivo de para . Isto significa que podemos supoñer que a probabilidade de reembolso do préstamo está dentro . Canto maior sexa o valor da función, maior será a probabilidade.
- Se un punto está por riba dunha recta e asignámosllo á clase ou , entón o valor da función será negativo de para . Entón asumiremos que a probabilidade de amortización da débeda está dentro e canto maior sexa o valor absoluto da función, maior será a nosa confianza.
- O punto está nunha liña recta, no límite entre dúas clases. Neste caso, o valor da función serán iguais e a probabilidade de devolver o préstamo é igual a .
Agora, imaxinemos que non temos dous factores, senón ducias, e non tres, senón miles de prestameiros. Entón en lugar dunha liña recta teremos m-dimensional plano e coeficientes non seremos sacados da nada, senón derivados segundo todas as regras, e en base aos datos acumulados sobre os prestatarios que pagaron ou non o préstamo. E, de feito, teña en conta que agora estamos seleccionando prestatarios utilizando coeficientes xa coñecidos . De feito, a tarefa do modelo de regresión loxística é precisamente determinar os parámetros , no que o valor da función de perda Perda loxística tenderá ao mínimo. Pero sobre como se calcula o vector , coñeceremos máis na quinta sección do artigo. Mentres tanto, volvemos á terra prometida, ao noso banqueiro e aos seus tres clientes.
Grazas á función sabemos a quen se lle pode dar un préstamo e a quen hai que denegar. Pero non pode ir ao director con esa información, porque querían obter de nós a probabilidade de amortización do préstamo por parte de cada prestatario. Que facer? A resposta é sinxela: necesitamos transformar a función dalgún xeito , cuxos valores están no intervalo a unha función cuxos valores estarán no intervalo . E tal función existe, chámase función de resposta loxística ou transformación de logit inverso. Coñecer:
Vexamos paso a paso como funciona función de resposta loxística. Teña en conta que camiñaremos en dirección contraria, é dicir. asumiremos que coñecemos o valor de probabilidade, que se atopa no intervalo de para e despois imos "desenrolar" este valor a todo o intervalo de números desde para .
03. Derivamos a función de resposta loxística
Paso 1. Converte os valores de probabilidade nun intervalo
Durante a transformación da función в función de resposta loxística Deixaremos en paz ao noso analista de crédito e, no seu lugar, faremos un percorrido polas casas de apostas. Non, por suposto, non faremos apostas, o único que nos interesa alí é o significado da expresión, por exemplo, a probabilidade é 4 a 1. As probabilidades, coñecidas para todos os apostantes, son a proporción de "éxitos" e " fracasos”. En termos de probabilidade, as probabilidades son a probabilidade de que ocorra un evento dividida entre a probabilidade de que o evento non ocorra. Escribamos a fórmula da probabilidade de que ocorra un evento :
onde - probabilidade de que ocorra un suceso, - probabilidade de que un suceso NON ocorra
Por exemplo, se a probabilidade de que un cabalo novo, forte e xoguetón alcumado "Veterok" bata a unha vella e flácida chamada "Matilda" nunha carreira é igual a , entón as posibilidades de éxito para "Veterok" serán к e viceversa, coñecendo as probabilidades, non nos será difícil calcular a probabilidade :
Así, aprendemos a "traducir" a probabilidade en probabilidades, das que toman valores para . Imos dar un paso máis e aprender a "traducir" a probabilidade a toda a recta numérica desde para .
Paso 2. Converte os valores de probabilidade nun intervalo
Este paso é moi sinxelo: levemos o logaritmo das probabilidades á base do número de Euler e temos:
Agora sabemos que se , despois calcula o valor será moi sinxelo e, ademais, debería ser positivo: . É verdade.
Por curiosidade, comprobemos que pasa se , entón esperamos ver un valor negativo . Comprobamos: . Correcto.
Agora sabemos como converter o valor de probabilidade de para ao longo de toda a recta numérica dende para . No seguinte paso faremos o contrario.
Polo momento, observamos que de acordo coas regras do logaritmo, coñecendo o valor da función , podes calcular as probabilidades:
Este método para determinar as probabilidades será útil para nós no seguinte paso.
Paso 3. Derivemos unha fórmula para determinar
Así aprendemos, sabendo , atopar os valores das funcións . Non obstante, de feito, necesitamos exactamente o contrario: coñecer o valor atopar . Para iso, imos pasar a un concepto como a función de probabilidades inversas, segundo o cal:
No artigo non derivaremos a fórmula anterior, pero comprobarémola utilizando os números do exemplo anterior. Sabemos que con probabilidades de 4 a 1 (), a probabilidade de que o evento ocorra é 0.8 (). Imos facer unha substitución: . Isto coincide cos nosos cálculos realizados anteriormente. Sigamos adiante.
No último paso deducimos que , o que significa que podes facer unha substitución na función de probabilidades inversas. Obtemos:
Divide o numerador e o denominador entre , Entón:
Por se acaso, para asegurarnos de que non cometemos un erro en ningures, faremos unha pequena comprobación máis. No paso 2, nós para determinou que . Despois, substituíndo o valor na función de resposta loxística, esperamos conseguir . Substituímos e obtemos:
Parabéns, querido lector, acabamos de derivar e probar a función de resposta loxística. Vexamos a gráfica da función.
Gráfico 3 "Función de resposta loxística"
Código para debuxar a gráfica
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()
Na literatura tamén podes atopar o nome desta función como función sigmoide. O gráfico mostra claramente que o principal cambio na probabilidade de que un obxecto pertenza a unha clase ocorre dentro dun intervalo relativamente pequeno. , nalgún lugar de para .
Suxiro volver ao noso analista de crédito e axudarlle a calcular a probabilidade de reembolso do préstamo, se non corre o risco de quedar sen bonificación :)
Táboa 2 "Potenciais prestatarios"
Código para xerar a táboa
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']]
Entón, determinamos a probabilidade de reembolso do préstamo. En xeral, isto parece ser certo.
De feito, a probabilidade de que Vasya, cun salario de 120.000 RUR, poida dar 3.000 RUR ao banco cada mes é próxima ao 100%. Por certo, debemos entender que un banco pode emitir un préstamo a Lesha se a política do banco prevé, por exemplo, o préstamo a clientes cunha probabilidade de amortización do préstamo superior, por exemplo, a 0.3. É só que neste caso o banco creará unha maior reserva para posibles perdas.
Tamén hai que ter en conta que a relación salario-pagamento de polo menos 3 e cunha marxe de 5.000 RUR foi retirada do teito. Polo tanto, non poderiamos usar o vector de pesos na súa forma orixinal . Necesitabamos reducir moito os coeficientes, e neste caso dividimos cada coeficiente por 25.000, é dicir, en esencia, axustamos o resultado. Pero isto fíxose especialmente para simplificar a comprensión do material na fase inicial. Na vida, non necesitaremos inventar e axustar coeficientes, senón atopalos. Nas seguintes seccións do artigo derivaremos as ecuacións coas que se seleccionan os parámetros .
04. Método dos mínimos cadrados para determinar o vector de pesos na función de resposta loxística
Xa coñecemos este método para seleccionar un vector de pesos Como método dos mínimos cadrados (LSM) e de feito, por que non o usamos entón en problemas de clasificación binaria? De feito, nada che impide usar MNC, só este método nos problemas de clasificación dá resultados menos precisos que Perda loxística. Hai unha base teórica para isto. Vexamos primeiro un exemplo sinxelo.
Supoñamos que os nosos modelos (usando MSE и Perda loxística) xa comezaron a seleccionar o vector de pesos e paramos o cálculo nalgún paso. Non importa se no medio, ao final ou ao principio, o principal é que xa temos algúns valores do vector de pesos e supoñamos que neste paso, o vector de pesos para ambos modelos non hai diferenzas. Despois colle os pesos resultantes e substitúeos función de resposta loxística () para algún obxecto que pertenza á clase . Examinamos dous casos nos que, de acordo co vector de pesos seleccionado, o noso modelo está moi equivocado e viceversa: o modelo está moi seguro de que o obxecto pertence á clase . Vexamos que multas se emitirán ao usar MNC и Perda loxística.
Código para calcular penalizacións en función da función de perda utilizada
# класс объекта
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 caso de erro — o modelo asigna un obxecto a unha clase cunha probabilidade de 0,01
Penalización por uso MNC será:
Penalización por uso Perda loxística será:
Un caso de forte confianza — o modelo asigna un obxecto a unha clase cunha probabilidade de 0,99
Penalización por uso MNC será:
Penalización por uso Perda loxística será:
Este exemplo ilustra ben que en caso de erro grave a función de perda Perda de rexistro penaliza o modelo significativamente máis que MSE. Entendemos agora cales son os antecedentes teóricos para usar a función de perda Perda de rexistro en problemas de clasificación.
05. Método de máxima verosimilitud e regresión loxística
Como prometeu ao principio, o artigo está cheo de exemplos sinxelos. No estudo hai outro exemplo e vellos hóspedes - mutuários bancarios: Vasya, Fedya e Lesha.
Por se acaso, antes de desenvolver o exemplo, permíteme recordarche que na vida estamos ante unha mostra de adestramento de miles ou millóns de obxectos con decenas ou centos de características. Non obstante, aquí tómanse os números para que poidan encaixar facilmente na cabeza dun científico de datos novato.
Volvamos ao exemplo. Imaxinemos que o director do banco decidiu conceder un préstamo a todos os que o necesitaban, a pesar de que o algoritmo lle dixo que non llo emitise a Lesha. E agora pasou o tempo suficiente e sabemos cal dos tres heroes pagou o préstamo e cal non. O que era de esperar: Vasya e Fedya pagaron o préstamo, pero Lesha non. Agora imaxinemos que este resultado será unha nova mostra de formación para nós e, ao mesmo tempo, é coma se desaparecesen todos os datos sobre os factores que inflúen na probabilidade de amortización do préstamo (salario do prestatario, cuantía da mensualidade). Entón, intuitivamente, podemos asumir que cada terceiro prestatario non paga o préstamo ao banco, ou noutras palabras, a probabilidade de que o próximo prestatario pague o préstamo. . Esta suposición intuitiva ten confirmación teórica e baséase en método de máxima verosimilitud, moitas veces na literatura chámase principio de máxima verosimilitud.
En primeiro lugar, imos familiarizarnos co aparello conceptual.
Probabilidade de mostraxe é a probabilidade de obter exactamente tal mostra, obtendo exactamente tales observacións/resultados, é dicir. o produto das probabilidades de obter cada un dos resultados da mostra (por exemplo, se o préstamo de Vasya, Fedya e Lesha foi reembolsado ou non ao mesmo tempo).
Función de verosimilitude relaciona a probabilidade dunha mostra cos valores dos parámetros de distribución.
No noso caso, a mostra de adestramento é un esquema de Bernoulli xeneralizado, no que a variable aleatoria toma só dous valores: ou . Polo tanto, a probabilidade de mostra pódese escribir como unha función de verosimilitude do parámetro do seguinte xeito:
A entrada anterior pódese interpretar do seguinte xeito. A probabilidade conxunta de que Vasya e Fedya devolvan o préstamo é igual , a probabilidade de que Lesha NON reembolse o préstamo é igual a (xa que NON foi o reembolso do préstamo), polo tanto, a probabilidade conxunta dos tres eventos é igual .
Método de máxima verosimilitud é un método para estimar un parámetro descoñecido maximizando funcións de probabilidade. No noso caso, necesitamos atopar tal valor ao cal alcanza o seu máximo.
De onde vén a idea real: buscar o valor dun parámetro descoñecido no que a función de probabilidade alcanza un máximo? As orixes da idea parten da idea de que unha mostra é a única fonte de coñecemento da que dispoñemos sobre a poboación. Todo o que sabemos sobre a poboación está representado na mostra. Polo tanto, o único que podemos dicir é que unha mostra é o reflexo máis preciso da poboación que temos á nosa disposición. Polo tanto, necesitamos atopar un parámetro no que a mostra dispoñible sexa a máis probable.
Obviamente, estamos ante un problema de optimización no que necesitamos atopar o punto extremo dunha función. Para atopar o punto extremo, é necesario considerar a condición de primeira orde, é dicir, igualar a derivada da función a cero e resolver a ecuación con respecto ao parámetro desexado. Non obstante, buscar a derivada dun produto dun gran número de factores pode ser unha tarefa longa; para evitar isto, hai unha técnica especial: cambiar ao logaritmo. funcións de probabilidade. Por que é posible tal transición? Prestemos atención ao feito de que non buscamos o extremo da función en si, e o punto extremo, é dicir, o valor do parámetro descoñecido ao cal alcanza o seu máximo. Ao pasar a un logaritmo, o punto do extremo non cambia (aínda que o propio extremo será diferente), xa que o logaritmo é unha función monótona.
De acordo co anterior, sigamos desenvolvendo o noso exemplo con préstamos de Vasya, Fedya e Lesha. Primeiro imos pasar logaritmo da función de verosimilitude:
Agora podemos diferenciar facilmente a expresión por :
E, finalmente, considere a condición de primeira orde: igualamos a derivada da función a cero:
Así, a nosa estimación intuitiva da probabilidade de reembolso do préstamo estaba teoricamente xustificada.
Xenial, pero que debemos facer agora con esta información? Se asumimos que cada terceiro prestatario non devolve o diñeiro ao banco, entón este inevitablemente quebrará. É certo, pero só cando se avalia a probabilidade de reembolso do préstamo igual a Non tivemos en conta os factores que inflúen no reembolso do préstamo: o salario do prestatario e o tamaño da mensualidade. Lembremos que previamente calculamos a probabilidade de amortización do préstamo por parte de cada cliente, tendo en conta estes mesmos factores. É lóxico que obtivemos probabilidades diferentes da constante igual .
Definamos a probabilidade das mostras:
Código para o cálculo das probabilidades 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)
Probabilidade de mostra nun valor constante :
Probabilidade de mostra ao calcular a probabilidade de amortización do préstamo tendo en conta factores :
A probabilidade dunha mostra cunha probabilidade calculada en función dos factores resultou ser maior que a probabilidade cun valor de probabilidade constante. Que significa isto? Isto suxire que o coñecemento sobre os factores permitiu seleccionar con máis precisión a probabilidade de amortización do préstamo para cada cliente. Polo tanto, á hora de emitir o próximo préstamo, sería máis correcto utilizar o modelo proposto ao final do apartado 3 do artigo para a valoración da probabilidade de amortización da débeda.
Pero entón, se queremos maximizar función de probabilidade de mostra, entón por que non usar algún algoritmo que producirá probabilidades para Vasya, Fedya e Lesha, por exemplo, iguais a 0.99, 0.99 e 0.01, respectivamente. Quizais tal algoritmo funcione ben na mostra de adestramento, xa que achegará o valor de probabilidade da mostra ao , pero, en primeiro lugar, tal algoritmo probablemente terá dificultades coa capacidade de xeneralización e, en segundo lugar, este algoritmo definitivamente non será lineal. E se os métodos de loita contra o sobreadestramento (capacidade de xeneralización igualmente débil) claramente non están incluídos no plan deste artigo, imos pasar polo segundo punto con máis detalle. Para iso, basta con responder a unha pregunta sinxela. Pode ser a mesma probabilidade de que Vasya e Fedya reembolsen o préstamo, tendo en conta os factores que coñecemos? Dende o punto de vista da lóxica sonora, claro que non, non pode. Entón Vasya pagará 2.5% do seu salario ao mes para pagar o préstamo, e Fedya - case 27,8%. Tamén no gráfico 2 "Clasificación de clientes" vemos que Vasya está moito máis lonxe da liña que separa as clases que Fedya. E, finalmente, sabemos que a función para Vasya e Fedya toma valores diferentes: 4.24 para Vasya e 1.0 para Fedya. Agora, se Fedya, por exemplo, gañase unha orde de magnitude máis ou pediu un préstamo máis pequeno, entón as probabilidades de devolver o préstamo para Vasya e Fedya serían similares. Noutras palabras, a dependencia lineal non se pode enganar. E se realmente calculamos as probabilidades , e non os sacou da nada, poderiamos dicir con seguridade que os nosos valores mellor permítenos estimar a probabilidade de reembolso do préstamo por parte de cada prestatario, pero xa que acordamos asumir que a determinación dos coeficientes realizouse de acordo con todas as regras, entón asumiremos que si - os nosos coeficientes permítennos dar unha mellor estimación da probabilidade :)
Non obstante, divagamos. Neste apartado necesitamos comprender como se determina o vector de pesos , que é necesario para avaliar a probabilidade de reembolso do préstamo por parte de cada prestatario.
Imos resumir brevemente con que arsenal imos a buscar probabilidades :
1. Supoñemos que a relación entre a variable obxectivo (valor de predición) e o factor que inflúe no resultado é lineal. Por este motivo utilízase función de regresión lineal amable , cuxa liña divide os obxectos (clientes) en clases и ou (clientes que poden devolver o préstamo e os que non). No noso caso, a ecuación ten a forma .
2. Usamos función de logit inverso amable para determinar a probabilidade de que un obxecto pertenza a unha clase .
3. Consideramos o noso conxunto de formación como unha implementación dun sistema xeneralizado esquemas de Bernoulli, é dicir, para cada obxecto xérase unha variable aleatoria, que con probabilidade (propio para cada obxecto) toma o valor 1 e con probabilidade - 0.
4. Sabemos o que necesitamos maximizar función de probabilidade de mostra tendo en conta os factores aceptados para que a mostra dispoñible sexa a máis plausible. Noutras palabras, necesitamos seleccionar os parámetros nos que a mostra será máis plausible. No noso caso, o parámetro seleccionado é a probabilidade de reembolso do préstamo , que á súa vez depende de coeficientes descoñecidos . Polo tanto, necesitamos atopar tal vector de pesos , no que a verosimilitud da mostra será máxima.
5. Sabemos que maximizar funcións de probabilidade de mostra pode usar método de máxima verosimilitud. E coñecemos todos os trucos complicados para traballar con este método.
Así é como resulta ser un movemento de varios pasos :)
Agora recorda que ao comezo do artigo queriamos derivar dous tipos de funcións de perda Perda loxística dependendo de como se designen as clases de obxectos. Aconteceu que nos problemas de clasificación con dúas clases, as clases se denotan como и ou . Dependendo da notación, a saída terá unha función de perda correspondente.
Caso 1. Clasificación de obxectos en и
Anteriormente, ao determinar a probabilidade dunha mostra, na que se calculou a probabilidade de reembolso da débeda polo prestatario en función de factores e coeficientes dados , aplicamos a fórmula:
Na realidade é o significado funcións de resposta loxística para un vector dado de pesos
Entón nada nos impide escribir a función de verosimilitude de mostra do seguinte xeito:
Acontece que ás veces é difícil que algúns analistas novatos entendan inmediatamente como funciona esta función. Vexamos 4 pequenos exemplos que aclararán as cousas:
1. Se (é dicir, segundo a mostra de adestramento, o obxecto pertence á clase +1) e o noso algoritmo determina a probabilidade de clasificar un obxecto nunha clase igual a 0.9, entón esta probabilidade de mostra calcularase do seguinte xeito:
2. Se E , entón o cálculo será así:
3. Se E , entón o cálculo será así:
4. Se E , entón o cálculo será así:
É obvio que a función de probabilidade maximizarase nos casos 1 e 3 ou no caso xeral - con valores adiviñados correctamente das probabilidades de asignar un obxecto a unha clase .
Debido ao feito de que ao determinar a probabilidade de asignar un obxecto a unha clase Só descoñecemos os coeficientes , entón buscarémolos. Como se mencionou anteriormente, este é un problema de optimización no que primeiro necesitamos atopar a derivada da función de verosimilitude con respecto ao vector de pesos. . Non obstante, primeiro ten sentido simplificar a tarefa por nós mesmos: buscaremos a derivada do logaritmo. funcións de probabilidade.
Por que despois do logaritmo, en funcións de erro loxístico, cambiamos o sinal de en . Todo é sinxelo, xa que nos problemas de avaliación da calidade dun modelo é habitual minimizar o valor dunha función, multiplicamos o lado dereito da expresión por e en consecuencia, en lugar de maximizar, agora minimizamos a función.
En realidade, agora mesmo, ante os teus ollos, a función de perda foi minuciosamente derivada - Perda loxística para un conxunto de formación con dúas clases: и .
Agora, para atopar os coeficientes, só necesitamos atopar a derivada funcións de erro loxístico e despois, utilizando métodos de optimización numérica, como o descenso de gradientes ou o descenso de gradientes estocásticos, selecciona os coeficientes máis óptimos. . Pero, dado o volume considerable do artigo, proponse realizar a diferenciación pola túa conta, ou quizais este sexa un tema para o próximo artigo con moita aritmética sen exemplos tan detallados.
Caso 2. Clasificación de obxectos en и
O enfoque aquí será o mesmo que coas clases и , pero o camiño en si ata a saída da función de perda Perda loxística, estará máis adornado. Imos comezar. Para a función de verosimilitude empregaremos o operador "se... entón..."... É dicir, se O obxecto th pertence á clase , entón para calcular a probabilidade da mostra utilizamos a probabilidade , se o obxecto pertence á clase , entón substituímos a probabilidade . Este é o aspecto da función de probabilidade:
Imos describir cos nosos dedos como funciona. Consideremos 4 casos:
1. Se и , entón a probabilidade de mostraxe "irá"
2. Se и , entón a probabilidade de mostraxe "irá"
3. Se и , entón a probabilidade de mostraxe "irá"
4. Se и , entón a probabilidade de mostraxe "irá"
É obvio que nos casos 1 e 3, cando as probabilidades foron determinadas correctamente polo algoritmo, función de probabilidade será maximizado, é dicir, isto é exactamente o que queriamos conseguir. Non obstante, este enfoque é bastante engorroso e a continuación consideraremos unha notación máis compacta. Pero primeiro, logaritmemos a función de probabilidade cun cambio de signo, xa que agora minimizarémola.
Imos substituír no seu lugar expresión :
Simplificamos o termo correcto baixo o logaritmo usando técnicas aritméticas sinxelas e obtenemos:
Agora toca desfacerse do operador "se... entón...". Teña en conta que cando un obxecto pertence á clase , entón na expresión baixo o logaritmo, no denominador, elevado ao poder , se o obxecto pertence á clase , entón $e$ é elevado ao poder . Polo tanto, a notación para o grao pódese simplificar combinando ambos casos nun só: . Entón función de erro loxístico adoptará a forma:
De acordo coas regras do logaritmo, damos a volta á fracción e apagamos o signo ""(menos) para o logaritmo, obtemos:
Aquí está a función de perda perda loxística, que se usa no conxunto de adestramento con obxectos asignados ás clases: и .
Pois a estas alturas despídome e rematamos o artigo.
Materiais auxiliares
1 Literatura
1) Análise de regresión aplicada / N. Draper, G. Smith - 2a ed. – M.: Finance and Statistics, 1986 (tradución do inglés)
2) Teoría da probabilidade e estatística matemática / V.E. Gmurman - 9ª ed. - M.: Escola Superior, 2003
3) Teoría da probabilidade / N.I. Chernova - Novosibirsk: Universidade Estatal de Novosibirsk, 2007
4) Análise empresarial: dos datos ao coñecemento / Paklin N. B., Oreshkov V. I. - 2ª ed. — San Petersburgo: Peter, 2013
5) Ciencia de datos Ciencia de datos desde cero / Joel Gras - San Petersburgo: BHV Petersburg, 2017
6) Estatísticas prácticas para especialistas en Data Science / P. Bruce, E. Bruce - San Petersburgo: BHV Petersburg, 2018
2. Conferencias, cursos (vídeo)
1)
2)
3)
4)
5)
3. Fontes de Internet
1)
2)
4)
6)