En este artículo analizaremos los cálculos teóricos de la transformación. funciones de regresión lineal в función de transformación logit inversa (también llamada función de respuesta logística). Luego, usando el arsenal método de máxima verosimilitud, de acuerdo con el modelo de regresión logística, derivamos la función de pérdida Pérdida logística, o en otras palabras, definiremos una función con la cual se seleccionan los parámetros del vector de peso en el modelo de regresión logística. .
Esquema del artículo:
- Repitamos la relación lineal entre dos variables.
- Identifiquemos la necesidad de transformación funciones de regresión lineal в función de respuesta logística
- Realicemos las transformaciones y la salida. función de respuesta logística
- Intentemos comprender por qué el método de mínimos cuadrados es malo al seleccionar parámetros. Características Pérdida logística
- Uso método de máxima verosimilitud para determinar funciones de selección de parámetros :
5.1. Caso 1: función Pérdida logística para objetos con designaciones de clase 0 и 1:
5.2. Caso 2: función Pérdida logística para objetos con designaciones de clase -1 и +1:
El artículo está repleto de ejemplos sencillos en los que todos los cálculos son fáciles de realizar de forma oral o en papel; en algunos casos, es posible que necesite una calculadora. Entonces, alístate :)
Este artículo está dirigido principalmente a científicos de datos con un nivel inicial de conocimientos sobre los conceptos básicos del aprendizaje automático.
El artículo también proporcionará código para dibujar gráficos y cálculos. Todo el código está escrito en el idioma. python 2.7. Permítanme explicarles de antemano la "novedad" de la versión utilizada: esta es una de las condiciones para realizar el conocido curso de Yandex en una plataforma de educación en línea igualmente conocida Courseray, como se podría suponer, el material se preparó en base a este curso.
01. Dependencia en línea recta
Es bastante razonable hacer la pregunta: ¿qué tienen que ver la dependencia lineal y la regresión logística?
¡Es sencillo! La regresión logística es uno de los modelos que pertenecen al clasificador lineal. En palabras simples, la tarea de un clasificador lineal es predecir valores objetivo. de variables (regresores) . Se cree que la dependencia entre las características. y valores objetivo lineal. De ahí el nombre del clasificador: lineal. Para decirlo de manera muy aproximada, el modelo de regresión logística se basa en el supuesto de que existe una relación lineal entre las características y valores objetivo . Esta es la conexión.
Ahí está el primer ejemplo en el estudio, y se trata, correctamente, de la dependencia rectilínea de las cantidades que se estudian. En el proceso de preparación del artículo, me encontré con un ejemplo que ya ha puesto nerviosos a muchas personas: la dependencia de la corriente del voltaje. (“Análisis de regresión aplicado”, N. Draper, G. Smith). Lo veremos aquí también.
De acuerdo con Ley de Ohm:
Donde - fuerza actual, - Voltaje, - resistencia.
Si no lo supiéramos Ley de Ohm, entonces podríamos encontrar la dependencia empíricamente cambiando y midiendo , mientras apoya fijado. Entonces veríamos que el gráfico de dependencia de da una línea más o menos recta que pasa por el origen. Decimos “más o menos” porque, aunque la relación es realmente precisa, nuestras mediciones pueden contener pequeños errores y, por tanto, es posible que los puntos de la gráfica no caigan exactamente en la recta, sino que estarán dispersos alrededor de ella de forma aleatoria.
Gráfico 1 “Dependencia” de »
Código de dibujo de 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. La necesidad de transformar la ecuación de regresión lineal.
Veamos otro ejemplo. Imaginemos que trabajamos en un banco y nuestra tarea es determinar la probabilidad de que el prestatario pague el préstamo en función de ciertos factores. Para simplificar la tarea, consideraremos sólo dos factores: el salario mensual del prestatario y el monto de pago mensual del préstamo.
La tarea es muy condicional, pero con este ejemplo podemos entender por qué no basta con usar funciones de regresión lineal, y también averiguar qué transformaciones se deben realizar con la función.
Volvamos al ejemplo. Se entiende que cuanto mayor sea el salario, más podrá destinar el prestatario mensualmente para pagar el préstamo. Al mismo tiempo, para un determinado rango salarial esta relación será bastante lineal. Por ejemplo, tomemos un rango salarial de 60.000 RUR a 200.000 RUR y supongamos que en el rango salarial especificado, la dependencia del tamaño del pago mensual del tamaño del salario es lineal. Digamos que para el rango de salarios especificado se reveló que la relación salario-pago no puede caer por debajo de 3 y el prestatario aún debe tener 5.000 RUR en reserva. Y sólo en este caso asumiremos que el prestatario reembolsará el préstamo al banco. Entonces, la ecuación de regresión lineal tomará la forma:
donde , , , - salario -ésimo prestatario, - Pago de préstamo -ésimo prestatario.
Sustituir el salario y el pago del préstamo por parámetros fijos en la ecuación Puede decidir si concede o rechaza un préstamo.
De cara al futuro, observamos que, con los parámetros dados función de regresión lineal, utilizada en funciones de respuesta logística producirá valores elevados que complicarán los cálculos para determinar las probabilidades de reembolso del préstamo. Por tanto, se propone reducir nuestros coeficientes, digamos, 25.000 veces. Esta transformación de los coeficientes no cambiará la decisión de conceder un préstamo. Recordemos este punto para el futuro, pero ahora, para que quede aún más claro de qué estamos hablando, consideremos la situación con tres prestatarios potenciales.
Cuadro 1 “Posibles prestatarios”
Código para generar la tabla.
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']]
De acuerdo con los datos de la tabla, Vasya, con un salario de 120.000 RUR, quiere recibir un préstamo para poder pagarlo mensualmente por 3.000 RUR. Determinamos que para aprobar el préstamo, el salario de Vasya debe exceder tres veces el monto del pago y aún deben quedar 5.000 RUR. Vasya cumple este requisito: . Incluso quedan 106.000 RUR. A pesar de que al calcular hemos reducido las probabilidades 25.000 veces el resultado fue el mismo: el préstamo puede aprobarse. Fedya también recibirá un préstamo, pero Lesha, a pesar de que es la que recibe más, tendrá que frenar su apetito.
Dibujemos una gráfica para este caso.
Cuadro 2 “Clasificación de prestatarios”
Código para dibujar el gráfico.
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()
Entonces, nuestra línea recta, construida de acuerdo con la función , separa a los prestatarios “malos” de los “buenos”. Aquellos prestatarios cuyos deseos no coinciden con sus capacidades están por encima de la línea (Lesha), mientras que aquellos que, según los parámetros de nuestro modelo, pueden pagar el préstamo están por debajo de la línea (Vasya y Fedya). En otras palabras, podemos decir esto: nuestra línea directa divide a los prestatarios en dos clases. Designémoslos de la siguiente manera: a clase Clasificaremos a aquellos prestatarios que tienen más probabilidades de pagar el préstamo como o Incluiremos a aquellos prestatarios que probablemente no podrán pagar el préstamo.
Resumamos las conclusiones de este sencillo ejemplo. tomemos un punto y, sustituyendo las coordenadas del punto en la ecuación correspondiente de la recta , considere tres opciones:
- Si el punto está debajo de la línea y lo asignamos a la clase , entonces el valor de la función será positivo de a . Esto significa que podemos suponer que la probabilidad de pagar el préstamo está dentro de . Cuanto mayor sea el valor de la función, mayor será la probabilidad.
- Si un punto está encima de una recta y lo asignamos a la clase o , entonces el valor de la función será negativo a partir de a . Entonces asumiremos que la probabilidad de pago de la deuda está dentro de y cuanto mayor sea el valor absoluto de la función, mayor será nuestra confianza.
- El punto está en línea recta, en el límite entre dos clases. En este caso, el valor de la función será igual y la probabilidad de pagar el préstamo es igual a .
Ahora imaginemos que no tenemos dos factores, sino decenas, y no tres, sino miles de prestatarios. Entonces en lugar de una línea recta tendremos m-dimensional plano y coeficientes No saldremos de la nada, sino que los sacaremos según todas las reglas y sobre la base de los datos acumulados sobre los prestatarios que han reembolsado o no el préstamo. Y, de hecho, tenga en cuenta que ahora estamos seleccionando prestatarios utilizando coeficientes ya conocidos. . De hecho, la tarea del modelo de regresión logística es precisamente determinar los parámetros , en el que el valor de la función de pérdida Pérdida logística tenderá al mínimo. Pero sobre cómo se calcula el vector. , descubriremos más en la quinta sección del artículo. Mientras tanto, volvemos a la tierra prometida: a nuestro banquero y sus tres clientes.
Gracias a la función Sabemos a quién se le puede conceder un préstamo y a quién se le debe negar. Pero no se puede acudir al director con esa información, porque querían obtener de nosotros la probabilidad de pago del préstamo por parte de cada prestatario. ¿Qué hacer? La respuesta es simple: necesitamos transformar de alguna manera la función. , cuyos valores se encuentran en el rango a una función cuyos valores estarán en el rango . Y tal función existe, se llama función de respuesta logística o transformación logit inversa. Encontrarse:
Veamos paso a paso cómo funciona. función de respuesta logística. Tenga en cuenta que caminaremos en la dirección opuesta, es decir. Supondremos que conocemos el valor de probabilidad, que se encuentra en el rango de a y luego "desenrollaremos" este valor a todo el rango de números desde a .
03. Derivamos la función de respuesta logística.
Paso 1. Convierte los valores de probabilidad en un rango.
Durante la transformación de la función. в función de respuesta logística Dejaremos en paz a nuestro analista de crédito y en su lugar haremos un recorrido por las casas de apuestas. No, por supuesto, no haremos apuestas, lo único que nos interesa es el significado de la expresión, por ejemplo, la probabilidad es 4 a 1. Las probabilidades, familiares para todos los apostantes, son la proporción de "éxitos" a " fracasos”. En términos de probabilidad, las probabilidades son la probabilidad de que ocurra un evento dividida por la probabilidad de que el evento no ocurra. Escribamos la fórmula para la probabilidad de que ocurra un evento. :
Donde - probabilidad de que ocurra un evento, — probabilidad de que un evento NO ocurra
Por ejemplo, si la probabilidad de que un caballo joven, fuerte y juguetón apodado “Veterok” gane en una carrera a una anciana fláccida llamada “Matilda” es igual a , entonces las posibilidades de éxito de "Veterok" serán к y viceversa, conociendo las cuotas, no nos resultará difícil calcular la probabilidad. :
Así, hemos aprendido a “traducir” la probabilidad en posibilidades, que toman valores de a . Demos un paso más y aprendamos a "traducir" la probabilidad a la recta numérica completa desde a .
Paso 2. Convierte los valores de probabilidad en un rango.
Este paso es muy simple: llevemos el logaritmo de las probabilidades a la base del número de Euler. y obtenemos:
Ahora sabemos que si , luego calcula el valor Será muy sencillo y, además, deberá ser positivo: . Esto es cierto.
Por curiosidad, veamos qué pasaría si , entonces esperamos ver un valor negativo . Verificamos: . Así es.
Ahora sabemos cómo convertir el valor de probabilidad de a a lo largo de toda la recta numérica desde a . En el siguiente paso haremos lo contrario.
Por ahora, observamos que de acuerdo con las reglas del logaritmo, conocer el valor de la función , puedes calcular las probabilidades:
Este método para determinar las probabilidades nos será útil en el siguiente paso.
Paso 3. Derivemos una fórmula para determinar
Entonces aprendimos, sabiendo , encontrar valores de función . Sin embargo, en realidad necesitamos exactamente lo contrario: conocer el valor encontrar . Para hacer esto, recurramos a un concepto como la función de probabilidades inversa, según la cual:
En el artículo no derivaremos la fórmula anterior, pero la comprobaremos utilizando los números del ejemplo anterior. Sabemos que con probabilidades de 4 a 1 (), la probabilidad de que ocurra el evento es 0.8 (). Hagamos una sustitución: . Esto coincide con nuestros cálculos realizados anteriormente. Vamonos.
En el último paso dedujimos que , lo que significa que puedes hacer una sustitución en la función de probabilidades inversas. Obtenemos:
Divide tanto el numerador como el denominador entre entonces:
Por las dudas, para asegurarnos de que no nos hemos equivocado en ningún lado, haremos una pequeña comprobación más. En el paso 2, nosotros para determinó que . Luego, sustituyendo el valor en la función de respuesta logística, esperamos obtener . Sustituimos y obtenemos:
Felicitaciones, querido lector, acabamos de derivar y probar la función de respuesta logística. Miremos la gráfica de la función.
Gráfico 3 “Función de respuesta logística”
Código para dibujar el gráfico.
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 literatura también puede encontrar el nombre de esta función como función sigmoidea. El gráfico muestra claramente que el principal cambio en la probabilidad de que un objeto pertenezca a una clase ocurre dentro de un rango relativamente pequeño , en algún lugar de a .
Sugiero volver con nuestro analista de crédito y ayudarlo a calcular la probabilidad de pago del préstamo; de lo contrario, corre el riesgo de quedarse sin bonificación :)
Cuadro 2 “Posibles prestatarios”
Código para generar la tabla.
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']]
Entonces, hemos determinado la probabilidad de pago del préstamo. En general, esto parece ser cierto.
De hecho, la probabilidad de que Vasya, con un salario de 120.000 RUR, pueda donar 3.000 RUR al banco cada mes es cercana al 100%. Por cierto, debemos entender que un banco puede otorgar un préstamo a Lesha si la política del banco prevé, por ejemplo, otorgar préstamos a clientes con una probabilidad de reembolso del préstamo superior a, digamos, 0.3. Solo que en este caso el banco creará una reserva mayor para posibles pérdidas.
También cabe señalar que del techo se tomó una relación salario-pago de al menos 3 y con un margen de 5.000 RUR. Por tanto, no podríamos utilizar el vector de pesos en su forma original. . Necesitábamos reducir mucho los coeficientes y en este caso dividimos cada coeficiente entre 25.000, es decir, en esencia, ajustamos el resultado. Pero esto se hizo específicamente para simplificar la comprensión del material en la etapa inicial. En la vida no necesitaremos inventar ni ajustar coeficientes, sino encontrarlos. En las siguientes secciones del artículo derivaremos las ecuaciones con las que se seleccionan los parámetros. .
04. Método de mínimos cuadrados para determinar el vector de pesos. en la función de respuesta logística
Ya conocemos este método para seleccionar un vector de pesos. como método de mínimos cuadrados (LSM) y de hecho, ¿por qué no lo usamos en problemas de clasificación binaria? De hecho, nada le impide utilizar multinacional, sólo este método en problemas de clasificación da resultados que son menos precisos que Pérdida logística. Hay una base teórica para esto. Veamos primero un ejemplo sencillo.
Supongamos que nuestros modelos (usando MSE и Pérdida logística) ya han comenzado a seleccionar el vector de pesos y detuvimos el cálculo en algún paso. No importa si en el medio, al final o al principio, lo principal es que ya tenemos algunos valores del vector de pesos y supongamos que en este paso, el vector de pesos Para ambos modelos no hay diferencias. Luego toma los pesos resultantes y sustitúyelos en función de respuesta logística () para algún objeto que pertenece a la clase . Examinamos dos casos en los que, de acuerdo con el vector de pesos seleccionado, nuestro modelo está muy equivocado y viceversa: el modelo tiene mucha confianza en que el objeto pertenece a la clase. . Veamos qué multas se impondrán al usar. multinacional и Pérdida logística.
Código para calcular penalizaciones dependiendo de la función de pérdida 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 error garrafal — el modelo asigna un objeto a una clase con una probabilidad de 0,01
Penalización por uso multinacional será:
Penalización por uso Pérdida logística será:
Un caso de fuerte confianza — el modelo asigna un objeto a una clase con una probabilidad de 0,99
Penalización por uso multinacional será:
Penalización por uso Pérdida logística será:
Este ejemplo ilustra bien que en caso de un error grave la función de pérdida Pérdida de registro penaliza al modelo significativamente más que MSE. Ahora comprendamos cuál es el fundamento teórico del uso de la función de pérdida. Pérdida de registro en problemas de clasificación.
05. Método de máxima verosimilitud y regresión logística.
Como prometí al principio, el artículo está repleto de ejemplos sencillos. En el estudio hay otro ejemplo y antiguos invitados: prestatarios del banco: Vasya, Fedya y Lesha.
Por si acaso, antes de desarrollar el ejemplo, permítanme recordarles que en la vida estamos ante una muestra de entrenamiento de miles o millones de objetos con decenas o cientos de características. Sin embargo, aquí los números están tomados para que puedan caber fácilmente en la cabeza de un científico de datos novato.
Volvamos al ejemplo. Imaginemos que el director del banco decidió conceder un préstamo a todos los necesitados, a pesar de que el algoritmo le dijo que no se lo concediera a Lesha. Y ahora ha pasado bastante tiempo y sabemos cuál de los tres héroes devolvió el préstamo y cuál no. Lo que era de esperar: Vasya y Fedya pagaron el préstamo, pero Lesha no. Ahora imaginemos que este resultado será una nueva muestra de entrenamiento para nosotros y, al mismo tiempo, es como si todos los datos sobre los factores que influyen en la probabilidad de pagar el préstamo (salario del prestatario, monto del pago mensual) hubieran desaparecido. Entonces, intuitivamente, podemos suponer que uno de cada tres prestatarios no paga el préstamo al banco, o en otras palabras, la probabilidad de que el próximo prestatario pague el préstamo . Esta suposición intuitiva tiene confirmación teórica y se basa en método de máxima verosimilitud, a menudo en la literatura se le llama principio de máxima verosimilitud.
Primero, familiaricémonos con el aparato conceptual.
Probabilidad de muestreo es la probabilidad de obtener exactamente esa muestra, obtener exactamente tales observaciones/resultados, es decir el producto de las probabilidades de obtener cada uno de los resultados de la muestra (por ejemplo, si el préstamo de Vasya, Fedya y Lesha se pagó o no al mismo tiempo).
función de probabilidad Relaciona la probabilidad de una muestra con los valores de los parámetros de distribución.
En nuestro caso, la muestra de entrenamiento es un esquema de Bernoulli generalizado, en el que la variable aleatoria toma sólo dos valores: o . Por lo tanto, la probabilidad de la muestra se puede escribir como una función de probabilidad del parámetro следующим обрахом:
La entrada anterior se puede interpretar de la siguiente manera. La probabilidad conjunta de que Vasya y Fedya paguen el préstamo es igual a , la probabilidad de que Lesha NO pague el préstamo es igual a (dado que NO fue el pago del préstamo lo que tuvo lugar), por lo tanto, la probabilidad conjunta de los tres eventos es igual .
método de máxima verosimilitud es un método para estimar un parámetro desconocido maximizando funciones de probabilidad. En nuestro caso, necesitamos encontrar tal valor. en que alcanza su máximo.
¿De dónde surge la idea real: buscar el valor de un parámetro desconocido en el que la función de probabilidad alcanza un máximo? Los orígenes de la idea surgen de la idea de que una muestra es la única fuente de conocimiento disponible sobre la población. Todo lo que sabemos sobre la población está representado en la muestra. Por lo tanto, todo lo que podemos decir es que una muestra es el reflejo más preciso de la población de que disponemos. Por lo tanto, necesitamos encontrar un parámetro en el que la muestra disponible sea la más probable.
Obviamente, estamos ante un problema de optimización en el que necesitamos encontrar el punto extremo de una función. Para encontrar el punto extremo, es necesario considerar la condición de primer orden, es decir, igualar la derivada de la función a cero y resolver la ecuación con respecto al parámetro deseado. Sin embargo, buscar la derivada de un producto de una gran cantidad de factores puede ser una tarea larga; para evitarlo, existe una técnica especial: cambiar al logaritmo. funciones de probabilidad. ¿Por qué es posible tal transición? Prestemos atención al hecho de que no buscamos el extremo de la función en sí., y el punto extremo, es decir, el valor del parámetro desconocido en que alcanza su máximo. Al pasar a un logaritmo, el punto extremo no cambia (aunque el extremo en sí será diferente), ya que el logaritmo es una función monótona.
De acuerdo con lo anterior, sigamos desarrollando nuestro ejemplo con préstamos de Vasya, Fedya y Lesha. Primero pasemos a logaritmo de la función de probabilidad:
Ahora podemos diferenciar fácilmente la expresión por :
Y finalmente, considere la condición de primer orden: igualamos la derivada de la función a cero:
Por lo tanto, nuestra estimación intuitiva de la probabilidad de pago del préstamo estaba teóricamente justificado.
Genial, pero ¿qué debemos hacer ahora con esta información? Si asumimos que uno de cada tres prestatarios no devuelve el dinero al banco, este último inevitablemente irá a la quiebra. Así es, pero sólo cuando se evalúa la probabilidad de reembolso del préstamo igual a No tomamos en cuenta los factores que influyen en el pago del préstamo: el salario del prestatario y el monto del pago mensual. Recordemos que previamente calculamos la probabilidad de devolución del préstamo por parte de cada cliente, teniendo en cuenta estos mismos factores. Es lógico que obtuvimos probabilidades diferentes a la constante igual .
Definamos la probabilidad de muestras:
Código para calcular probabilidades de muestra
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)
Probabilidad de muestra a un valor constante :
Probabilidad de muestra al calcular la probabilidad de reembolso del préstamo teniendo en cuenta factores :
La probabilidad de una muestra con una probabilidad calculada en función de los factores resultó ser mayor que la probabilidad con un valor de probabilidad constante. ¿Qué quiere decir esto? Esto sugiere que el conocimiento de los factores permitió seleccionar con mayor precisión la probabilidad de pago del préstamo para cada cliente. Por tanto, a la hora de conceder el próximo préstamo, sería más correcto utilizar el modelo propuesto al final del apartado 3 del artículo para evaluar la probabilidad de pago de la deuda.
Pero entonces, si queremos maximizar función de probabilidad de muestra, entonces, ¿por qué no utilizar algún algoritmo que produzca probabilidades para Vasya, Fedya y Lesha, por ejemplo, iguales a 0.99, 0.99 y 0.01, respectivamente? Quizás dicho algoritmo funcione bien en la muestra de entrenamiento, ya que acercará el valor de probabilidad de la muestra a , pero, en primer lugar, lo más probable es que dicho algoritmo tenga dificultades con la capacidad de generalización y, en segundo lugar, este algoritmo definitivamente no será lineal. Y si los métodos para combatir el sobreentrenamiento (capacidad de generalización igualmente débil) claramente no están incluidos en el plan de este artículo, entonces analicemos el segundo punto con más detalle. Para hacer esto, simplemente responda una pregunta simple. ¿Puede ser la misma la probabilidad de que Vasya y Fedya paguen el préstamo, teniendo en cuenta los factores que conocemos? Desde el punto de vista de la buena lógica, por supuesto que no, no puede ser así. Así, Vasya pagará el 2.5% de su salario mensual para pagar el préstamo, y Fedya, casi el 27,8%. También en el gráfico 2 “Clasificación de clientes” vemos que Vasya está mucho más lejos de la línea que separa las clases que Fedya. Y finalmente sabemos que la función para Vasya y Fedya toma valores diferentes: 4.24 para Vasya y 1.0 para Fedya. Ahora bien, si Fedya, por ejemplo, ganara un orden de magnitud más o solicitara un préstamo menor, entonces las probabilidades de pagar el préstamo para Vasya y Fedya serían similares. En otras palabras, no se puede engañar a la dependencia lineal. Y si realmente calculáramos las probabilidades y no los sacamos de la nada, podríamos decir con seguridad que nuestros valores mejor nos permiten estimar la probabilidad de pago del préstamo por parte de cada prestatario, pero como acordamos suponer que la determinación de los coeficientes se llevó a cabo de acuerdo con todas las reglas, entonces lo asumiremos: nuestros coeficientes nos permiten dar una mejor estimación de la probabilidad :)
Sin embargo, estamos divagando. En esta sección necesitamos entender cómo se determina el vector de pesos. , que es necesario para evaluar la probabilidad de reembolso del préstamo por parte de cada prestatario.
Resumamos brevemente con qué arsenal buscamos probabilidades. :
1. Suponemos que la relación entre la variable objetivo (valor de predicción) y el factor que influye en el resultado es lineal. Por esta razón se utiliza función de regresión lineal formulario , cuya línea divide los objetos (clientes) en clases и o (clientes que pueden pagar el préstamo y los que no). En nuestro caso, la ecuación tiene la forma .
2. Usamos función logit inversa formulario para determinar la probabilidad de que un objeto pertenezca a una clase .
3. Consideramos nuestro conjunto de formación como una implementación de un sistema generalizado. Esquemas de Bernoulli, es decir, para cada objeto se genera una variable aleatoria, que con probabilidad (el suyo para cada objeto) toma el valor 1 y con probabilidad - 0.
4. Sabemos lo que necesitamos maximizar función de probabilidad de muestra teniendo en cuenta los factores aceptados para que la muestra disponible sea la más plausible. En otras palabras, debemos seleccionar los parámetros en los que la muestra será más plausible. En nuestro caso, el parámetro seleccionado es la probabilidad de reembolso del préstamo. , que a su vez depende de coeficientes desconocidos . Entonces necesitamos encontrar tal vector de pesos. , en el que la probabilidad de la muestra será máxima.
5. Sabemos qué maximizar funciones de probabilidad de muestra Se puede utilizar método de máxima verosimilitud. Y conocemos todos los trucos para trabajar con este método.
Así es como resulta ser un movimiento de varios pasos :)
Ahora recuerde que al principio del artículo queríamos derivar dos tipos de funciones de pérdida. Pérdida logística dependiendo de cómo se designen las clases de objetos. Sucedió que en problemas de clasificación con dos clases, las clases se denotan como и o . Dependiendo de la notación, la salida tendrá una función de pérdida correspondiente.
Caso 1. Clasificación de objetos en и
Anteriormente, al determinar la probabilidad, se utilizó una muestra en la que la probabilidad de pago de la deuda por parte del prestatario se calculó en función de factores y coeficientes dados. , aplicamos la fórmula:
En realidad es el significado funciones de respuesta logística para un vector de pesos dado
Entonces nada nos impide escribir la función de probabilidad muestral de la siguiente manera:
Sucede que a veces a algunos analistas novatos les resulta difícil comprender de inmediato cómo funciona esta función. Veamos 4 breves ejemplos que lo aclararán todo:
1. si (es decir, según la muestra de entrenamiento, el objeto pertenece a la clase +1), y nuestro algoritmo determina la probabilidad de clasificar un objeto en una clase es igual a 0.9, entonces esta probabilidad de muestra se calculará de la siguiente manera:
2. si Y , entonces el cálculo será así:
3. si Y , entonces el cálculo será así:
4. si Y , entonces el cálculo será así:
Es obvio que la función de probabilidad se maximizará en los casos 1 y 3 o en el caso general, con valores adivinados correctamente de las probabilidades de asignar un objeto a una clase. .
Debido a que al determinar la probabilidad de asignar un objeto a una clase Sólo no conocemos los coeficientes. , entonces los buscaremos. Como se mencionó anteriormente, este es un problema de optimización en el que primero necesitamos encontrar la derivada de la función de probabilidad con respecto al vector de pesos. . Sin embargo, primero tiene sentido simplificarnos la tarea: buscaremos la derivada del logaritmo. funciones de probabilidad.
¿Por qué después del logaritmo, en funciones de error logístico, cambiamos el signo de en . Todo es sencillo, ya que en las tareas de evaluación de la calidad de un modelo se acostumbra minimizar el valor de una función, multiplicamos el lado derecho de la expresión por y en consecuencia, en lugar de maximizar, ahora minimizamos la función.
En realidad, ahora mismo, ante tus ojos, la función de pérdida se derivó minuciosamente... Pérdida logística para un conjunto de entrenamiento con dos clases: и .
Ahora, para encontrar los coeficientes, solo necesitamos encontrar la derivada. funciones de error logístico y luego, utilizando métodos de optimización numérica, como el descenso de gradiente o el descenso de gradiente estocástico, seleccione los coeficientes más óptimos . Pero, dado el considerable volumen del artículo, se propone realizar la diferenciación usted mismo, o quizás este sea un tema para el próximo artículo con mucha aritmética sin ejemplos tan detallados.
Caso 2. Clasificación de objetos en и
El enfoque aquí será el mismo que con las clases. и , pero el camino mismo hacia la salida de la función de pérdida Pérdida logística, será más adornado. Empecemos. Para la función de probabilidad usaremos el operador "Si... entonces...". Es decir, si El décimo objeto pertenece a la clase. , luego para calcular la probabilidad de la muestra usamos la probabilidad , si el objeto pertenece a la clase , luego sustituimos en la probabilidad . Así es como se ve la función de probabilidad:
Describamos con nuestros dedos cómo funciona. Consideremos 4 casos:
1. si и , entonces la probabilidad de muestreo “irá”
2. si и , entonces la probabilidad de muestreo “irá”
3. si и , entonces la probabilidad de muestreo “irá”
4. si и , entonces la probabilidad de muestreo “irá”
Es obvio que en los casos 1 y 3, cuando el algoritmo determinó correctamente las probabilidades, función de probabilidad se maximizará, es decir, esto es exactamente lo que queríamos obtener. Sin embargo, este enfoque es bastante engorroso y a continuación consideraremos una notación más compacta. Pero primero, logaritmemos la función de probabilidad con un cambio de signo, ya que ahora la minimizaremos.
Sustituyamos en su lugar expresión :
Simplifiquemos el término correcto bajo el logaritmo usando técnicas aritméticas simples y obtengamos:
Ahora es el momento de deshacerse del operador. "Si... entonces...". Tenga en cuenta que cuando un objeto pertenece a la clase , luego en la expresión bajo el logaritmo, en el denominador, elevado al poder , si el objeto pertenece a la clase , entonces $e$ se eleva a la potencia . Por tanto, la notación del grado se puede simplificar combinando ambos casos en uno solo: . Entonces función de error logístico tomará la forma:
De acuerdo con las reglas del logaritmo, le damos la vuelta a la fracción y le ponemos el signo "" (menos) para el logaritmo, obtenemos:
Aquí está la función de pérdida. pérdida logística, que se utiliza en el conjunto de entrenamiento con objetos asignados a clases: и .
Bueno, llegados a este punto me despido y damos por concluido el artículo.
materiales auxiliares
1 Literatura
1) Análisis de regresión aplicada / N. Draper, G. Smith - 2ª ed. – M.: Finanzas y Estadísticas, 1986 (traducción del inglés)
2) Teoría de la probabilidad y estadística matemática / V.E. Gmurman - 9ª ed. - M.: Escuela Superior, 2003
3) Teoría de la probabilidad / N.I. Chernova - Novosibirsk: Universidad Estatal de Novosibirsk, 2007
4) Análisis empresarial: de los datos al conocimiento / 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 Petersburgo, 2017
6) Estadísticas prácticas para especialistas en ciencia de datos / P. Bruce, E. Bruce - San Petersburgo: BHV Petersburgo, 2018
2. Conferencias, cursos (video)
1)
2)
3)
4)
5)
3. Fuentes de Internet
1)
2)
4)
6)
7)
Fuente: habr.com