Bij machinaal leren kunt u voorspellende modellen opstellen door middel van classificatieproblemen. Voor elke waarneming in het model moet u het label van de klasse voorspellen. De invoergegevens zullen een van de volgende variabelen bevatten: categorische variabelen of continue variabelen. De output zal echter altijd een categorische variabele bevatten. We kunnen dit concept begrijpen met het volgende voorbeeld. Laten we zeggen dat we het weer in de buurt voorspellen. Wij beschouwen de tijd van het jaar en de weersinformatie als inputkenmerken. De weersinformatie omvat temperatuur, windsnelheid, vochtigheid, bewolkt/zonnig. We zullen output genereren over de vraag of het zal regenen of niet. In een ander voorbeeld kunnen we voorspellen of een e-mail spam is of niet door de informatie over de afzender en de inhoud van de e-mail als output te beschouwen.

Inzicht in logverlies

Log loss is een essentiële classificatie metriek voor voorspellingen gebaseerd op waarschijnlijkheden. Hoewel de interpretatie van de ruwe log-loss waarden een lastige taak is, zult u merken dat log-loss een effectieve techniek is om het ene machine learning model met het andere te vergelijken. Bedenk dat voor het vinden van goede voorspellingen voor elk probleem, u de lagere log-loss waarde in aanmerking moet nemen. Log Loss kan ook worden aangeduid als cross-entropy loss of logistic loss.
De verliesfunctie is nuttig voor multinominale modellen zoals logistische regressie en de uitbreidingen daarvan. De uitbreidingen omvatten neurale netwerken en andere soorten modellen. Met andere woorden, de verliesfunctie is de negatieve log-likelihood in een logistisch model. Op voorwaarde dat het model (y_pred) waarschijnlijkheden oplevert voor de training van de gegevens (y_true).
U kunt log loss alleen definiëren voor twee labels en meer. De vergelijking voor log loss, voor het eerste monster met waarschijnlijkheidsschatting p=Pr (y=1) en waar label y∈{0,1} zou zijn:
Llog(y,p)=-(ylog(p)+(1-y)log(1-p))

Voorbeelden van logverlies

Veronderstel dat de voorspelde kansen van het model voor drie huizen [0,8, 0,4, 0,1] zijn. Alleen het laatste van al deze huizen werd niet verkocht. Daarom zal je het eindresultaat van deze inputs numeriek weergeven als [1, 1, 0].

Logverlies en Python

Hieronder zullen we verschillende soorten verliesfuncties voor concrete verliesfunctie bespreken. We zullen Python gebruiken voor de berekening:

– Gemiddelde Kwadraat Fout Verlies

De Mean Squared Error Loss is een regressie verliesfunctie. Je berekent MSE als het gemiddelde van de gekwadrateerde variantie tussen voorspelde waarden en werkelijke waarden. Het maakt niet uit welk teken de voorspelde waarden en de werkelijke waarden hebben, je krijgt altijd een positief resultaat. De perfecte waarde zou 0,0 zijn. Ondanks het feit dat u een negatieve score kunt maken en de verlieswaarde kunt gebruiken voor het optimalisatieproces van de maximalisatie, zal het resultaat minimaal zijn. De volgende Python-functie berekent de kwadratische gemiddelde fout. Bovendien kan je een lijst maken van voorspelde en werkelijke grootheden met reële waarde.
# bereken gemiddelde gekwadrateerde fout
def mean_squared_error(actual, predicted):
sum_square_error = 0.0
voor i in range(len(actual)):
sum_square_error += (actual[i] – predicted[i])**2.0
mean_square_error = 1.0 / len(actual) * sum_square_error
geef mean_square_error terug
U moet de functie mean squared error() gebruiken om het foutverlies efficiënt te implementeren.

– Cross-entropie verlies (of Log verlies)

Cross-entropie verlies kan je aanduiden als logaritmisch verlies, cross-entropie, log verlies, of logistisch verlies. Het geeft aan dat elke waarschijnlijkheid die je voorspelt zich verhoudt tot de werkelijke klasse-uitgangswaarde als 0 of 1. Deze techniek berekent de score. Deze score zal de waarschijnlijkheid bestraffen als gevolg van de afstand tussen de outputwaarde en de verwachte waarde. De aard van de straf zal logaritmisch zijn. Een groot verschil zal een enorme score bevatten, zoals 0,9 of 10. Kleinere verschillen zullen echter kleine scores bevatten, zoals 0,1 of 0,2.
Het model met nauwkeurige waarschijnlijkheden zal een log verlies of kruis-entropie van 0.0 bevatten. Dit geeft aan dat het verlies van de cross-entropie minimaal is, en dat kleinere waarden een goed model vertegenwoordigen in plaats van grotere. Van alle voorbeelden zal de cross-entropie voor tweeklassen voorspelling of binaire problemen de gemiddelde cross-entropie berekenen.
De volgende Python-functies zullen u helpen Log Loss te berekenen. Je moet deze pseudocode implementeren en de 0 en 1 waarden vergelijken en de waarschijnlijkheid voor klasse 1 voorspellen. Zo zal je in staat zijn om de Log Loss te berekenen:
from math import log

# Bereken binaire kruis entropie
def binary_cross_entropy(actual, predicted):
sum_score = 0.0
voor i in range(len(actual)):
sum_score += actual[i] * log(1e-15 + predicted[i])
gemiddelde_sum_score = 1.0 / len(actual) * sum_score
geef -mean_sum_score terug
Om de fout te vermijden, moeten we een kleine waarde toevoegen in de voorspelde kansen. Dit betekent dat het best mogelijke verlies de waarde zal zijn die dichter bij nul ligt, maar het mag niet precies nul zijn. U kunt de cross-entropie berekenen voor classificatie van meerdere klassen. Op basis van elke klasse moeten de voorspellingen voorspelde mogelijkheden omvatten en binaire kenmerken bevatten. Dan zal de cross-entropie de som zijn van het gemiddelde en de binaire kenmerken van alle voorbeelden in de dataset.
De volgende Python-functie zal u helpen de cross-entropie van de gecodeerde waardenlijst te berekenen. Het zal helpen om de voorspelde mogelijkheden en de gecodeerde waarden voor elke klasse te vergelijken:
from math import log

# bereken categorische kruis-entropie
def categorical_cross_entropy(actual, predicted):
som_score = 0.0
voor i in range(len(actual)):
voor j in range(len(actual[i])):
sum_score += actual[i][j] * log(1e-15 + predicted[i][j])
gemiddelde_sum_score = 1.0 / len(actual) * sum_score
geef -mean_sum_score terug
U zou de log_loss() functie moeten gebruiken om de cross-entropie efficiënt te implementeren.

Conclusie

U moet de vaardigheden van het model dat gebruik maakt van log-loss voorzichtig interpreteren vanwege de lage log-loss waarde en de onevenwichtige dataset. Bij het maken van een statistisch model, moet het de baseline log-loss score halen, afhankelijk van de gegeven dataset. Als het de log-loss score niet haalt, is het getrainde statistische model onnauwkeurig en niet nuttig. In dat geval moet u een beter model gebruiken om het log-verlies van een waarschijnlijkheid te vinden.