Models in production¶
Nu we de data hebben leren kennen. Kunnen we data beginnen op kuisen.
Check incoming records¶
Cruciaal om inkomende data te checken of ze wel binnen de ranges valt waarbinnnen ons model getrained is anders kunnen we wel eens zeer vreemde resultaten krijgen.
range constraints
schema enforcement
Model drift¶
Het is best om om de x tijd het pr model terug op nieuwe historisch data te draaien zodat we model drift kunnen detecteren. Belangrijk is om daar via human in the loop wel feedback te kunnen verzamelen. Meestal wordt een ml model getrained op historische data waar menselijke redactie op gedaan is. Hoe evolueert ook onze input data. Worden bijvoorbeeld bepaalde categorien meer gebruikt dan bij initiele training.
Fairness¶
Hebben we ons model bekeken op fairness. Zijn er geen discrimenerende factoren in ons model. Kunnen we zelf toch een verklaring geven waarom een black box model toch een bepaalde waarde heeft voorspelt.
from pycaret.datasets import get_data
boston = get_data('boston')
from pycaret.regression import *
exp_name = setup(data = boston, silent=True , target = 'medv')
rf = create_model('rf')
MAE | MSE | RMSE | R2 | RMSLE | MAPE | |
---|---|---|---|---|---|---|
0 | 2.4815 | 17.9881 | 4.2412 | 0.7775 | 0.1940 | 0.1549 |
1 | 1.5997 | 5.3083 | 2.3040 | 0.9461 | 0.0985 | 0.0780 |
2 | 2.5142 | 15.2727 | 3.9080 | 0.7630 | 0.1506 | 0.1145 |
3 | 2.2459 | 9.8424 | 3.1373 | 0.8559 | 0.1342 | 0.0992 |
4 | 1.8837 | 5.1082 | 2.2601 | 0.9373 | 0.1455 | 0.1201 |
5 | 2.1402 | 7.8536 | 2.8024 | 0.8924 | 0.1372 | 0.1190 |
6 | 2.8024 | 17.5004 | 4.1833 | 0.7881 | 0.1776 | 0.1366 |
7 | 2.2694 | 10.0666 | 3.1728 | 0.8981 | 0.1319 | 0.1025 |
8 | 2.8389 | 18.9583 | 4.3541 | 0.8200 | 0.1904 | 0.1442 |
9 | 1.8911 | 6.2866 | 2.5073 | 0.8302 | 0.1371 | 0.1095 |
Mean | 2.2667 | 11.4185 | 3.2871 | 0.8509 | 0.1497 | 0.1178 |
SD | 0.3835 | 5.2189 | 0.7834 | 0.0624 | 0.0281 | 0.0216 |
interpret_model(rf)

interpret_model(rf,'reason',observation=2)
Have you run `initjs()` in this notebook? If this notebook was from another user you must also trust this notebook (File -> Trust notebook). If you are viewing this notebook on github the Javascript has been stripped for security. If you are using JupyterLab this error is because a JupyterLab extension has not yet been written.
interpret_model(rf,'reason',observation=8)
Have you run `initjs()` in this notebook? If this notebook was from another user you must also trust this notebook (File -> Trust notebook). If you are viewing this notebook on github the Javascript has been stripped for security. If you are using JupyterLab this error is because a JupyterLab extension has not yet been written.
Batch vs Realtime¶
Is er nood aan batch of realtime verwerking? Is misschien near realtime genoeg?
Recalculate¶
Bij model drift wanneer gaan we ons model terug updaten?
Human in the loop¶
Zoals al aangeven is het wel cruciaal om ergens in je system een human in de loop te hebben.