Masticando la regressione logistica

Masticando la regressione logistica

In questo articolo, analizzeremo le deduzioni teoriche della trasformazione della funzione di regressione lineare in la funzione di trasformazione logit inversa (nota anche come funzione di risposta logistica). Poi, utilizzando l'arsenale del metodo della massima verosimiglianza, conformemente al modello di regressione logistica, deriviamo la funzione di perdita Logistic Loss, in altre parole, definiremo la funzione attraverso la quale nel modello di regressione logistica vengono ottimizzati i parametri del vettore dei pesi Masticando la regressione logistica.

Piano dell'articolo:

  1. Ribadiamo la dipendenza lineare tra due variabili
  2. Identifichiamo la necessità di trasformare della funzione di regressione lineare Masticando la regressione logistica in la funzione di risposta logistica Masticando la regressione logistica
  3. Effettuiamo le trasformazioni e derivate la funzione di risposta logistica
  4. Cerchiamo di capire perché il metodo dei minimi quadrati sia inadeguato nella stima dei parametri Masticando la regressione logistica funzioni Logistic Loss
  5. Usa il metodo della massima verosimiglianza per determinare della funzione di stima dei parametri Masticando la regressione logistica:

    5.1. Caso 1: funzione Logistic Loss per oggetti con designazione di classi 0 e 1:

    Masticando la regressione logistica

    5.2. Caso 2: funzione Logistic Loss per oggetti con designazione di classi -1 e +1:

    Masticando la regressione logistica


L'articolo è ricco di esempi semplici, in cui tutti i calcoli possono essere facilmente effettuati a mente o su carta; in alcuni casi potrebbe essere richiesto un calcolatore. Quindi preparatevi 🙂

Questo articolo è principalmente dedicato a data scientist con una conoscenza rudimentale delle basi del machine learning.

L'articolo presenterà anche codice per la generazione di grafici e calcoli. Tutto il codice è scritto in python 2.7. Spiegherò in anticipo la "novità" della versione utilizzata: questo è uno dei requisiti per seguire il famoso corso di Yandex su una delle più note piattaforme di educazione online Coursera, e, come si può supporre, il materiale è stato preparato ispirandosi a questo corso.

01. Dipendenza lineare

È del tutto naturale porsi la domanda: che cosa c'entrano la dipendenza lineare e la regressione logistica?

È semplice! La regressione logistica è uno dei modelli che appartiene ai classificatori lineari. In parole semplici, il compito di un classificatore lineare è prevedere valori target Masticando la regressione logistica a partire da variabili (regressori) Masticando la regressione logistica. Si presume che ci sia una dipendenza Masticando la regressione logistica tra le caratteristiche Masticando la regressione logistica e i valori target Masticando la regressione logistica tra le caratteristiche Masticando la regressione logisticalineare. Da qui, per l'appunto, il nome del classificatore: lineare. Se dobbiamo generare un'idea molto generale, alla base del modello di regressione logistica c'è l'assunzione dell'esistenza di una dipendenza lineare tra le caratteristiche, così si stabilisce il legame.

Nello studio c'è il primo esempio, e lui, giustamente, riguarda la dipendenza lineare delle grandezze studiate. Durante la preparazione dell'articolo, mi sono imbattuto in un esempio che ha già stancato molti: la dipendenza della corrente elettrica dalla tensione. («Analisi della regressione applicata», N.Draper, G.Smith). Qui lo considereremo anche noi.

In conformità con legge di Ohm:

Masticando la regressione logistica, dove Masticando la regressione logistica — corrente elettrica, Masticando la regressione logistica — tensione, Masticando la regressione logistica — resistenza.

Se non conoscessimo la legge di Ohm, potremmo trovare la dipendenza empiricamente, variando Masticando la regressione logistica e misurando Masticando la regressione logistica, mantenendo Masticando la regressione logistica costante. Allora vedremmo che il grafico della dipendenza Masticando la regressione logistica di Masticando la regressione logistica dà una linea più o meno retta che passa per l'origine. Abbiamo detto «più o meno», poiché, sebbene la dipendenza sia effettivamente precisa, le nostre misurazioni potrebbero contenere piccoli errori e quindi i punti sul grafico potrebbero non cadere esattamente sulla linea, ma essere distribuiti attorno ad essa in modo casuale.

Grafico 1 «Dipendenza Masticando la regressione logistica di Masticando la regressione logistica»

Masticando la regressione logistica

Codice per disegnare il grafico

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 = 'Risultati reali')
plt.xlabel('I', size = 16)
plt.ylabel('U', size = 16)
plt.legend(prop = {'size': 14})
plt.show()

02. Necessità di trasformazioni dell'equazione di regressione lineare

Consideriamo un altro esempio. Immaginiamo di lavorare in una banca e di avere il compito di determinare la probabilità di rimborso di un prestito da parte di un debitore in base a determinati fattori. Per semplificare il compito, consideriamo solo due fattori: lo stipendio mensile del debitore e l'importo mensile del pagamento per il rimborso del prestito.

Il problema è molto ipotetico, ma con questo esempio potremo capire perché per risolverlo non è sufficiente applicare della funzione di regressione lineare, e scopriremo quali trasformazioni sono necessarie per la funzione.

Tornando all'esempio. È chiaro che più alta è la retribuzione, maggiore sarà l'importo che il prestatore potrà destinare mensilmente al rimborso del prestito. In questo caso, per un determinato intervallo di retribuzioni questa dipendenza sarà piuttosto lineare. Ad esempio, prendiamo un intervallo di stipendi da 60.000 ₽ a 200.000 ₽ e supponiamo che in tale intervallo di stipendi, la dipendenza dell'importo della rata mensile dall'importo della retribuzione sia lineare. Supponiamo che per l'intervallo degli stipendi indicati sia emerso che il rapporto tra stipendio e pagamento non può scendere sotto 3 e che al prestatore debbano rimanere 5.000 ₽. Solo in tal caso considereremo che il prestatore rimborserà il prestito alla banca. Pertanto, l'equazione della regressione lineare assumerà la forma:

Masticando la regressione logistica

dove Masticando la regressione logistica, Masticando la regressione logistica, Masticando la regressione logistica, Masticando la regressione logisticaretribuzione Masticando la regressione logistica- del prestatore, Masticando la regressione logisticapagamento del prestito Masticando la regressione logistica- del prestatore.

Sostituendo nell'equazione stipendio e pagamento del prestito con parametri fissi Masticando la regressione logistica si può prendere una decisione sull'erogazione o sul rifiuto del prestito.

Anticipando, notiamo che, con i parametri dati, Masticando la regressione logistica la funzione di regressione lineare, applicata nella funzione di risposta logistica fornirà valori elevati, che complicheranno i calcoli per determinare le probabilità di rimborso del prestito. Pertanto, si propone di ridurre i nostri coefficienti, diciamo, di 25.000 volte. Da questa trasformazione nei coefficienti, la decisione sull'erogazione del prestito non cambierà. Ricordiamoci di questo aspetto per il futuro, e ora, per rendere le cose ancora più chiare, consideriamo la situazione di tre potenziali prestatore.

Tabella 1 "Potenziali prestatore"

Masticando la regressione logistica

Codice per generare la tabella

import pandas as pd

r = 25000.0
w_0 = -5000.0/r
w_1 = 1.0/r
w_2 = -3.0/r

data = {'Il prestatore':np.array(['Vasya', 'Fedya', 'Lesha']), 
        'Retribuzione':np.array([120000,180000,210000]),
       'Pagamento':np.array([3000,50000,70000])}

df = pd.DataFrame(data)

df['f(w,x)'] = w_0 + df['Retribuzione']*w_1 + df['Pagamento']*w_2

decision = []
for i in df['f(w,x)']:
    if i > 0:
        dec = 'Approvato'
        decision.append(dec)
    else:
        dec = 'Rifiuto'
        decision.append(dec)
        
df['Decisione'] = decision

df[['Il prestatore', 'Retribuzione', 'Pagamento', 'f(w,x)', 'Decisione']]

Secondo i dati della tabella, Vasya con uno stipendio di 120.000 ₽ vuole ottenere un prestito tale da rimborsarlo mensilmente con 3.000 ₽. Abbiamo determinato che per approvare il prestito, l'importo dello stipendio di Vasya deve superare di tre volte l'importo del pagamento, e devono rimanere altri 5.000 ₽. Questo requisito è soddisfatto da Vasya: Masticando la regressione logistica. Resta anche 106.000R. Nonostante abbiamo ridotto i coefficienti Masticando la regressione logistica di 25.000 volte, il risultato ottenuto è lo stesso: il prestito può essere approvato. Anche Fedya otterrà il prestito, mentre Alexey, nonostante guadagni di più, dovrà moderare le proprie aspettative. Masticando la regressione logistica Disegniamo un grafico per questo caso.

Grafico 2 «Classificazione dei mutuatari»

Codice per disegnare il grafico

Masticando la regressione logistica

salary = np.arange(60000,240000,20000) payment = (-w_0-w_1*salary)/w_2fig, 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 = 'Decisione - Prestito approvato') plt.plot(df[df['Decision'] == 'Refusal']['Salary'], df[df['Decision'] == 'Refusal']['Payment'], 's', color = 'red', markersize = 12, label = 'Decisione - Rifiuto del prestito') plt.xlabel('Stipendio', size = 16) plt.ylabel('Pagamento', size = 16) plt.legend(prop = {'size': 14}) plt.show()

Quindi, la nostra retta, costruita secondo la funzione

, separa i mutuatari “cattivi” da quelli “buoni”. I mutuatari il cui desiderio non corrisponde alle possibilità si trovano sopra la retta (Alexey), mentre quelli che sono in grado, secondo i parametri del nostro modello, di restituire il prestito, si trovano sotto la retta (Vasya e Fedya). Possiamo dire che la nostra retta divide i mutuatari in due classi. Indichiamo la classe Masticando la regressione logisticaa cui appartengono quei mutuatari che probabilmente restituiranno il prestito, e alla classe Masticando la regressione logistica a cui appartengono quei mutuatari che probabilmente non saranno in grado di restituire il prestito. Masticando la regressione logistica o Masticando la regressione logistica Riassumiamo le conclusioni di questo semplice esempio. Prendiamo un punto

e, sostituendo le coordinate del punto nell'equazione corrispondente della retta Masticando la regressione logistica , consideriamo tre varianti: Masticando la regressione logisticaSe il punto si trova sotto la retta e lo classifichiamo nella classe

  1. , allora il valore della funzione Masticando la regressione logisticasarà positivo da Masticando la regressione logistica . Quindi possiamo considerare che la probabilità di estinguere il prestito si trova entro Masticando la regressione logistica fino a Masticando la regressione logistica. Maggiore è il valore della funzione, maggiore è la probabilità. Masticando la regressione logisticaSe il punto si trova sopra la retta e lo classifichiamo nella classe
  2. , allora il valore della funzione sarà negativo da Masticando la regressione logistica o Masticando la regressione logistica. In tal caso considereremo che la probabilità di estinguere il debito si trova entro Masticando la regressione logistica fino a Masticando la regressione logisticae, quanto maggiore è il valore assoluto della funzione, maggiore è la nostra sicurezza. Masticando la regressione logistica Il punto si trova sulla retta, al confine tra due classi. In questo caso, il valore della funzione
  3. sarà uguale a Masticando la regressione logistica e la probabilità di estinguere il prestito è pari a Masticando la regressione logistica Ora, immaginiamo che non abbiamo due fattori, ma decine, e che i mutuatari non sono tre, ma migliaia. In questo caso, invece della retta avremo Masticando la regressione logistica.

Ora, immaginiamo che non abbiamo due fattori, ma decine, e non tre debitori, ma migliaia. Allora, invece di una retta, avremo m-мерная piano e coefficienti Masticando la regressione logistica avremo preso non dal nulla, ma calcolati secondo tutte le regole, basandoci sui dati accumulati sui debitori che hanno restituito o meno il prestito. E in effetti, notate bene, stiamo attualmente selezionando i debitori con coefficienti già noti Masticando la regressione logistica. In realtà, il compito del modello di regressione logistica è proprio quello di determinare i parametri Masticando la regressione logistica, per i quali il valore della funzione di perdita Logistic Loss tenderà a un minimo. Ma di come si calcola il vettore Masticando la regressione logistica, scopriremo nel 5° capitolo dell'articolo. Nel frattempo, torniamo sulla terra promessa — al nostro banchiere e ai suoi tre clienti.

Grazie alla funzione Masticando la regressione logistica sappiamo a chi possiamo concedere un prestito e a chi dobbiamo negare. Ma con queste informazioni non possiamo andare dal direttore, poiché ci si aspettava di ottenere la probabilità di rimborso del prestito da parte di ciascun debitore. Cosa fare? La risposta è semplice: dobbiamo in qualche modo trasformare la funzione Masticando la regressione logistica, i cui valori ricadono nell'intervallo Masticando la regressione logistica in una funzione i cui valori ricadranno nell'intervallo Masticando la regressione logistica. E tale funzione esiste, viene chiamata funzione di risposta logistica o trasformazione logit inversa. Ecco a voi:

Masticando la regressione logistica

Vediamo passo dopo passo come si ottiene la funzione di risposta logistica. Notiamo che procederemo all'inverso, cioè presumiamo di conoscere il valore della probabilità, che ricade nell'intervallo da Masticando la regressione logistica fino a Masticando la regressione logistica e poi 'srotoleremo' questo valore su tutta l'area dei numeri da Masticando la regressione logistica fino a Masticando la regressione logistica.

03. Estraiamo la funzione di risposta logistica

Passo 1. Trasformeremo i valori di probabilità nell'intervallo Masticando la regressione logistica

Per il tempo della trasformazione della funzione Masticando la regressione logistica in la funzione di risposta logistica Masticando la regressione logistica lasceremo in pace il nostro analista di credito e invece passeremo attraverso i bookmaker. No, naturalmente non piazzeremo scommesse, tutto ciò che ci interessa è il significato dell'espressione, ad esempio, una possibilità di 4 a 1. Le quote, familiari a tutti i giocatori che scommettono, sono il rapporto tra 'successi' e 'insuccessi'. Dal punto di vista delle probabilità, le quote sono la probabilità di un evento divisa per la probabilità che l'evento non si verifichi. Scriviamo la formula della probabilità che un evento si verifichi Masticando la regressione logistica:

Masticando la regressione logistica

, dove Masticando la regressione logistica — probabilità che si verifichi l'evento, Masticando la regressione logistica — probabilità che NON si verifichi l'evento

Ad esempio, se la probabilità che un giovane, forte e vivace cavallo soprannominato 'Vento' superi nella corsa una vecchia e decrepita signora di nome 'Matilda' è Masticando la regressione logistica, le probabilità di successo di «Veterok» saranno Masticando la regressione logistica al Masticando la regressione logistica Masticando la regressione logistica e viceversa, conoscendo le probabilità, non sarà difficile calcolare la probabilità Masticando la regressione logistica:

Masticando la regressione logistica

In questo modo, abbiamo imparato a «tradurre» la probabilità in probabilità, che assumono valori da Masticando la regressione logistica fino a Masticando la regressione logistica. Facciamo un altro passo e impariamo a «tradurre» la probabilità su tutto il numero lineare da Masticando la regressione logistica fino a Masticando la regressione logistica.

Passo 2. Tradurremo i valori di probabilità in un intervallo Masticando la regressione logistica

Questo passo è molto semplice: faremo il logaritmo delle probabilità in base al numero di Eulero Masticando la regressione logistica e otterremo:

Masticando la regressione logistica

Ora sappiamo che se Masticando la regressione logistica, calcolare il valore Masticando la regressione logistica sarà molto semplice e, inoltre, dovrebbe essere positivo: Masticando la regressione logistica. È proprio così.

Per pura curiosità, verifichiamo che se Masticando la regressione logistica, allora ci aspettiamo di vedere un valore negativo Masticando la regressione logistica. Verifichiamo: Masticando la regressione logistica. Esatto.

Ora sappiamo come tradurre il valore della probabilità da Masticando la regressione logistica fino a Masticando la regressione logistica su tutta la linea numerica da Masticando la regressione logistica fino a Masticando la regressione logistica. Nel passo successivo faremo tutto al contrario.

Nel frattempo, notiamo che secondo le regole di logaritmizzazione, conoscendo il valore della funzione Masticando la regressione logistica, si possono calcolare le probabilità:

Masticando la regressione logistica

Questo metodo di determinazione delle probabilità ci sarà utile nel passo successivo.

Passo 3. Deriviamo la formula per determinare Masticando la regressione logistica

Dunque, abbiamo imparato che conoscendo Masticando la regressione logistica, possiamo trovare i valori della funzione Masticando la regressione logistica. Tuttavia, in realtà abbiamo bisogno esattamente del contrario: conoscendo il valore Masticando la regressione logistica trovare Masticando la regressione logistica. Per fare ciò, ci riferiamo a un concetto come la funzione inversa delle probabilità, secondo cui:

Masticando la regressione logistica

Nell'articolo non deriviamo la formula sopra menzionata, ma verifichiamo con i numeri dell'esempio precedente. Sappiamo che con probabilità pari a 4 a 1 (Masticando la regressione logistica), la probabilità che si verifichi l'evento è pari a 0.8 (Masticando la regressione logistica). Facciamo la sostituzione: Masticando la regressione logistica. Questo corrisponde ai nostri calcoli effettuati in precedenza. Andiamo oltre.

Nel passo precedente abbiamo dedotto che Masticando la regressione logistica, il che significa che possiamo fare una sostituzione nella funzione inversa delle probabilità. Otterremo:

Masticando la regressione logistica

Dividiamo sia il numeratore che il denominatore per Masticando la regressione logistica, allora:

Masticando la regressione logistica

Per ogni evenienza, per assicurarci di non aver commesso errori, facciamo un'altra piccola verifica. Al passo 2, abbiamo determinato che Masticando la regressione logistica . Allora, sostituendo il valore Masticando la regressione logisticanella funzione di risposta logistica, ci aspettiamo di ottenere Masticando la regressione logistica . Sostituiamo e otteniamo: Masticando la regressione logisticaCongratulazioni, caro lettore, abbiamo appena derivato e testato la funzione di risposta logistica. Diamo un'occhiata al grafico della funzione. Masticando la regressione logistica

Grafico 3 «Funzione di risposta logistica»

Grafico 3 «Funzione di risposta logistica»

Masticando la regressione logistica

salary = np.arange(60000,240000,20000) payment = (-w_0-w_1*salary)/w_2fig, 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 = 'Decisione - Prestito approvato') plt.plot(df[df['Decision'] == 'Refusal']['Salary'], df[df['Decision'] == 'Refusal']['Payment'], 's', color = 'red', markersize = 12, label = 'Decisione - Rifiuto del prestito') plt.xlabel('Stipendio', size = 16) plt.ylabel('Pagamento', size = 16) plt.legend(prop = {'size': 14}) plt.show()

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()

Nella letteratura si può anche incontrare il nome di questa funzione come funzione sigmoide. Dal grafico è evidente che la principale variazione della probabilità di appartenenza di un oggetto a una classe avviene su un intervallo relativamente ristretto Masticando la regressione logistica, da qualche parte tra Masticando la regressione logistica fino a Masticando la regressione logistica.

Propongo di tornare al nostro analista creditizio e aiutarlo a calcolare la probabilità di rimborso dei prestiti, altrimenti rischia di rimanere senza premio 🙂

Tabella 2 «Debitori potenziali»

Masticando la regressione logistica

Codice per generare la tabella

proba = []
for i in df['f(w,x)']:
    proba.append(round(logit(i),2))
    
df['Probabilità'] = proba

df[['Il debitore', 'Stipendio', 'Pagamento', 'f(w,x)', 'Decisione', 'Probabilità']]

Quindi, abbiamo determinato la probabilità di rimborso del prestito. In generale, sembra che sia vero.

Infatti, la probabilità che Vasya, con uno stipendio di 120.000R, possa restituire mensilmente 3.000R alla banca si avvicina al 100%. A proposito, dobbiamo capire che la banca può concedere un prestito anche a Lesha se nella politica della banca è previsto, ad esempio, di finanziare i clienti con una probabilità di rimborso del prestito superiore a, diciamo, 0.3. In questo caso, la banca semplicemente costituirà un riservo più grande per le potenziali perdite.

Va notato che il rapporto stipendio/pagamento non inferiore a 3 e con un margine di 5.000R è stato scelto arbitrariamente. Pertanto, non potevamo utilizzare il vettore dei pesi nella sua forma iniziale Masticando la regressione logistica. Era necessario ridurre significativamente i coefficienti e in tal caso abbiamo diviso ogni coefficiente per 25.000, quindi, in sostanza, abbiamo adattato il risultato. Ma questo è stato fatto appositamente per semplificare la comprensione del materiale nella fase iniziale. Nella vita reale, invece, dovremo non inventare e adattare i coefficienti, ma trovarli. Proprio nei prossimi paragrafi dell'articolo squarceremo le equazioni grazie alle quali vengono selezionati i parametri Masticando la regressione logistica.

04. Il metodo dei minimi quadrati nella determinazione del vettore dei pesi Masticando la regressione logistica nella funzione di risposta logistica

È già noto un tale metodo di selezione del vettore dei pesi Masticando la regressione logistica, come metodo dei minimi quadrati (MNC) e quindi, perché non utilizzarlo nei compiti di classificazione binaria? Infatti, nulla impedisce di utilizzarlo MOLK, solo che questo metodo nelle attività di classificazione produce risultati meno accurati rispetto a Logistic Loss. Questo ha una giustificazione teorica. Iniziamo dando un’occhiata a un semplice esempio.

Supponiamo che i nostri modelli (utilizzando MSE e Logistic Loss) abbiano già iniziato a selezionare il vettore dei pesi Masticando la regressione logistica e abbiamo interrotto il calcolo a un certo passo. Non importa se nel mezzo, alla fine o all'inizio, ciò che conta è che abbiamo già dei valori del vettore dei pesi e supponiamo che a questo passo, i vettori dei pesi Masticando la regressione logistica per entrambi i modelli non abbiano differenze. Prendiamo quindi i pesi ottenuti e sostituiamoli in la funzione di risposta logistica (Masticando la regressione logistica) per un qualche oggetto che appartiene alla classe Masticando la regressione logistica. Esaminiamo due casi, quando in base al vettore dei pesi selezionato il nostro modello commette un errore significativo e viceversa: il modello è molto sicuro che l'oggetto appartenga alla classe Masticando la regressione logistica. Vediamo quali penalità verranno «assegnate» utilizzando MOLK e Logistic Loss.

Codice per il calcolo delle penalità in base alla funzione di perdita utilizzata

# класс объекта
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

Caso di errore grave — il modello classifica l'oggetto nella classe Masticando la regressione logistica con una probabilità di 0,01

La penalità utilizzando MOLK sarà:
Masticando la regressione logistica

La penalità utilizzando Logistic Loss sarà:
Masticando la regressione logistica

Caso di forte sicurezza — il modello classifica l'oggetto nella classe Masticando la regressione logistica con una probabilità di 0,99

La penalità utilizzando MOLK sarà:
Masticando la regressione logistica

La penalità utilizzando Logistic Loss sarà:
Masticando la regressione logistica

Questo esempio illustra bene che in caso di errore grave, la funzione di perdita Log Loss penalizza significativamente di più il modello rispetto a MSE. Ora cerchiamo di capire quali sono le presupposizioni teoriche per l'uso della funzione di perdita Log Loss nelle attività di classificazione.

05. Metodo della massima verosimiglianza e regressione logistica

Come promesso all'inizio, l'articolo è ricco di esempi semplici. Qui abbiamo un altro esempio e i vecchi ospiti — i mutuatari della banca: Vasya, Fedya e Lesha.

Per ogni evenienza, prima di sviluppare l'esempio, ricordo che nella vita reale abbiamo a che fare con un insieme di addestramento composto da migliaia o milioni di oggetti con decine o centinaia di caratteristiche. Tuttavia, qui i numeri sono stati scelti in modo che possano essere facilmente compresi da un principiante nel data science.

Torniamo all'esempio. Immaginiamo che il direttore della banca abbia deciso di concedere prestiti a tutti coloro che ne hanno bisogno, nonostante l'algoritmo suggerisse di non concederlo a Lesha. E così è passato abbastanza tempo ed è stato reso noto chi dei tre eroi ha rimborsato il prestito e chi no. Come ci si aspettava: Vasya e Fedya hanno rimborsato il prestito, mentre Lesha no. Ora immaginiamo che questo risultato diventi per noi un nuovo campione di addestramento e, nel frattempo, sembra che siano scomparsi tutti i dati sui fattori che influenzano la probabilità di restituzione del prestito (stipendio del mutuatario, importo della rata mensile). Quindi, intuitivamente, possiamo supporre che ogni terzo mutuatario non restituisca il prestito alla banca, o in altre parole, che la probabilità che un mutuatario successivo restituisca il prestito Masticando la regressione logistica. Questa supposizione intuitiva ha una conferma teorica e si basa su metodo della massima verosimiglianza, spesso nella letteratura viene chiamato principio di massima verosimiglianza.

Iniziamo a familiarizzare con il gergo tecnico.

La verosimiglianza del campione è la probabilità di ottenere proprio quel campione, di ottenere proprio quelle osservazioni / risultati, cioè il prodotto delle probabilità di ottenere ciascuno dei risultati del campione (ad esempio, rimborsato o non rimborsato prestito da Vasya, Fedya e Lesha contemporaneamente).

La funzione di verosimiglianza collega la verosimiglianza del campione con i valori dei parametri di distribuzione.

Nel nostro caso, il campione di addestramento rappresenta uno schema generalizzato di Bernoulli, in cui la variabile casuale può assumere solo due valori: Masticando la regressione logistica o Masticando la regressione logistica. Di conseguenza, la verosimiglianza del campione può essere scritta come funzione di verosimiglianza del parametro Masticando la regressione logistica nel seguente modo:

Masticando la regressione logistica
Masticando la regressione logistica

La registrazione sopra citata può essere interpretata in questo modo. La probabilità congiunta che Vasya e Fedya rimborsino il prestito è pari a Masticando la regressione logistica, la probabilità che Lesha NON rimborsi il prestito è pari a Masticando la regressione logistica (poiché si è verificato proprio il NON rimborso del prestito), quindi la probabilità congiunta di tutti e tre gli eventi è pari a Masticando la regressione logistica.

Il metodo della massima verosimiglianza - è un metodo per stimare un parametro sconosciuto massimizzando della funzione di verosimiglianza. Nel nostro caso, è necessario trovare un valore tale Masticando la regressione logistica, per cui Masticando la regressione logistica raggiunge un massimo.

Da dove nasce l'idea di cercare il valore di un parametro sconosciuto per il quale la funzione di verosimiglianza raggiunge il massimo? Le radici di quest'idea derivano dalla comprensione che il campione è l'unica fonte di conoscenza disponibile sulla popolazione generale. Tutto ciò che sappiamo sulla popolazione generale è rappresentato nel campione. Pertanto, ciò che possiamo dire è che il campione è la riflessione più accurata della popolazione generale a nostra disposizione. Di conseguenza, dobbiamo trovare un parametro per il quale il campione esistente diventa il più probabile.

Chiaramente, ci troviamo di fronte a un problema di ottimizzazione in cui è necessario trovare un punto di estremo della funzione. Per calcolare il punto di estremo, bisogna considerare la condizione di primo ordine, cioè eguagliare la derivata della funzione a zero e risolvere l'equazione rispetto al parametro ricercato. Tuttavia, cercare la derivata di un prodotto di un numero elevato di fattori può risultare un compito lungo, per evitarlo esiste un metodo speciale: passare al logaritmo. della funzione di verosimiglianza. Perché è possibile questo passaggio? Notiamo che non stiamo cercando l'estremo della funzioneMasticando la regressione logistica, ma un punto di estremo, ovvero quel valore del parametro sconosciuto Masticando la regressione logistica, per cui Masticando la regressione logistica raggiunge il massimo. Nel passaggio al logaritmo, il punto di estremo non cambia (anche se l'estremo stesso sarà diverso), poiché il logaritmo è una funzione monotona.

Dunque, in conformità con quanto detto, continuiamo a sviluppare il nostro esempio con i prestiti di Vasya, Fedya e Lesha. Per iniziare, passiamo al logaritmo della funzione di verosimiglianza.:

Masticando la regressione logistica

Ora possiamo facilmente derivare l'espressione rispetto a Masticando la regressione logistica:

Masticando la regressione logistica

E infine, considerando la condizione di primo ordine, eguagliamo la derivata della funzione a zero:

Masticando la regressione logistica

Pertanto, la nostra stima intuitiva della probabilità di rimborso del prestito Masticando la regressione logistica è stata teoricamente giustificata.

Ottimo, ma cosa dobbiamo fare ora con tali informazioni? Se consideriamo che ogni terzo prestatore non restituirà i soldi alla banca, quest'ultima inevitabilmente andrà in bancarotta. Così va, ma semplicemente valutando la probabilità di rimborso del prestito come pari a Masticando la regressione logistica non abbiamo considerato i fattori che influenzano il rimborso del prestito: lo stipendio del mutuatario e l'importo della rata mensile. Ricordiamo che in precedenza abbiamo calcolato la probabilità di rimborso del prestito per ogni cliente considerando questi stessi fattori. È logico che anche le probabilità siano diverse dalla costante pari a Masticando la regressione logistica.

Definiamo la verosimiglianza dei campioni:

Codice per il calcolo delle verosimiglianze dei campioni

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 'Verosimiglianza del campione per un valore costante di p=2/3:', round(likelihood(y,p_const),3)

print '****************************************************************************************************'

print 'Verosimiglianza del campione per il valore di p calcolato:', round(likelihood(y,p_log_response),3)

Verosimiglianza del campione per un valore costante Masticando la regressione logistica:

Masticando la regressione logistica

Verosimiglianza del campione nel calcolo della probabilità di rimborso del prestito tenendo conto dei fattori Masticando la regressione logistica:

Masticando la regressione logistica
Masticando la regressione logistica

La verosimiglianza del campione con la probabilità calcolata in base ai fattori è risultata superiore a quella della verosimiglianza con un valore costante di probabilità. Cosa significa questo? Questo significa che la conoscenza dei fattori ha permesso di calcolare con maggiore precisione la probabilità di rimborso del prestito per ciascun cliente. Pertanto, al momento di erogare un nuovo prestito, sarà più corretto utilizzare il modello di valutazione della probabilità di rimborso del debito proposto alla fine del terzo capitolo dell'articolo.

Ma allora, se dobbiamo massimizzare la funzione di verosimiglianza del campione, perché non usare qualche algoritmo che fornisca probabilità per Vasya, Fedya e Lesha, ad esempio, pari a 0,99, 0,99 e 0,01 rispettivamente. Potrebbe essere che tale algoritmo si comporti bene sul campione di addestramento, poiché avvicinerebbe il valore della verosimiglianza del campione a Masticando la regressione logistica, ma, in primo luogo, un algoritmo del genere avrà, molto probabilmente, difficoltà nella capacità di generalizzazione; in secondo luogo, questo algoritmo non sarà sicuramente lineare. E se i metodi per combattere l'overfitting (la debole capacità di generalizzazione) non fanno chiaramente parte del piano di questo articolo, approfondiamo il secondo punto. Per questo, basta rispondere a una semplice domanda. Può la probabilità di rimborso del prestito da parte di Vasya e Fedya essere la stessa tenendo conto dei fattori noti? Dal punto di vista della logica, naturalmente no, non può. Così, per il rimborso del prestito, Vasya destinerà il 2,5% del suo stipendio al mese, mentre Fedya quasi il 27,8%. Inoltre, nel grafico 2 “Classificazione dei clienti”, vediamo che Vasya si trova notevolmente più distante dalla linea che separa le classi rispetto a Fedya. E infine, sappiamo che la funzione Masticando la regressione logistica per Vasya e Fedya assume valori diversi: 4,24 per Vasya e 1,0 per Fedya. Ecco, se per caso Fedya guadagnasse ordini di grandezza di più o chiedesse un prestito inferiore, allora le probabilità di rimborso del prestito per Vasya e Fedya sarebbero simili. In altre parole, non si può ingannare una dipendenza lineare. E se davvero calcolassimo i coefficienti Masticando la regressione logistica, e non li prendessimo a caso, potremmo affermare con certezza che i nostri valori Masticando la regressione logistica ci consentono di valutare meglio la probabilità di rimborso del prestito da parte di ogni mutuatario, ma poiché abbiamo concordato di considerare che la definizione dei coefficienti Masticando la regressione logistica sia stata condotta secondo tutte le regole, continueremo a considerare — i nostri coefficienti forniscono la migliore valutazione della probabilità 🙂

Tuttavia, ci siamo distratti. In questa sezione dobbiamo capire come viene definito il vettore dei pesi Masticando la regressione logistica, necessario per valutare la probabilità di rimborso del prestito da parte di ciascun mutuatario.

Riassumiamo brevemente con quale arsenale ci presentiamo alla ricerca dei coefficienti Masticando la regressione logistica:

1. Presumiamo che la dipendenza tra la variabile target (valore da prevedere) e il fattore che influisce sul risultato sia lineare. Per questo motivo si applica la funzione di regressione lineare di tipo Masticando la regressione logistica, la cui linea divide gli oggetti (clienti) in classi Masticando la regressione logistica e Masticando la regressione logistica o Masticando la regressione logistica (clienti in grado di rimborsare il prestito e clienti non in grado). Nel nostro caso, l'equazione ha la forma Masticando la regressione logistica.

2. Utilizziamo la funzione di trasformazione logistica inversa di tipo Masticando la regressione logistica per determinare la probabilità che un oggetto appartenga a una classe Masticando la regressione logistica.

3. Consideriamo il nostro campione di addestramento come un'implementazione generalizzata schemi di Bernoulli, ovvero per ogni oggetto viene generata una variabile casuale, che con una probabilità Masticando la regressione logistica (specifica per ogni oggetto) assume valore 1 e con una probabilità Masticando la regressione logistica – 0.

4. Sappiamo che dobbiamo massimizzare la funzione di verosimiglianza del campione tenendo conto dei fattori considerati affinché il campione esistente diventi il più plausibile possibile. In altre parole, dobbiamo trovare i parametri tali per cui il campione sia il più plausibile possibile. Nel nostro caso, il parametro da determinare è la probabilità di rimborso del prestito Masticando la regressione logistica, che a sua volta dipende da coefficienti sconosciuti Masticando la regressione logistica. quindi è necessario trovare un vettore di pesi Masticando la regressione logistica, per il quale la verosimiglianza del campione sarà massima.

5. Sappiamo che per massimizzare la funzione di verosimiglianza del campione può essere utilizzato il metodo della massima verosimiglianza. E conosciamo tutti i trucchi per lavorare con questo metodo.

Ecco che si presenta una strategia complessa 🙂

E ora ricordiamo che all'inizio dell'articolo volevamo derivare due tipi di funzione di perdita Logistic Loss in base a come vengono etichettate le classi degli oggetti. È consuetudine, nelle attività di classificazione a due classi, etichettare le classi come Masticando la regressione logistica e Masticando la regressione logistica o Masticando la regressione logistica. A seconda dell'etichettatura, ne risulterà la corrispondente funzione di perdita.

Caso 1. Classificazione degli oggetti in Masticando la regressione logistica e Masticando la regressione logistica

In precedenza, nella determinazione della verosimiglianza del campione, in cui la probabilità di rimborso del debito da parte del mutuatario veniva calcolata tenendo conto dei fattori e coefficienti dati Masticando la regressione logistica, abbiamo applicato la formula:

Masticando la regressione logistica

In realtà Masticando la regressione logistica è il valore della funzione di risposta logistica Masticando la regressione logistica dato il vettore di pesi Masticando la regressione logistica

Quindi non ci sono ostacoli a scrivere la funzione di verosimiglianza del campione in questo modo:

Masticando la regressione logistica

Talvolta, alcuni analisti principianti possono avere difficoltà a comprendere immediatamente come funzioni questa funzione. Esaminiamo 4 brevi esempi che chiariranno tutto:

1. Se Masticando la regressione logistica (ossia, in conformità con il campione di addestramento, l'oggetto appartiene alla classe +1), e il nostro algoritmo Masticando la regressione logistica determina la probabilità che l'oggetto appartenga alla classe Masticando la regressione logistica uguale a 0.9, quindi questo frammento della verosimiglianza del campione verrà calcolato come segue:

Masticando la regressione logistica

2. Se Masticando la regressione logistica, ma Masticando la regressione logistica, quindi il calcolo sarà il seguente:

Masticando la regressione logistica

3. Se Masticando la regressione logistica, ma Masticando la regressione logistica, quindi il calcolo sarà il seguente:

Masticando la regressione logistica

4. Se Masticando la regressione logistica, ma Masticando la regressione logistica, quindi il calcolo sarà il seguente:

Masticando la regressione logistica

È evidente che la funzione di verosimiglianza raggiungerà il massimo nei casi 1 e 3 o, in generale, quando i valori di probabilità di assegnazione dell'oggetto alla classe sono correttamente indovinati. Masticando la regressione logistica.

In relazione al fatto che nella determinazione della probabilità di assegnazione dell'oggetto alla classe Masticando la regressione logistica non conosciamo solo i coefficienti Masticando la regressione logistica, quindi li cercheremo. Come accennato sopra, si tratta di un compito di ottimizzazione, in cui inizialmente dobbiamo trovare la derivata della funzione di verosimiglianza rispetto al vettore dei pesi Masticando la regressione logistica. Tuttavia, prima di tutto ha senso semplificare il problema: cercheremo la derivata del logaritmo della funzione di verosimiglianza.

Masticando la regressione logistica

Perché dopo aver applicato il logaritmo, in la funzione di errore logit, abbiamo cambiato il segno da Masticando la regressione logistica in Masticando la regressione logistica. È semplice, poiché nei compiti di valutazione della qualità del modello è consuetudine minimizzare il valore della funzione, quindi abbiamo moltiplicato il lato destro dell'espressione per Masticando la regressione logistica e di conseguenza, anziché massimizzare, ora minimizziamo la funzione.

In verità, adesso, sotto i vostri occhi, è stata faticosamente derivata la funzione di perdita — Logistic Loss per il campione di addestramento con due classi: Masticando la regressione logistica e Masticando la regressione logistica.

Ora, per trovare i coefficienti, ci basta calcolare la derivata la funzione di errore logit e poi, utilizzando metodi numerici di ottimizzazione, come il gradiente discendente o il gradiente discendente stocastico, trovare i coefficienti ottimali Masticando la regressione logistica. Tuttavia, considerando già il non trascurabile volume dell'articolo, si propone di eseguire la differenziazione autonomamente oppure, forse, questo sarà oggetto di un prossimo articolo con molte più operazioni aritmetiche senza esempi così dettagliati.

Caso 2. Classificazione di oggetti su Masticando la regressione logistica e Masticando la regressione logistica

L'approccio qui sarà lo stesso che con le classi Masticando la regressione logistica e Masticando la regressione logistica, ma il percorso verso l'output della funzione di perdita Logistic Loss, sarà più tortuoso. Iniziamo. Useremo per la funzione di verosimiglianza l'operatore «se…, allora…». Cioè, se Masticando la regressione logistica-esimo oggetto appartiene alla classe Masticando la regressione logistica, allora per calcolare la verosimiglianza del campione utilizziamo la probabilità Masticando la regressione logistica, se l'oggetto appartiene alla classe Masticando la regressione logistica, allora sostituiamo nel modello di verosimiglianza Masticando la regressione logistica. Ecco come appare la funzione di verosimiglianza:

Masticando la regressione logistica

Spieghiamo a grandi linee come funziona. Consideriamo 4 casi:

1. Se Masticando la regressione logistica e Masticando la regressione logistica, quindi nella verosimiglianza del campione «andrà» Masticando la regressione logistica

2. Se Masticando la regressione logistica e Masticando la regressione logistica, quindi nella verosimiglianza del campione «andrà» Masticando la regressione logistica

3. Se Masticando la regressione logistica e Masticando la regressione logistica, quindi nella verosimiglianza del campione «andrà» Masticando la regressione logistica

4. Se Masticando la regressione logistica e Masticando la regressione logistica, quindi nella verosimiglianza del campione «andrà» Masticando la regressione logistica

È evidente che nel caso 1 e 3, quando le probabilità sono state correttamente stabilite dall'algoritmo, la funzione di verosimiglianza sarà massimizzata, cioè proprio questo volevamo ottenere. Tuttavia, questo approccio è piuttosto macchinoso e in seguito esamineremo una notazione più compatta. Ma prima di tutto, logaritmiamo la funzione di verosimiglianza sostituendo il segno, poiché ora minimizzeremo.

Masticando la regressione logistica

Sostituiamo invece di Masticando la regressione logistica l'espressione Masticando la regressione logistica:

Masticando la regressione logistica

Semplifichiamo il termine a destra del logaritmo, utilizzando semplici procedimenti aritmetici e otteniamo:

Masticando la regressione logistica

È ora di liberarsi dell'operatore «se…, allora…». Notiamo che quando l'oggetto Masticando la regressione logistica appartiene alla classe Masticando la regressione logistica, nel'espressione sotto il logaritmo, al denominatore, Masticando la regressione logistica viene elevato alla potenza Masticando la regressione logistica, se l'oggetto appartiene alla classe Masticando la regressione logistica, quindi $e$ viene elevato alla potenza Masticando la regressione logistica. Di conseguenza, la notazione dell'esponente può essere semplificata - unendo entrambi i casi in uno: Masticando la regressione logistica. Allora la funzione di errore logistico assumerà la seguente forma:

Masticando la regressione logistica

Secondo le regole del logaritmo, invertiamo la frazione e portiamo il segno "Masticando la regressione logistica" (meno) fuori dal logaritmo, ottenendo:

Masticando la regressione logistica

Davanti a voi c'è la funzione di perdita logistic Loss, che viene utilizzata nel set di dati di addestramento con oggetti appartenenti ai seguenti classi: Masticando la regressione logistica e Masticando la regressione logistica.

Bene, a questo punto mi congedo e concludiamo l'articolo.

Masticando la regressione logistica Il precedente lavoro dell'autore - "Rendiamo l'equazione di regressione lineare in forma matriciale"

Materiale di supporto

1. Letteratura

1) Analisi della regressione applicata / N. Draper, G. Smith - 2ª ed. - Mosca: Finanze e statistica, 1986 (traduzione dall'inglese)

2) Teoria della probabilità e statistica matematica / V.E. Gmurman - 9ª ed. - Mosca: Alta scuola, 2003

3) Teoria della probabilità / N.I. Cernova - Novosibirsk: Università statale di Novosibirsk, 2007

4) Business analytics: dai dati alla conoscenza / Paklin N.B., Oreshkov V.I. - 2ª ed. - San Pietroburgo: Piter, 2013

5) Data Science - Scienza dei dati da zero / Joel Grass - San Pietroburgo: BHV Pietroburgo, 2017

6) Statistica pratica per specialisti Data Science / P.Bryce, E.Bryce - San Pietroburgo: BHV Pietroburgo, 2018

2. Lezioni, corsi (video)

1) L'essenza del metodo della massima verosimiglianza, Boris Demeshev

2) Metodo della massima verosimiglianza nel caso continuo, Boris Demeshev

3) Regressione logistica. Corso aperto ODS, Yury Kashnitsky

4) Lezione 4, Evgeny Sokolov (dal 47° minuto del video)

5) Regressione logistica, Vyacheslav Vorontsov

3. Fonti online

1) Modelli lineari di classificazione e regressione

2) Come capire facilmente la regressione logistica

3) Funzione di errore logistica

4) Prove indipendenti e formula di Bernoulli

5) Ballata su MMP

6) Il metodo della massima verosimiglianza

7) Formule e proprietà dei logaritmi

8) Perché il numero Masticando la regressione logistica?

9) Classificatore lineare

Fonte: habr.com

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster