Читать книгу Praxiseinstieg Machine Learning mit Scikit-Learn, Keras und TensorFlow - Aurélien Géron - Страница 86

Evaluiere das System auf dem Testdatensatz

Оглавление

Haben Sie Ihre Modelle über eine gewisse Zeit optimiert, haben Sie ein System, das ausreichend gut funktioniert. Nun kann das endgültige Modell mit dem Testdatensatz evaluiert werden. Daran ist nichts Besonderes; Sie nehmen die Prädiktoren und Labels Ihres Testdatensatzes, transformieren die Daten mit full_pipeline (rufen Sie transform() auf, nicht fit_transform(), denn Sie wollen nicht an den Testdatensatz anpassen!) und evaluieren das endgültige Modell mit den Testdaten:

final_model = grid_search.best_estimator_

X_test = strat_test_set.drop("median_house_value", axis=1)

y_test = strat_test_set["median_house_value"].copy()

X_test_prepared = full_pipeline.transform(X_test)

final_predictions = final_model.predict(X_test_prepared)

final_mse = mean_squared_error(y_test, final_predictions)

final_rmse = np.sqrt(final_mse) # => evaluiert zu 47730.2

Manchmal wird solch eine Punktschätzung des Verallgemeinerungsfehlers nicht ausreichen, um Sie davon zu überzeugen, das Modell zu übernehmen. Was, wenn es nur 0,1% besser als das aktuell genutzte Modell ist? Vielleicht wollen Sie verstehen, wie exakt diese Schätzung ist. Dazu können Sie mit scipy.stats.t.interval() ein 95-%-Konfidenzintervall für den Verallgemeinerungsfehler berechnen.

>>> from scipy import stats

>>> confidence = 0.95

>>> squared_errors = (final_predictions - y_test) ** 2

>>> np.sqrt(stats.t.interval(confidence, len(squared_errors) - 1,

... loc=squared_errors.mean(),

... scale=stats.sem(squared_errors)))

...

array([45685.10470776, 49691.25001878])

Wenn Sie eine Menge Hyperparameter optimiert haben, ist die Qualität der Vorhersage normalerweise etwas schlechter als die mit der Kreuzvalidierung bestimmte (weil Ihr System dann auf die Validierungsdaten optimiert ist und nicht ganz so gut auf unbekannten Daten abschneidet). In diesem Beispiel ist das nicht der Fall, aber wenn es passiert, müssen Sie der Versuchung widerstehen, Ihre Hyperparameter noch einmal zu ändern, um die Zahlen gut aussehen zu lassen. Die Verbesserungen werden vermutlich nicht gut auf neue Daten verallgemeinerbar sein.

Es folgt die Phase vor der Inbetriebnahme. Sie müssen Ihre Lösung präsentieren (und hervorheben, was Sie herausgefunden haben, was funktioniert hat und was nicht, welche Annahmen getroffen wurden und wo die Grenzen Ihres Systems sind), dokumentieren und ansprechendes Präsentationsmaterial mit klaren Visualisierungen und eingängigen Aussagen (z.B. »das mittlere Einkommen ist der beste Prädiktor des Immobilienpreises«) anbieten. Im Beispiel mit den kalifornischen Immobilienpreisen ist die abschließende Genauigkeit des Systems nicht besser als die Preisschätzungen der Experten, die oft um etwa 20% danebenliegen, aber es kann trotzdem hilfreich sein, es einzusetzen, insbesondere wenn besagte Experten damit Zeit für interessantere und produktivere Aufgaben verschafft bekommen.

Praxiseinstieg Machine Learning mit Scikit-Learn, Keras und TensorFlow

Подняться наверх