Neste artigo analisaremos os cálculos teóricos da transformação funções de regressão linear в função de transformação logit inversa (também chamada de função de resposta logística). Então, usando o arsenal método de máxima verossimilhança, de acordo com o modelo de regressão logística, derivamos a função de perda Perda Logística, ou seja, definiremos uma função com a qual os parâmetros do vetor de peso serão selecionados no modelo de regressão logística .
Esboço do artigo:
- Vamos repetir a relação linear entre duas variáveis
- Vamos identificar a necessidade de transformação funções de regressão linear в função de resposta logística
- Vamos realizar as transformações e saída função de resposta logística
- Vamos tentar entender por que o método dos mínimos quadrados é ruim na seleção de parâmetros função Perda Logística
- Nós usamos método de máxima verossimilhança para determinar funções de seleção de parâmetros :
5.1. Caso 1: função Perda Logística para objetos com designações de classe 0 и 1:
5.2. Caso 2: função Perda Logística para objetos com designações de classe -1 и +1:
O artigo está repleto de exemplos simples em que todos os cálculos são fáceis de fazer oralmente ou no papel, podendo em alguns casos ser necessária uma calculadora. Então prepare-se :)
Este artigo destina-se principalmente a cientistas de dados com um nível inicial de conhecimento nos conceitos básicos de aprendizado de máquina.
O artigo também fornecerá código para desenhar gráficos e cálculos. Todo o código é escrito na linguagem python-2.7. Deixe-me explicar antecipadamente sobre a “novidade” da versão utilizada - esta é uma das condições para fazer o conhecido curso de Yandex em uma plataforma educacional online igualmente conhecida Coursera, e, como se poderia supor, o material foi elaborado com base neste curso.
01. Dependência em linha reta
É bastante razoável fazer a pergunta - o que a dependência linear e a regressão logística têm a ver com isso?
É simples! A regressão logística é um dos modelos que pertencem ao classificador linear. Em palavras simples, a tarefa de um classificador linear é prever valores alvo de variáveis (regressores) . Acredita-se que a dependência entre as características e valores alvo linear. Daí o nome do classificador - linear. Resumindo, o modelo de regressão logística baseia-se no pressuposto de que existe uma relação linear entre as características e valores alvo . Esta é a conexão.
Está o primeiro exemplo no estúdio, e trata-se, corretamente, da dependência retilínea das grandezas em estudo. No processo de preparação do artigo, me deparei com um exemplo que já deixou muitas pessoas nervosas - a dependência da corrente da tensão (“Análise de regressão aplicada”, N. Draper, G. Smith). Veremos isso aqui também.
Conforme Lei de Ohm:
Onde - força atual, - tensão, - resistência.
Se não soubéssemos Lei de Ohm, então poderíamos encontrar a dependência empiricamente mudando e medindo , ao mesmo tempo que apoia fixo. Então veríamos que o gráfico de dependência de fornece uma linha mais ou menos reta que passa pela origem. Dizemos “mais ou menos” porque, embora a relação seja realmente precisa, as nossas medições podem conter pequenos erros e, portanto, os pontos no gráfico podem não cair exatamente na linha, mas estarão espalhados aleatoriamente em torno dela.
Gráfico 1 “Dependência” de »
Código de desenho 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. A necessidade de transformar a equação de regressão linear
Vejamos outro exemplo. Vamos imaginar que trabalhamos em um banco e nossa tarefa é determinar a probabilidade de o mutuário reembolsar o empréstimo dependendo de certos fatores. Para simplificar a tarefa, consideraremos apenas dois fatores: o salário mensal do mutuário e o valor mensal do reembolso do empréstimo.
A tarefa é muito condicional, mas com este exemplo podemos entender porque não basta usar funções de regressão linear, e também descubra quais transformações precisam ser realizadas com a função.
Voltemos ao exemplo. Entende-se que quanto maior o salário, mais o mutuário poderá destinar mensalmente para quitar o empréstimo. Ao mesmo tempo, para uma determinada faixa salarial esta relação será bastante linear. Por exemplo, vamos considerar uma faixa salarial de 60.000 RUR a 200.000 RUR e assumir que na faixa salarial especificada, a dependência do valor do pagamento mensal em relação ao valor do salário é linear. Digamos que para a faixa salarial especificada foi revelado que a relação salário/pagamento não pode cair abaixo de 3 e que o mutuário ainda deve ter 5.000 RUR em reserva. E somente neste caso assumiremos que o mutuário reembolsará o empréstimo ao banco. Então, a equação de regressão linear assumirá a forma:
onde , , , - salário -º mutuário, - pagamento de empréstimo -º mutuário.
Substituindo salário e pagamento de empréstimo por parâmetros fixos na equação Você pode decidir se deseja emitir ou recusar um empréstimo.
Olhando para o futuro, notamos que, com os parâmetros fornecidos função de regressão linear, usado em funções de resposta logística produzirá valores elevados que complicarão os cálculos para determinar as probabilidades de reembolso do empréstimo. Portanto, propõe-se reduzir os nossos coeficientes, digamos, em 25.000 vezes. Esta transformação dos coeficientes não alterará a decisão de concessão de empréstimo. Vamos lembrar este ponto para o futuro, mas agora, para tornar ainda mais claro do que estamos a falar, vamos considerar a situação com três potenciais mutuários.
Tabela 1 “Potenciais mutuários”
Código para gerar a tabela
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 acordo com os dados da tabela, Vasya, com um salário de 120.000 RUR, deseja receber um empréstimo para poder reembolsá-lo mensalmente no valor de 3.000 RUR. Determinamos que, para aprovar o empréstimo, o salário de Vasya deve exceder três vezes o valor do pagamento e ainda deve haver 5.000 RUR restantes. Vasya atende a este requisito: . Ainda restam 106.000 RUR. Apesar do fato de que ao calcular reduzimos as probabilidades 25.000 mil vezes, o resultado foi o mesmo - o empréstimo pode ser aprovado. Fedya também receberá um empréstimo, mas Lesha, apesar de receber mais, terá que conter o apetite.
Vamos desenhar um gráfico para este caso.
Quadro 2 “Classificação dos mutuários”
Código para desenhar o 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()
Então, nossa linha reta, construída de acordo com a função , separa os mutuários “maus” dos “bons”. Os mutuários cujos desejos não coincidem com as suas capacidades estão acima da linha (Lesha), enquanto aqueles que, de acordo com os parâmetros do nosso modelo, conseguem reembolsar o empréstimo estão abaixo da linha (Vasya e Fedya). Em outras palavras, podemos dizer o seguinte: nossa linha direta divide os mutuários em duas classes. Vamos denotá-los da seguinte forma: para a classe Classificaremos os mutuários com maior probabilidade de reembolsar o empréstimo como ou Incluiremos os mutuários que provavelmente não conseguirão reembolsar o empréstimo.
Vamos resumir as conclusões deste exemplo simples. Vamos dar um ponto e, substituindo as coordenadas do ponto na equação correspondente da reta , considere três opções:
- Se o ponto estiver abaixo da linha e o atribuirmos à classe , então o valor da função será positivo a partir de para . Isto significa que podemos assumir que a probabilidade de reembolsar o empréstimo está dentro de . Quanto maior o valor da função, maior a probabilidade.
- Se um ponto estiver acima de uma linha e o atribuirmos à classe ou , então o valor da função será negativo de para . Então assumiremos que a probabilidade de reembolso da dívida está dentro e, quanto maior o valor absoluto da função, maior será a nossa confiança.
- O ponto está em linha reta, na fronteira entre duas classes. Neste caso, o valor da função será igual e a probabilidade de reembolsar o empréstimo é igual a .
Agora, vamos imaginar que não temos dois fatores, mas dezenas, e não três, mas milhares de mutuários. Então, em vez de uma linha reta, teremos m-dimensional plano e coeficientes não seremos tirados do nada, mas derivados de acordo com todas as regras e com base em dados acumulados sobre os mutuários que reembolsaram ou não o empréstimo. E, de fato, observe que agora estamos selecionando mutuários usando coeficientes já conhecidos . Na verdade, a tarefa do modelo de regressão logística é justamente determinar os parâmetros , em que o valor da função de perda Perda Logística tenderá ao mínimo. Mas sobre como o vetor é calculado , saberemos mais na 5ª seção do artigo. Entretanto, regressamos à terra prometida – ao nosso banqueiro e aos seus três clientes.
Graças à função sabemos a quem pode ser concedido um empréstimo e a quem deve ser recusado. Mas você não pode ir ao diretor com essas informações, porque eles queriam obter de nós a probabilidade de reembolso do empréstimo por cada mutuário. O que fazer? A resposta é simples - precisamos de alguma forma transformar a função , cujos valores estão no intervalo para uma função cujos valores estarão no intervalo . E tal função existe, é chamada função de resposta logística ou transformação logit inversa. Encontrar:
Vamos ver passo a passo como funciona função de resposta logística. Observe que caminharemos na direção oposta, ou seja, assumiremos que conhecemos o valor da probabilidade, que está no intervalo de para e então iremos “descontrair” esse valor para todo o intervalo de números de para .
03. Derivamos a função de resposta logística
Passo 1. Converta os valores de probabilidade em um intervalo
Durante a transformação da função в função de resposta logística Deixaremos nosso analista de crédito em paz e faremos um tour pelas casas de apostas. Não, claro, não faremos apostas, tudo o que nos interessa aí é o significado da expressão, por exemplo, a probabilidade é de 4 para 1. As probabilidades, familiares a todos os apostadores, são a relação entre “sucessos” e “ fracassos”. Em termos de probabilidade, as probabilidades são a probabilidade de um evento ocorrer dividida pela probabilidade de o evento não ocorrer. Vamos escrever a fórmula para a chance de um evento ocorrer :
Onde - probabilidade de ocorrência de um evento, - probabilidade de um evento NÃO ocorrer
Por exemplo, se a probabilidade de um cavalo jovem, forte e brincalhão apelidado de “Veterok” vencer uma velha e flácida chamada “Matilda” em uma corrida for igual a , então as chances de sucesso de “Veterok” serão к e vice-versa, conhecendo as probabilidades, não será difícil calcularmos a probabilidade :
Assim, aprendemos a “traduzir” probabilidade em chances, que tomam valores de para . Vamos dar mais um passo e aprender a “traduzir” a probabilidade para toda a reta numérica de para .
Passo 2. Converta os valores de probabilidade em um intervalo
Este passo é muito simples – vamos levar o logaritmo das probabilidades à base do número de Euler e obtemos:
Agora sabemos que se , então calcule o valor será muito simples e, além disso, deverá ser positivo: . Isto é verdade.
Por curiosidade, vamos verificar e se , então esperamos ver um valor negativo . Nós verificamos: . Isso mesmo.
Agora sabemos como converter o valor da probabilidade de para ao longo de toda a reta numérica de para . Na próxima etapa faremos o oposto.
Por enquanto, notamos que de acordo com as regras do logaritmo, conhecendo o valor da função , você pode calcular as probabilidades:
Este método de determinação de probabilidades será útil para nós na próxima etapa.
Etapa 3. Vamos derivar uma fórmula para determinar
Então aprendemos, sabendo , encontre valores de função . Porém, na verdade, precisamos exatamente do oposto - saber o valor encontrar . Para fazer isso, voltemos a um conceito como a função de probabilidades inversas, segundo a qual:
No artigo não derivaremos a fórmula acima, mas iremos verificá-la usando os números do exemplo acima. Sabemos que com probabilidades de 4 para 1 (), a probabilidade do evento ocorrer é 0.8 (). Vamos fazer uma substituição: . Isso coincide com nossos cálculos realizados anteriormente. Vamos continuar.
Na última etapa deduzimos que , o que significa que você pode fazer uma substituição na função de probabilidades inversas. Nós temos:
Divida o numerador e o denominador por , então:
Por precaução, para ter certeza de que não cometemos nenhum erro em lugar nenhum, faremos mais uma pequena verificação. Na etapa 2, nós, por determinou que . Então, substituindo o valor na função de resposta logística, esperamos obter . Substituímos e obtemos:
Parabéns, caro leitor, acabamos de derivar e testar a função de resposta logística. Vejamos o gráfico da função.
Gráfico 3 “Função de resposta logística”
Código para desenhar o 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()
Na literatura você também pode encontrar o nome desta função como função sigmóide. O gráfico mostra claramente que a principal mudança na probabilidade de um objeto pertencer a uma classe ocorre dentro de um intervalo relativamente pequeno , em algum lugar de para .
Sugiro voltar ao nosso analista de crédito e ajudá-lo a calcular a probabilidade de reembolso do empréstimo, caso contrário ele corre o risco de ficar sem bônus :)
Tabela 2 “Potenciais mutuários”
Código para gerar a tabela
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']]
Portanto, determinamos a probabilidade de reembolso do empréstimo. Em geral, isso parece ser verdade.
Na verdade, a probabilidade de Vasya, com um salário de 120.000 RUR, conseguir dar 3.000 RUR ao banco todos os meses é próxima de 100%. A propósito, devemos compreender que um banco pode conceder um empréstimo a Lesha se a política do banco prevê, por exemplo, empréstimos a clientes com uma probabilidade de reembolso do empréstimo superior a, digamos, 0.3. Só que neste caso o banco criará uma reserva maior para possíveis perdas.
Deve-se notar também que a relação salário-pagamento de pelo menos 3 e com uma margem de 5.000 RUR foi retirada do teto. Portanto, não poderíamos utilizar o vetor de pesos em sua forma original . Precisávamos reduzir bastante os coeficientes, e neste caso dividimos cada coeficiente por 25.000, ou seja, basicamente ajustamos o resultado. Mas isso foi feito especificamente para simplificar a compreensão do material na fase inicial. Na vida, não precisaremos inventar e ajustar coeficientes, mas sim encontrá-los. Nas próximas seções do artigo derivaremos as equações com as quais os parâmetros são selecionados .
04. Método dos mínimos quadrados para determinação do vetor de pesos na função de resposta logística
Já conhecemos este método para selecionar um vetor de pesos Como método dos mínimos quadrados (LSM) e de fato, por que não o usamos em problemas de classificação binária? Na verdade, nada impede você de usar Multinacionais, apenas este método em problemas de classificação fornece resultados menos precisos do que Perda Logística. Existe uma base teórica para isso. Vejamos primeiro um exemplo simples.
Vamos supor que nossos modelos (usando MSE и Perda Logística) já começou a selecionar o vetor de pesos e paramos o cálculo em alguma etapa. Não importa se está no meio, no final ou no começo, o principal é que já temos alguns valores do vetor de pesos e vamos supor que nesta etapa o vetor de pesos para ambos os modelos não há diferenças. Em seguida, pegue os pesos resultantes e substitua-os em função de resposta logística () para algum objeto que pertence à classe . Examinamos dois casos em que, de acordo com o vetor de pesos selecionado, nosso modelo está muito enganado e vice-versa - o modelo está muito confiante de que o objeto pertence à classe . Vamos ver quais multas serão aplicadas ao usar Multinacionais и Perda Logística.
Código para calcular penalidades dependendo da função 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
Um caso de erro — o modelo atribui um objeto a uma classe com probabilidade de 0,01
Penalidade por uso Multinacionais será:
Penalidade por uso Perda Logística será:
Um caso de forte confiança — o modelo atribui um objeto a uma classe com probabilidade de 0,99
Penalidade por uso Multinacionais será:
Penalidade por uso Perda Logística será:
Este exemplo ilustra bem que no caso de um erro grosseiro a função de perda Perda de Log penaliza o modelo significativamente mais do que MSE. Vamos agora entender qual é a base teórica para usar a função de perda Perda de Log em problemas de classificação.
05. Método de máxima verossimilhança e regressão logística
Conforme prometido no início, o artigo está repleto de exemplos simples. No estúdio há outro exemplo e antigos convidados - tomadores de bancos: Vasya, Fedya e Lesha.
Por precaução, antes de desenvolver o exemplo, deixe-me lembrá-lo de que na vida estamos lidando com uma amostra de treinamento de milhares ou milhões de objetos com dezenas ou centenas de recursos. No entanto, aqui os números são obtidos para que caibam facilmente na cabeça de um cientista de dados novato.
Voltemos ao exemplo. Imaginemos que o diretor do banco decidiu conceder um empréstimo a todos os necessitados, apesar de o algoritmo lhe ter dito para não conceder a Lesha. E agora já passou bastante tempo e sabemos qual dos três heróis reembolsou o empréstimo e qual não. O que era de se esperar: Vasya e Fedya pagaram o empréstimo, mas Lesha não. Agora vamos imaginar que este resultado será uma nova amostra de treinamento para nós e, ao mesmo tempo, é como se todos os dados sobre os fatores que influenciam a probabilidade de reembolso do empréstimo (salário do mutuário, valor do pagamento mensal) tivessem desaparecido. Então, intuitivamente, podemos assumir que cada terceiro mutuário não reembolsa o empréstimo ao banco, ou por outras palavras, a probabilidade do próximo mutuário reembolsar o empréstimo . Esta suposição intuitiva tem confirmação teórica e é baseada em método de máxima verossimilhança, muitas vezes na literatura é chamado princípio da máxima verossimilhança.
Primeiro, vamos conhecer o aparato conceitual.
Probabilidade de amostragem é a probabilidade de obter exatamente tal amostra, obtendo exatamente tais observações/resultados, ou seja, o produto das probabilidades de obtenção de cada um dos resultados da amostra (por exemplo, se o empréstimo de Vasya, Fedya e Lesha foi reembolsado ou não reembolsado ao mesmo tempo).
Função de probabilidade relaciona a probabilidade de uma amostra aos valores dos parâmetros de distribuição.
No nosso caso, a amostra de treinamento é um esquema de Bernoulli generalizado, no qual a variável aleatória assume apenas dois valores: ou . Portanto, a verossimilhança da amostra pode ser escrita como uma função de verossimilhança do parâmetro da seguinte maneira:
A entrada acima pode ser interpretada da seguinte forma. A probabilidade conjunta de que Vasya e Fedya reembolsarão o empréstimo é igual a , a probabilidade de Lesha NÃO reembolsar o empréstimo é igual a (uma vez que NÃO foi o reembolso do empréstimo que ocorreu), portanto a probabilidade conjunta de todos os três eventos é igual .
Método de máxima verossimilhança é um método para estimar um parâmetro desconhecido maximizando funções de probabilidade. No nosso caso, precisamos encontrar tal valor em que atinge seu máximo.
De onde vem a ideia real - procurar o valor de um parâmetro desconhecido no qual a função de verossimilhança atinge o máximo? As origens da ideia decorrem da ideia de que uma amostra é a única fonte de conhecimento que temos sobre a população. Tudo o que sabemos sobre a população está representado na amostra. Portanto, tudo o que podemos dizer é que uma amostra é o reflexo mais preciso da população que temos à disposição. Portanto, precisamos encontrar um parâmetro no qual a amostra disponível se torne a mais provável.
Obviamente, estamos lidando com um problema de otimização no qual precisamos encontrar o ponto extremo de uma função. Para encontrar o ponto extremo, é necessário considerar a condição de primeira ordem, ou seja, igualar a derivada da função a zero e resolver a equação em relação ao parâmetro desejado. No entanto, procurar a derivada de um produto de um grande número de fatores pode ser uma tarefa demorada; para evitar isso, existe uma técnica especial - mudar para o logaritmo funções de probabilidade. Por que essa transição é possível? Prestemos atenção ao fato de que não estamos procurando o extremo da função em si, e o ponto extremo, ou seja, o valor do parâmetro desconhecido em que atinge seu máximo. Ao passar para um logaritmo, o ponto extremo não muda (embora o próprio extremo seja diferente), uma vez que o logaritmo é uma função monotônica.
Vamos, de acordo com o exposto, continuar a desenvolver nosso exemplo com empréstimos de Vasya, Fedya e Lesha. Primeiro vamos passar para logaritmo da função de verossimilhança:
Agora podemos facilmente diferenciar a expressão por :
E, finalmente, considere a condição de primeira ordem - igualamos a derivada da função a zero:
Assim, a nossa estimativa intuitiva da probabilidade de reembolso do empréstimo estava teoricamente justificado.
Ótimo, mas o que devemos fazer com essas informações agora? Se assumirmos que cada terceiro mutuário não devolve o dinheiro ao banco, então este irá inevitavelmente à falência. Isso mesmo, mas apenas ao avaliar a probabilidade de reembolso do empréstimo igual a Não levamos em consideração os fatores que influenciam o reembolso do empréstimo: o salário do mutuário e o valor do pagamento mensal. Recorde-se que calculamos anteriormente a probabilidade de reembolso do empréstimo por cada cliente, tendo em conta estes mesmos fatores. É lógico que obtivemos probabilidades diferentes da constante igual .
Vamos definir a probabilidade das amostras:
Código para calcular probabilidades de amostra
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 amostra em um valor constante :
Amostra de probabilidade ao calcular a probabilidade de reembolso do empréstimo levando em consideração fatores :
A verossimilhança de uma amostra com probabilidade calculada em função dos fatores revelou-se superior à verossimilhança com valor de probabilidade constante. O que isto significa? Isso sugere que o conhecimento dos fatores permitiu selecionar com maior precisão a probabilidade de reembolso do empréstimo para cada cliente. Portanto, na emissão do próximo empréstimo, seria mais correto utilizar o modelo proposto no final da seção 3 do artigo para avaliar a probabilidade de reembolso da dívida.
Mas então, se quisermos maximizar função de verossimilhança amostral, então por que não usar algum algoritmo que produza probabilidades para Vasya, Fedya e Lesha, por exemplo, iguais a 0.99, 0.99 e 0.01, respectivamente. Talvez tal algoritmo tenha um bom desempenho na amostra de treinamento, uma vez que aproximará o valor da verossimilhança da amostra. , mas, em primeiro lugar, tal algoritmo provavelmente terá dificuldades com a capacidade de generalização e, em segundo lugar, este algoritmo definitivamente não será linear. E se os métodos de combate ao overtraining (capacidade de generalização igualmente fraca) claramente não estão incluídos no plano deste artigo, então vamos examinar o segundo ponto com mais detalhes. Para fazer isso, basta responder a uma pergunta simples. A probabilidade de Vasya e Fedya reembolsarem o empréstimo pode ser a mesma, levando em consideração os fatores que conhecemos? Do ponto de vista da lógica sólida, claro que não, não pode. Portanto, Vasya pagará 2.5% de seu salário por mês para pagar o empréstimo, e Fedya - quase 27,8%. Também no gráfico 2 “Classificação de clientes” vemos que Vasya está muito mais distante da linha que separa as classes do que Fedya. E finalmente sabemos que a função para Vasya e Fedya assume valores diferentes: 4.24 para Vasya e 1.0 para Fedya. Agora, se Fedya, por exemplo, ganhasse uma ordem de magnitude a mais ou pedisse um empréstimo menor, então as probabilidades de reembolsar o empréstimo para Vasya e Fedya seriam semelhantes. Em outras palavras, a dependência linear não pode ser enganada. E se realmente calculássemos as probabilidades , e não os tiramos do nada, poderíamos dizer com segurança que nossos valores melhor nos permitem estimar a probabilidade de reembolso do empréstimo por cada mutuário, mas como concordamos em assumir que a determinação dos coeficientes foi realizado de acordo com todas as regras, então assumiremos que sim - nossos coeficientes nos permitem dar uma melhor estimativa da probabilidade :)
No entanto, divagamos. Nesta seção precisamos entender como o vetor de pesos é determinado , que é necessário para avaliar a probabilidade de reembolso do empréstimo por cada mutuário.
Vamos resumir brevemente com que arsenal procuramos probabilidades :
1. Assumimos que a relação entre a variável alvo (valor de previsão) e o fator que influencia o resultado é linear. Por esta razão é utilizado função de regressão linear espécies , cuja linha divide objetos (clientes) em classes и ou (clientes que têm condições de reembolsar o empréstimo e aqueles que não têm). No nosso caso, a equação tem a forma .
2. Nós usamos função logit inversa espécies para determinar a probabilidade de um objeto pertencer a uma classe .
3. Consideramos nosso conjunto de treinamento como uma implementação de um modelo generalizado Esquemas de Bernoulli, ou seja, para cada objeto é gerada uma variável aleatória, que com probabilidade (próprio para cada objeto) assume o valor 1 e com probabilidade - 0.
4. Sabemos o que precisamos maximizar função de verossimilhança amostral levando em consideração os fatores aceitos para que a amostra disponível se torne a mais plausível. Em outras palavras, precisamos selecionar parâmetros nos quais a amostra será mais plausível. No nosso caso, o parâmetro selecionado é a probabilidade de reembolso do empréstimo , que por sua vez depende de coeficientes desconhecidos . Então precisamos encontrar esse vetor de pesos , no qual a probabilidade da amostra será máxima.
5. Sabemos o que maximizar funções de probabilidade de amostra pode usar método de máxima verossimilhança. E conhecemos todos os truques complicados para trabalhar com esse método.
É assim que acaba sendo um movimento de várias etapas :)
Agora lembre-se que logo no início do artigo queríamos derivar dois tipos de funções de perda Perda Logística dependendo de como as classes de objetos são designadas. Acontece que em problemas de classificação com duas classes, as classes são denotadas como и ou . Dependendo da notação, a saída terá uma função de perda correspondente.
Caso 1. Classificação de objetos em и
Anteriormente, ao determinar a probabilidade de uma amostra, em que a probabilidade de reembolso da dívida pelo mutuário era calculada com base em fatores e dados coeficientes , aplicamos a fórmula:
Na realidade é o significado funções de resposta logística para um determinado vetor de pesos
Então nada nos impede de escrever a função de verossimilhança amostral da seguinte forma:
Acontece que às vezes é difícil para alguns analistas novatos entender imediatamente como funciona essa função. Vejamos 4 pequenos exemplos que irão esclarecer as coisas:
1. Se (ou seja, de acordo com a amostra de treinamento, o objeto pertence à classe +1), e nosso algoritmo determina a probabilidade de classificar um objeto em uma classe igual a 0.9, então esta probabilidade amostral será calculada da seguinte forma:
2. Se E , então o cálculo ficará assim:
3. Se E , então o cálculo ficará assim:
4. Se E , então o cálculo ficará assim:
É óbvio que a função de verossimilhança será maximizada nos casos 1 e 3 ou no caso geral - com valores adivinhados corretamente das probabilidades de atribuir um objeto a uma classe .
Devido ao fato de que ao determinar a probabilidade de atribuir um objeto a uma classe Só não sabemos os coeficientes , então iremos procurá-los. Como mencionado acima, este é um problema de otimização no qual primeiro precisamos encontrar a derivada da função de verossimilhança em relação ao vetor de pesos . No entanto, primeiro faz sentido simplificar a tarefa para nós mesmos: procuraremos a derivada do logaritmo funções de probabilidade.
Por que depois do logaritmo, em funções de erro logístico, mudamos o sinal de em . Tudo é simples, pois em problemas de avaliação da qualidade de um modelo costuma-se minimizar o valor de uma função, multiplicamos o lado direito da expressão por e consequentemente, em vez de maximizar, agora minimizamos a função.
Na verdade, agora mesmo, diante de seus olhos, a função de perda foi meticulosamente derivada - Perda Logística para um conjunto de treinamento com duas classes: и .
Agora, para encontrar os coeficientes, só precisamos encontrar a derivada funções de erro logístico e então, usando métodos de otimização numérica, como descida gradiente ou descida gradiente estocástica, selecione os coeficientes mais ideais . Mas, dado o volume considerável do artigo, propõe-se fazer a diferenciação por conta própria, ou talvez este seja tema para o próximo artigo com muita aritmética sem exemplos tão detalhados.
Caso 2. Classificação de objetos em и
A abordagem aqui será a mesma das aulas и , mas o próprio caminho para a saída da função de perda Perda Logística, será mais ornamentado. Vamos começar. Para a função de verossimilhança usaremos o operador "se então...". Isto é, se O objeto pertence à classe , então para calcular a probabilidade da amostra usamos a probabilidade , se o objeto pertencer à classe , então substituímos na probabilidade . Esta é a aparência da função de verossimilhança:
Vamos descrever em nossos dedos como funciona. Vamos considerar 4 casos:
1. Se и , então a probabilidade de amostragem “desaparecerá”
2. Se и , então a probabilidade de amostragem “desaparecerá”
3. Se и , então a probabilidade de amostragem “desaparecerá”
4. Se и , então a probabilidade de amostragem “desaparecerá”
É óbvio que nos casos 1 e 3, quando as probabilidades foram determinadas corretamente pelo algoritmo, função de verossimilhança será maximizado, ou seja, é exatamente isso que queríamos obter. No entanto, esta abordagem é bastante complicada e a seguir consideraremos uma notação mais compacta. Mas primeiro, vamos logaritmar a função de verossimilhança com mudança de sinal, pois agora iremos minimizá-la.
Vamos substituir em vez disso expressão :
Vamos simplificar o termo correto sob o logaritmo usando técnicas aritméticas simples e obter:
Agora é hora de se livrar da operadora "se então...". Observe que quando um objeto pertence à classe , então na expressão sob o logaritmo, no denominador, elevado ao poder , se o objeto pertencer à classe , então $e$ é elevado à potência . Portanto, a notação do grau pode ser simplificada combinando os dois casos em um: . em seguida função de erro logístico assumirá a forma:
De acordo com as regras do logaritmo, viramos a fração e colocamos o sinal "" (menos) para o logaritmo, obtemos:
Aqui está a função de perda perda logística, que é usado no conjunto de treinamento com objetos atribuídos às classes: и .
Pois bem, neste momento me despeço e concluímos o artigo.
Materiais de suporte
1. Literatura
1) Análise de regressão aplicada / N. Draper, G. Smith - 2ª ed. – M.: Finanças e Estatística, 1986 (tradução do inglês)
2) Teoria das probabilidades e estatística matemática / V.E. Gmurman - 9ª ed. - M.: Ensino Superior, 2003
3) Teoria da probabilidade / N.I. Chernova - Novosibirsk: Universidade Estadual de Novosibirsk, 2007
4) Análise de negócios: dos dados ao conhecimento / Paklin N. B., Oreshkov V. I. - 2ª ed. - São Petersburgo: Peter, 2013
5) Ciência de Dados Ciência de Dados do zero / Joel Gras - São Petersburgo: BHV Petersburgo, 2017
6) Estatísticas práticas para especialistas em ciência de dados / P. Bruce, E. Bruce - São Petersburgo: BHV Petersburgo, 2018
2. Palestras, cursos (vídeo)
1)
2)
3)
4)
5)
3. Fontes da Internet
1)
2)
4)
6)
7)
Fonte: habr.com