Nell’apprendimento automatico, è possibile risolvere la modellazione predittiva attraverso problemi di classificazione. Per ogni osservazione nel modello, si deve predire l’etichetta di classe. I dati di input conterranno una qualsiasi delle seguenti variabili: variabili categoriche o variabili continue. Tuttavia, l’output conterrà sempre una variabile categorica. Possiamo capire questo concetto con il seguente esempio. Diciamo che stiamo prevedendo il tempo nel quartiere. Considereremo il periodo dell’anno e le informazioni meteorologiche come caratteristiche di input. Le informazioni meteorologiche includeranno temperatura, velocità del vento, umidità, nuvoloso/soleggiato. Genereremo un output che ci dirà se pioverà o meno. In un altro esempio, possiamo prevedere se l’email è spam o no considerando le informazioni del mittente e il contenuto dell’email come output.

Capire la perdita di log

La perdita di log è una metrica di classificazione essenziale per le previsioni basate sulle probabilità. Anche se l’interpretazione dei valori grezzi di log-loss è un compito difficile, troverete il log-loss una tecnica efficace per confrontare un modello di apprendimento automatico con un altro. Tenete a mente che per trovare buone previsioni per qualsiasi problema, dovreste considerare il valore più basso di log-loss. Potete anche riferirvi a Log Loss come perdita di entropia incrociata o perdita logistica.
La funzione di perdita è utile per i modelli multinominali come la regressione logistica e le sue estensioni. Le estensioni includono reti neurali e altri tipi di modelli. In altre parole, la funzione di perdita è la log-likelihood negativa in un modello logistico. A condizione che il modello restituisca (y_pred) probabilità di addestramento dei dati (y_true).
È possibile definire il log loss solo per due o più etichette. L’equazione per il log loss, considerando il primo campione con probabilità stimata p=Pr (y=1) ed etichetta vera y∈{0,1} sarebbe:
Llog(y,p)=-(ylog(p)+(1-y)log(1-p))

Esempi di Log Loss

Supponiamo che le probabilità previste dal modello per tre case siano [0,8, 0,4, 0,1]. Solo l’ultima di tutte queste case non è stata venduta. Pertanto, rappresenterete numericamente il risultato finale da questi input come [1, 1, 0].

Log Loss e Python

Di seguito, discuteremo vari tipi di funzioni di perdita per la funzione di perdita concreta. Useremo Python per il calcolo:

– Errore quadratico medio di perdita

Il Mean Squared Error Loss è una funzione di perdita di regressione. Calcolerete MSE come la media della varianza al quadrato tra i valori predetti e i valori effettivi. Non importa quale sia il segno dei valori predetti e dei valori effettivi, riceverete sempre un risultato positivo. Il valore perfetto sarebbe 0,0. Nonostante il fatto che potete fare un punteggio negativo e utilizzare il valore di perdita per il processo di ottimizzazione della massimizzazione, il risultato sarà minimo. La seguente funzione Python calcolerà l’errore quadratico medio. Inoltre, è possibile fare una lista di quantità previste e reali a valore reale.
# calcolare l’errore quadratico medio
def mean_squared_error(actual, predicted):
sum_square_error = 0.0
per i in range(len(actual)):
sum_square_error += (effettivo[i] – predetto[i])**2.0
mean_square_error = 1.0 / len(actual) * sum_square_error
ritorno errore_squadrato
Dovreste usare la funzione mean squared error() per implementare la perdita di errore in modo efficiente.

– Perdita di entropia incrociata (o perdita logaritmica)

Ci si può riferire alla perdita di entropia incrociata come perdita logaritmica, entropia incrociata, perdita logaritmica o perdita logistica. Indica che ogni probabilità prevista si confronta con il valore effettivo di uscita della classe come 0 o 1. Questa tecnica calcola il punteggio. Questo punteggio penalizzerà la probabilità a causa della distanza tra il valore di uscita e il valore previsto. La natura della penalizzazione sarà logaritmica. La grande differenza conterrà un punteggio enorme, come 0,9 o 10. Tuttavia, le differenze più piccole includeranno piccoli punteggi come 0,1 o 0,2.
Il modello con probabilità accurate conterrà la perdita logaritmica o l’entropia incrociata di 0,0. Ciò indica che la perdita di cross-entropia è al minimo, e i valori più piccoli rappresenteranno un buon modello invece di quelli più grandi. Tra tutti gli esempi, la cross-entropia per la predizione a due classi o problemi binari calcolerà la cross-entropia media.
Le seguenti funzioni Python vi aiuteranno a calcolare Log Loss. Dovete implementare questo pseudocodice e confrontare i valori 0 e 1 e prevedere le probabilità per la classe 1. Pertanto, sarete in grado di calcolare il Log Loss:
da math import log

# calcola l’entropia incrociata binaria
def binary_cross_entropy(actual, predicted):
sum_score = 0.0
per i in range(len(actual)):
sum_score += effettivo[i] * log(1e-15 + predetto[i])
me_sum_score = 1.0 / len(actual) * sum_score
ritorno -somma_score
Per evitare l’errore, dobbiamo aggiungere un piccolo valore nelle probabilità previste. Questo significa che la migliore perdita possibile sarà il valore più vicino a zero, ma non dovrebbe essere esattamente zero. È possibile calcolare l’entropia incrociata per la classificazione a classi multiple. Sulla base di ogni classe, le previsioni dovrebbero includere le possibilità previste e contenere caratteristiche binarie. Quindi, l’entropia incrociata sarà la somma delle caratteristiche medie e binarie di tutti gli esempi nel set di dati.
La seguente funzione Python vi aiuterà a calcolare l’entropia incrociata della lista di valori codificati. Aiuterà a confrontare le possibilità previste e i valori codificati per ogni classe:
da math import log

# calcola l’entropia incrociata categorica
def categorical_cross_entropy(actual, predicted):
sum_score = 0.0
per i in range(len(actual)):
per j in range(len(actual[i])):
sum_score += effettivo[i][j] * log(1e-15 + predetto[i][j])
me_sum_score = 1.0 / len(actual) * sum_score
ritorno -somma_score
Dovreste usare la funzione log_loss() per implementare la cross-entropia in modo efficiente.

Conclusione

Dovreste interpretare attentamente le capacità del modello usando log-loss a causa del basso valore di log-loss e del set di dati di squilibrio. Durante la creazione di un modello statistico, dovrebbe raggiungere il punteggio log-loss di base a seconda del dataset dato. Se non raggiunge il punteggio di log, il modello statistico addestrato è impreciso e non utile. In questo caso, si dovrebbe usare un modello migliore per trovare il log loss di una probabilità.