Coursera Learner working on a presentation with Coursera logo and
Coursera Learner working on a presentation with Coursera logo and

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à.

lingue

Weekly newsletter

No spam. Just the latest releases and tips, interesting articles, and exclusive interviews in your inbox every week.