[PYTHON] Die Fallstricke von RMSE (mittlerer quadratischer Fehler), einem Bewertungsindex für die Regression!

Einführung

RMSE (Mean Squared Error) wird häufig zur Bewertung von Regressionsmodellen für maschinelles Lernen verwendet. Andererseits wird in der Einleitung häufig angegeben, dass RMSE für Ausreißer anfällig ist, aber es gibt Fälle, in denen es verwendet wird, ohne sich darüber Gedanken zu machen. Unterdrücken wir es als Anti-Muster, indem wir denken: "Wie schwach ist es dann?" Wenn Sie zuerst die Schlussfolgerung schreiben ** "Wenn es einen Wert gibt, der zehnmal oder mehr als der Durchschnitt beträgt, müssen Sie bei der Verwendung vorsichtig sein. In diesem Fall ist es besser, den logarithmischen RMSLE zu verwenden" * * *

① Was ist RMSE (mittlerer quadratischer Fehler)?

Nun, wie der Name schon sagt. Der Fehler, dh die Differenz zwischen dem tatsächlichen Wert und dem vorhergesagten Wert, wird quadriert und dann gemittelt, um die Route zu nehmen.

\textrm{RMSE} = \sqrt{\frac{1}{N}\sum_{i=1}^{N}(y_{i}-\hat{y}_{i})^{2}}

Die Formel liegt ziemlich nahe am Abweichungswert, nur die Abweichung wurde zu einem Fehler. Wenn Sie es also gut verwenden, können Sie ein Bild erstellen, das "dieses Modell über so viel Fehler gibt".

② Was ist, wenn RMSE schief geht? Über die Werteskala.

** RMSE ** ist beliebt und wird von vielen Menschen verwendet, hat jedoch den Nachteil, dass bei einem Ausreißer der Wert leicht auf den Ausreißer gezogen werden kann **. Ich denke, es gibt viele Leute, die sich nicht darum kümmern. Da nur der Wert als Fehler in die Berechnung einbezogen wird, werden der als ** "10 ist 20" ** vorhergesagte Fehler und der als ** "100 ist 110" ** vorhergesagte Fehler als der gleiche bewertet. Wenn bei der Vorhersage von ** "1.000 bis 900" ** in fast Dutzenden von Daten ein Fehler auftritt, wird dieser als ** nur eine Daten von völlig unterschiedlicher Bedeutung ** behandelt.

import numpy as np
a = np.array([10]*100) #Angenommen, 100 Fehler von 10 werden vorbereitet
print(np.sqrt((a**2).mean())) #RMSE ist natürlich 10
a = np.append(a, [100]*1) #Addiere 100 zu 101
print(np.sqrt((a**2).mean())) #RMSE ist 14.Aufstieg auf 07!

Da es in der Berechnung quadriert wird, ist ein Fehler der 10-fachen Skalierung im Index 100-mal wichtiger. Wenn es den 100-fachen durchschnittlichen Fehler gäbe, wäre seine Bedeutung das 10.000-fache des durchschnittlichen Fehlers oder 10.000 Datensätze. Und da es schwieriger ist, die Ausreißer beim maschinellen Lernen vorherzusagen, wird die Bewertung unweigerlich instabil, wenn es Ausreißer gibt.

③ Wie sollte dann der Bewertungsindex sein?

Persönlich finde ich ** RMSLE ** oder ** MAE **, die als Verhältnis betrachtet werden können, gut. Ich frage mich, ob das Modell des maschinellen Lernens als ** zuerst, richtig bestellen ** gedacht werden sollte. ** RMSLE ** ist der Logarithmus von RMSE. Sie können es RMSLE machen, indem Sie ein Protokoll von y erstellen. Auf diese Weise denke ich, dass es einfach ist, es als RMSE zu behandeln und es am Ende exp zu machen. ** MAE ** ist der absolute Wert, nicht das Quadrat, wenn gemittelt wird. Dies verhindert, dass der Fehler verstärkt wird, und ist widerstandsfähiger gegen Ausreißer. Es ist jedoch schwierig, beim Training eines Modells einen Verlustkoeffizienten zu verwenden. Wenn Sie ** "Es gibt fast keine Ausreißer" oder "Das Problem ist ein großer Fehler" ** sagen, gibt es natürlich kein Problem bei der Verwendung von RMSE.

④ Einführung von Beispielen

In einem kürzlich durchgeführten Wettbewerb verwendete der ProbSpace-Wettbewerb Real Estate Transaction Price Forecast Competition RMSE, und die Daten enthielten mehr als das 100-fache des Durchschnittswerts. Es gab eine große Änderung in der Rangliste. "Themen, die analysieren, wie stark sich RMSE je nach Skalendifferenz ändert" (Anmeldung erforderlich) Bitte sehen Sie, ob Sie interessiert sind. Selbst in einem tatsächlichen Projekt habe ich gesehen, dass "ich RMSE kannte, aber nicht erkannte, ob es für die Modellbewertung geeignet war, wenn ich die Möglichkeit von Ausreißern in Betracht zog."

Fazit

Zusammenfassend denke ich, dass es nur um ** "Verwenden Sie RMSE nicht, wenn die Möglichkeit besteht, dass Daten mit unterschiedlichen Maßstäben kommen! Verwenden Sie RMSLE!" **. Ich denke, es ist gefährlich, nur RMSE zu sehen, genauso wie nur Genauigkeit in der Klassifizierung. Übrigens fand der oben erwähnte Wettbewerb zur Vorhersage von Immobilienpreisen bei ProbSpace bis zum 11. August 2020 erneut statt ändern Sie den Bewertungsindex in RMSLE. Ich werde. Ich denke, dass es ein empfohlener Wettbewerb für Anfänger ist, da Sie von dem Staat aus teilnehmen können, in dem es eine Lösung für die Person gibt, die das letzte Mal teilgenommen hat. Es tut mir leid, Ihnen ein Beispiel für ein Anti-Muster zu geben, aber ich bin froh, dass Sie es so wieder öffnen können. Wie oben erwähnt, stecken Sie in einer großen Falle, wenn Sie den Bewertungsindex nicht beachten, und im Gegenteil, Sie können ein gutes Ranking im Wettbewerb erzielen, wenn Sie nur vorsichtig sind. Es ist also erwähnenswert.

Recommended Posts

Die Fallstricke von RMSE (mittlerer quadratischer Fehler), einem Bewertungsindex für die Regression!
Bewertungsmethode des Regressionsproblems des maschinellen Lernens (mittlerer quadratischer Fehler und Entscheidungskoeffizient)
Einstellung des Bewertungsindex des Kreuztests (memo, scikit-learn, cross_validation.cross_val_score)